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