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