-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-......---.......................................--..................................................................................................................................................--.................................................--..........--...............--...---.....---............-...--..........---.-----.--------...----------..------...------------------------------------.
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::*****************::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::******:::--------::::******:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:****::----------------------::*****:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------------------------------------:***:--------------------------------:*+*:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------------------------------.--:**::-------------------------------------::*+*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------------------------------:***:-------------------------------------------:*+*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------------------------------------------------------------------------:**:------------------------------------------------:***---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------------------------.-:**:-----------................-------------------------:*+:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------------------------:**:---------.....................--------------------------:+*:.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------:**:-------..........................---------------------------*+:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------.-:**:------.............................----------------------------:+*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------:*:------...............................------------------------------*+:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------------------------------------------------------------:*:------................................--------------------------------*+:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------:*:-----.................................-----------------------------------:+*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------------------:*:----..................................-------------------------------------:+*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------------:*:-----.................................----------------------------------------:+*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------------------------------------------------------:*:----.................................-------------------------------------------:+*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------------------------------------------------------**-----................................----------------------------------------------:+*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------------:*:----................................-------------------------------------------------:+:------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------------------------------------------------:*:----...............................----------------------------------------------------:+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------::----..............................--------------------------------------------------------*+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------------------------------------------------::-.--............................------------------------------------------------------------*+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------:*:---............................---------------------------------------------------------------+*.--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------:*----.........................-------------------------------------------------------------------:+:--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------------------------------------------::----........................----------------------------------------------------------------------*+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------::----......................--------------------------------------------------------------------------+*-------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------------------------------------------::----.....................----------------------------------------------------------------------------:+:------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------------------------------------------:------................----------------------------------------------------------------------------------**------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------:------.............--------------------------------------------------------------------------------------:+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------:-------.........-------------------------------------------------------------------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------------------------------------:------------------------------------------------------------------------------------------------------------:+:----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------------------------------------::--------------------------------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------------------------------------:---------------------------------------------------------------------------------------------------------------:+:---------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------::-----------------------------------------------------------------------------------------------------------------**---------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------:------------------------------------------------------------------------------------------------------------------:+:--------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------:--------------------------------------------------------------------------------------------------------------------**--------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------------------------------:---------------------------------------------------------------------------------------------------------------------*+--------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------:----------------------------------------------------------------------------------------------------------------------:+:-------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------------------------------:------------------------------------------------------------------------------------------------------------------------**-------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------------------------------:-------------------------------------------------------------------------------------------------------------------------:+-------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------:--------------------------------------------------------------------------------------------------------------------------:+:------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------:----------------------------------------------------------------------------------------------------------------------------+*------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------------------------:-----------------------------------------------------------------------------------------------------------------------------**------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+:-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+:----------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*:----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------.----:::::::---------------------------------------------------------------------------------------------------------------------------------*:----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------::***:::::*****::----------------------------------------------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------------:*++++***::-....--:**:--.-----------------------------------------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------:*+=%%%%%%%%%==+:-....-:**-------------------------------------------------------------::---------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------.-*+=%%%%%%%%%%%%%%@%+:....-:*:----------------------------------------------------::************:---------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------:+=%%%%%%%%%%%%%%%%%%%%+-....-**:-----------------------------------------------:***::-......--::****:-----------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------*=%%%%%%%%%%%%%%%%%%%%%%%%*.....:*:--------------------------------------------*+++***++**:--.......-:**:---------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------*=%%%%%%%%%%%%%%%%%%%%%%%%%%+-....-**-----------------------------------------:+==%%%%@@@@@@%%+*-......-:**:-------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------*=%%%%%%%%%%%%%%%%%%%%%%%%%%%@=:.....**--------------------------------------:+=%%%@@@@%@@@%%%@@@%+-.......:**------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------:+%%==++==%%%%%%%%%%%%%%%%%%%%%%%=:.....**------------------------------------*=%@@%%%%@@@@%%%%%%%%%@%+-......-**:----------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------.-+%%*:----:*=%%%%%%%%%%%%%%%%%%%%%%=-.....**----------------------------------*=%@@@@@@@@@@@@@@%%%%%%%%@%*. .....:*:---------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------*%=:---------+%%%%%%%%%%%%%%%%%%%%%%=-.....*:-------------------------------:+%@%=++++=%@@%%%@@@%%%%%%%%%%+- .....-**--------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------*==------------*%%%%%%%%%%%%%%%%%%%%%%+.....-*:.----------------------------:+%@=*------:+%@@%%%%%%%%%%%%%%@=- .....-**-------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------:+=:-------------+%%%%%%%%%%%%%%%%%%%%%%:.....:*-----------------------------+%%+----------*%@%%%%%@%%%%%%%%%@%-.......**------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------+%+--------------:%%%%%%%%%%%%%%%%%%%%%%=-.....*:---------------------------*%%+------------*%%%%%%%%%%%%%%%%%@=- ......**-----------------------------------*:----------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------:=%:---------------=%%%%%%%%%%%%%%%%%%%%%%*.....-*--------------------------*=%=--------------+@%%%%%%%%%@@@%%%@@=. .....-*:---------------------------------:+:----------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------+%=----------------+@%%%%%%%%%%%%%%%%%%%%%=-.....::------------------------*=%%*--------------:%%%%%%%%%%%@%%%%%@@+.......-+---------------------------------:+:----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------:=%=----------------+%%%%%%%%%%%%%%%%%%%%%%%*.....-*-----------------------:+%@%:---------------=@%%%%%%%%%%%%%%@@@%: ......:*--------------------------------:+:----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------*%%=----------------+%%%%%%%%%%%%%%%%%%%%%%%=......::----------------------*%%@=----------------=@%%@%%%%%%%%@@@@@%@=........+:-------------------------------*+-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------=%%%:---------------=%%%%%%%%%%%%%%%%%%%%%%%%-.....-*---------------------:=%%@=----------------+%%@@@@%%%%%%@@@@@%%%* ......:*-------------------------------*+-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------*=%%%+--------------:%%%%%%%%%%%%%%%%%%%%%%%%%*......*---------------------+%%%@=----------------=%%@@@%%%%%%%%%@@%@%%=. ......*:------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------*%%%%=:-------------+%%%%%%%%%%%%%%%%%%%%%%%%%+......::-------------------:=%@@@%:--------------:=@@@%@%%@%%%%%@@@%%%@@*.......-*-----------------------------:+:-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------.-+%%%%%+------------*%%%%%%%%%%%%%%%%%%%%%%%%%%=. ....:*-------------------*%%%%%%*--------------*%@@%%%%@@@@@@@@@@@@@@@=........*:----------------------------:+:-----------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:=%%%%%%=:---------*%%%%%%%%%%%%%%%%%%%%%%%%%%%=- ....-*------------------:+%%%%%%%:------------:%@%@%%%@@@@@%%%%%%@%%%%%-.......:*----------------------------*+------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:=%%%%%%%=*:-----*=%%%%%%%%%%%%%%%%%%%%%%%%%%%%=- .....*------------------*=%%%%%%@=:----------:+@%%@@%%@@@%%%%%%%%%%%%@@* ......-*----------------------------**------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------*%%%%%%%%%%%=++=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-......*:-----------------+%%%%%%%%%=:--------:=@%%%%%%%%%%%%%%@@%%%%%%@@+........*:---------------------------+:------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-......::-----------------+%%%%%%%%%%%+*:--:*+%@%@%@%%@@%%@@@@@@@%%%%%%@@=........:*--------------------------:+-------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-......::----------------:=%%%%%%%%%%%%%===%%@@%%%@%%%%%%@%%@@@@@%%%%%%@@=-.......-*--------------------------*+-------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------.-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=-......::----------------:=%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@%%%%%%%%%%%%- ..... -*--------------------------+*-------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------.-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=.......::----------------*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%- ..... .*:------------------------:+:-------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=.......::----------------*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%- ..... .*:------------------------*+--------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------*=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+.......::----------------+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%- .......::-----------------------:+:--------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:.......*-----------------+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@@@%%@%- .......::-----------------------*+:--------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-......-*-----------------+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@%@@%- .......::-----------------------*+---------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------.:*=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+.......-*-----------------+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%@@=.........:*----------------------:+*.--------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------.-**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:.......::-----------------+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@+.........::----------------------:+:.--------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------*:=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=........*:-----------------*=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@*.........*:----------------------*+----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------.::*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*...... -*------------------*+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%:....... .*:----------------------+*----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------.-*-=%%%%%%%%%%%%%%%%%%%%%%%%%%%=+*****+%%%%=........:*------------------**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%@@@@=..........*:---------------------:+:----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------*-:%%%%%%%%%%%%%%%%%%%%%%%%%+:--------:+%%:........*--..----.----------::+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@+.........-*----------------------:+:----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------.:*.*%%%%%%%%%%%%%%%%%%%%%%%*------------**........:*-------------------:*:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%-........ :*----------------------*+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------.-*-.+%%%%%%%%%%%%%%%%%%%%%+-------------..........*++++********:::-----:*-=@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@+..........:*----------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------:*.-=%%%%%%%%%%%%%%%%%%%=:-------------.........-+@###@#%:-::::=%======+-:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%-..........*:---------------------:+:.----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------*:.-=%%%%%%%%%%%%%%%%%%=-------------. .......-*+@#####@......=#######%:.+%%%%%%%%%%%%%%%%%%%%@@%@%@@@%==+++=%%%%@*..........-*:---------------------:+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------*-.-+%%%%%%%%%%%%%%%%%=:----------...........:*+#######:....-*=@#####%*.-%%%%%%%%%%%%%%%%%%%%%%%%@@%+:------:*=@=...........**----------------------*+------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------.:*...*%%%%%%%%%%%%%%%%%*---------...........:*-+#######+----:::*%####%*:.:%%%%%%%%%%%%%%%%%%%%%%@@=*-----------*:..........-+:----------------------+*------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------:*...:=%%%%%%%%%%%%%%%%:-------...... ....-*--+######%::::::::::=###=**..*%%%%%%%%%%%%%%%%%%%%%@%:------------............:*----------------------:+:------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------*:....*=%%%%%%%%%%%%%%%*:---............-*:.-+######@+*****:::::+@#=:*:..+%%%%%%%%%%%%%%%%%%%@@+-------------.......... -*:----------------------:+:------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------:*:.....:+=%%%%%%%%%%%@%+:.............-*:.--+########@@@@@%*::*:+@=-:*...+%%%%%%%%%%%%%%%%%%@%:-----------.............**-----------------------*+-------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------:-*:.... .-:*+=======+*:-.............:*:----*@#############=:::::+*--*:...*%@%%%%%%%%%%%%%%%%%*----------.............:+:-----------------------**-------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------::--**-.........-----... ............:*:-----:%#############=:::::**---*-...:=%%%%%%%%%%%%%%%%@+---------.............-+*------------------------**-------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------.--:----:*:........... ..............-**----.---=############@*:*:::*:---:*-...-+%%@%%%%%%%%%%%%%%*------...............**-------------------------+:-------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------.-:-----:**-.........................:*:---------*@###########=:::::**-----:*.....:+%@@%%%%%%%%%%%@%*:--................:*-------------------------:+:-------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------.::-------:**:....................-:**-----------:=######%*::=*:::*:*:------**.... .-*=%%%%@@%%@@@%@%*-................:*:-------------------------:+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------.-::---------:**:-..............-:**:--------------:%####=... .-:::***--------**..... ..-:++=%%%==+*:-.................:+:--------------------------**--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------*------------:***::--------::***:-----------------*=##@-......::***:---------**-...... .....-.... ...............:*:---------------------------**--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------:*---------------:::*********::---------------------:=@=.......:*+*:-----------:*-........ . . .................-**:----------------------------+*--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------::--------------------------------------------------::***--..--*+*--------------:*:......... .....................-**-----------------------------:+:--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------*:-------------------------------------------------::--:********:----------------:**-...........................-*+:------------------------------:+:--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------.-*---------------------------------------------------------:::----------------------:**-.......................-:**:-------------------------------*+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------.:*------------------------------------------------------::---------------------------:*+*:............... ...-:**:---------------------------------*+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------*:.----------------------------------------------------::::---::-::--------------------:****:-...........--****:-----------------------------------**---------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------*:.--------------------------------------------------------------::-----------------------::******:::::*****:--------------------------------------+*---------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------*----------------------------------------------------------------::---------------------------::******::::-----------------------------------------+:---------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------.:*----------------------------------------------------------------::-------------------------------------------------------------------------------:+:---------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------.**--------------------------------------------.-------------------:::------------------------------------------------------------------------------:+:---------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------.-*:-----------------------------------------------------------------::------------------------------------------------------------------------------:+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------.:+:-------------------------------------------------------------------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------.:*--------------------------------------------------------------------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------**--------------------------------------------------------------------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------*:---------------.----------------------------------------------------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------*:------------------.-------------------------------------------------------------------------------------------------------------------------------*:----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:+-.----------------:-----.-------------------------------------------------------------------------------------------------------------------------:*:----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:*-----------------*++*-----------------------------------------------------------------------------------------------------------------------------:*:----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------**----------------**::**----------------------------------------------------------------------------------------------------------------------------:+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------*:---------------**----*:---------------------------------------------------------------------------------------------------------------------------:*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------.-*:---------------*:----::--*+*+*--------------------------------------------------------------------------------------------------------------------:*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------.:+---------------:*-----:*:**:::**-------------------------------------------------------------------------------------------------------------------:*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------:*--------------.:*----.-**:-.--:+:------------------------------------------------------------------------------------------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------**----------------*------*:---.-.**-----------------------------------------------------------:****--------------------------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------*:----------------*:-----:-------:*----------------------------------------------------------*+*::**-----::*::---------------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------+:----------------::-------------:*---------------------------------------------------------:+*----*:--:*****+*--------------------------------------*:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------:+:-----------------:-------------*:---------------------------------------------------------+*-----:*-:*:----:+*-------------------------------------*:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------:+-------------------:----------:*+:--------------------------------------------------------:+:------::*-------:+:------------------------------------*:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------**-----------------------------:***+*-------------------------------------------------------:+--------:---------**------------------------------------*:.----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------**---------------------------------:+:------------------------------------------------------:*------------------:*------------------------------------+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------*:---------------:------------------**-------------------------------------------------------*------------------:+------------------------------------*:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------*:----------.---:-------------------**---------------------------------------------------*+*:*:-----------------:*------------------------------------*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------*----------.---:-..-----------------**--------------------------------------------------+*:::*:-----------------*:-----------------------------------:*:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------.------------------------------------------------:*------------:--..-----------------:+:-------------------------------------------------:+:--------------------.:*------------------------------------:+------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------:*----------::--..-----------------:+*--------------------------------------------------:*:---------------------::------------------------------------:+------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------:*---------::--...--------------:***:----------------------------------------------------+:---------------------:-------------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------::--------::-....-------------------.----------------------------------------------------**-----------------------------------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------::-------*:-....-------------------..-----------------------------------------------------*:-------------------.--------------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------::-----:*:--....---------------------------------------------------------------------------**:--------------------:-----------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------:-----:*---....----------------------------------------------------------------------------------------------------:----------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------:----:*---.....-----------------------------------------------------------------------------------------------------:---------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------:---*:---.....------------------:-----------------------------------------------------------------------------------:---------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------:--**--.......------------------:------------------------------------------------------------------------------------:--------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------**--.......-------------------:-------------------------------------------------------------------------------------:-------------------------------:*------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-.-----------------------------.-------------------------------------------------*:--........-------------------:------------------------------------------------------------:------------------------::------------------------------:*----------------------------------------------------------------:**++**:------------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------.-**--........--------------------:------------------------------------------------------------:--.----------------------:------------------------------:*--------------------------------------------------------------:*+++***+++:----------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------.-**--..........------------------::------------------------------------------------------------:--..---------------------::-----------------------------:*------------------------------------------------------------:*+*::-----:*+*---------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------**--.........--------------------::-----------------------------------------------------------::--..----------------------::----------------------------:*-----------------------------------------------------------:++:----------:++:-------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------**--..........--------------------::-----------------------------------------------------------:---..-----------------------*----------------------------:*----------------------------------------------------------*+*-........-----++-------------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------:*-...........---------------------::-----------------------------------------------------------:--...-----------------------::---------------------------:*---------------------------------------------------------*=*-...........----++------------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------:+:.-..........---------------------::-----------------------------------------------------------:--...------------------------*---------------------------:*--------------------------------------------------------:+*-.............---:+*-----------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------.-*:--...........---------------------::----------------------------------------------------------::--...------------------------:*--------------------------:*-------------------------------------------------------:+*-...............---*+-----------------------------------------------------------------------------------------
-.------------------------------------------------------------------------**--............---------------------::----------------------------------------------------------::-....-------------------------*:-------------------------:*-------------------------------------------------------*+-................----+*----------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------:*-.............----------------------*:----------------------------------------------------------:--.....------------------------:*-------------------------:*------------------------------------------------------:+:................-----:+:---------------------------------------------------------------------------------------
-.---------------------------------------------------------------------.-*:.............-----------------------*-----------------------------------------------------------:--.....-------------------------*:------------------------:*------------------------------------------------------*+-................------+*---------------------------------------------------------------------------------------
-.----------------------------------------------------------------------**-.............----------------------:*-----------------------------------------------------------:--.....-------------------------:*------------------------:*-----------------------------------------------------:+:-...............-------*+---------------------------------------------------------------------------------------
-.----------------------------------------------------------------------*:-.............----------------------:*----------------------------------------------------------::--.....--------------------------*:-----------------------:*-----------------------------------------------------:+--..............--------:+:--------------------------------------------------------------------------------------
-.---------------------------------------------------------------------**-.............--.--------------------:*----------------------------------------------------------::--......-------------------------:*-----------------------:*-----------------------------------------------------**-..............----------+*--------------------------------------------------------------------------------------
-.---------------------------------------------------------------------+-..............-----------------------*:----------------------------------------------------------::--......-------------------------:*:----------------------:*-----------------------------------------------------+*-.............-----------**--------------------------------------------------------------------------------------
-.--------------------------------------------------------------------**-.............-----------------------:*:----------------------------------------------------------*-........--------------------------**----------------------:*-----------------------------------------------------+:-............------------:+--------------------------------------------------------------------------------------
-.--------------------------------------------------------------------*:-.............-----------------------:*-----------------------------------------------------------*-........--------------------------:*:---------------------:*-----------------------------------------------------+:-...........-------------:+:-------------------------------------------------------------------------------------
-.-------------------------------------------------------------------:*-..............-----------------------:*-----------------------------------------------------------*--.......--------------------------:**---------------------:*----------------------------------------------------:+:-.........----------------+:-------------------------------------------------------------------------------------
-.------------------------------------------------------------------.**-.............------------------------**-----------------------------------------------------------*-........---------------------------:+:--------------------:*----------------------------------------------------:+:-........-----------------**-------------------------------------------------------------------------------------
-.-------------------------------------------------------------------*:..............----------------------::*:----------------------------------------------------------:*-........---------------------------:**--------------------:*----------------------------------------------------:+:-......-------------------**-------------------------------------------------------------------------------------
-.--------------------------------------------.----------------------*:.............-----------------------::+-----------------------------------------------------------:*-........--------------------------:-**---------------------*----------------------------------------------------:+:---.----------------------**-------------------------------------------------------------------------------------
-.--------------------------------------------.----------------------*-.............----------------------:::*-----------------------------------------------------------:*-........--------------------------:::*:--------------------*----------------------------------------------------:+:--------------------------:+-------------------------------------------------------------------------------------
-.-------------------------------------------------------------------*-............-----------------------::*:-----------------------------------------------------------:*-........--------------------------:::**--------------------*----------------------------------------------------:+:--------------------------:+-------------------------------------------------------------------------------------
-.------------------------------------------------------------------:*-............----------------------:::*:-----------------------------------------------------------:*-.........-------------------------::-**--------------------*:---------------------------------------------------:+---------------------------:+:------------------------------------------------------------------------------------
-.-----------------------------------------------------------------.-*:...........-----------------------:-**------------------------------------------------------------:*-.........-------------------------::-:*:-------------------*:---------------------------------------------------:+---------------------------:+:------------------------------------------------------------------------------------
-.-----------------------------------------------------------------.-+:...........---------------------:--:*:------------------------------------------------------------:*-.........-------------------------::::**-------------------*:---------------------------------------------------**---------------------------:+:------------------------------------------------------------------------------------
-.---------------------------------------------------------------.---**..........----------------------::-*+:------------------------------------------------------------:*-.........-------------------------::::**-------------------*:---------------------------------------------------**---------------------------:+:------------------------------------------------------------------------------------
-.------------------------------------------------------------------.:*-.........-----------------------::**-------------------------------------------------------------:*-.........------------------------::::-**:------------------*:---------------------------------------------------**---------------------------:+:------------------------------------------------------------------------------------
-.------------------------------------------------------------------.-*:-.......---------------------:::-*+:-------------------------------------------------------------:*-.........------------------------::::::+:------------------*:---------------------------------------------------+:---------------------------:+:------------------------------------------------------------------------------------
-.--------------------------------------------------------------------**-......-----------------------:::+*--------------------------------------------------------------:*-.........------------------------::::::+*------------------::--------------------------------------------------:+:---------------------------:+:------------------------------------------------------------------------------------
-.--------------------------------------------------------------------:+:---..------------------------:-**---------------------------------------------------------------:*--........------------------------::::::**------------------:*--------------------------------------------------:+----------------------------:+:------------------------------------------------------------------------------------
-.----------------------------------------------------------------..---:+-.--------------------------:::+:----------------------------------------------------------------*-.........------------------------:-::::**------------------:*--------------------------------------------------**----------------------------:+:------------------------------------------------------------------------------------
-.----------------------------------------------------------------..----**------------------------:::::**-----------------------------------------------------------------*:.........-----------------------::-::::*+------------------:*--------------------------------------------------*:----------------------------:+:------------------------------------------------------------------------------------
-.-----------------------------------------------------------------.-----**---------------------::::::**------------------------------------------------------------------**-........-------------------------:::::*+:-----------------:*-------------------------------------------------:+:----------------------------:+:------------------------------------------------------------------------------------
-.-----------------------------.-----------------------------------------:+*-------------------::-:-:**:------------------------------------------------------------------**--.......-----------------------:::::::*+------------------:*-------------------------------------------------:*-----------------------------:+-------------------------------------------------------------------------------------
-.------------------------------------------------------------------------:+*-----.----------:::-:-:*+:-------------------------------------------------------------------:*--.......----------------------::::::::*+-------------------*-------------------------------------------------**-----------------------------:+-------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------.-:++--------------:::::-:*+:---------------------------------------------------------------------+:--......----------------------::::::::**-------------------*-------------------------------------------------+:-----------------------------:*-------------------------------------------------------------------------------------
-.------------.-------------------------------------------------------------:*+:----------::::::::++:----------------------------------------------------------------------**--......----------------------::::::::**-------------------*------------------------------------------------:+------------------------------**-------------------------------------------------------------------------------------
-.------------.--------------..-----------------------------------------------*+*:-----:::::::::*+*:-----------------------------------------------------------------------:*----....---------------------:::::::::**-------------------*:-----------------------------------------------**------------------------------**-------------------------------------------------------------------------------------
-.--.--------------------------------------------------------------------------:*++*:::::::::**+*:--------------------------------------------------------------------------*:----..----------------------::::-::::+*-------------------::-----------------------------------------------+:------------------------------*:-------------------------------------------------------------------------------------
-.-----.--------------------------------------------------------------------.----:*+++*****+++*:----------------------------------------------------------------------------*+---------------------------::::::::::+:-------------------::-----------------------------------------------+-------------------------------*:-------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------:*******::------------------------------------------------------------------------------:+:-------------------------::::::::::*+:-------------------::----------------------------------------------**------------------------------:*:-------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+:-----------------------:::::::::::+*--------------------::-----------::**********::---------------------*:------------------------------:*--------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------**----------------------::-::::::::*+:--------------------::-------:***+********++++++**:----------------:*-------------------------------:*--------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------..---------------------------------------------------------------------------------------------:+*--------------------:::-::::::::+*----------------------:----::***::------------::**+++*:-------------**-------------------------------**--------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+*------------------::::-:::::-:+*-----------------------:---:::----------------------:**+**:----------*:-------------------------------*:--------------------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+*----------------:::::::::::*+*:-----------------------:------------..........---------::*+*:-------:*--------------------------------*---------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:*+:------------::::-::::-::*+*-------------------------:--------....................------:***------*:-------------------------------:*---------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------:------------------------------------------------------------------------------------------------*+*::-----::::::--::--::*++*--------------------------:------.........................------:**----*--------------------------------:*---------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------:-------------------------------------------------------------------------------------------------:*++**::::--::::::::**++*:---------------------------:----.............................------:::-::--------------------------------*:---------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------.::--------------------------------------------------------------------------------------------------::*++++********++++*::-----------------------------:----.............................---------:*---------------------------------*:---------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:-----------------------------------------------------------------------------------------------------::***********::-------------------------------------..........................-------------:*--------------------------------:*----------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:------------------------------------------------------------------------------------------------------------------------------------------------------:-........................----------------*:--------------------------------:*----------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:------------------------------------------------------------------------------------------------------------------------------------------------------:-....................--------------------*---------------------------------*:----------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:------------------------------------------------------------------------------------------------------------------------------------------------------:-...............------------------------::--------------------------------:*-----------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:------------------------------------------------------------------------------------------------------------------------------------------------------:---.....--------------------------------*---------------------------------:*-----------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::---------------------------------::-----------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*----------------------------------*------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::---------------------------------::------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:----------------------------------::------------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::----------------------------------:-------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:----------------------------------::-------------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:----------------------------------:---:****:-----------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:-----------------------------------:-*+++**+++:---------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::**::---::++*--------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------.-.::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:*:---------*++:------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:*:-----------:++------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::--------------------------------::-------------:+*-----------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::******:::-----------------------------------------*+:----------------------------------------------------------------------------
-.--------------------------------------------------.--------------------------------*------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::-----------------::****::--------------------------------------:+*----------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------*:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:****::-----------------------------------:*+:---------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::***:---------------------------------::+:---------------------------------------------------------------------------
-.----------------------------------------------------------------------------------.::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.....------------------:***:-------------------------------::+:---------------------------------------------------------------------------
-.----------------------------------------------------------------------------------.-*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------...................------------:*+*:-----------------------------::*:---------------------------------------------------------------------------
-.------------------------------------------------------------------------------------*----------------------------------------------------------------------------------------------------------------------------------------------------------------------..........................----------:*+*----------------------------::+:---------------------------------------------------------------------------
-.------------------------------------------------------------------------------------*:-------------------------------------------------------------------------------------------------------------------------------------------------------------------..............................----------:*+:-------------------------:::*----------------------------------------------------------------------------
-.----------------------------------------------------------.-------------------------:*-----------------------------------------------------------------------------------------------------------------------------------------------------------------...................................---------*+*------------------------::**----------------------------------------------------------------------------
-.------------------------------------------------------------------------------------:*----------------------------------------------------------------------------------------------------------------------------------------------------------------......................................--------:+*:---------------------:::*-----------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------*---------------------------------------------------------------------------------------------------------------------------------------------------------------........................................---------*+:-----------------:::::::-----------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------*:------------------------------------------------------------------------------------------------------------------------------------------------------------.......................................-------------*+*--------------::::::**::----------------------------------------------------------------------------
-.----------------------------------------------------.--------------------------------:*-----------------------------------------------------------------------------------------------------------------------------------------------------------....................................------------------:+*------------::::--::::**:--------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------:*----------------------------------------------------------------------------------------------------------------------------------------------------------..................................----------------------:+*----------::----------:+:-------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------+:--------------------------------------------------------------------------------------------------------------------------------------------------------...............................---------------------------:+*----------------------:+:------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------**--------------------------------------------------------------------------------------------------------------------------------------------------------..........................---------------------------------*+:----------------------**------------------------------------------------------------------------
-.------------------.-------------------------------------------------------------------:*--------------------------------------------------------------------------------------------------------------------------------------------------------......................--------------------------------------*+:-:-------------------:+------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------:+--------------------------------------------------------------------------------------------------------------------------------------------------------...............----------------------------------------------*+:--------------------:+:-----------------------------------------------------------------------
-.---------------------------------------------------------------------------------------*:----------------------------------------------------------------------------------------------------------------------------------------------------------......-----------------------------------------------------++-------------------::+*-----------------------------------------------------------------------
-.---------------------------------------------------------------------------------------**---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+*------------------::**-----------------------------------------------------------------------
-.---------------------------------------------------------------------------------------:*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+:-----------------::**-----------------------------------------------------------------------
-.----------------------------------------------------------------------------------------+:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*+----------------:::**-----------------------------------------------------------------------
-.----------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+*--------------::::+*-----------------------------------------------------------------------
-.----------------------------------------------------------------------------------------:+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*+:------------:::::+:-----------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+*-----------:::::*+------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+:::-::::::::::::+*------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------:+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+*::::::::::::::++:------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*+:::::::::::::*+:-------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------**-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:+*:::::::::::*+:--------------------------------------------------------------------------
-.------------------------------------------------------------------------------------------:+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:*+::::::::**++:---------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------+:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::+*:*****++*:-----------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------**----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::+*--:::::--------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------+:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::*+---------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------**---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::+:--------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------------------.:+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::+*--------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------+:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::**--------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------------------*+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::*+--------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------+:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::+:-------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------**-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::+*-------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------------------------:+:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::+*-------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------------:::**------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::**-------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------------::::::*+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::**-------------------------------------------------------------------------------------
-.--------------------------------------------------------------------------------------::::::::::+*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::*+-------------------------------------------------------------------------------------
-.-----------------------------------------------------------------------------------:::::::::::::*+:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::*+-------------------------------------------------------------------------------------
-.---------------------------------------------------------------------------------::::::::::::::::+*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::*+:------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------------::::::::::::::::::*+:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::*+:------------------------------------------------------------------------------------
-.----------------------------------------------------------------------------::::::::::::::::::::::+*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::+:------------------------------------------------------------------------------------
-.-------------------------------------------------------------------------:::::::::::::::::::::::::*+:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::+:------------------------------------------------------------------------------------
-.------------------------------------------------------------------------:::::::::::::::::::::::::::+*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::+:------------------------------------------------------------------------------------
-.----------------------------------------------------------------------:::::::::::::::::::::::::::::*+*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::*+:------------------------------------------------------------------------------------
-.-------------------------------------------------------------------:::::::::::::::::::::::::::::::::*+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::*+*::----------------------------------------------------------------------------------
-.-----------------------------------------------------------------::::::::::::::::::::::::::::::::::::+*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::*+::::::-------------------------------------------------------------------------------
-.---------------------------------------------------------------::::::::::::::::::::::::::::::::::::::*+:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::*+::::::::-----------------------------------------------------------------------------
-.-------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::+*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+::::::::::---------------------------------------------------------------------------
-.-----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::*+:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+::::::::::::-------------------------------------------------------------------------
-.----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::++::::::::::::::-----------------------------------------------------------------------
-.--------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::*+*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::++::::::::::::::::---------------------------------------------------------------------
-.------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::*+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::+*::::::::::::::::::-------------------------------------------------------------------
-.----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+*::::::::::::::::::::-----------------------------------------------------------------
-.--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::*:::::::::*+*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+:::::::::::::::::::::::---------------------------------------------------------------
-.-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::**:::::::::*=:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::++::::::::::::::::::::::::--------------------------------------------------------------
-.-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::++:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::+*::::::::::::::::::::::::::------------------------------------------------------------
-.----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*+*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+*::::::::::::::::::::::::::::----------------------------------------------------------
-.--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+::::::::::::::::::::::::::::::---------------------------------------------------------
-.------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::++:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::++::::::::::::::::::::::::::::::::-------------------------------------------------------
-.-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*++:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::+*:::::::::::::::::::::::::::::::::------------------------------------------------------
-.---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*:*::*=*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*+*:::::::::::::::::::::::::::::::::::----------------------------------------------------
-.--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*::--*=*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::++:::::::::::::::::::::::::::::::::::::---------------------------------------------------
-.------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------*+:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*+*:::::::::::::::::::::::::::::::::::::::-------------------------------------------------
-.-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::**:::---------++:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*+::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------
-.----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*:::------------:++:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::+*:::::::::::::::::::::::::::::::::::::::::::----------------------------------------------
-.--------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:+*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*+*::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------
-.-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------:*+*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::++::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------
-.-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::*+*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*+*::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------
-.----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*::--------------------:::::*+*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::++::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------
-.---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------:*:::::*+:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*+*::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------
-.-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------:*::::::::*+:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::+*::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------
-.------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:*::::::::::*+*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::*+*:::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------
-.-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------:*:-::::::::::*+*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*+*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------.
-.---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:*:----:::::::::++:------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::++::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------..
-.--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------:*:-----::::::::::++*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::+=*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------....
-.-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------**:------:::::::::::*+*---------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*=*:*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------......
-.-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------**:--------:::::::::::*+*--------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::+*-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------......
-..----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------**:----------:::::::::::*+*:-----------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::++----::*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------......
. .....-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------**-------------::::::::::::+*:---------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::++:-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------.....
. ......--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------*+--------------:::::::::::::++:-------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::*+:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------.......
. .........-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------**:---------------:::::::::::::++*------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+:----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------.... ...
. ..........--::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------+*-----------------::::::::::::::*++:---------------------------------------------------------------------------------------------------------------------------------------------------------:::::::+=:-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------..... ...
. ...........-::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------:+*-------------------::::::::::::-::++:-------------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+:---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------..........
. ............:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------:+*--------------------::::::::::::::-:*+*-----------------------------------------------------------------------------------------------------------------------------------------------------:::::::*+:------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------...........
. ............-::::::::::::::::::::::::::::::::::::::::::::::::*::------------------------------:+*----------------------::::::::::::::::*+*:--------------------------------------------------------------------------------------------------------------------------------------------------:::::::++:--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------... ........
. .............-::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------:+*-----------------------::::::::::::::::::*+*------------------------------------------------------------------------------------------------------------------------------------------------:::::::++:-----------------------:*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----.............
. ..............:::::::::::::::::::::::::::::::::::::::::::::::-------------------------------:+*-------------------------:::::::::::::::---*++:---------------------------------------------------------------------------------------------------------------------------------------------:::::::++:-------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--..............
. ... ..........-::::::::::::::::::::::::::::::::::::::::::::--------------------------------:+*--------------------------::::::::::::::-----:+=*:------------------------------------------------------------------------------------------------------------------------------------------::::::*++-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
. ... ...........-::::::::::::::::::::::::::::::::::::::::::--------------------------------:+*------------------------:---::::::::*::---------*++*----------------------------------------------------------------------------------------------------------------------------------------::::::*=*-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-...............
. .......-::::::::::::::::::::::::::::::::::::::::---------------------------------:+*------------------------:----::::::**:-------------*+*:-------------------------------------------------------------------------------------------------------------------------------------::::::++:---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-......
. ........:::::::::::::::::::::::::::::::::::::::---------------------------------*+:------------------------------::::**:----------------:++*:----------------------------------------------------------------------------------------------------------------------------------:::::*++:-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-......
. ........-:::::::::::::::::::::::::::::::::::::---------------------------------*+*-------------------------------::**:--------------------:++*--------------------------------------------------------------------------------------------------------------------------------:::::++*--------------------------------------::*::::::::::::::::::::::::::::::::::::::::::::::::-.......
. ........-::::::::::::::::::::::::::::::::::::---------------------------------*+:-------------------------------:**:------------------------:++*-----------------------------------------------------------------------------------------------------------------------------::::*++:-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::-.......
. .. .....:::::::::::::::::::::::::::::::::::---------------------------------*+:------------------------------:**:----------------------------:++*:-------------------------------------------------------------------------------------------------------------------------:::*++:--------------------------------------------:*:::::::::::::::::::::::::::::::::::::::::::::-.........
. .. .....-::::::::::::::::::::::::::::::::----------------------------------*+:-----------------------------:**:--------------------------------:***:----------------------------------------------------------------------------------------------------------------------:::++*-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-..........
. . ..........--:::::::::::::::::::::::::--------*:------------------------*+*----------------------------:*+*------------------------------------:***:-------------------------------------------------------------------------------------------------------------------::*++:-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::....... ...
. . ..............-:::::::::::::::::::::---------:+*:---------------------*+:---------------------------:***:---------------------------------------:*+*:---------------------------------------------------------------------------------------------------------------::*++:----------------------------------------------------:*::::::::::::::::::::::::::::::::::::::::-....... ...
. .. ................-:::::::::::::::::-----------:=+*:------------------++:--------------------------:*+*:-------------------------------------::::-::***::-----------------------------------------------------------------------------------------------------------:*++:-------------------------------------------------------:*::::::::::::::::::::::::::::::::::::::-...........
. .. ..................-::::::::::::::-------------*==++:---------------++:-------------------------:***:----------------------------------::::::::::::-::***:-------------------------------------------------------------------------------------------------------:*+*:----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::-...........
. ......... . .......-::::::::::----------------*+*+=*:------------++:------------------------:*+*----------------------------------:::::::::::::::::-:::***:----------------:---------------------------------------------------------------------------------:*+*:-------------------------------------------------------------:::::::::::::::::::::::::::::::::::::-.........
. .......-::::::::------------------++::+++:--------:++:-----------------------:*+*:-------------------------------::::::::::::::::::::::::::::**:::------------:------------------------------------------------------------------------------::*+*:-----------------------------------------------------------------:*:::::::::::::::::::::::::::::::::.....
. .........-:::::--------------------++:::+++:-----:++:----------------------:*+*:-----------------------------:::::::::::::::::::::::::::::::::::**:::--------:----------------------------------------------------------------------------::*+*:---------------------------------------------------------------------:::::::::::::::::::::::::::::::::-.....
. ..........-:::---------------------:+*---:+++:--:++:---------------------:*+*:----------------------------:::::::::::::::::::::::::::::::::::::::::::::::----:--------------------------------------------------------------------------:*++*:------------------------------------------------------------------------::::::::::::::::::::::::::::::::......
. ...........-:-----------------------*+*----:+++*++:--------------------:*+*:---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::-:------------------------------------------------------------------------::*+*:----------------------------------------------------------------------------::::::::::::::::::::::::::::::-......
. ...... .......-----------------------*=:-----:++*:-------------------:*+*:--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-::::::--------------------------------------------------------------------::****:::------------------------------------------------------------------------------:*:::::::::::::::::::::::::::.......
. ............------------------------++:------::------------------:*++:--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::--::-----------------------------------------------------------------::****::--::::::--------------------------------------------------------------------------::::::::::::::::::::::::::::-.....
. .............------------------------++:-----------------------:*++:-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------:::****::--:::::::::::::------------------------------------------------------------------------::*::::::::::::::::::::::::.....
. ............-----------------------:+*---------------------:*++:-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------::::***::::::::::::::::::::::::----------------------------------------------------------------------:::::::::::::::::::::::::-......
. .............-----------------------:+*------------------:*++:-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*:----------------------------------------------------::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::.......
. ..............------------------------*+:---------------:*++:------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------::::::::::::::::::::::-.......
. ............------------------------*+:------------:*++:-------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------:::::::::::::::::::::......
. ...........------------------------++:---------:*++:-------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------::::::::::::::::::::.......
. ..........-------------------------++-------:*++:-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*:-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------::::::::::::::::::-.......
. .......------------------------:=*----:*++*------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*-------------------------------------------::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------:::::::::::::::::.......
. ........------------------------:+*-:*++:-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-*:-----------------------------------------::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------:::::::::::::::-.......
. ........-------------------------*++++*-------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*---------------------------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------::::::::::::::-.......
. .........-------------------------*=*-------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-*:----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------::::::::::::::........
. ........----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*:---------------------------------------:*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------:::::::::::::........
. ........--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-**---------------------------------------:*:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------:::::::::::-........
. ........-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*:--------------------------------------:*:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------::::::::::-........
. ..........----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:*-------------------------------------:*:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------:::::::::.........
. ..........---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:*:------------------------------------:*:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------:::::::::..... ...
. ..........-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*------------------------------------:*:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------:::::::-..... ...
. ...........-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:*:-----------------------------------**::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------::::::-...... .
. ...........---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:*-----------------------------------**::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------:*:::.......
. ...........--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:*:---------------------------------:**:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------::-........
. ...........-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::**---------------------------------:*******::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------..............
. ...........-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::*+:--------------------------------:**:********::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------..................----------------------..................
. ...........----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::****+--------------------------------:**:*******:******::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--.........................------------------...................
. ...........---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::***:***+:-------------------------------*+*:**:***************::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--.............................-------------........... ..........
. ...........--------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::****:::*:**------------------------------:*+****:****:::*******:*****:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-..................................----------............ .........
. ...........------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::*****:*:**:*+:-----------------------------:++****:::*::::::*****::::*****:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--.......... .........................-------....... .... .......
. ...........-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::****::::*:::::**-----------------------------:+*****:::**:::::***********:******::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.......... ..............----.........
. ...........----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:::****::::::*::::*+*----------------------------*+*:**********::::***************:****:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--........... ................-..........
. ...........---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:****::::::**::**:**+----------------------------*+*:***********:::***************::::****::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-............. ...........................
. ...........--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::****:***:::::::****+*--------------------------:*+*:**:*****::::::*************::::::::::***:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-.............. ............
. ...........------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*********::::::::****+--------------------------:*+*:::**::***::::::*********::****:::::::::****::::::::::::::::::::::::::::::::::::::::::::::::::::::-.... ......... ............
. ...........-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*::::*******::::::*:**+*-------------------------:++*::*:::::**::::::::::::::::::::***::::::::*:::**:::::::::::::::::::::::::::::::::::::::::::::::::::-.... ... .. ............
. ...........----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::***::::*******:::**:**:*+-------------------------*+**::**:::::*****::::::::*::::::::*****:::::::::::***::::::::::::::::::::::::::::::::::::::::::::::::-......... .. ... .. ....
. ..........----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::****::::::::****::***:*:*+*------------------------*+*:*::::::::**********:::**:**:::::********::::::::::***::-::::::::::::::::::::::::::::::::::::::::::-.......... ..........
. ...........--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::***::::::::::::***::**::::*+-----------------------:*+**:****:::::****:::**::::::::::::::**::::::::::****::::**::-:::::::::::::::::::::::::::::::::::::::::............ ...........
. ...........-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::**:::*****:::::::*::***:::*+:----------------------:*+*:**:::::::::**:::::::::::**::*******::::::::::****::::::***:::::::::::::::::::::::::::::::::::::::::........ .... ............
. .. .........---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::***::::***::::::::::::*:***:*+----------------------:++*:**:::::********::**:***::::*********:::::***::***::*::*:****:::::::::::::::::::::::::::::::::::::::-.......... .. .. ..
. ..........------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::***::*:::**:::::::::::::*:::*+:---------------------:+**:::****:*************:::::::::****:::*::::******::::***********:::::::::::::::::::::::::::::::::::::-...........
. ...........----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::**::::::::****:::::::::::*:*:+*---------------------*+*****:************************:::::::::**::::**::**::::*************:::::::::::::::::::::::::::::::::::-......
. ........-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::**:::::::::::*:::::::::::::::**+:--------------------*+*:****:::******************:****:::****::*::::**::**::::**************:::::::::::::::::::::::::::::::::-.......
. .........-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::*::::***::::::::::::::::::::*:*+*-------------------:*+*:***::*:::**********::*****:****:::*******:::::****:***::***::*****::***:::::::::::::::::::::::::::::::........
. ..........----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::**::::****::**::**::::**::****:*+:------------------:++*:::*::****:****::*::*************::::******:::*:::::******************:**::::::::::::::::::::::::::::::-........
. ...........-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:**::::::********::**::::*********+*------------------:++*:::::::****:****:**::******:***:****::::::*******::::*******************::::::::::::::::::::::::::::::::.........
. ............-:::::::::-----------------:::::::::::::::::::::::::::::::::--::***:::::::::****:::****:*********++------------------*+****::::::********::**::*:::***************::*****:*:::****::**************:::**::::::::::::::::::::::::::-.........
. .......... ..-::----.....................----::::::::::::::::::::::::::--:***::*::::**:::***::::***:**:******+:----------------:*+*:**:::::::****::::::**:::::::******:::::***::*****::::*****::**************::::**:::::::::::::::::::::::::-.........
. .................... .........................---:::::::::::::::::::::-:**:::**:*:::*::::::::::**:::::*****++----------------:++*****:::*:::****::::****::::::::********:::**:::*****::*****::::*********:***:::::**::::::::::::::::::::::::..........
. ..................................................---:::::::::::::::-::***::::******::::::**::::::::::****++:---------------:++*:*:**::::**::**********:::::***:*********:::::::*::**::*:::*:::::*******:::::::**:::**:::::::::::::::::::::-.........
. ....... ................---:::::::::::-::**::::::::*+++**::**:**:::::*::::***+*---------------:++*::****:**:**::**:****:**::*******************::::******:::*::**:::***::**::::***:::*:***::::::::::::::::::::-.........
. ...... ............. ....--::::::::-::**::::*:::::**+++***:*::::::**:::***++---------------*++**::***::*****::**:********:********************:********:::**:**:::****::::::********:****:::::::::::::::::::-.........
. ...... ...... ..........-:::::-::***:::::::::*::*+++++*:::::****:::***+:--------------*+*::*:::::::**:***************::******::*:::**********:::::::**:::**:::****:::::*********:::***::::::::::::::::::-.........
. .........--::::*:::::::::::::*::*+*:*++**:::******:*+*--------------*+*::*:*::::::**::***::**:::*:**::***********::*****:***:::::::**:::**:::****:**::***:*****::*:***:--::::::::::::::..........
. .............--**:::::::::::::::**:*+:-:*+++*********+*-------------:++*::::****:::***::***::**:::*:**:*************::::::::*******:::::::**:::***:*******:::****::*****::-::::::::::::::..........
. .... .......-:*:::::***:::::::****+:---:++++**::*++:------------:++*:::::**:*::::::::***:**:::::********::***::***************::::::***::::::*******:::***:***********:::::::::::::::-..........
. ....::::::****::*::::****+:----:*+++**++:------------:++*:::::::***::::*****::************:***::**:**::****************:::::**::*:********::*************:***::-:::::::::::-..........
. .. .-:**::**::::::::::::*+*------:*+++:------------*+**::*:::::**::::*******:::::::::*********:**::***********::*********:***:*******:::****::*********::::**::-::::::::::-........ .
. .. .........-:**:::::::::::::*:*+*--------:------------:*+****::::*::*::*****:::--------------:::::****:::***********:***::******::::*****:::*********::******:::***:-::::::::::-........ .
. ...... ...........:**::::::::::::*::++*-------------------:*+*:*:*::********:::-------------------------:::**::**********::**::*****:::::****:::****::***::**************:::::::::::-........
. ..... ..........-**::::::::::::::*++*-----------------:++*::*::**::****::-------------------------------:::****::*****::*::******:::::***:::**********:**************:*::::::::::-. .. ..
. ....... . .-:*::::::*:::*****++*---------------*++*::::::*****::-------------------------------------::***::***::*::::******::::***:********************:******:**:-:::::::-. .
. ...... .....:*::::**:********++*-------------*++*::***::***::-----------------------------------------::**********:::::**:**:*******************:***:*:::********:--::---... ..
. ...... .... .:**:***:****:*****+*-----------*+*::*****:**::---------------------------------------------::***:*****:::::*::*******:::****************::::***::****:--....... ..
. . ... .-*****:::::::**:**+*--------:*+*::********:-------------------------------------------------::********:***:::::::***:::***:**********************::-...........
. .. ..... .-******:::::*::***+*------:++*:***:****:-----------------------------------------------------::**********:::***********************************:-.... ........
. ......-**:****::********+*----:++****:****::--------------------------------------------------------:****:***:::******::**********************:***:-.............
. .......-:*:****::********+*--:++*****:***:------------------------------------------------------------:**:***::*******:*********************:***:-...............
. .......-:*:****::********+**++*********:--------------------------------------------------------------:*****::********************************-.................
. .........-**::::***********+=+****:****------------------------------------------------------------------:***::******************************:...................
. ........ .-*::::******:***********:**:--------------------------------------------------------------------:****:***************:************-....................
. .. .......-*::*************:*******:----------------------------------------------------------------------:::**::**********************:*:.. .......... ...
. .....:**:::*****************:------------------------------------------------------------------------::**::********:::************:.........
. .....:***:************:***:---------------------------------------------------------------------------:***:*******:*************:..........
. .....**:::::***::******::-----------------------------------------------------------------------------:**********:****:::*****:... .......
. ....-*::::::**:::::**:--------------------------------------------------------------------------------:****::*********::****:............
. .....:*::*:**:::::**:----------------------------------------------------------------------------------:**:*****:******::**:.......
. .... .:*:****::**:*:------------------------------------------------------------------------------------:***:***:*****::**:. .....
. .....-**:***:**:*::-------------------------------------------------------------------------------------:**::*********:*:.......
. ......:*:::***:**:---------------------------------------------------------------------------------------:*****:*****:*:- ......
. ..... .:*:******:-----------------------------------------------------------------------------------------:*********::*- ........
. .......-*:*****:-------------------------------------------------------------------------------------------:*****::::*:...... ... .... . ...... .. ......... ... . .... . . .. ..... .. . .. .....
. ... ... .:*****:---------------------------------------------------------------------------------------------:*::::::*:. . . ................................-................. ......................-...
. ... .....-****:-----------------------------------------------------------------------------------------------**::*:**- . . ....-...........................-.......... .-.............-.............-...
. ... ......:***------------------------------------------------------------------------------------------------:**:*:*:..... ....-.. .............................. ...................---...........---.
. ... ......-**:-------------------------------------------------------------------------------------------------:**:*:-..... ....--.........-................-................--..--....--...--..--...-...
. ..........::---------------------------------------------------------------------------------------------------:*:*-.. .. . ....----..-.-..-..-..-.-......---..-.-..-..-......-..----..-.....-..-.-..-...
. ..........------------------------------------------------------------------------------------------------------:*:...... ...--..-.-.....---..--......-..-..-.....--..-... ...-..-..-.............-. .
. . .....------------------------------------------------------------------------------------------------------*:...... ...--.-..-.....---..--.......-.--.-.....--..-....-..-..-..-..-..-.......-...
. .......-----------------------------------------------------------------------------------------------------:- ..... ....---...--....-........-....--...--...-...-....-..-.........-.-...........
. .. ....-----------------------------------------------------------------------------------------------------........ .................-...........................................................
. .........-----------------------------------------------------------------------------------------------------........ ................-............................ . ..........................
. .. .......----------------------------------------------------------------------------------------------------....... ....................... ................... .... . ........................
. .---------------------------------------------------------------------------------------------------.. .
. .---------------------------------------------------------------------------------------------------.