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