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