.:::::.:::::.:::::.:::::.:::::.:::::.:::::.:::::.:::::.:::::.:.:.:.:....................................................................................................................................
::.:.:::.:.:::.:.:::.:.:::.:.:::.:.:::.:.:::.:.:::.:.:::.:.::.:.:.:.:..:..:......... .. .. .. .. ... .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ...
:::.::.::::.:::.::.::::.:::.::.::::.:::.::.::::.:::.::.::::.::.:.:..:.:.....:..... ... .... ... ..@S.. .... ... .... ... .... ... .... ... .... ... .... ... .... ... .... ... .... ... .... ... .... ..
:.:::.::.:::.:::.::.:.::.::::.::.:::.:::.::.:.::.::::.::.:::.:::.:.:.:...:....:..... ... .... ... 88  .. .... ... .... ... .... ... .... .... ... ... .... ... .... ... .... ... .... ... .... ... ... .
::.::::.:.:::.:::.::::.::.:.:::.:.:::.:::.::::.::.:.:::.:.:::.:::.:.:.:.:...:......... ... .... .  8. ... . ... ... .... ... .... ... ..... ... ... ... .... ... .... ... .... ... .... ... .... ... ...
:::.:.::::.:.::.:::.:::.::::.:::::.:.::.:::.:::.::::.:::::.:::.:::.:.:.:.......:... .... .. . ... %X% . ..... ... .. . ... .. . ... .. . .... ... ... .. . ... .. . ... .. . ... .. . ... .. . ... ... .
:.::::.:.::::.::.:::.::::.:::.:.:::::.::.:::.::::.:::.:.:::.:::.:::.:.:...:..:...... . ........ . @%X .. .. ... ........ ........ ....... . ... ... ........ ........... ..... ........ ........ ... ...
::.:.::::.:.:::.::.::.:.::.:::::.:.:::.::.:::.:.::.:::::.:::.:.::.:..:.:................ . . .... %SX ... ... ... . . .... . . .... . . ..... ... ... . . .... . . . . ... .. .. . . .... . . .... ... .
:::::.:.:::::.:::.::.:::.::.:.:.:::.:::.::.:::.::.::.:.::.:.::::.::.:.:.:..:..:.:.. . ....... ... 88; ..... ... ...... . ...... . ....... . ... ... ...... . ........... ... ........ . ...... . ... ...
:.:.:::::.:.::.:::.:::.:::.::::::.::.::::::.:::.:::.:::.:::::.:::.::.:.:....:......... . . ..... .88 ..8%. ...... . ...... . ...... . . ..... ... ... .. ..... . . .. .... ... . . ...... . ...... ... .
::::.:.:::::.::.:::.:::.::::.:.:::.::.:.:.::.:::.:::.:::.:.:::.:::.:..:..:.....:.... ...... .. ..  8.@8S8 .. . ..... .. ..... . .. ...... . ... ... ... ... ....... .. . ... ...... .. ..... . .. ... ..
:.:::::.:.:::.::.:::.:::.:.::::.:::.::::::.::.:::.:::.:::::.:::.::..:.:...:..:........ . ...:@t.  888@X. .. ... .. ... .. . .... ... .. ..... ... ... ... .. . . ......... ... .. ... .. . .... ... ....
::.:.:::.::.:::::.:::.:::::.:.::.:::.:.:.:::.::.::.:::.:.:::.:.::.::.:.:............ ...... t     8888:.. ...... ... ........ .... ... .. .. ...... ... ......... . . . .... ... .. ........ .... ... ..
:::::.:::.::.:.:::.:.::.:.::::.::.:::::::.:::.::.::.:::.::.::::.::..:.:..:..:..:....... . ...8t8  88@X .... .S8X 8 ... . . ... .. .. ..... ... . .... ... . . . ........ . ... ...... . . ... .. .. ... 
:.:.::.:::.::::.:.::::.:::.:.:::.::.:.:.::.:::.:::::.:.::.::.:::.::.:.............88S8S8X%X.. 8 8 8SS.;8.:88:X888;.. ...... ... ...... . ... .... . ... ......... .. . ..... ... . ....... ... ...... ..
::.::::.:::.:.:::::.:::.:::::.:::.::::.::::.:::.:.:::.::::.::.:::.:..::..:.:.:...:.888XX888XX  8@ 8tX88;%888  %: . ... . ... .... . ...... ... ...... ... . . .. ....... .. ... ... . . ... .... . .....
:::.:.::.:::::.:.:.::.::.:.:::.:::.:.:::.:.::.::::.::::.:::.::.:::.:.:............    888. XX;@%X8X;8;@.8t8S8@Xt ... .... ... .. .... . .... ... . .... ...... ... . . ... .. ... ...... ... . ..... . .
:.::::.::.:.:::::::.::.::::.:::.:::::.:::.::.::.:::.:.::.:::.::.:.:.:.:.:..:......       SS;88@S8888XX@%88S%  ... .... ... ... .... .... . ... .... . ... . .... ....... ...... .... . ... ..... . .....
:::.:::.::::.:.:.:::.:::.:::.:.::.:.::.::::.::::.:.:::.::.:::::::.:.:.:........... . .   .. ; X888t888@88    .. .. . ... ... ... ... ....... ... ...... ..... .... . . ... . .... ...... ... .. .... . .
:.::.:::.:.::::.::.:::.::.:.::::.:::.::.:.:::.:.::::.:::.::.:.:.:.:..:...:........... . ....  t% 8888@S     . ..... .. ... ... ... ... . . ... ... . .... . .. . ....... .... . ... . .... ... ... .....
::.::.:::::.:.:::.::.:::.::::.:.::.:::::::.::::::.:.::.:::.:::.::.:.:.:.................;88%%S  8XS88;..    .. . ....... ... ... ... ....... ... .... . .......... . . ... ...... .... . ... ... ... .. 
:::.::.:.:::::.:::.::.::::.::::::.::.:.:.::.:.:.:::::.::.:::.::::.:.:.:..:........... ::t88tSX 88XSX. ;8  :S... .. . . ... ... ... ... . . ... ... ...... . . . ........ ... .. ... ...... ... ... ... .
:.:::::::.:.:::.:::.::.:.::.:.:.:::.:::.::::::.::.:.:::.::.:::.:.:.:.:....:...........:X@%@S8.%%@88X8S%8@ @%S  .. ...... ... ... ... ....... ... ... . ......... . .. .... .. ... ... . .... ... ... ...
:::.:.:.::::.:.::.:::::::.::::.::.:::.:::.:.:.::::.::.:::.::.::::.:.:.:.:.............S8 8 @S88S88X8%8S:      .... .. .... ... ... ... . .. ...... .... . .. . .... .. . ...... ... .... . ... ... .....
:.::::.::.:.::::.::.:.:.:::.:.::::.:::.:::.::::.:.::::.:::.::.:.:..:..:...:...: @88   @S@@  8@ %888;8SX8   ..  .t; ... ... ... ... .... ... . ... ...... ..... ......... . .... ... ...... ... ... . .
::.:.:::.::::.:::.::::.::.:::::.:::.:::.:.::.:::.::.:::.:::.:::::.:.:.:..:......:S@X X :8S.@.@8SX88888@8S88:Xt8X%888S.t... ... ... ... .... .... ... . . ... . ... . . . .... . ... ... . .... ... .....
:::::.:::.:.::.:::.:.:::.::.:.::.:.::.:::::.::.:::::.:.::.:::.:.:.:.:.........%:S88S8X888:888888@@ X8@SS88X8%@t:888t8..... ... ... ... .... ... ........ ..... ......... ...... ... .... . ... ... .. 
:.:.::.:::::.::.:::::.::::.:::.::::.::.:.:::.::.:.:.::::.::.:::::.:.:.:.:....:88888888@888888X;8X8SS8%8t88:888%@:8t.. . .... ... ... .. . ... ... . . .... . ... . . . ... . .... ... ...... ... ... .
::::.::.:.:::.::.:.:::.:.:::.:::.:::.::::.:::.::::::.:.:::.::.:.:.:.:.:..:....  .;;8X@8888@8S88X88@88%t @;8888X;88  .. ... . ... ... ........ ... ...... . ..... ......... .... . ... ... . .... ... ...
:.:::.::::.::::.:::.:::::.:::.:::.:::.:.::.::::.:.:::::.::::.::::.:..:....:......:S; X888%XXX888@8S888888S@ 8%..:.... .. ..... ... ... . .. ... ... . ...... . ... . . . ... ...... ... .... . ... .....
::.:::.:.::.:.:::.::.:.:::.:::.:.::.::::.::.:.::::.:.:::.:.:::.::..:.:.:..........;S.8t8@88888S;t@888888X8888tt.t;:....... . ....... .... ... ... .... .. ...... ......... .. .. .... ... ...... ... . .
:::.:::::.::::.:::.::::.:.::.:::::.::.:::.::::.:.::::.:::::.:::.::.:.:...:.........  %@S@S;8;:.;X888888888@t .8@888;X ... .....t%: ... .... ... ... ... .. . . ... .. . ...... .. . ... ... . .... .....
:.::.:.:::.:.::.:::.:.::::.::.:.:.::.::.:::.:::::.:.::.:.:::.:.::.:.:.:...:.%SSS...........  .888888@8t@%%8.;XX;:.:  . tS.;888XSXt .... .. .. ... ... .......... ... .... . ......... ... .... . ... . .
::.::::.:::::.::.:::::.:.::::::::::.::.::.::.:.:::::.::::.:.::::.:.:.:.:.:. %X8t@X8  X8 ...88@.;%.88@8@@St8X@8@888:  tXS8.@XX     .. ... ...... ... ... . . . .... .... .... . . . .... ... ...... .....
:::.:.::.:.::::::.:.:::::.:.:.:.:.:::.::::.::::.:.:::.:.:::::.::.:.:.......:  ;XX8S88@%;t8S8S: %@88@:8t;88@ ;88%X@X:8:8;888. .    ... .... . .... ... ........ .. ... ... ......... . ... ... . .... . .
:.::::.::::.:.:.::::.:.:::::.:::::.::::.:::.:.::::.:::::.:.:::.:.:..t t8;;@SS88888S8X@8X8@8X888@@88X;8S888@t%S88X88888t:  .   .. ... . .... . ... ... . . ... ... ... .. . . . ...... ... .... . .....
::.:.:::.:::.:::.:.::::.:.:::.:.:::.:.::.:::::.:.::.:.:::::.:.::.:.:: ;@8888888X88888888888%S%888@%8@8X@X8%X@88@8888@8t    %@8  . ...... ...... ... ....... ... ... ........... . .. .. ... ...... .. 
:::::.:::.:.::.::::.:.::::.:::::.:.:::.::.:.:::::.::::.:.:.::::.:.:......  ;@.888X88888888S888@8.888@8888@8S8%8@8X888@8@t8@t88X8.... . . ... . .... ... . . ... ... ... . . . . .... ...... ... . ... ..
:.:.::.:::.::::.:.::::.:.::.:.:.::::.:::.:::.:.:::.:.:::::::.:::::.:.::......  X@X8S@88888S888t88X8S888X@X8888X888888@888.t8    . ........ .... . ... ....... ... ... ........... .... . .... .... .....
::::.::.::::.:::::.:.::::.:::::::.:::.::::.::::.:::::.:.:.:.::.:.:.::.::.....  :. XX88S@8%88X%8XX@888SX@8S88X88S8X8@888@X.     ... . . . ... ...... ... .. .... ... ... . .. . ... .. .... ... .... . ..
:.::::::.:.::.:.:::::.:.:::.:.:.::.:::.:.::.:.::.:.:::::.::::.:::::.;%t:..:.. :SXX8S@8888@88;SS8tX8%@8@88%8X@@@8X%XX88St...    .. ....... ... . .. ... .... . ... ... .... .... ... ... ... ... . .... .
::.:.:.::::.::::.:.:::::.:.:::.::::.:.:::.::::.::::.:.:.::.:.::.:..;S888SS8t..tX.8888@8888X8t@888@888@8S8@88%8888888SS88.... .. 88  .t; ... .... ... ... ...... ... ... .... ... .... ... .. ...... ....
:::::.::.:::.:.::::.:.::::::.:::.:.::::.:::.:::.:.::::.:::::::.::::.:88888t88%:  %S88t@8888tXt88t;8S@S888:8X8X8tS%X88@8X8; ..  8t8  S ; ..... .... ... .. . . ... ... ... ... .... .... ..... . . ... ..
:.:.:::.::.::::.:.::::.:.:.::.:::.::.:::.:::.:::::.:.:::.:.:.::::.8S%:%@@888888@.X88;888:X88XX.;X.S@8888;8.  @;8@X8; 8 8 ..88S S88X% .. . ... .... .......... ... ... .. ... . .. . ... . ....... .. .
::::.:::.::.:.::::.:.::::.::::.:::.::.:::.:.::.:.::::.:::.:::.:.::.88@8.%t8888888888;8;888@S%888@8t88:8:t%8S8:8:S;.S8.8    S 8X@X88@S... .. .. . ... . . . .... ... ..... ........... ..... .. ... ...
:.:::.:::.::::.:.::::.:.:::.:.::.:::::.:::.::.:::.:.::.::::.:::::.;.:88t :t % 8%@888t8@8@88X.XX88SX8t88888S888%@@888 X8@8X t8;8X8:t88% ............. ........ . ... ... . ... .. . . .... . ... .. .... 
::.:::.::::.:::::.:.::::.:::.::.::.:.::.::::.::.::::.::.:.:::.:.8%S@.t%X8 8X. 88.@.@.;888;8S8S88%8X8XX8%;;8t@88888@: .@8X8%:S88X8888S . . . . . . .... . . ...... ... ..... .. ...... . ..... ...... ...
:::.:.::.:.::.:.::::.:.::.::::.::::.::::.:.:::.::.::::::::.:::.;S888 8;:t@8% 88t.S@888t%888@888888888888S8@S88@tXS8  .t8t 88888888SX @8 .......... . ...... .. .... ... ........ . ...... . ... . ... ..
:.::::.::::.::::.:.::::.::.:.:::.:::.:.::::.:::.::.:.:.:.::.:::.  @X8@..X888@8@8@.X888;@88S88888S888888%8S88t88%888X%88@888888X%X8888@ . . . . . ..... . ... .. . ... ... . . ..... . .. .... .... ... .
::.:.:::.:::.:.::::.:.:::::::.:::.:::::.:.::.:::.::::.:::.::.::. . SS88Xt@:;88888 ;8::8@S;88@Xt8X8@8SS8@88%@88S888S8X8888@888888t@ 8..... ........ .. .... ........ ... ...... . ..... .... ... ... ....
:::::.:::.:::::.:.:::::.:.:.::.:::.:.:.:::.::.::::.:::.:::.::.:::.:..;;8:S888 8X@%888888888X@8@t%8@8@;;@888;@.88X@88t888: XS8;t%:..... ... . . .. ..... .... . . .... ... . ..... . .... .... ... ... ..
:.:.::.:.::.:.::::.:.:.:::::.::.:.::::::.:::::.:.::.:::.:::::::.::.:...888;S ;;.8%88888X88S888@8t88888@8888X8888t888;88S::8 8;...... .;. ...... ... . ... ....... . ... .... . ..... .. .. .... ... .. .
::::.::::.::::.:.:::::::.:.:::::.::.:.:::.:.:.:::.::.:::.:.:.:::::.:.tX88888X%8X .S 88@888@S8X8X@8%888;@8t8888:888888@@8@88:8tXt .:X.88 . . . ... ..... .. . . ...... ... ..... .. ... .... . ... ......
:.::::.:::.:.::::.:.:.:::.::.:.:::.:::.::::::::.:::::.:.:::::.:.:::.:.;88888@8X8t@%t8888888XX8@@8X888SXt@8888@8X8X88S888SS@ 88SSt;8@8   ....... ... .. ........ . .. ... .. . ... .. ... ...... ... . ..
::.:.::.:::::.:.::::::.:::.::::.::::.::.:.:.:.:::.:.:::::.:.::::.:..  ;;;8%88X88@8@ 8X@X8888@88@X8X8.@S8888X88@888X888X8@8tt%:88@@8    . . . .... ... .. . . ..... ... ........ ...... ... . ... ..... .
:::::.::.:.:::::.:.:.::.:::.:.::.:.::.::::.:::.:::.::.:.::::...:::.t;@;t%@8:;X@@@88@@8%8X8888@88@S8X8X8@X%XSX8SX@8S888@:8888888;tX .......... . ... ......... .. ... ... . . .... . .... .... ... . ....
:.:.:::::::.:.:::::::.::.:::::.::::.:::.:.::.::.:::.::::.:.:%: S8::: X8X8@@888SSX@X88S8@8@8@S8X88888@8@8@@88@XX88888@ S888X88@888 .... . .. ..... ... . . . ... ... .. ...... . .... . ... ... ..... . .
::.::.:.:.::::.:.:.:::.::.:.:::.:.:::.:::::.::::.:::.:.::.:: .88X8t 8t  88.X8;88@@@@X@X@88@S8888@@XX@XSS8888S888X88@88S8S88@@%8 ;. ;..... . . . ... ......... ... ...... . ...... ...... ... ... . .....
::::.:::.::.:.:::::.:::.::::.:::::.:::.:.:::.:.::.:::::.:::..:..:8S8X88S:88XX8.X%%X%StXX8X8@88888X@@8S8X@S@S888XS8S@X88XSS8;8 X %%;8t;.. S 8 .... ... .. . .... ... . ..... .. ... .. .... ... ..... .. 
:.:::.:::.:::::.:.::.:::.:.::.:.:::.:::::.:::::.::.:.:::.::::.:..:: ..8@88S@X %8@SXX8SS@X@888S@8@88X%;tX8X88%X88S88888S%;...8 8 8  :tX8 8t.. .... ... .... .... ..... . ... .. ... .. ... .... . ... .
::.:::.:::.:.:.:::.::.:::::.::::.:::.:.:.::.:.:::::.::.::.:::::::::::;: tX8X8888S8@@X@88@88@%88;8@X88S@888@88%88@S8XX88% 8%tX@8: 8 :888t; . ... . ... ... ... . ... . ..... ...... ..... ... . ..... ...
:::.:.::.:::::::.:::.::.:.:::.:.::.::::::.::::.:.:::.::.:::.:.:.t;.:.:.%SX%%tX8SS:X8SS8SS@8@XX8SX88S8S.8t88St888@S8888%SX8Xt .X88  XX88 .... ...... ... ... ..... ..... . ... . .... . ... ..... . .....
:.::::.:::.:.:.::.:::.::::.:::::.::.:.:.::.:.::::.:::.:::.::::.: 8;8.... ;:% 8tSX88888@@88X8@8XX;X8;%8XSXS8%XX8@@8X88888888;88SS8%X.... ... . . ... ... ... . ... .. .... .... . ..... ... . ..... . .
::.:.:::.::::::.::.:::.:.::.:.:::.::::.::::::.:.::..:::::..:.::. X8: 88.8X8ttS.8888@@8@888:%XS8@888X8X%%%S88S88888@88@8S@8SX;88@8S ::  ... ....... .... ... ..... ... ... ... ...... . ... ..... . .....
:::::.:::.:.:.:::::.:::::.::::.:::.:.:::.:.::::::.:.S8X;.t 8 ::::.X 888@XtX88:S8:%S%@@@88@8@tS%tX:88X@88X8888@XX888X88S8@8%%88@%:@ ..... .. .... ..... ...... . ... ... ... ... . ...... ... .. .... .. 
:.:.::.:::::.::.:.::.:.:::.:.::.:::::.:::.::.:.::.8S XX8 888: :.:::  @.8t8S888@X88@8%88@t8S8888@X8@@88S@88@8X8XXX8S@XX8X@888% :;888;X88@8  . :8X8X..%8X  . ...... ... ... ... .... . . ... ... ... ... .
::::.::.:.:.::::.::.:::.:::::.::.:.:::.:::.::::.:: S@8.%@8888t@S :.%8%88Xt88X@%88@8S8S8888@8@888XSXX@SS%@XXS8X88@88%88SX8XXX88@S88%X8%X8S . @888.  ;8 t.. .. . .... ... ... ... ........ ... ... ... ...
:.::::::::.::.:.:::::.::.:.:::.::::.:::.:::.:.:::::.:%88 X888888SS SX8888%X8X88@8XX88X88X8888888888%%@8888@@8S8S88X888X8X@88888X8X8S%XX.%88X@8t;8;t  . ...... . ... ... ... ... . . .... ... ... ... .
::.:.:.:.::::::::.:.::.::::.:::.:.::.:::.:::::.::.::: ;8S88888t888SX8X;S;8t;88888@X8@8XX88@888888@@8XSX88888StS88St8:S8@888888888 X8%8@8;88888S88XSS88  .. . ...... ... ... ... ...... . ... ... ... ...
:::::.:::.:.:.:.::::.:::.:.::.::::.::.:.::.:.::.:::.::::::%8@88888X8888%888; %;X888@@8@8@8X88888SXt8X8S888t@88XXX888X8%XS88t8  :8.8888SS88@88;8@8 ;88   ..... . . ... ... ... ... . ...... ... ... ... .
:.:.:::.::::.:::.:.:::.::::.::.:.:::::.::.:::.:::.::.:::::.:S:88t88:8@88888X888S8@S8X8888X8S8X%8@@8tS:XX8XX88@88888X888888@888@X@.8@%88S888888%@ 8.S   .. . ....... ... ... ... ..... .. ... ... ... ...
::.::.::.:.:::.::::.:::.:.:::::::.:.::::.::.:::.:::.::..888888%;8@@8888XS@8@@X88SS88888X8Xt88@88X8X88X%t8@888@t888S88@S;@@8tX.S888888X88888XS;%X   .. ..... .. .... ... ... ... .. .. .. ... ... .... 
::::.::::::.:::.:.::.:::::.:.:.:::::.:.:::.::.:::.::::::8 .:.88%;8S8888888@8X8X8X88@@8@;@8888888@S8X@X88tS88@8S888888;S@S888888X8@88@888@@8888XX.  .. ... . ... .. .... ... ... ... ........ ... ... ...
:.:::.:.:.::.:::::.::.:.:::::.::.:.::::.:::.::.::::..:;%:%%SSS8 @%88@88888888S8S:@8@8X8@%X88@X888S88888@S8@888S@8S88@t88t8888X8X8tX8@@@@88XXS8:%...... ...... ..... . ... ... ... ... . . .... ... ... .
::.:::::::.::.:.:::.::::.:.:::.::::.:.::.:::.::.:.::;t:8X888;X   .;88S8888S888X888S8@88888X888@@S8XXXX8X8@88888@8X8888@%@8X@888:88888S@S88.@88 .. . ... . . ... . ..... ... ... ... ...... . ... ... ...
:::.:.:.:::.::::.:::.:.::::.:::.:.::::.::.::::::::.:.... ;% .;:%88X8X;88SX@888888@X888S88888@888SS%8@8XSXSX@X8@@88X8S8@X88X8S8;88@88888.88S8    .... ........ ..... . ... ... ... ... .. ..... ... ... .
:.::::.:.:::.:.::.:::::.:.::.:::::.:.:::::.:.:.:.::::::::::::t8%888.%88t8S@8;8888@XSX8S;St8@8@88@8t%@XSXXXXX@@88@@X88888%88S8S888S88S88@XX@.  ... .... 8. .. .. . ..... ... ... ... ... .. .. ... .. ...
::.:.::::.:::::.::.:.:::::.::.:.:::::.:.:.::::::::8X.::@t::. 8 8 X;X@88@8SS888SSS8@@88@%SS8X@88X8888SXX%S;%%%X8@XStXX@tt%8@S88888888S888@XS8:... ..:8;8X:.......... . ... ... ... ... ..... ... ...... .
:::::.:.::.:.:::.::::.:.:::.::::.:.:::::.:..: :::.t@8X%;8 S %t@S8X%888@8888S@888@888S8StS8888%88S8@888;;tS@8X8S888S@StXSXX8@88@S888S:88X 8 .@  :StS888  .. . . . ...... ... ... ... ... . ... ... . ....
:.:.::::.::::.:::.:.::::.:::.:.::::.:.:::.; % S8::.S@XSSX8t8S8tX@888@888X88S888X@8888888@88XX%XS8.8t88X888%8888888X8t88888@88X@88@X888; 88%8;tXX.8X%S% .......... . . ... ... ... ... ..... ... ..... ..
::::.:.:::.:::.:::::.:.::.:::::.:.::.:.:::..:S8 @ 8%8@888;:;@t.%88X@8@8X88X@8@@888X8XX8S8X8X@8XX@8S88X8S88@88@888t..tXXX8@8SS8X@SX@88@88S88@.8tXt8tS . .:.. . ....... ... ... ... ... .. ...... . .. .
:.:::::.:::.:.::.:.::::.::.:.:::::.::::.:::.:::  %%88888S888888@X8XX88888X8S%SSX@%XX@@SS8SX88888X@%@XS%S8@8S88S8%tt:%X%SSXt8%%S8%X@888S@@8;XX8X.@8X%88 X%88t .... .. .... ... ... ... ... .. . .........
::.:.:::.:::.::.:::.:.:::.:::.:.:::.:.::.:::.::..:;%X88888S8t; SS:8%%t@S8@%88%S@%8@@8XS%tSSSXX%tXS%%ttt%tS%S8X8t%@X%;ttt;t%t%;%t88888X88888@88888@8888888X  ... ... .. .... ... ... ... ....... . . . ..
:::.::.::.:.::::.:::::.::::.::::.::::::::.:::.:::.;@X88t8%@88@@ 88X@t888@88S;tX@%SS8XXXt%t;%;;t@t;;;;;;;;;tttSX8%%@8XSt%ttt%%ttttt%X@S@S@XSX8@88:8t88t88S@% . ... ..... . ... ... ... ... . . ........ .
:.:::.:::::::.:::.:.:::.:.::.:.::.:.:.:.:::.:::::: S.%@88888t@88@8S88888888:;%@%S@@%%S%tt;;tttt8%t;;;::::;%%%t%@X%8@@888@;SS:t;%%%X8%S@@8@@S88%88X8X.8XXX8@S .. ... . ..... ... ... ... ....... .. . ...
::.:::.:.:.:.:.:::.::.::::.::::.::::.:::.:::: 8t8;8888@88@88888X8@8@88888888.:tS8S%8S8@8X888t@88SX@S:.:8%X:%X@8%@@8X@@8%t@t%;;tS888X8%tStSX%%@88@8%8888.8X%t.... ...... . ... ... ... ... .. ... ..... .
:::.:::::.:::::.:::.::.:.:::.:::.:.:::.::.:.::.: :8%X8@88@X@8888X888X8888888@88%S8%@X8St8%t@t@S8S888@@Xt;;88888@%88tS8SX@888XS@888XXX%XX888X88888X888%:8%.... ... . . ..... ... ... ... ... .. ... . ...
:.::.:.:::.:.:::.:::.::::.:::.:::::.:::.:::::.:.:.t@ 8@%8S8888SX8888XS8t88888@888@SXSXt%%tXS;:888@8@88XXSX888888@88S888X@888S8@@8@8@88SS@XS8888S8SXS8  .. . .. . ...... . ... ... ... ... ...... ..... .
:::.:::.:::::.:::.::::.:::.:.::.:.::.::::.::.:::.8888%8;X888X888%8S8@88XS@8888S88XXt%@X8t::%8;t%@@88@8X@88X888@8888X8St;tS88888S8X@888@8SXX@8@SX@8  . . .......... . ...... ... ... ... ... . .... . ...
:.:::.::.:.:::.:.::.:.::.::::.::::.::.:.::..:::::;8t.::8t8 %S88888S8@@8@X@8S88@@88X88S%SS%;t.:t88%tSXt%SS@88@8SX@@%%St;;;;ttt%@XXSSXX%X8@8X8XS.;t@t X:.. . . . . .... . . ... ... ... ... .... . ..... .
::.:::.::::.:.::::.::::.::.:::.:.::.:.::.:::@   .::::  :: :8.S;88@88@8%8X888@S88@88X88@88@88%t@88@8:ttt8X88.88St;;;SX8tttSttt@88XX8@X@8888888t@S.t8S .......... . ....... ... ... ... ... ...... . ...
:::.:::.:.:::::.:.::.:.::.::.::::.::..:..::8X8X:X:::.%8@8XX;88:S  8S8SXS%88888X88@X8@t@8888S888%888@%8X%S88@X8X;;;::S%t@8%%Xt@888@8@@88X8888SSSt;X8X@.8@.. .. ..... .. .... ... ... ... ... . ...... .
:.::.:::::.:.::::::.::::.::.::.::::.t:%t:;8t:;8X88X%@ 8 X%:8t8SSSS:tSXSSX%@%88@@.88S8888X8S88888@888X8XX%XX%88888;%%:%8S8XX%Xtt%t8tX8X88X%S%StX;88tS:S;8S  ..XX. . ... .. . ... ... ... ... .... . .. ..
:::.::.:.::::.:.:.:::.::::.::::.:.::. :8@88@t%%@S@X8@S8@@SSS8X88XX;%tt%t;t;;:8S888X@@8S8XS%%S@88@88X8S88%t;;88%8@@S@%%SSt8XtSt88@888;8@88tSS;t8.@SS8@8888X.:888   .. ........ ... ... ... ... ..... ....
:.:::.:::.:.::::.::.::.:.:::.:.::::::::8@%.88SXS:SX@@8%8@XX8XX@Xt%@%X;;tS8@X8tS@@tSXX888StX;;XS8@88@88S88SX@8XX@888@888888X;:;X8:%X@%@@%8%8@S8 ;888t@@888S8S%:   .. .. . . .... ... ... ... ... . ... ..
::.:::.:::::.:.:::.::::::.::::::.:.:::.X;@.8X88X8X8@88SX8@S8X@8@8X88@8%S88888@XS8888%:tt;:;;;t;;ttt%StX8XS@88S88S@8S8@88@888S@8 8S8X;tX@@X88tS8S;tX%8S888888t   .. ........ . ... ... ... ... ..... ... 
:::.:::.:.:::::.:::.:.:.::.:.:.::::.:..;S8S88@X:88@@8888%X@;S8;%t88;888S88@88S8888%XXS@t;;;;;;;t;;ttt%;;SS%X88888@S88@t888888@tt%@8S%XS@8X@@X8tS88888888888%  .. ... . . ...... ... ... ... ... .. ... .
:.::.:::::.:.:::.:::::.::::::.::.:.:::::...t@ 8t88888888SX8@S8@8%S;t%@8@888888S8S88%%S%%X;:;;;;;;;ttXt%tttS@@S88XX88t8X888888@%88888@8X8XtSX88888S88888888;t  .... ....... . .... ... ... ... .. ... ...
:::.::.:.::::.:.::.:.:::.:.:.::::::::::.:% 8@X88X@88888.X88@888@888SSt8Stt%S8SSS@X@888ttX8;%X%tt;:;t%S;tXS@%@t888@8S888%t;:%X8t8@88St88888X@@8t8S888888S8@ . .. :..X8; .. ... . ... ... ... ...... ... .
:.:::.:::.:.::::.::::.:::.::::..::.: .:.t8X8888X8@8S888@X888888S88%8%8St%t8888;@88;@@X%tt;;;;tX;;:t;tt;ttX%SSt;XX88X8@8@@8;;::::..;t%tX8X%S@X8X88888888@tSX .. S88;8@@ .... ..... ... ... ... . .... ...
::.:::.:::::.:.:::.:::.:.::.::.88 ;8;8%8888X%88X88888S888888XX888@88X@t88t888@@8S@@8S88;t;88%;:;;;;t;:;;t;%@tt%XX%t8888StXXt%tt%@S8S8XS88X88@@888@X888@tX .X;S8@8t8;.. . ... .... ... ... ..... .... .
:::.:::.:.:::.::.::.:.::::::.:...%@888888SX8@8X888@X@X8:8S:88@8888X@X8S8@@8X8;Xt8888XSSX88@888888ttttS%;;t%%%%8X88X8888XS;%SS%SXSS@%X@X888%88%88@8X88;88@8S:8XS88;8 . ...... .. . ... ... ... . .. . ...
:.::.:::::.:::.::.:::::.:.:.:::.:..  88SX888@@888@8S@88888S88888888@88888XX8X888X8X888@8@8S8X88888t@88@S%%@X88tX8;@XX@@t%%%S;%8888@@8X8S8888;StS88@S@8t:t8X8SX8t@:.. .. . . ....... ... ... .......... .
:::.::.:.::.:::.:::.:.:::::::.::::.t%8@:888@X8@XX888888X@S88X88@8X8XSX%S88@8888XS@;8XS8S%88888@8X88X8XX88@t88888888@8XXS@8@88888888S88S8;8%88888X88@8S;@8XS88@%S ..... ...... . .. ... ...... .. . . ...
:.:::.:::.::.::::.::::.:.:.:.::.::.;8S%X@8X8888@S888@@8@X888@S88:8@@888X888@@8@8@8X@8X8@SS8888S88888888888@8@888888S88;%S8XX8888@88SS@8888888@88888@S888S88@8.;;8t ..... . ..... ... ... . ... ....... .
::.:::.:::.::.:.::.:.:::::::::.::.:...t.; 8@S888%8X8;S88SX88888888888t@88S@X88@%S;;;%@8%88@88@88XXX8X@888X8S8@;8S8S888@@888:%888888X@8@8X8S8888888@@@8X888888888SX.. . .... . .... ... .... .... . .. ..
:::.:::.:::.::::.::::.:.:.:.::::::::::::.;St; 8@S88X888X88.8:S@X88@@8X88@@S8888888X88@@@@X8X8S88888X8888888888888S888@8888X8@888@SS@888X8888888888888SXS8@88SX@8:. .... . .... . ... ... ... . .... ....
:.::.:::.:::.:.:::.:::::.:::.:.:.:.::.::::.t@88S@8888%@XSS;8@S88@%%%888@8S@@8XX8X@8888@%X88888888S%%t%S88@888SX8888X8X8888X88S8XS@@S8@8%888S8@SS88%88XX@X888  ...... ...... ...... ... ... ..... .... ..
:::.::.::.:::::.:::.:.::::.::::::::.::.:.:.88@:8X;8SX88888%88888@Xt%%XX@XSS8X888SS8@8@88X@%X@;tttSSSX@8S888@;88S8@888@88@SSXS8@@%@S88t8%8X%S8888@@88S@8SX8;.. .. . .. . . .. . . ... ... ... .. .. ... .
:.:::.::.::.:.::.:::.::.:.::.:.:.:.:::::::..X.:%8X8X@88X@@8S@8@@%ttS%@t%S%X8X@888888X88888@%X88S8X@%%88888888888X@88X8X@8X8%8@8S8%88888@8@8X@S8t888t8XX@8% . .... .............. ... ... ... .... ....
::.:::.:::.:::.::.:::.::::.::::::::.:.:.:::::.:.:.tXStS 88XX8@X8@SX%SSStXS888@@@XSS%@888S88SSS888X@8@@S8X88888@X8888XS@8t8S@@X8X@88S88XX88XS88X.SX8 .SX8t.8S .. . ... . . . . . .... ... ... ... ... .. 
::::.::::::::::::::::::.:::::::.::::::::::::::::::.::.::t888S 8%@StSX;t%X%X888%8;%t%X888888X8X88@X888SX%88S88@8@@@8SX8%@88@X@;tX8X88XSX@S8;@Xt;..888 8X . ..............................................
t;;t;t;;;t;;;;t;;;;;;;tt;;;;;;;t;;;;;:;:;:;:;;;;:;;:;;:S88SXSX88;t:%%SXSS%%X ;@%t%XXX@S@8X@8X%X888@XXS8%888SStSS%S88S8X8@88;tSS888888S8Stttt;tt%%S8;@ttttttttt;t;;t;;;;t;tt;t;t;;t;t;ttt;tt;t;tttttttt
88888888888888888888888888888888888888888888888888S88S8X8X%%8@888tt;8S.8.S8.X 8S88S@;8ttt@8SS8X%8@88XXt@X8@%SX888tX@S@%8%S8X%.@%8XX8 t8S8@%@;X;X;StXtS%XtStXtX%X%@t@t@;@;@;@t@%;@:@:@:@:@:@:@:@S%S.@.@ S
8@@8X8XSS8@@SX8@8@SS@8X8888SS8@88888S8888888888X888X888@X;88X888:8%:S88S8%88%888S8%;8X;;:Xt@8@;t888StX8@88@%tS88%8tt8t%888%X@@@8 .8@88SX8%S%S%S%StStStXtStS%S%XtX;S:X:S;S;S;S;S;S;S;S;S;S:S;S.:::S:%;%:;
888@888@8888@88888@888888888888888888S888S888%888S8888X@8X@8888@88X:888X8S%8@@888Xt8:@:X;8SS@88%888.S%88888t8X88XS%8@@S @8X@88tS%@ :SXXSS%S88.88888X888S888S888S:8 t88S;8 88 88 ;8 ;8 ;8 ;8 :8 8 %:8 %SS
8@88888888888888888%8888;88S88888888888.8888888.88:8888888X8S88888SS88S888SX8S8;S8X8S;@@t888@88S88@Xt888X@88888S@.8%@ .X.SS8 8SX.S:8:8:8.%88 .8   8   8  88 S  8 S.8  8  8 88 888 8 88 88 88 88 88  8  %
88888S888888888:888888888 88:88888:8888.8S888 88 88 88 888888888.888888888%888888 888888S88888888:88@888 S:@88SX@t8888888 88888888;88 8%88  8 888S88888%8%88888S 8  8  8 88  8  8  8 888 8SSSS%8SS 8S8  
88888888888888888888888 888888888888888888888888888888888888888888888888888888888888888888 %8@ % @X8@SXXS.8..8X%S888888 8888S8%8888888888888888888 888888888%8888 88 888888888888888 88S8888 8888888888 
X@8888888888888888888888888888888888888888888888888 88888888888888888 88 888888888888 88888 888888t88:8888888X88888888S888888 88888%8888888888888888888888888888888888%88888888888888 8888888S8888888888