                                +++++++++++++++++++*******
                           +++++++++++++++++++++++************
                         +++++++++++++++++++++++*****************
                        ++++++++++++++++++++++********************
                       +++++++      ++++++++***********************
                       +++++++      ++++++++************************
                       +++++++      ++++++**************************
                       ++++++++    +++++****************************
                       +++++++++++++++******************************
                       +++++++++++++********************************
                       +++++++++++++********************************
                                             ***********************
           +++++++++++++++++++++************************************ .........::.
       +++++++++++++++++++++++************************************** :........:::::::
     ++++++++++++++++++++++++*************************************** :.......:::::::::
    ++++++++++++++++++++++++**************************************** :....::::::::::::::
  ++++++++++++++++++++++++****************************************** :.:::::::::::::::::
  ++++++++++++++++++++++******************************************** ::::::::::::::::::::
 +++++++++++++++++++++********************************************** :::::::::::::::::::::
+++++++++++++++++++++**********************************************  :::::::::::::::::::::
++++++++++++++++++++**********************************************  ::::::::::::::::::::::
++++++++++++++++++***********************************************  :::::::::::::::::::::::
++++++++++++++++************************************************  :::::::::::::::::::::::::
++++++++++++++**********************************************    :::::::::::::::::::::::::::
+++++++++++++****************                                ::::::::::::::::::::::::::::::
++++++++++++**************    ..:.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++++++**************   :.................::::::::::::::::::::::::::::::::::::::::::::::
++++++++***************  ::...............:::::::::::::::::::::::::::::::::::::::::::::::::
++++++****************  :...............::::::::::::::::::::::::::::::::::::::::::::::::::
*+++++**************** ...............::::::::::::::::::::::::::::::::::::::::::::::::::::
 +++*****************  :...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::
  *******************  :........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  *******************  :......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
   ******************  :..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    *****************  :.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      ***************  :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
          ***********  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
                       :::::::::::::::::::::::
                       :::::::::::::::::::::::::::::::::::::::::::::
                       :::::::::::::::::::::::::::::::::::::::::::::
                       :::::::::::::::::::::::::::::::::::::::::::::
                       :::::::::::::::::::::::::::::::::   :::::::::
                       :::::::::::::::::::::::::::::::       :::::::
                       :::::::::::::::::::::::::::::::       ::::::
                        :::::::::::::::::::::::::::::::     :::::::
                         :::::::::::::::::::::::::::::::::::::::::
                          ::::::::::::::::::::::::::::::::::::::
                             ::::::::::::::::::::::::::::::::
                                  :::::::::::::::::::::::
                                           :::::
