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