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