_________________________________________________
 |88888888888P'.     ::   "`88888888888888888888888|
 |8888888888-.           .  :`888888888888888888888|
 |888888888|  '+ .    `.' :  ;`88888888888888888888|
 |888888888'` `   :.   `. `.  ;|8888888888888888888|
 |88888888|` ' ` , \.   ;  ;  ;`8888888888888888888|
 |88888888|_`       :.___  : .__|888888888888888888|
 |8888888(-":_.::::.:<"'_>  |<"_<888888888888888888|
 |8888888|:   "`...  `:::' :`:::|888888888888888888|
 |8888888b`-_   `-.`-.   .   |:;:888888888888888888|
 |888888888|| \ _  \.  .'.'  :.:d888888888888888888|
 |888888888|: _  `-.    . _,._>d8888888888888888888|
 |888888888|;\ -. | ``/|     :;88888888888888888888|
 |888888888|;;`. - . /;|..--=_|88888888888888888888|
 |888888888;:;;.`-. `:<  -"`-.`-8;'":88888988888888|
 |88888888P`-._;; ;"-. `.:. ::`-.    88888898888888|
 |888888P:%%%. "-._ ; "-.____:':d`:.i88888889888888|
 |888P:%%%%%%%:.  :"-._`::.;  :d .| |_\888888888888|
 |8P:%%%%%%%%%%%:. .   `.__ _:d; .' |: 888888888888|
 |P%%%%%%%%%%%%%%%\  : :`::" d;.d; dP  8_\888888888|
 |%%%%%%%%%%%%%%%%%:. .   |:d;.d; d;; d;; 888888888|
 |%%%%%%%%%%%%%%%%%%%\  : .';.d; d;; d;;:.dd8888888|
 |%%%%%%%%%%%%%%%%%%%%:.. 8'.d; d;; d;; /d88888LS88|
 |%%%%%%%%%%%%%%%%%%%%%:__8_88_d;;_d;; /d8888888888|