,. .,,vvuvv,.::...,.. .
                                  ,,.;ny$$#$%$%%%yoo;,,:,,::.
                                :,,;%$$R$$%%YOOOOOOoYoOooooo.::,,
                               ::oO%%%$$$$$O%OOOOoO;yoOoooo:::..:,
                             ..:;O%%O$$$$$$$$Y%O%%%%%OOoo:::.,,:,,.
                             .:oO%%%$$%OOYOooOYYoYOOY:::,:,:::....
                               o%%%%%OYYYY^'':'::,:,..:.:,,:,.,.:.,.
                             . O%OYoo,:.    ...o,..    .  . . '.,,,.
                               %Ooo'.,      .,yOo. .        . ...,... .
                               %Oo,;oY::  . u$#O:,.... .       .:...
                            O# O$$$$$OO;;;O%%$#O:,,,... ....   .,, .
                            ',.%%$%$$$$$$%O%%#%Oo:.,:.:::,,.:.::,...  .
                             v O%%%$%%OOY:OYYYY:',,:,:::::,,:.:,..,, ..
                             O:O%%O%OOo'oO; ..:::  ,..,::::,:.:: .:.  .
                              .O%OOOooo%%%OO::,.. .  ,::::,...,:.,.  .:'
                              .OOOOOOOOoooOoO,::.:... ,.:....,,,... .,
                               OoOOoo:::Y., . ..  ....... .......   '
                               'ooYoo,:,o::ooo:. ..    .   .,, :  .
       . ....   .               'oo:::::::.:,, . .'.. .    ... .
 #################yyuwuu.         o:,:.,::o::::,...,..'.    .
 ###################$$$$$%O;;n$#$#$$o:,':.:'::,.  .    .. . ,. .,             .
 $####$#$#######$$$$$%%%%%%%%%$#$$%%Oo:.: .: .     ..      .           , . ....
 O$$$$$%%$$$$$$$$$$$%%%%%%%%%%$#$$$%Oo:::oo:.  . ... ...: ..: .   .   ........,