##   ## ###### #      #      ##       ###    #####    #### #### ####   
 ##   ## #      #      #     #  #     ## ##  ##   ##  ##  ## ##   ##    
 ##   ## #      #      #    #    #   ##   ## ##      ##      ##   ##    
 ####### ####   #      #    #    #   #######  #####  ##      ##   ##    
 ##   ## #      #      #    #    #   ##   ##      ## ##      ##   ##    
 ##   ## #      #      #     #  #    ##   ## ##   ##  ##  ## ##   ##    
 ##   ## ###### ###### ###### ##     ##   ##  #####    #### #### ####