oooooooo oooooooo dP""""""" dP""""""" d88888b. oooo oooo ooo ooo. .oo. .oo. d88888b. `Y88b `88. `88. .8' `888P"Y88bP"Y88b `Y88b ]88 `88..]88..8' 888 888 888 ]88 o. .88P `888'`888' 888 888 888 o. .88P `8bd88P' `8' `8' o888o o888o o888o `8bd88P'