...               .....::::ccc:::::.......... ...    ............:::...     .......  ......:::::::::::::::::::..:
                           ..:::::ccc::::........... ..     ... .........:.............................:::::::.:::cc::::
     ..                  ..:::::::::::::::....  ..:..            ..... ..:.::::..........::..............:::::::::::::::
   ..                   ...:::::::::::...:...   ...              ............::::.............::....::::.::::::::c::cccc
                   ..  ..:::::::::::......:....  .                 ..  ..........::... .....::::::::..::::::::cccccc:ccc
                     ..:::::::::::....  .....  . .                   ...... ..........:.....:.::.:::::::::::::cccccccccc
                  ......:::cc:::::.....   ...                              . ....   .............:::::ccc::::::c:ccccccc
                   .....:cc::::::......               ..                                  ..    ..::::::::::...:::.:::cc
                  ....:::ccc::::.:.  . .   .          ..                               .......     ...::::cc:...:cCO@@88
                ......::cccc::::........              ..  .                                 ..        ......::oC@@@@@@@@
             ......::::cccccccc:......                                                                  . ..o8@@@@@@@8OO
            .  ...::::ccccoccc::::....                                                                   .CO@@@@@@8OOOCC
           ....::::cccccc:cccccc::......                                                           .    cC@@@@@@8@@@@@@8
          .....::::::cc:ccccc:::::::....                                                              .:CCOO8OOOO8888888
         .....:::::cccccc:ccc::::::.........                                                          :oCOOCoooCOO888888
     . ......::cccccccoc:ccccccc::::........                                                         .coCCooooooCOOO8888
 ......::::::ccccococcccccccccc::::::c:........                                                    ..:coCCCCoooooooooCCO
::.::ccccc:ccccoooooooooccccccc:::::..::........                                                 .  .:ooCo::cccccccccoco
cccccccccccocoooooooooooooooooooc:::::..........                                                   .:coCOOCCoooooooooooo
oooooooooooooooooCCCCCCCCCCoCoCCoocc:::...........                                               ..:ccooOCOOCooooooooooo
oooooooooooCCooCCCCCCCOOOCCCCCCCCCCooc::::.......       .                                     ...:cccoooCooooooooooCCCCC
CCoCCCCCCCCCCCCCCCCOOOOOOOOCCCCCCCCCCooocc::......                                        ....:::coCCOO8OOCCCCCCCCCCOOO8
CCCCCCCCCCCCCCOCOOOOOOOOOOOOOOOOOOCOCCCCoooc::.....                                      ..:::cccoCOOOOO88OOOO88OO888888
CCCCCCCCCCCCOOOOOOOOOOOOOOOOOOOOOOOOOOOOCCCooc::......                                      :ccooCOCOOOO888888OOOO8888OO
CCCCCCCCCCCCOCOOOOOOOOOOOOOOOOOOOOOOOOOOOOCCoooocc::.......                                  .coCOOOOOOOO88888OOO8888888
oooooooooooooooooooCCCCCCCCCCCCCCCCCCCCCCCoooooccc::::....                                     .oCCCCoooooCCCCCCCOCOCOCO
oooooooooooooooooCCCCCCCCCCCCCCCCCCCoCCCCooooooocccc::::....                                    .cCCCooocoCoCCCCCCOCOOCO
ooooooooooooooooCoCCCCCCCCCCCCCCCCCCCCCCoooooooooooooccc:c::::........                            .:oCooooCCCCCCoCCCCCCC
oooooooooooCCoCoCCCCCCCCCCCCCCCCCCCCCCCCCCoCCCooooooooooococcc::::.:::..                        ..   :ooooCoCoooooCCCCOC
oooooooooooCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCoooooooooooocccccc::..::...                     ..:..:oooocccoooCCCCoC
oooooooooooooCCCCCCCCCCCCCCCCCCCCOCCCCCCCCCCCCCCCCCCoCooooooooooooccccc::::....                     .:c..:ocoooooCCCoooo
oooooooooooooooooCoCCCCCCCCCCCCCCCCCCCCOCCCCCCCCCCCCCCoCoooooooooooooooooooccc::...                   .:c:.:cooooCCCCCCo
oooooooooooooooooooooCCCCCCCCCCCCCCOCCCCCCCCCCCCoooooooooooooCooooCCoCoCooooooocc::...                  .::.::oCocCCCCCC
ooooooooooooooooooooooooCCCCCCCCCCCCCCCCoooooooooooooooooooooooCCCCCCCCCCCCoooooocc::...                  ::::cCooCOOCCC
oooooooooooooooooooooooooooCoCCCooooooooooooooooccccccccoooooCCCCCCCCCCCCCCCCCooooocc::........           .::::cCooCoooo
oooooooooooCCCCoooCCCoooocccccccccccccccoccccc:::::::cccooooooCCCCCCCCCCCCCCCCCCooooccc::::......           .cccoCOOooCC
ooooooooCoCCCoooooccc:::ccccoooocccccccc:::.......:cccooooooCCCCCCCCCOCCCCCCCCCCCooooooccc:::...              coooOOooCO
ccccooooooooc:::::::::cccccccccc::::::::::.... .::ccooooooCCCCCCCCCCCCCCCCCCCCCCCCoooooocccc::::...           .:oooooCOO
.::::::::.........  .  ...................    ...:::cccccoooooooooooooooooooooooccccccccc:::::::....            :ccccooo
 ....:::.............      .............       .:::cccccoooooooooooooooooooooooocooccccccccc::::::...           ..::cooo
