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