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