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