------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX----
--------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX--
XXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XX
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------