:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::==+****++==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::-*+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::=====**====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::***+:=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::===++*#***+==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::=##*-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::=+##+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::-=********=-::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::+**########*=::::::.::.:::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::.:::-*#########*-:::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::+########*::::::.::.::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::=**#####**-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::=+***####*-+++*#==*+=====-=======-*#+=-:::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::-=*#*##############%#%#%###%%###%##%####%%##**+***+++*=+**+-:::::::::::::::::: ::::::::::::.::.:::++**##%##%%#####%%%%#**#%%%%%%%%%%%%%%%%%%%%%%%%%%############*-*=::::::::::::::: ::::::::::.::::::::::::--*##%#**#************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###+:::::::::::::::: ::.::.:..::.:.......:..::.::=*#%####*****++*#%*%%%%%%%%%%%%%%%%%%%%%%%%%*::::::::::::::::::::::::::: .::.........................::=**%%%*###***+=*+++%%%%%%%%%%%%%%%%%%%%#=::::::::::::::::::::::::::::: ..:.::.::..:.::..:.:..:..:....::-**#**++*+**++*==*%%%%%%%%#####%%%%##-:::::::::::::::::::::::::::::: ::.::.::.:::.:::::::.:.::.:::.:.::::*+++*****+===*#%%%%%%#####**#*-::::::::::::::::::::::::-=::::::: :::::::::::::+*+::::::::::::::::::::==****#****===*%%%%%%%%%%%%%#*----::-:-:-:---:-:-:-::::=*-:::::: ++++**+++++++++*+**++**********##***#**####*******#%%%%%%%%%%%%%%%%#####*###********+++++++++++*+*** ++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* ++++++++++=++++++++++++++++++***++++++++=++==+++++++++++++=+++=+=++++++=++++++++++++++++++++++++++++ +++++++==+===++==++======++++++++++++=========================+==================+======+====++++==+