...........            ....:::::::::::.... .......:ooo:......                                                         .::::::::::::::o::oOOO::::::::::::::::
        ............... .....:::::::::......:.       .ooo::.......                                                     .:::::::::::::o::oOO8:::::::::::::::::
               ...............:::::::......:o.         .:ooo:.........              ..................                .:::::::::::::o:::OO8::::::::::::::::::
                ..      .......::::::.........            .:oo::....:.......     .....................::...           :::::::::::::o:::OO8o::::::::::::::::::
                ...      .......::::.....                    .oOOo.  ..::....................:::::::::::::::..       .::::::::::::o:::OO8o:::::::::::::::::::
                ....      .......::.....                       .:oOOo:..::::.................:::::::::oooooooo:.     .:::::::::::o:.:oOOo::::::::::::::::::::
               .......         .........                   ..:oooo::oOOOOo:...................::::::ooOOOOOooooOo:. .::::::::::::o.:ooOo:::::::::::::::::::::
                .......          ......                   ..:oOO88Oo:ooooo:.................::::oooOOOOOOOOOOOOOOoo:::::::::::::o.:ooO:.:::::::::::::::::::::
                 .......         .....         ..        .:..:ooOOOOoooOo.................:::ooooOOOOOOOOOOOOO88OOOOO::::::::::o.:ooO:...:::....:.:::::::::::
                     ....         . ..          ..       :: .O8888OOO8O:................:::oooOO88888OOOOOOOO88OOO888O::::::::o.:oOO:........................
                                 ..              .       .. o8o:.:O888o.................:::oooO88888O8OOOOOO88OO888888Oo:::::o.:oOo..........................
                               .....         .         .: Oo...   .88O...................::::oO8888888OO88888OO88888888OOo::o.:oOo...........................
                                 ....       ..        ....O8:. ..  .8o........... .    . ..:ooO8888O88888888O888888888888Ooo::oOo............................
                                    .      ...      ...::o88O:     o8. ...........        ..:oO888888888888O88888888888888OOooO:.............................
                                          ....      ..:oOO888O:.OO88o   .........           .:oO8888888888O8888888888888888888:..............................
....                                      ...       .::ooo88888O888O   .........             .oO888888888OOOO888888888888888888:.............................
   ..::..   .                                       oOo:::oOO888O88:  .........              .oOO888OO888OoOOO888888888888888888:........................... 
     .........                                      :OO: .::88oO8Oo...:::......               :O88888OO8OOOOOOO88888888888888###8........................    
        ..    ...                                    :. :o:oOo.::.::::::.......               :O88888OOOOO888O888888888888888####o...................        
         .  ..::......                               :ooOoo88.  ..::::::......                :O888888OoOO88O8888888888888888####8:................  ....    
               .    .......                          .oO8888O     .:o::..... .                :O88O888OoOOOOO888888888##8888######88O:..........   ....      
                         ......                       :oO888O::    :oo::.....                .oO8O8888OoooOo888888888####88#######OOO8OO:......  .  .        
                             .....               ..   .oO888888     :o::......              .oOOO88888OOoOoO88888888#8######8#####OOOOOOOOo:..  .            
                                .....             ..  .::OOOOOO     .oo:.........      ...::oO8OOOOOOO8OOoo8888888888#######8#####o..::oOOOOO:..             
        . .                         ....           .   ..oOo        .:oo...............:::oOOO8OOOOOO888OooO888888888########8####o........:oO8Oo:.          
...    ....                            .....         . .:OO:         .oo..... .........::::oO88OOOOO8888O8OOOOO88888##############:.......   .:O8OOOo:.      
:::.. .:...                  .              ....     . .:oO:         .:::..... ....::::...:oO8OOOOO88888888888OO8888#############8.......       .oOOOOOOOo.  
:::.. :...                   .                 ..:.......oO    .     ..:::::.. ......:::...o88OOOO88888888888888888##############O.....           .:O8OooO8Oo
::.. ....                                          .....:oo    ..   ...::oo:. ......:::....o88O88888888888888888888##############o...                .oOO:.:o
::...::.                                              ..:o.    .......:ooOo:...:::::::...:ooOOOOO888888888888888888####8#######88.                      :OO: 
:.. .:.                                              ...:.  .........:oOOOo::::oo:::::::::o:oOO88888###########88888888#########8..                       .oo
... ::  .   ..                                      ...:  ..........:OO88Ooo::oooo:::::::::oO8#####################88#######88##8...                        .
.. .:       . ...        .... .                     ...  ......:..:oOO8OOoooooOOOOo::oooooO88888888###888OO888###############8##o....                        
. .:.         ..      .:..::..........      ....  ....    ...:o:.:ooOOooOOoOO888Oo:OO888####88888888#88OOo:oO88################8.....                        
  ..               ...:..::::::::.............   ......     ....:oooOOoOOOO88888Oo888888888##88OO8888O:::oooOO88###############o.....                        
 .:              .......:::::::::::::::.......  ...... . .. ....::.:O8OOO888888Oo8OooO8O88#88OOOoooo::::ooO##8####8888########8.....                         
               .........::::::::::::::::::::......... . ...... .oo..O8OOOO8##888O8O::::o8888Ooo:::..:::oOO8#8#####8OOO#######8. ....                         
               ........:::::::::::::::::::::........... .. .:: :o:.o88:o88o88#8OOOo:::::oO###Ooo::::oooOO8#8O8####8OO8#######O..                             
  .            .......:::.:::::::::::::::o:.....:..::......:::.:o.:O88:O#O.O8#ooOO::::::o#####8OooOOOOOO##OoO8###8OO########O.......                         
  .              ...      ....:::::::::::::.....:::o::......:::.:oOOOO:O88:8##oO8Oo:::::8########8888O8##OoooO8#888########O............                     
 .                          ..::::::::::::::::.:::o:oo. ....:o:..o88888OO888##8888o::::o###########8888#OOoooOO888########o................                  
