oooooo oooooo oooo ooooo ooo oooooo oooo ooooooooooooo   oooooooooooo ooo ooooo   `888. `888. .8'  `888' `8'  `888. .8'  8' 888 `8   `888' `8 `88. .888'   `888. .8888. .8'   888 8   `888. .8'   888     888   888b d'888    `888. .8'`888. .8'   888 8   `888. .8'   888     888oooo8   8 Y88. .P 888    `888.8' `888.8'   888 8   `888.8'   888  8888888888  888 "   8 `888' 888    `888' `888'   `88. .8'   `888'   888     888   8 Y 888    `8' `8'   `YbodP'   `8'   o888o    o888o  o8o o888o