:::...:c:::::::........     ..........        ..::ccccccoooooooooooooooooooooooocooccccccccccc::::::.. .         .:coooo
cc::::cccccc::::::::......                  ..::::ccccoooooooooooooooooooooooooococccccccccccccc::::::...         .:oooo
:cccccccccccccc:c:::::::::..            .....:::ccccccooooooooooooooooooooooooocococcccccccccccc::::::...         .:oooo
..:ccccoooocccccccccc:::c:::..............::::cccccccooooooooooooooooooooococococcccccccccccccccc::::::..          .ccoo
...cccoooooooooccccccccccc:::::::..:::::::::ccccccccoooooooooooooooooooocoocococcccccccccccccccccc::::::.          .cooo
 ...:cooooooooococccccccccccccccc:ccccccccccccccccccococococcococoocococococccccccccccccccccccccccc:::c:..         .cooo
 ....:oooooooooooooococcccccccccccccccccccccccccccccccccccccccccococccccccocccccccccccccccccccccccccccc:..        ..:coo
......cooooooooooooooooccccccccccccccccccccccoccccocccccocooococcococcccccccccccccccccccccccccccccccc:c:..        ...cco
......coooooooooooooooococccccccccccccccoccocococococcccccooccccocccccccccccccccccccccccccccccccccccccc:..        ...:cc
......cooooooooooooooooococcccccccccccccccoooccccccoccccccccccocccccccccccccccccccccccccccccccccccccccc:...       ....cc
    ..::::c:::::::::::::::::::::.:.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .         ...::
     .::::c:c::::::::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...         ....:
.    .:::::::::::c:::::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.            ...:
     .::::::::c::::::::::c:::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .        ...:.:
     .:::c:c:::::::c:::::::::c::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....        ..::..
     ::::::::::::::::::::::::::.....::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....       ...::::
     .:::::::c:c:::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...       ....::::
     ..:::::::::::::::............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..        ....::::
     . .::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....      ...:::::
.... ..  ..........::c:::........:::::::::::::::::::.:::::::::::::::::::::::::::::::::::::::::::::::. .....    ...::::::
                   c:::.:::....::::::::::::::::........:..:.:.:::::::::::::::::::::::::::::::::::::.........  ....::::::
                  .::::::::::::::::::::::::::::.....  ........:.:.:.:.:.:.::::::.::::::::::.::.:::........... ....::::::
                  .:::::::::::::...........     .......................:.:.:.:.::.::::::::::..::............. ....::::::
                  ........... ...               . .. ... ..  .    .  . ........................ . ..            ........
                  .... .....   ... .. . . .   ........ .. . ..      .. .......................  .   . ..         .......
                   ... ....       .....  .. ........... . . . ..   . ... ....................  .      .          ....   
                   ... ....               .  .                 .  .... .. ...............         .                     
                   ... ...              ..              . .... ...... .................                                 
                   ..                   ..... .......................................                                   
                   ..                     ................................ ........                               ......
                                          .....................................                                       ..
                                            ..................................                              ...    .... 
                                                .................................                   ...    .....        
                                                  ............................. ...      ...          ...   . ..    ....
                                                  ...............................  ....               .......     ......