.                            ..::::::::::::::::ooooo::  .  .. :oO::o8888888o:::ooo:::o:O#############88OOoOoooO8#########:.....................              
.                              .::::::::::::::oooooo::     :. .OO..o88.oO8O:o::::::::o:8#############8ooOOOoooO8#######8. ....................::..           
                                ..::::::::::::::oooo:.      ...oo.o8#8:O8#Oo88oOooo:::o8############8OOOOOOoooO#######o   ......................::::..       
      .                   .      .::::.::::::::::::::.    ...:.:ooO88o:O8#OO8#O8OoOO::O#############OoOOO8888888888o.       .........              .::::..   
     ..   .                       ..::.::::::::::::::.   ..:..:oooOOoOOOO88888Oo:...:O8############8OOOO8888888Oo.             ....                   ...:::.
      ..                           ..:.::::::::::::::.  ..:::.:o:oOO8OO888888Oo....oO8#############8OOO888Oo:.                                            ..:
      ..                               .:::::::::::::.  ...::.:oooOOOOO88888O:...:OO88#############88888o:......                                             
     ...                  .             .::::::::::::.  ...:..:oOOOooOOOOOOo:..:oOO88#################8:.............                                        
   .  .                                   .::::::::::   .....::ooooooooOoo:::::oOO888#############O888:.................                                     
                                            .:::::::.   ....:::ooooo::oo::o:oooOOO88##############O8#88o.........:..........           .                   ..
           ...                                .:::::    ...:::oo::::::oooooooOOOO88##############8O#####........................        ..::..        .......
  ..       ...                                  ::..    .....:::.::ooooOOOoOOOOOO88#############8OO8888o..:..:...........::.........        .::.    :ooo:....
         .  ..                                .         ....:::::ooooOOOOOOOOOOO88####8OOOOOOOO88Ooooooo::..::............:...............       .oOO8o.     
           ...                                ..  ..     ..::::ooooOOOOOOOOOOO8888#Oo:::::::oooO8Oooooooooo:::..........................:.....  :oo8O::o:.   
    .  . .....                                 .  ........::oooooOOOOOOOOOOOOOO88OO::oOo..:::::oO8888ooooo::::::.....:.......  .....:......... .::O:    .::..
   ...  .....                            .......    ..::::ooOooooo:::ooo:::...oOO:oo:oO8..:ooooo8##8#Oooo::::::::::..........   .........:..  .::o....       
   ..   .....                            ... .........:::::::. .:ooooo:::oooooOOO.:::::::::oOOOo8####ooooo:::::::............... .........:. .oo::........   
     .  .....                                ....  ..  ::::::::oooooooooooooOOOOO::o:o:::::oO88Oooooooooo::::::::........................::..oOo:............
       .......                                ....  .. :::::::ooooooooooooooOOOOOo:::::::::oooO888Ooooooo::::::::................ .......:: :OOo:........... 
  ..   .......                                 .     . .:::::::oooooooooooooOOOOo::o:::::::::oOO888oooooo:::::::...................:::::::. oOo:::.......... 
  ..  .........                                   . .   :::::::ooooooooooooOOOooo::oOo..::::::8#88#8ooooo:::::::..................:::::::.  :o:............. 
      ...........                                       ::::::oooooooooooooOOOo.::::...::ooo:o8#888Oooooo:::::::..................:::oo.      .::::....  ... 
   . .............                                       :::::ooooooooooooOoOOo.:::::::::oO88::OOooooooooo::::::..................:::o:                      
  . ...  ..........                                       ..::ooooooooooooooOOo.:...:::::ooOO888Oooooooooo:::::...................:::o.        ...           
...  ............                                          ..::oooooooooooooOOoo:.::...::ooO8OOO8oooooooooo:::::..................::::        ...          ..
:..........:::..                                     ...     ::ooooooooooOOoOOo:::::...::::O88888Oooooooooo::::....................::.        ...    ......  
o:......:::::::..                             ..     ..:::    ..ooooooooOOoooo:ooOOo..::o::8#####Ooooooooo:::::....................::.        ...   ...::..:.
o:.....:::::oo::.            ....        ...........  .::oo:   ...:..:::::.:::::ooo:.::oooo88#88Ooooooooooo:::::....................:               ..:::::::
O::...::::ooooo::           ......     ....::....:oo:: .:oooo:  .   .:ooo..:::::..::::ooOOO.:. oooooooooooo:::::.....................                ..::::::
O::..::::oooooo::.  ......   .........   :..   ::oooo:..::oOOOo:.......:o:.:::....:.:::oOOo .. :oooooooooooo:::::....................                ..:...::
o:::::::ooooooo::.  .........  ...........  .:::::ooo:.::ooOOOOOoo:...oo:::..::....:::o:oOO::. :oooooooooooo:::::....................                     ..: