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