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