+++++++ ++ ++ +++++++ ++++++++ +++++++ +++++++ ++++++ +++++++
++++++++ ++ ++ ++++++++ +++@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@
@@ @@ @@ @@ @@ @@ @@ @= == == == == == ==
== == == ,==,,,,==,,==,,,,,,,,=%,,,,%%,,%%,,,,%%,,%%,,%%,,%%,,,,%%
%%%%%%%,,,%%,,,,%%,,%%%%%%%%,,%%%%%%%%,,%%%%@EEE,,EEEEEEE,,,EE@@@@@@,,@@,,, @@
-@@@@@@@--@@----@@--@@@@@@@---@@@@@@@@--@@@@@@@---@@@@@@@---@@@@@@@@--@@----@@
------@@--@@----@@--@@--------@@----- @0 00 00 00 00 00 00 00
00 00 0@ @@ @@ @@ @@ @@ @@ @@ gg gg gg
gggggggg gg(((((( (( (((((((( (( ((--((ggg@@@--@@----@@--@@@@@@@@
@@@@@@@----@@@@@@---@@--- @@@@@@@@ @@ @@ @@@@@@@ @@ @@ @@@@@@@