--------------------------------
--------------------------------
-----######----------######-----
----########--------########----
----##########----##########----
----###########--###########----
----########################----
-----######################-----
------####################------
-------##################-------
--------################--------
---------##############---------
----------############----------
-----------##########-----------
------------########------------
-------------######-------------
--------------####--------------
---------------##---------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
--------------------------------
