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