:::::::::  :::::::::  :::::::::: :::::::::: :::::::::   ::::::::  :::::   ::::                :::::::::     :::   :::   ::: 
:+:        :+:    :+: :+:        :+:        :+:    :+: :+:    :+: +:+:+: :+:+:+               :+:    :+:  :+: :+: :+:   :+ 
+:+        +:+    +:+ +:+        +:+        +:+    +:+ +:+    +:+ +:+ +:+:+ +:+               +:+    +:+ +:+   +:+ +:+ +:+ 
:#::+::#   +#++:++#:  +#++:++#   +#++:++#   +#+    +:+ +#+    +:+ +#+  +:+  +#+ +#++:++#++:++ +#++:++#+ +#++:++#++: +#++:  
+#+        +#+    +#+ +#+        +#+        +#+    +#+ +#+    +#+ +#+       +#+               +#+       +#+     +#+  +#+   
#+#        #+#    #+# #+#        #+#        #+#    #+# #+#    #+# #+#       #+#               #+#       #+#     #+#  #+#   
###        ###    ### ########## ########## #########   ########  ###       ###               ###       ###     ###  ###