  ###                  ##########       ###                     :
#######      ####    ##          ##   #######             ######:
 ######### ###  ##### ############ ######## ###      ###########:
####    ##### ## ### ############## ### ## # #### ########    ##:
### ##### ####  #####     ######    ##   ## ############ ##### #:
#####    ########  #######      ####### #######   ## ####    ###:
###############   ###  ############   ############# # ##########:
########################    ##    ################## ###########:
:.......:.......:.......:.......:.......:.......:.......:.......
