******************************************************************************************~
******************************************************************************************~
******************************************************************************************~
******************************************************************************************~
******************************************************************************************~
******************************************************************************************~
-********^*****+*+************************************************************************~
****?s***^***************^^*****+*^^***********************{******#(****#*****************~
****b***F************************************************bbb******b*****b*****************~
***************b*******o********o***************^***^*************************************~
****D*********b***b*************************+***+***^***D*D*D*********D*D*D**^************~
***********************H********H***********+***f***^************E***********^************~
********************************************+***^****************************^************~
***********************************************F******+***********************F***********~
***a****B*******I********I********I********F*********F*******^*^*^*^**********#***********~
**************************************D**u*********u**************************u***********~
v********************************************************w*******ttt**************ttt>****~
6****************************************9********9********9*****************9********4***~
******C*****C*****C*****C*****C*****C*******************************C*****C***************~
******************************************************************************************~
******************************************************************************************~
******************************************************************************************~