::::::::::     :::::::::::::::::::      ::::::::::::::::: :::::::::::::::: ::
:::::: ::::::::::::::::::::::::::::::::::::::::::     ::::::::::::::::::::  ::
:::::::::::::::::::::::::::::::::::::::::          ::::::::::::::::::::::::::::
  ::::::::::::::::::::::::::::::::::::::::::  :::::      :::::::::::::::::::: :
 :::::::::::::::::::::::::::::::::::::::::::::::ooooo         :::::::::::::::::
::::::::::::::::::::::::::::::::  :::::::XXXXooooooooooooo    :::::::::::::::::
::  ::::::::::::: :::::::::::: ::::::::     ooooooooooooooo  ::::::::::::X:::::
 ::::::::::::  :::::::::::::::ooooooo      oooooooooooooooo         :::::::::::
::::::::::::::::::::::::::::ooooooooooo     oooooooooooooo              ::: :::
::::::::::::::::::::::::::oooooooooooooo    oooooooooooooooooooo        :::  ::
::: :::::::::::::::::::: ooooooooooooooo    oooooooooooooooooooooo      ::::  :
   :::::::::::::::::::: ooooooooooooooooo       oooooooooooooooo oo    :::::: :
 ::::::::::::::::::::  ::oooooooooooooooo          oo  oooooo oooooo   ::::::::
:::::::::::::::::::    :::    ooooooooo             ooooooooo ooo ooo  ::::::::
::::::::::::::::::   ::::                           ooo ooooooo     o   :::::::
::::::     ::::::  :::::  ooooooooooooooooo         ooooooooooo  oooo   :::::::
::::      :::::::::::::ooooXXXXXXXXXXXXooooooooooo   oooooooooooooo     ::: :::
          :::::::::: XXXXXXXXXXXXXXXXXXXXXXXXXXoooo    oooooo          ::::  ::
          ::::::     XXXXXXXXXXXXXXXXXXXXXXXXXXXX:oo                   ::::: ::
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo::X                   ::: ::
                   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo::::                   ::: ::
                   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo::::X                  ::::::
                  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo::::::                  :: :::
                  XXXXXXXXXXXXXXXXXXXXXXXXXXX:oooo:::::                  :: ::
                 '      `+XXXXXXXXX+'         `4o:::::::                 :: ::
                 XooXXXb..  `XX''  ..ooXXXXXXXXboXXX::::                ::: ::
                 4XXXXXXXXXb.  ..dXXXXXXXXXXXXXXXXXXXXX        ..oooo.  ::: ::
                   .oo'o`4X XXXXXXXXXXXX++XXXXXXXXXXXXXX    .dXXXXX XXX ::::::
                  .d@@. .dP XXXXXXb.X@@( `)XXXXXXXXXoo:oX  .XXXX XXX XX  ::::
                  XXXXXXXP dXXXXXXXXXXXXbnXXXXXXXXXooooo:::XXXX . XX XX :::::::
                  XXXXXXX dXXXXXXXXXXXXXXXXXXXXXXooooooo:::XXX .X  X XX :::::::
                  XXXXXX dXXXXXXXXXXXXXXXXXXXXXXooooooo::::XX  XP  X X   :::
                   XXXXX XXXXXXXXXXXXXXXXXXXXXXooooooo::X ::  "  .XXX'
                   XXXXXXb XX..   XXXXXXXXXXXXooooooo::::::: XXXXXXX'
                    XXXXXXX::XXXXXXXXXXXXXXXXooooooo:::::::::XXXXXP
                    XXXXXXX::XXXXXXXXXXXXXXXXoooo:o:::::  :::""""
                     XXXXP' " `+XXXXXXXXXXXXooooooo::::: : ::
                      Xb --._...__`XXXXXXXXooooooo:::::    ::
                      XXb._     _.dXXXXXXXXooooooo:::   :::::
                       XXXXXXXXXXXXXXXXXXXooooooo:::  ::::::::
                       XXXXXXXXXXXXXXXXXXXooo:o:::    ::::::::
                        XXXXX XXXXXXXXXXXXooooo:   ::ooo:::::::
                         XXXXXXXXXXXXXXXXXX:::    ooooooo::::::
                           XXXXXXXXXXXXXX       XXooooo:o::::::
                             XXX             XXXXXooooooo:::::::
                               X         XXXXXXXXoooooooo:::::::
                               XXXXXXXXXXXXXXXXXXoooooooo:::::::::
                              XXXXXXXXXXXXXXXXXXXXoooooooo:: ::::::
                              XXXXXXXXXXXXXXXXXXXXoooooooo:: ::::::
                                 XXXXXXXXXXXXXXXXXXooooo:oo: ::::::