<div id="escaped">
<h1>Escape!</h1>
</div>
<!------- Cheryl Velez - Puzzler -------- >
<!-- Trigger/Open The Modal -->
<!-- <button id="puzzlerBtn">Open Cheryls Puzzle</button> -->
<!-- The Modal -->
<div id="puzzlerModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close close-puzzler">×</span>
<!-- puzzler container -->
<div id="puzzler-container">
<div class="content">
<div>
<p id="alert"></p>
</div>
</div>
<p class="quote">"The person who masters himself through self-control and discipline is truly undefeatable." -Buddha</p><br><br>
<p class="quote">Directions: Solve the riddle of the runes: the tiles are all out of order. <br>Can you figure out their correct order?<br>Drag and drop the tiles into the empty boxes in the correct order. <br> Hint: When placing a tile, do not hover over boxes
you've already filled or are going to fill! <br><span class="bighint">Bigger Hint: </span><span class="revealtext">Use the console to watch for changes in the array!</span> </p>
<div id="btn-container"><button>Submit Answer</button>
</div>
<div class="outerflex">
<div class="topContainer">
<div class="outerBorder">
<div class="tile" id="1"><img src="https://assets.codepen.io/108463/tile1.png" alt="" /></div>
</div>
<div class="outerBorder">
<div class="tile" id="2"><img src="https://assets.codepen.io/108463/tile2.png" alt="" /></div>
</div>
<div class="outerBorder">
<div class="tile" id="3"><img src="https://assets.codepen.io/108463/tile3.png" alt="" /></div>
</div>
<div class="outerBorder">
<div class="tile" id="4"><img src="https://assets.codepen.io/108463/tile4.png" alt="" /></div>
</div>
<div class="outerBorder">
<div class="tile" id="5"><img src="https://assets.codepen.io/108463/tile5.png" alt="" /></div>
</div>
<div class="outerBorder">
<div class="tile" id="6"><img src="https://assets.codepen.io/108463/tile6.png" alt="" /></div>
</div>
<div class="outerBorder">
<div class="tile" id="7"><img src="https://assets.codepen.io/108463/tile7.png" alt="" /></div>
</div>
<div class="outerBorder">
<div class="tile" id="8"><img src="https://assets.codepen.io/108463/tile8.png" alt="" /></div>
</div>
</div>
<!-- top container -->
<div class="bottomContainer">
<div class="blank" id="b1"> </div>
<div class="blank" id="b2"> </div>
<div class="blank" id="b3"> </div>
<div class="blank" id="b4"> </div>
<div class="blank" id="b5"> </div>
<div class="blank" id="b6"> </div>
<div class="blank" id="b7"> </div>
<div class="blank" id="b8"> </div>
</div>
<!-- bottom container -->
</div>
<!-- outer container -->
</div>
<!-- end puzzler container -->
</div>
<!-- end modal content -->
</div>
<!-- end modal -->
<!------- End Cheryl Velez - Puzzler ------- >
<!-- Dominic Duffin - Math Puzzle -->
<!-- Trigger/Open The Modal -->
<!-- <button id="mathPuzzleBtn">Open Dominics Puzzle</button> -->
<!-- The Modal -->
<div id="mathPuzzleModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close close-mathpuzzle">×</span>
<!-- Math Puzzle Container -->
<!-- PUZZLE GOES INSIDE HERE -->
<div id="math-puzzle-container">
<div id="math-puzzle-main">
<div id="math-puzzle-keypad">
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-one">1</button>
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-two">2</button>
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-three">3</button>
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-four">4</button>
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-five">5</button>
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-six">6</button>
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-seven">7</button>
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-eight">8</button>
<button type="button" class="math-puzzle-numberButton" id="math-puzzle-nine">9</button>
<button type="button" class="math-puzzle-zeroButton" id="math-puzzle-zero">0</button>
<button type="button" class="math-puzzle-signButton" id="math-puzzle-plus">+</button>
<button type="button" class="math-puzzle-signButton" id="math-puzzle-minus">-</button>
</div>
<div id="math-puzzle-sum">
<div class="math-puzzle-position" id="math-puzzle-message">
Make the sum add up!
</div>
<div class="math-puzzle-position" id="math-puzzle-a">Number</div>
<div class="math-puzzle-position" id="math-puzzle-b">Sign</div>
<div class="math-puzzle-position" id="math-puzzle-c">Number</div>
<div class="math-puzzle-position" id="math-puzzle-d">Sign</div>
<div class="math-puzzle-position" id="math-puzzle-e">Number</div>
<div class="math-puzzle-position" id="math-puzzle-f">=</div>
<div class="math-puzzle-position" id="math-puzzle-g">Number</div>
</div>
</div>
</div>
<!-- end math puzzle container -->
</div>
<!-- end modal content -->
</div>
<!-- end modal -->
<!-- End Dominic Duffin - Math Puzzle -->
<!-- Paul - Flexbox Puzzle -->
<!-- Trigger/Open The Modal -->
<!-- <button id="flexboxPuzzleBtn">Open Pauls Puzzles</button> -->
<!-- The Modal -->
<div id="flexboxPuzzleModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close close-flexboxpuzzle">×</span>
<!-- Flexbox Puzzle Container -->
<!-- PUZZLE GOES INSIDE HERE -->
<div id="flexbox-puzzle-container">
<div>
<header class="heading">
<p class="heading__rules">
Use the buttons to rearrange the boxes and find the correct alignment!<br> The box color will change and indicate if you're getting hot or cold.
<br><br>
</p>
<p class="heading__subtitle"></p>
<div><span class="notification">Start with turning on "Display Flex"</span></div>
</header>
<div class="flex-menu">
<div>
<label for="flexDisplay">Display</label>
<button class="flex-menu__items" id="flexDisplay">Display Flex </button>
</div>
<div>
<label for="flexDirectn">Flex Direction</label>
<button class="flex-menu__items" id="flexDirectn">Change Flex Direction</button>
</div>
<div>
<label for="flexJustCont">Justify-Content</label>
<button class="flex-menu__items" id="flexJustCont">Justify Content</button>
</div>
<div>
<label for="flexAlignItems">Align-Items</label>
<button class="flex-menu__items" id="flexAlignItems">Align Items</button>
</div>
</div>
<div class="flexPuzzle-container">
<div class="cubes cube-1">
<div class="side top"></div>
<div class="side bottom"></div>
<div class="side front"></div>
<div class="side back"></div>
<div class="side left"></div>
<div class="side right"></div>
</div>
<div class="cubes cube-2">
<div class="side top"></div>
<div class="side bottom"></div>
<div class="side front"></div>
<div class="side back"></div>
<div class="side left"></div>
<div class="side right"></div>
</div>
<div class="cubes cube-3">
<div class="side top"></div>
<div class="side bottom"></div>
<div class="side front"></div>
<div class="side back"></div>
<div class="side left"></div>
<div class="side right"></div>
</div>
<div class="cubes cube-4">
<div class="side top"></div>
<div class="side bottom"></div>
<div class="side front"></div>
<div class="side back"></div>
<div class="side left"></div>
<div class="side right"></div>
</div>
<div class="cubes cube-5">
<div class="side top"></div>
<div class="side bottom"></div>
<div class="side front"></div>
<div class="side back"></div>
<div class="side left"></div>
<div class="side right"></div>
</div>
</div>
</div>
</div>
</div>
<!-- end flexbox puzzle container -->
</div>
<!-- end modal content -->
</div>
<!-- end Modal -->
<!-- End Paul - Flexbox Puzzle -->
<!-- Kristopher Van Sant - Mirror Puzzle -->
<!-- Trigger/Open The Modal -->
<!-- <button id="mirrorPuzzleBtn">Open Kristophers Puzzle</button> -->
<!-- The Modal -->
<div id="mirrorPuzzleModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close close-mirrorpuzzle">×</span>
<!-- Mirror Puzzle Container -->
<!-- PUZZLE GOES INSIDE HERE -->
<div id="mirror-puzzle-container">
<p id="mirror-clue">Hmm, I can't seem to read this note.</p>
<div id="note">
<p id="note-text" class="mirror-text">"Scraps of code drifting around the network can congeal into pools of data. within this primordial soup the code breaks, re-assembles, mutates. Evolves"</p>
</div>
<div id="mmirror"></div>
</div>
<!-- end mirror puzzle container -->
</div>
<!-- end modal content -->
</div>
<!-- end modal -->
<!-- End Kristopher Van Sant - Mirror Puzzle -->
<!-- Ryan Saunders - Pipe Puzzle -->
<!-- Trigger/Open The Modal -->
<!-- <button id="pipePuzzleBtn">Open Ryans Puzzle</button> -->
<!-- The Modal -->
<div id="pipePuzzleModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close close-pipepuzzle">×</span>
<!-- Pipe Puzzle Container -->
<!-- PUZZLE GOES INSIDE HERE -->
<div id="pipe-puzzle-container">
<div id="pipe-notbusted">
<div class="container" id="container">
</div>
<div class="testArea">
<button class="testButton" id="test" onClick="newPipe()">
Add Pipe
</button>
<button class="testButton" id="test2" onClick="updatePipes()">
Update Rows & Columns
</button>
<button class="testButton" id="test3" onClick="test()">
List Array
</button>
<br /> <br />
<form>
Rows: <input type="number" min="1" max="10" id="rowCount"> Columns: <input type="number" min="1" max="10" id="colCount">
</form>
<br />
<div class="pipe pipe-straight"></div>
<div class="pipe pipe-cross"></div>
<div class="pipe pipe-angle"></div>
<div class="pipe pipe-junction"></div>
</div>
<div class="bottomConsole"></div>
</div>
<div id="pipe-busted">
<h2>Oh my...Looks like these pipes are busted. <br> I guess I better leave this for the plumber.</h2>
<!-- <img src="https://media.giphy.com/media/46LMaiLUFRkoU/giphy.gif" alt=""> -->
</div>
</div>
<!-- end container -->
</div>
<!-- end modal content -->
</div>
<!-- end modal -->
<!-- End Ryan Saunders - Pipe Puzzle -->
<!-- Antoine Guillien - Recursion Puzzle -->
<!-- Trigger/Open The Modal -->
<!-- <button id="recursionPuzzleBtn">Open Antoines Puzzle</button> -->
<!-- The Modal -->
<div id="recursionPuzzleModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close close-recursionpuzzle">×</span>
<!-- Recursion Puzzle Container -->
<!-- PUZZLE GOES INSIDE HERE -->
<div id="recursion-puzzle-container">
<div id="app">
<h1>We All Scream For Ice Cream</h1>
<div v-if="won" class="won">
<h1>Yay! You found the Ice Cream at level {{details.level}} after {{details.clicks}} clicks and {{details.opened}} containers opened!</h1>
<h1><i class="fa fa-ice-cream"></i></h1>
</div>
<thing v-else :data="root" :cb="cb"></thing>
</div>
</div>
<!-- end container -->
</div>
<!-- end modal content -->
</div>
<!-- end modal -->
<!-- End Antoine Guillien - Recursion Puzzle -->
<!-- ROOM SCENE -->
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="300px" height="105px" viewBox="0 0 300 105" style="enable-background:new 0 0 300 105;" xml:space="preserve">
<style type="text/css">
.st0{fill:#e6e6e6;}
.st1{fill:#e6e6e6;stroke:#000000;stroke-width:0.2578;stroke-miterlimit:10;}
.st2{fill:#e6e6e6;fill-opacity:0;}
.st3{opacity:0;}
</style>
<defs>
</defs>
<g id="id="mirrorNoteWrap>
<g id="mirror">
<ellipse id="solidfill" class="st0" cx="285" cy="27.6" rx="11.5" ry="14.7"/>
<g>
<path class="st0" d="M285,7.9c-8.2,0-14.9,8.8-14.9,19.7s6.7,19.7,14.9,19.7s14.9-8.8,14.9-19.7S293.2,7.9,285,7.9z M285,46.3
c-7.7,0-13.9-8.4-13.9-18.7S277.4,9,285,9s13.9,8.4,13.9,18.7S292.7,46.3,285,46.3z"/>
<path class="st0" d="M285,12.3c-6.4,0-11.6,6.9-11.6,15.3S278.6,43,285,43s11.6-6.9,11.6-15.3S291.4,12.3,285,12.3z M285,41.9
c-5.8,0-10.5-6.4-10.5-14.3s4.7-14.3,10.5-14.3s10.5,6.4,10.5,14.3S290.8,41.9,285,41.9z"/>
<rect x="278.4" y="19.3" transform="matrix(0.7032 -0.711 0.711 0.7032 70.135 207.5076)" width="10.4" height="0.9"/>
<rect x="279.1" y="26.5" transform="matrix(0.7032 -0.711 0.711 0.7032 64.812 209.1774)" width="7.7" height="0.9"/>
</g>
<g id="note">
<path d="M292,37.8c0-0.1,0.5-1.6,0.5-3.6V30h-7.3v4.2c0,1.9-0.4,3.4-0.4,3.4l-0.1,0.3h7.3V37.8z M285.2,37.5
c0.1-0.6,0.4-1.8,0.4-3.2v-3.7h6.3v3.7c0,1.5-0.3,2.8-0.4,3.2C291.6,37.5,285.2,37.5,285.2,37.5z"/>
<rect x="287.9" y="29.6" transform="matrix(9.839854e-02 -0.9951 0.9951 9.839854e-02 230.2782 314.6575)" class="st1 st0" width="1.7" height="1.2"/>
<g>
<g>
<path d="M288.8,32.7h-2.4c0,0-0.1,0-0.1-0.1c0,0,0-0.1,0.1-0.1h2.4C288.9,32.6,288.9,32.6,288.8,32.7
C288.9,32.6,288.9,32.7,288.8,32.7z"/>
</g>
</g>
<g>
<g>
<path d="M291.4,33.5c-0.8,0-1.7,0-2.5,0s-1.7,0-2.5,0c0,0-0.1,0-0.1-0.1c0,0,0-0.1,0.1-0.1c0.8,0,1.7,0,2.5,0s1.7,0,2.5,0
C291.4,33.4,291.4,33.5,291.4,33.5L291.4,33.5z"/>
</g>
</g>
<g>
<g>
<path d="M291.2,34.3h-4.9c0,0-0.1,0-0.1-0.1c0,0,0-0.1,0.1-0.1h4.9C291.2,34.2,291.2,34.3,291.2,34.3L291.2,34.3z"/>
</g>
</g>
<g>
<g>
<path d="M286.5,35.1C286.4,35.1,286.4,35.1,286.5,35.1C286.4,35,286.5,35,286.5,35.1c0.8-0.1,1.6-0.1,2.4-0.1s1.6,0,2.4,0
c0,0,0.1,0,0.1,0.1c0,0,0,0.1-0.1,0.1c-0.8,0-1.6,0-2.4,0C288.1,35.1,287.3,35.1,286.5,35.1z"/>
</g>
</g>
</g>
</g>
<rect id="mirrorPuzzleBtn" x="270" y="8" class="st2" width="30" height="39.5"/>
</g>
<g id="door">
<path class="st0" d="M62.7,56.7c1.5,0,2.8-1.3,2.8-2.8s-1.3-2.8-2.8-2.8c-1.5,0-2.8,1.3-2.8,2.8C60,55.5,61.2,56.7,62.7,56.7z
M62.7,52.9c0.6,0,1,0.5,1,1s-0.5,1-1,1c-0.6,0-1-0.5-1-1S62.2,52.9,62.7,52.9z"/>
<path class="st0" d="M95.9,104v-1.7H74.7l0,0h-0.3V0H21.7v102.3h-2.3H0v1.7h19.2h4.1h2.2h1.7h41.6h1.7h2.1 M68.8,102.3H27.2V5.5
h41.6V102.3z M70.5,102.3V3.8l0,0h-45l0,0v98.5h-2.1V1.7h49.2v100.5h-2.1V102.3z"/>
</g>
<!-- padlock section -->
<svg style="display: none;">
<symbol id="locked" viewBox="0 0 24 24">
</symbol>
<symbol id="unlocked" viewBox="0 0 24 24">
</symbol>
</svg>
<svg id="padlock0" x="75" y="25" width="7" height="7" viewBox="0 0 24 24">
<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
</svg>
<svg id="padlock1" x="75" y="33" width="7" height="7" viewBox="0 0 24 24">
<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
</svg>
<svg id="padlock2" x="75" y="41" width="7" height="7" viewBox="0 0 24 24">
<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
</svg>
<svg id="padlock3" x="75" y="49" width="7" height="7" viewBox="0 0 24 24">
<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
</svg>
<svg id="padlock4" x="75" y="57" width="7" height="7" viewBox="0 0 24 24">
<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
</svg>
<svg id="padlock5" x="75" y="65" width="7" height="7" viewBox="0 0 24 24">
<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
</svg>
<!-- end of padlock section -->
<path id="desk" class="st0" d="M130.4,65.4v5.5h2v33.7h5.5V73H207v6.4v1.3v8.4v1.4v14.1h18.3V90.5v-1.4v-8.4v-1.3v-8.5v-1.3v-4.3
L130.4,65.4L130.4,65.4z M136.7,103.4h-3V70.9h3V73V103.4z M138,71.7v-0.8h69.1v0.8H138z M224.1,103.4h-15.7V90.5h15.7V103.4z
M224.1,89.1h-15.7v-8.4h15.7V89.1z M224.1,79.4h-15.7v-8.5h15.7V79.4z M207.9,69.6h-0.8H138h-1.3h-4.3h-0.7v-3h92.4v3H207.9z
M220.3,75.2h-8.1v-0.6c0-0.8,0.7-1.5,1.5-1.5h5c0.8,0,1.5,0.7,1.5,1.5L220.3,75.2L220.3,75.2z M220.3,85.1h-8.1v-0.6
c0-0.8,0.7-1.5,1.5-1.5h5c0.8,0,1.5,0.7,1.5,1.5L220.3,85.1L220.3,85.1z M212.2,101.8v-0.6c0-0.8,0.7-1.5,1.5-1.5h5
c0.8,0,1.5,0.7,1.5,1.5v0.6H212.2z M220.3,95.1h-8.1v-0.6c0-0.8,0.7-1.5,1.5-1.5h5c0.8,0,1.5,0.7,1.5,1.5L220.3,95.1L220.3,95.1z" />
<g id="computer">
<g>
<g id="hard-drive">
<rect x="205.4" y="60.4" class="st0" width="0.9" height="3" />
<rect x="201.7" y="60.4" class="st0" width="0.9" height="3" />
<polygon class="st0" points="196.3,39.1 206.4,39.1 206.4,40.1 207.3,40.1 207.3,38.2 195.4,38.2 195.4,40.1 196.3,40.1 " />
<path class="st0" d="M193.7,36.2v29.5H209V36.2H193.7z M208.1,64.7h-13.5V37.1h13.5V64.7L208.1,64.7z" />
<polygon class="st0" points="206.2,53.7 204.7,53.7 204.7,54.6 207.1,54.6 207.1,52.1 206.2,52.1 " />
<rect x="199.9" y="60.4" class="st0" width="0.9" height="3" />
<rect x="203.6" y="60.4" class="st0" width="0.9" height="3" />
<rect x="204.6" y="40.9" class="st0" width="1.8" height="0.9" />
<rect x="200.1" y="46.2" class="st0" width="6.3" height="0.9" />
<rect x="198" y="60.4" class="st0" width="0.9" height="3" />
<rect x="196.2" y="60.4" class="st0" width="0.9" height="3" />
</g>
<g id="desktop">
<path class="st0" d="M170.2,61.3c-5,0.2-5,1-5,1.4v2.1c0,1.2,4.1,1.4,7.6,1.4s7.6-0.2,7.6-1.4v-2.1c0-0.3,0-1.1-5-1.4v-3h14.3
V34.9h-33.8v23.4h14.3L170.2,61.3L170.2,61.3z M179.4,64.6c-0.5,0.2-2.7,0.6-6.7,0.6c-3.9,0-6.2-0.4-6.7-0.6v-1.2
c1.4,0.5,4.2,0.6,6.7,0.6s5.2-0.1,6.7-0.6V64.6z M156.7,57.4V35.8h31.9v21.6h-14.3v4.8h0.4c2.1,0.1,3.4,0.3,4.1,0.5
c-0.9,0.2-3,0.5-6.2,0.5s-5.2-0.3-6.2-0.5c0.7-0.2,2-0.4,4.1-0.5h0.4v-4.8C171.1,57.4,156.7,57.4,156.7,57.4z" />
<path class="st0" d="M187,37h-28.5v18.4H187V37z M186,54.4h-26.7V37.9H186V54.4z" />
<rect x="158.9" y="37" class="st0" width="28" height="18" />
<g id="screenglitch">
<rect x="175.2" y="43.1" width="3.2" height="1.1" />
<rect x="181.6" y="43.1" width="3.2" height="1.1" />
<rect x="162.5" y="43.1" width="9.5" height="1.1" />
<rect x="168.9" y="40.5" width="6.3" height="1.1" />
<rect x="178.4" y="40.5" width="3.2" height="1.1" />
<rect x="162.5" y="37.9" width="3.2" height="1.1" />
<rect x="168.9" y="37.9" width="3.2" height="1.1" />
<rect x="175.2" y="37.9" width="3.2" height="1.1" />
<rect x="181.6" y="37.9" width="3.2" height="1.1" />
<rect x="159.4" y="45.6" width="3.2" height="1.1" />
<rect x="165.7" y="45.6" width="6.3" height="1.1" />
<rect x="178.4" y="45.6" width="6.3" height="1.1" />
<rect x="170.2" y="50.8" width="3.2" height="1.1" />
<rect x="163.8" y="50.8" width="3.2" height="1.1" />
<rect x="176.5" y="50.8" width="9.5" height="1.1" />
<rect x="173.3" y="48.2" width="6.3" height="1.1" />
<rect x="160.6" y="48.2" width="3.2" height="1.1" />
<rect x="167" y="48.2" width="3.2" height="1.1" />
<rect x="176.5" y="53.4" width="6.3" height="1.1" />
<rect x="163.8" y="53.4" width="6.3" height="1.1" />
</g>
</g>
</g>
</g>
<g id="servers">
<g>
<path class="st0" d="M250.7,72.3c0.2,0,0.4,0.2,0.4,0.4v31.6c0,0.2-0.2,0.4-0.4,0.4h-22.9c-0.2,0-0.4-0.2-0.4-0.4V72.7
c0-0.2,0.2-0.4,0.4-0.4L250.7,72.3 M250.7,71.9h-22.9c-0.4,0-0.7,0.3-0.7,0.7v31.6c0,0.4,0.3,0.7,0.7,0.7h22.9
c0.4,0,0.7-0.3,0.7-0.7V72.7C251.5,72.3,251.1,71.9,250.7,71.9L250.7,71.9z" />
<path class="st0" d="M239.3,87.2c-3.9,0-7.1-3.1-7.1-7s3.2-7,7.1-7c3.9,0,7.1,3.1,7.1,7S243.2,87.2,239.3,87.2z M239.3,73.5
c-3.7,0-6.7,3-6.7,6.6c0,3.7,3,6.6,6.7,6.6s6.7-3,6.7-6.6S243,73.5,239.3,73.5z" />
<g>
<path class="st0" d="M238.9,102.8h-10.2c-0.1,0-0.2-0.1-0.2-0.2V89.9c0-0.1,0.1-0.2,0.2-0.2h10.2c0.1,0,0.2,0.1,0.2,0.2v12.7
C239.1,102.7,239,102.8,238.9,102.8z M228.9,102.4h9.8V90.1h-9.8V102.4z" />
<path class="st0" d="M237.8,91.9h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
C238,91.8,237.9,91.9,237.8,91.9z M235.5,91.5h2.1V91h-2.1V91.5z" />
<path class="st0" d="M234.7,91.9h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
C234.9,91.8,234.8,91.9,234.7,91.9z M232.4,91.5h2.1V91h-2.1V91.5z" />
<path class="st0" d="M237.8,93.4h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
C238,93.3,237.9,93.4,237.8,93.4z M235.5,93h2.1v-0.5h-2.1V93z" />
<path class="st0" d="M234.7,93.4h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
C234.9,93.3,234.8,93.4,234.7,93.4z M232.4,93h2.1v-0.5h-2.1V93z" />
<path class="st0" d="M237.8,94.9h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
C238,94.8,237.9,94.9,237.8,94.9z M235.5,94.5h2.1V94h-2.1V94.5z" />
<path class="st0" d="M234.7,94.9h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
C234.9,94.8,234.8,94.9,234.7,94.9z M232.4,94.5h2.1V94h-2.1V94.5z" />
<path class="st0" d="M230.5,92.1c-0.4,0-0.7-0.3-0.7-0.7s0.3-0.7,0.7-0.7s0.7,0.3,0.7,0.7S230.9,92.1,230.5,92.1z M230.5,91
c-0.2,0-0.4,0.2-0.4,0.4s0.2,0.4,0.4,0.4s0.4-0.2,0.4-0.4S230.7,91,230.5,91z" />
<path class="st0" d="M230.5,94c-0.4,0-0.7-0.3-0.7-0.7s0.3-0.7,0.7-0.7s0.7,0.3,0.7,0.7C231.3,93.6,230.9,94,230.5,94z
M230.5,92.9c-0.2,0-0.4,0.2-0.4,0.4s0.2,0.4,0.4,0.4s0.4-0.2,0.4-0.4S230.7,92.9,230.5,92.9z" />
<path class="st0" d="M237.8,97.5h-8c-0.1,0-0.2-0.1-0.2-0.2v-1.5c0-0.1,0.1-0.2,0.2-0.2h8c0.1,0,0.2,0.1,0.2,0.2v1.5
C238,97.4,237.9,97.5,237.8,97.5z M230,97.1h7.6V96H230V97.1z" />
<path class="st0" d="M237,97h-1.8c-0.1,0-0.1,0-0.2-0.1c0-0.1,0-0.1,0-0.2l0.4-0.5c0,0,0.1-0.1,0.2-0.1h1c0.1,0,0.1,0,0.2,0.1
l0.4,0.5c0,0.1,0,0.1,0,0.2S237.1,97,237,97z M235.6,96.6h1l-0.1-0.2h-0.8L235.6,96.6z" />
<path class="st0" d="M237.8,99.7h-8c-0.1,0-0.2-0.1-0.2-0.2V98c0-0.1,0.1-0.2,0.2-0.2h8c0.1,0,0.2,0.1,0.2,0.2v1.5
C238,99.7,237.9,99.7,237.8,99.7z M230,99.4h7.6v-1.1H230V99.4z" />
<path class="st0" d="M237.8,102h-8c-0.1,0-0.2-0.1-0.2-0.2v-1.5c0-0.1,0.1-0.2,0.2-0.2h8c0.1,0,0.2,0.1,0.2,0.2v1.5
C238,101.9,237.9,102,237.8,102z M230,101.6h7.6v-1.1H230V101.6z" />
<path class="st0" d="M237,99.3h-1.8c-0.1,0-0.1,0-0.2-0.1c0-0.1,0-0.1,0-0.2l0.4-0.5c0,0,0.1-0.1,0.2-0.1h1c0.1,0,0.1,0,0.2,0.1
l0.4,0.5c0,0.1,0,0.1,0,0.2S237.1,99.3,237,99.3z M235.6,98.9h1l-0.1-0.2h-0.8L235.6,98.9z" />
<path class="st0" d="M234.4,99.3h-1.8c-0.1,0-0.1,0-0.2-0.1c0-0.1,0-0.1,0-0.2l0.4-0.5c0,0,0.1-0.1,0.2-0.1h1
c0.1,0,0.1,0,0.2,0.1l0.4,0.5c0,0.1,0,0.1,0,0.2C234.6,99.2,234.5,99.3,234.4,99.3z M233,98.9h1l-0.1-0.2h-0.8L233,98.9z" />
<path class="st0" d="M234.8,97h-1c-0.1,0-0.2-0.1-0.2-0.2v-0.5c0-0.1,0.1-0.2,0.2-0.2h1c0.1,0,0.2,0.1,0.2,0.2v0.5
C235,96.9,234.9,97,234.8,97z M234,96.6h0.6v-0.2H234V96.6z" />
<circle class="st0" cx="230.7" cy="96.5" r="0.2" />
<circle class="st0" cx="231.5" cy="96.5" r="0.2" />
<circle class="st0" cx="232.2" cy="96.5" r="0.2" />
</g>
<path class="st0" d="M239.3,81.6c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5C240.7,81,240.1,81.6,239.3,81.6z
M239.3,79.1c-0.6,0-1.1,0.5-1.1,1.1s0.5,1.1,1.1,1.1s1.1-0.5,1.1-1.1C240.4,79.6,239.9,79.1,239.3,79.1z" />
<path class="st0" d="M239.8,78.9h-0.4c0-2.2,2-4,4.5-4v0.4C241.6,75.2,239.8,76.9,239.8,78.9z" />
<path class="st0" d="M240.4,79.3H240c0-1.4,2.3-2.5,5.3-2.5v0.4C242.7,77.2,240.4,78.2,240.4,79.3z" />
<path class="st0" d="M244.5,84.4c-0.1-2.2-1.8-4-3.8-4V80c2.2-0.1,4.1,1.9,4.2,4.3L244.5,84.4z" />
<path class="st0" d="M242.6,86c0-1.3-0.3-2.6-0.8-3.5c-0.4-0.9-1-1.3-1.5-1.3l0,0v-0.4l0,0c0.7,0,1.4,0.5,1.9,1.5s0.8,2.3,0.8,3.7
L242.6,86z" />
<path class="st0" d="M236.6,86.6l-0.1-0.3c1-0.3,1.9-1,2.4-1.9s0.6-1.9,0.3-2.8l0.4-0.1c0.3,1,0.2,2.1-0.4,3.1
C238.7,85.5,237.8,86.2,236.6,86.6z" />
<path class="st0" d="M234.6,85.2l-0.1-0.3c2.6-0.8,4.4-2.5,4-3.6l0.4-0.1C239.3,82.5,237.4,84.3,234.6,85.2z" />
<path class="st0" d="M235.6,81.8c-1.2,0-2.4-0.5-3.4-1.5l0.3-0.3c1.6,1.6,4,1.8,5.5,0.4l0.3,0.3C237.5,81.5,236.6,81.8,235.6,81.8
z" />
<path class="st0" d="M237,80.4c-0.4,0-0.8-0.1-1.3-0.3c-1-0.4-2.1-1.2-3.1-2.2l0.3-0.3c0.9,1,2,1.7,2.9,2.1s1.7,0.4,2.1,0l0.3,0.3
C237.9,80.3,237.5,80.4,237,80.4z" />
<path class="st0" d="M238.1,79.7c-1-0.4-1.8-1.3-2.1-2.3c-0.4-1.1-0.3-2.3,0.2-3.3l0.3,0.1c-0.4,1-0.5,2.1-0.1,3.1
c0.3,1,1,1.7,1.9,2.1L238.1,79.7z" />
<path class="st0" d="M238.8,79.2c-0.7-0.3-1-1.1-1.1-2.2c0-1.1,0.3-2.4,0.8-3.7l0.3,0.1c-0.5,1.2-0.8,2.5-0.8,3.5s0.3,1.6,0.8,1.9
V79.2z" />
<g>
<path class="st0" d="M249.6,102.8h-9.8c-0.1,0-0.2-0.1-0.2-0.2V89.5c0-0.1,0-0.1,0.1-0.1c0,0,0.1,0,0.2,0
c0.6,0.1,1.2,0.1,1.9,0.1c2.8-0.1,5.4-2.3,7.7-6.5c0-0.1,0.1-0.1,0.2-0.1c0.1,0,0.1,0.1,0.1,0.2v19.6
C249.8,102.7,249.7,102.8,249.6,102.8z M240.1,102.4h9.4V83.7c-2.3,3.9-4.8,5.9-7.7,6c-0.7,0-1.2,0-1.7-0.1V102.4z" />
<g>
<path class="st0" d="M249.6,83.5V83c-0.1,0.1-0.1,0.2-0.2,0.3L249.6,83.5z" />
<path class="st0" d="M249.5,102.1l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8
l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2V96l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8
l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2V92l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8
l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2V88l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8
l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2V84l-0.2,0.2l-0.3-0.3c-0.1,0.1-0.1,0.2-0.2,0.3
l0.2,0.2l-0.4,0.4l-0.1-0.1c-0.1,0.1-0.1,0.2-0.2,0.3l0.1,0.1l-0.4,0.4l0,0c-0.9,1.2-1.9,2.3-3,3l-0.3,0.3l-0.1-0.1
c-0.1,0.1-0.2,0.1-0.3,0.2l0.2,0.2l-0.4,0.4l-0.3-0.3c-0.3,0.1-0.7,0.2-1,0.3l0,0l0,0c-0.1,0-0.3,0.1-0.5,0.1l0.2,0.2l-0.4,0.4
l-0.4-0.4l0.2-0.2c-0.3,0-0.6,0-0.9,0l0.2,0.2l-0.4,0.4l-0.4-0.4l0.2-0.2c-0.2,0-0.3,0-0.5-0.1l0,0l0,0h-0.1v0.7L240,90l0.4,0.4
l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8L240,94l0.4,0.4l-0.4,0.4
l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4L240,99l-0.1-0.1
v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1
l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4
l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1L249.5,102.1z
M249.2,100.5l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,100.5z M243.8,96.5l-0.4,0.4l-0.4-0.4l0.4-0.4L243.8,96.5z M243,95.1l0.4-0.4
l0.4,0.4l-0.4,0.4L243,95.1z M243.6,95.8l0.4-0.4l0.4,0.4l-0.4,0.4L243.6,95.8z M245.7,93.8l0.4-0.4l0.4,0.4l-0.4,0.4
L245.7,93.8z M246.5,95.1l-0.4,0.4l-0.4-0.4l0.4-0.4L246.5,95.1z M245.8,94.5l-0.4,0.4l-0.4-0.4l0.4-0.4L245.8,94.5z
M245.2,95.1l-0.4,0.4l-0.4-0.4l0.4-0.4L245.2,95.1z M244.7,96.1l0.4,0.4l-0.4,0.4l-0.4-0.4L244.7,96.1z M245,95.8l0.4-0.4
l0.4,0.4l-0.4,0.4L245,95.8z M246.1,96.1l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,96.1z M246.4,95.8l0.4-0.4l0.4,0.4l-0.4,0.4
L246.4,95.8z M246.4,94.5l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,94.5z M246.4,93.1l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,93.1z M246.4,91.8
l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,91.8z M246.5,92.4l-0.4,0.4l-0.4-0.4l0.4-0.4L246.5,92.4z M245.8,93.1l-0.4,0.4l-0.4-0.4
l0.4-0.4L245.8,93.1z M245.2,93.8l-0.4,0.4l-0.4-0.4l0.4-0.4L245.2,93.8z M244.5,94.5l-0.4,0.4l-0.4-0.4l0.4-0.4L244.5,94.5z
M243.4,94.2l-0.4-0.4l0.4-0.4l0.4,0.4L243.4,94.2z M243.1,94.5l-0.4,0.4l-0.4-0.4l0.4-0.4L243.1,94.5z M243.1,95.8l-0.4,0.4
l-0.4-0.4l0.4-0.4L243.1,95.8z M243.1,97.1l-0.4,0.4l-0.4-0.4l0.4-0.4L243.1,97.1z M243.4,97.4l0.4,0.4l-0.4,0.4l-0.4-0.4
L243.4,97.4z M243.6,97.1l0.4-0.4l0.4,0.4l-0.4,0.4L243.6,97.1z M244.7,97.4l0.4,0.4l-0.4,0.4l-0.4-0.4L244.7,97.4z M245,97.1
l0.4-0.4l0.4,0.4l-0.4,0.4L245,97.1z M246.1,97.4l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,97.4z M246.4,97.1l0.4-0.4l0.4,0.4l-0.4,0.4
L246.4,97.1z M247.4,97.4l0.4,0.4l-0.4,0.4l-0.4-0.4L247.4,97.4z M247,96.5l0.4-0.4l0.4,0.4l-0.4,0.4L247,96.5z M247,95.1
l0.4-0.4l0.4,0.4l-0.4,0.4L247,95.1z M247,93.8l0.4-0.4l0.4,0.4l-0.4,0.4L247,93.8z M247,92.4l0.4-0.4l0.4,0.4l-0.4,0.4
L247,92.4z M247,91.1l0.4-0.4l0.4,0.4l-0.4,0.4L247,91.1z M247,89.8l0.4-0.4l0.4,0.4l-0.4,0.4L247,89.8z M247.2,90.4l-0.4,0.4
l-0.4-0.4l0.4-0.4L247.2,90.4z M246.5,91.1l-0.4,0.4l-0.4-0.4l0.4-0.4L246.5,91.1z M245.8,91.8l-0.4,0.4l-0.4-0.4l0.4-0.4
L245.8,91.8z M245.2,92.4l-0.4,0.4l-0.4-0.4l0.4-0.4L245.2,92.4z M244.5,93.1l-0.4,0.4l-0.4-0.4l0.4-0.4L244.5,93.1z
M243.4,92.9l-0.4-0.4l0.4-0.4l0.4,0.4L243.4,92.9z M243.1,93.1l-0.4,0.4l-0.4-0.4l0.4-0.4L243.1,93.1z M242.4,93.8l-0.4,0.4
l-0.4-0.4l0.4-0.4L242.4,93.8z M242.4,95.1l-0.4,0.4l-0.4-0.4l0.4-0.4L242.4,95.1z M242.4,96.5l-0.4,0.4l-0.4-0.4l0.4-0.4
L242.4,96.5z M242.4,97.8l-0.4,0.4l-0.4-0.4l0.4-0.4L242.4,97.8z M242.4,99.1l-0.4,0.4l-0.4-0.4l0.4-0.4L242.4,99.1z
M242.3,98.5l0.4-0.4l0.4,0.4l-0.4,0.4L242.3,98.5z M243.4,98.7l0.4,0.4l-0.4,0.4l-0.4-0.4L243.4,98.7z M243.6,98.5l0.4-0.4
l0.4,0.4l-0.4,0.4L243.6,98.5z M244.7,98.7l0.4,0.4l-0.4,0.4l-0.4-0.4L244.7,98.7z M245,98.5l0.4-0.4l0.4,0.4l-0.4,0.4L245,98.5
z M246.1,98.7l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,98.7z M246.4,98.5l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,98.5z M247.4,98.7l0.4,0.4
l-0.4,0.4l-0.4-0.4L247.4,98.7z M247.7,98.5l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,98.5z M247.7,97.1l0.4-0.4l0.4,0.4l-0.4,0.4
L247.7,97.1z M247.7,95.8l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,95.8z M247.7,94.5l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,94.5z M247.7,93.1
l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,93.1z M247.7,91.8l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,91.8z M247.7,90.4l0.4-0.4l0.4,0.4l-0.4,0.4
L247.7,90.4z M247.7,89.1l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,89.1z M247.7,87.7l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,87.7z M247.9,88.4
l-0.4,0.4l-0.4-0.4l0.4-0.4L247.9,88.4z M247.2,89.1l-0.4,0.4l-0.4-0.4l0.4-0.4L247.2,89.1z M246.5,89.8l-0.4,0.4l-0.4-0.4
l0.4-0.4L246.5,89.8z M245.8,90.4l-0.4,0.4l-0.4-0.4l0.4-0.4L245.8,90.4z M245.2,91.1l-0.4,0.4l-0.4-0.4l0.4-0.4L245.2,91.1z
M244.5,91.8l-0.4,0.4l-0.4-0.4l0.4-0.4L244.5,91.8z M243.4,91.5l-0.4-0.4l0.4-0.4l0.4,0.4L243.4,91.5z M243.1,91.8l-0.4,0.4
l-0.4-0.4l0.4-0.4L243.1,91.8z M242.4,92.4l-0.4,0.4l-0.4-0.4L242,92L242.4,92.4z M241.3,92.2l-0.4-0.4l0.4-0.4l0.4,0.4
L241.3,92.2z M241.8,93.1l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,93.1z M241.8,94.5l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,94.5z
M241.8,95.8l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,95.8z M241.8,97.1l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,97.1z M241.8,98.5l-0.4,0.4
l-0.4-0.4l0.4-0.4L241.8,98.5z M241.8,99.8l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,99.8z M242,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4
L242,100.1z M242.3,99.8l0.4-0.4l0.4,0.4l-0.4,0.4L242.3,99.8z M243.4,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4L243.4,100.1z
M243.6,99.8l0.4-0.4l0.4,0.4l-0.4,0.4L243.6,99.8z M244.7,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4L244.7,100.1z M245,99.8l0.4-0.4
l0.4,0.4l-0.4,0.4L245,99.8z M246.1,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,100.1z M246.4,99.8l0.4-0.4l0.4,0.4l-0.4,0.4
L246.4,99.8z M247.4,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4L247.4,100.1z M247.7,99.8l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,99.8z
M249.2,99.1l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,99.1z M249.2,97.8l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,97.8z M249.2,96.5l-0.4,0.4
l-0.4-0.4l0.4-0.4L249.2,96.5z M249.2,95.1l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,95.1z M249.2,93.8l-0.4,0.4l-0.4-0.4l0.4-0.4
L249.2,93.8z M249.2,92.4l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,92.4z M249.2,91.1l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,91.1z
M249.2,89.8l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,89.8z M249.2,88.4l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,88.4z M249.2,87.1l-0.4,0.4
l-0.4-0.4l0.4-0.4L249.2,87.1z M248.8,85.3l0.4,0.4l-0.4,0.4l-0.4-0.4L248.8,85.3z M248.1,86l0.4,0.4l-0.4,0.4l-0.4-0.4
L248.1,86z M247.4,86.7l0.4,0.4l-0.4,0.4l-0.4-0.4L247.4,86.7z M246.8,87.3l0.4,0.4l-0.4,0.4l-0.4-0.4L246.8,87.3z M246.1,88
l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,88z M245.4,88.7l0.4,0.4l-0.4,0.4l-0.4-0.4L245.4,88.7z M244.7,89.3l0.4,0.4l-0.4,0.4
l-0.4-0.4L244.7,89.3z M244.5,90.4l-0.4,0.4l-0.4-0.4l0.4-0.4L244.5,90.4z M243.4,89.3l0.4,0.4l-0.4,0.4l-0.4-0.4L243.4,89.3z
M242.7,90l0.4,0.4l-0.4,0.4l-0.4-0.4L242.7,90z M242.4,91.1l-0.4,0.4l-0.4-0.4l0.4-0.4L242.4,91.1z M241.3,90l0.4,0.4l-0.4,0.4
l-0.4-0.4L241.3,90z M240.3,91.1l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,91.1z M240.3,92.4l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,92.4z
M240.3,93.8l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,93.8z M240.3,95.1l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,95.1z M240.3,96.5l0.4-0.4
l0.4,0.4l-0.4,0.4L240.3,96.5z M240.3,97.8l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,97.8z M240.3,99.1l0.4-0.4l0.4,0.4l-0.4,0.4
L240.3,99.1z M240.3,100.5l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,100.5z M240.7,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L240.7,102.2z
M240.9,101.2l0.4-0.4l0.4,0.4l-0.4,0.4L240.9,101.2z M242,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L242,102.2z M242.3,101.2l0.4-0.4
l0.4,0.4l-0.4,0.4L242.3,101.2z M243.4,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L243.4,102.2z M243.6,101.2l0.4-0.4l0.4,0.4l-0.4,0.4
L243.6,101.2z M244.7,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L244.7,102.2z M245,101.2l0.4-0.4l0.4,0.4l-0.4,0.4L245,101.2z
M246.1,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L246.1,102.2z M246.4,101.2l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,101.2z M247.4,102.2
l-0.4-0.4l0.4-0.4l0.4,0.4L247.4,102.2z M247.7,101.2l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,101.2z M248.4,101.8l0.4-0.4l0.4,0.4
l-0.4,0.4L248.4,101.8z" />
</g>
</g>
</g>
<g>
<path class="st0" d="M230.3,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C230.5,52.6,230.4,52.7,230.3,52.7z" />
</g>
<g>
<path class="st0" d="M231.5,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C231.7,52.6,231.6,52.7,231.5,52.7z" />
</g>
<g>
<path class="st0" d="M232.6,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C232.9,52.6,232.8,52.7,232.6,52.7z" />
</g>
<g>
<path class="st0" d="M233.8,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C234,52.6,234,52.7,233.8,52.7z" />
</g>
<g>
<path class="st0" d="M235,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C235.2,52.6,235.1,52.7,235,52.7z" />
</g>
<g>
<path class="st0" d="M247.2,52.2c-0.7,0-1.4-0.6-1.4-1.4c0-0.7,0.6-1.4,1.4-1.4c0.7,0,1.4,0.6,1.4,1.4
C248.5,51.6,247.9,52.2,247.2,52.2z M247.2,50c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9
C248.1,50.4,247.7,50,247.2,50z" />
</g>
<path class="st0" d="M239,50.7v0.4h-0.4v-0.4H239 M239,50.2h-0.4c-0.2,0-0.4,0.2-0.4,0.4V51c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C239.4,50.4,239.2,50.2,239,50.2L239,50.2z" />
<path class="st0" d="M241.4,50.7v0.4H241v-0.4H241.4 M241.4,50.2H241c-0.2,0-0.4,0.2-0.4,0.4V51c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C241.8,50.4,241.6,50.2,241.4,50.2L241.4,50.2z" />
<path class="st0" d="M243.8,50.7v0.4h-0.4v-0.4H243.8 M243.8,50.2h-0.4c-0.2,0-0.4,0.2-0.4,0.4V51c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C244.2,50.4,244,50.2,243.8,50.2L243.8,50.2z" />
<g>
<path class="st0" d="M230.3,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
C230.5,61.1,230.4,61.2,230.3,61.2z" />
</g>
<g>
<path class="st0" d="M231.5,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
C231.7,61.1,231.6,61.2,231.5,61.2z" />
</g>
<g>
<path class="st0" d="M232.6,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
C232.9,61.1,232.8,61.2,232.6,61.2z" />
</g>
<g>
<path class="st0" d="M233.8,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
C234,61.1,234,61.2,233.8,61.2z" />
</g>
<g>
<path class="st0" d="M235,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
C235.2,61.1,235.1,61.2,235,61.2z" />
</g>
<g>
<path class="st0" d="M247.2,60.8c-0.7,0-1.4-0.6-1.4-1.4c0-0.7,0.6-1.4,1.4-1.4c0.7,0,1.4,0.6,1.4,1.4
C248.5,60.2,247.9,60.8,247.2,60.8z M247.2,58.5c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9S247.7,58.5,247.2,58.5z" />
</g>
<path class="st0" d="M239,59.2v0.4h-0.4v-0.4H239 M239,58.8h-0.4c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C239.4,58.9,239.2,58.8,239,58.8L239,58.8z" />
<path class="st0" d="M241.4,59.2v0.4H241v-0.4H241.4 M241.4,58.8H241c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C241.8,58.9,241.6,58.8,241.4,58.8L241.4,58.8z" />
<path class="st0" d="M243.8,59.2v0.4h-0.4v-0.4H243.8 M243.8,58.8h-0.4c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C244.2,58.9,244,58.8,243.8,58.8L243.8,58.8z" />
<g>
<path class="st0" d="M230.3,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C230.5,69.7,230.4,69.7,230.3,69.7z" />
</g>
<g>
<path class="st0" d="M231.5,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C231.7,69.7,231.6,69.7,231.5,69.7z" />
</g>
<g>
<path class="st0" d="M232.6,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C232.9,69.7,232.8,69.7,232.6,69.7z" />
</g>
<g>
<path class="st0" d="M233.8,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C234,69.7,234,69.7,233.8,69.7z" />
</g>
<g>
<path class="st0" d="M235,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
C235.2,69.7,235.1,69.7,235,69.7z" />
</g>
<g>
<path class="st0" d="M247.2,69.3c-0.7,0-1.4-0.6-1.4-1.4c0-0.7,0.6-1.4,1.4-1.4c0.7,0,1.4,0.6,1.4,1.4S247.9,69.3,247.2,69.3z
M247.2,67.1c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9C248.1,67.5,247.7,67.1,247.2,67.1z" />
</g>
<path class="st0" d="M239,67.7v0.4h-0.4v-0.4H239 M239,67.3h-0.4c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C239.4,67.5,239.2,67.3,239,67.3L239,67.3z" />
<path class="st0" d="M241.4,67.7v0.4H241v-0.4H241.4 M241.4,67.3H241c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C241.8,67.5,241.6,67.3,241.4,67.3L241.4,67.3z" />
<path class="st0" d="M243.8,67.7v0.4h-0.4v-0.4H243.8 M243.8,67.3h-0.4c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
c0.2,0,0.4-0.2,0.4-0.4v-0.4C244.2,67.5,244,67.3,243.8,67.3L243.8,67.3z" />
<path class="st0" d="M250.8,54.5c0.1,0,0.2-0.1,0.2-0.2v-6.7c0-0.1-0.1-0.2-0.2-0.2h-22.5c-0.1,0-0.2,0.1-0.2,0.2V51
c-2,0.4-3.6,2.2-3.6,4.4c0,2,1.3,3.7,3.1,4.3c-1.8,0.6-3.1,2.3-3.1,4.3c0,2.2,1.5,4,3.6,4.4v3.1c0,0.1,0.1,0.2,0.2,0.2h22.5
c0.1,0,0.2-0.1,0.2-0.2v-6.7c0-0.1-0.1-0.2-0.2-0.2h-2.9V63h2.9c0.1,0,0.2-0.1,0.2-0.2V56c0-0.1-0.1-0.2-0.2-0.2h-2.9v-1.4h2.9
V54.5z M228.5,47.7h22V54h-22v-2.8v-0.4V47.7z M224.9,55.3c0-1.9,1.4-3.5,3.1-4v2.9c0,0.1,0.1,0.2,0.2,0.2h2.9v1.4h-2.9
c-0.1,0-0.2,0.1-0.2,0.2v3.2C226.3,58.8,224.9,57.2,224.9,55.3z M224.9,63.8c0-1.9,1.4-3.5,3.1-4v2.9c0,0.1,0.1,0.2,0.2,0.2h2.9
v1.4h-2.9c-0.1,0-0.2,0.1-0.2,0.2v3.2C226.3,67.4,224.9,65.7,224.9,63.8z M250.5,71.1h-22v-2.8v-0.4v-3h22V71.1L250.5,71.1z
M247.4,64.4h-15.7V63h15.7V64.4z M250.5,62.6h-22v-2.8v-0.1v-0.4v-0.1v-3h22V62.6L250.5,62.6z M247.4,55.8h-15.7v-1.4h15.7V55.8z" />
</g>
<g id="poster">
<rect x="112" y="26" class="st0" width="0.8" height="0.8" />
<rect x="110.4" y="26" class="st0" width="0.8" height="0.8" />
<rect x="113.7" y="26" class="st0" width="0.8" height="0.8" />
<rect x="107.6" y="19.1" class="st0" width="9.8" height="0.8" />
<rect x="114.5" y="32.1" class="st0" width="0.8" height="0.8" />
<path class="st0" d="M118.4,29.4l-1.5-2.3l0.9-0.9v-4.3c0.7-0.2,1.2-0.8,1.2-1.6v-2.2l-0.8-0.8c-0.1-3.1-2.6-5.5-5.6-5.5
c-3.1,0-5.6,2.4-5.7,5.5l-0.8,0.8v2.2c0,0.8,0.5,1.4,1.2,1.6v4.3l0.9,0.9l-1.5,2.3L101,31l-1.4,2.2V37h0.8v-3.3l5.8-1.5l-0.2-0.8
l-5.1,1.4l0.6-1l5.1-1.5c0.2,0.6,0.8,1.1,1.5,1.1h3.2v2.4h0.8v-3.2H108c-0.4,0-0.7-0.3-0.8-0.7l1.4-2.2l1.2,1.2h5.2l1.2-1.2
l1.4,2.2c0,0.4-0.4,0.7-0.8,0.7h-4V37h0.8v-5.7h3.2c0.7,0,1.3-0.4,1.5-1.1l5.1,1.8l0.6,1l-5-1.7l-0.2,0.8l5.8,1.9v3h0.8v-3.4
l-1.3-2.2L118.4,29.4z M108,22h8.9v1l-1.6,1.6l-0.7-0.6h-4.4l-0.6,0.6L108,23V22z M106.8,20.3v-1.9l0.6-0.6h1.1V17h-0.8
c0.2-2.5,2.3-4.5,4.8-4.5c2.6,0,4.6,2,4.8,4.5h-8.1v0.8h8.4l0.6,0.6v1.9c0,0.4-0.4,0.8-0.8,0.8H117h-9h-0.4
C107.1,21.2,106.8,20.8,106.8,20.3z M114.7,28.1h-4.5l-2.2-2.2v-1.7l1.6,1.6l1-1h3.7l1,1l1.6-1.6v1.7L114.7,28.1z" />
<rect x="105.1" y="35.4" class="st0" width="0.8" height="1.6" />
<rect x="119" y="35.4" class="st0" width="0.8" height="1.6" />
<rect x="111.2" y="36.2" class="st0" width="0.8" height="0.8" />
<rect x="111.2" y="34.6" class="st0" width="0.8" height="0.8" />
<rect x="119.8" y="24" class="st0" width="0.8" height="0.8" />
<rect x="121.4" y="25.6" class="st0" width="0.8" height="0.8" />
<rect x="121.4" y="24" class="st0" width="0.8" height="0.8" />
<rect x="119.8" y="27.2" class="st0" width="0.8" height="0.8" />
<rect x="123" y="27.2" class="st0" width="0.8" height="0.8" />
<rect x="123" y="28.9" class="st0" width="0.8" height="0.8" />
<rect x="124.6" y="27.2" class="st0" width="0.8" height="0.8" />
<rect x="99.5" y="28.9" class="st0" width="0.8" height="0.8" />
<rect x="119.8" y="22.4" class="st0" width="0.8" height="0.8" />
<rect x="123" y="25.6" class="st0" width="0.8" height="0.8" />
<rect x="124.6" y="22.4" class="st0" width="0.8" height="0.8" />
<rect x="124.6" y="24" class="st0" width="0.8" height="0.8" />
<rect x="124.6" y="19.1" class="st0" width="0.8" height="0.8" />
<rect x="123" y="20.8" class="st0" width="0.8" height="0.8" />
<rect x="123" y="17.5" class="st0" width="0.8" height="0.8" />
<rect x="121.4" y="19.1" class="st0" width="0.8" height="0.8" />
<rect x="119.8" y="16.9" class="st0" width="0.8" height="0.8" />
<rect x="118.8" y="14.2" class="st0" width="0.8" height="0.8" />
<rect x="118.1" y="11" class="st0" width="0.8" height="0.8" />
<rect x="101.1" y="20.8" class="st0" width="0.8" height="0.8" />
<rect x="102.7" y="20.8" class="st0" width="0.8" height="0.8" />
<rect x="102.7" y="25.6" class="st0" width="0.8" height="0.8" />
<rect x="101.1" y="24" class="st0" width="0.8" height="0.8" />
<rect x="99.5" y="25.6" class="st0" width="0.8" height="0.8" />
<rect x="102.7" y="27.2" class="st0" width="0.8" height="0.8" />
<rect x="101.1" y="27.2" class="st0" width="0.8" height="0.8" />
<rect x="104.3" y="24" class="st0" width="0.8" height="0.8" />
<rect x="99.5" y="22.4" class="st0" width="0.8" height="0.8" />
<rect x="99.5" y="19.1" class="st0" width="0.8" height="0.8" />
<rect x="102.7" y="17.5" class="st0" width="0.8" height="0.8" />
<rect x="104.3" y="15.9" class="st0" width="0.8" height="0.8" />
<rect x="99.5" y="11" class="st0" width="0.8" height="0.8" />
<rect x="104.3" y="11" class="st0" width="0.8" height="0.8" />
<rect x="106" y="11" class="st0" width="0.8" height="0.8" />
<rect x="101.1" y="11" class="st0" width="0.8" height="0.8" />
<rect x="101.1" y="19.1" class="st0" width="0.8" height="0.8" />
<rect x="99.5" y="15.9" class="st0" width="0.8" height="0.8" />
<rect x="101.1" y="15.9" class="st0" width="0.8" height="0.8" />
<rect x="99.5" y="14.2" class="st0" width="0.8" height="0.8" />
<rect x="104.3" y="12.6" class="st0" width="0.8" height="0.8" />
<rect x="102.7" y="12.6" class="st0" width="0.8" height="0.8" />
<rect x="124.6" y="16.1" class="st0" width="0.8" height="0.8" />
<rect x="119.8" y="12.2" class="st0" width="0.8" height="0.8" />
</g>
<g id="radiator">
<path class="st0" d="M279,77.7v1.1l0,0V77.7L279,77.7z M279,97.6v1.1l0,0V97.6L279,97.6z" />
<path class="st0" d="M269.6,99c0.1,0.1,0.2,0.2,0.3,0.2C269.8,99.2,269.6,99.1,269.6,99z M270,98.1L270,98.1L270,98.1
c0,0.2,0,0.3,0.2,0.4C270,98.4,270,98.3,270,98.1z" />
<path class="st0" d="M278.2,76.6V80l0,0V76.6L278.2,76.6z" />
<path class="st0" d="M297.6,96.8h-0.1c-0.2,0-0.4-0.2-0.4-0.4V80c0-0.2,0.2-0.4,0.4-0.4h0.1c0.7,0,1.3-0.6,1.3-1.3
s-0.6-1.3-1.3-1.3h-0.1c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2
c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4v-0.1
c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3
s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1
c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4v-0.2c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2
c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.6v-0.2c0-0.4-0.4-0.8-0.8-0.8
h-1c-0.4,0-0.8,0.4-0.8,0.8v2.9c0,0.4,0.4,0.8,0.8,0.8h1c0.4,0,0.8-0.4,0.8-0.8v-0.2h0.6c0.2,0,0.4,0.2,0.4,0.4v16.4
c0,0.2-0.2,0.4-0.4,0.4h-1.9c-0.2,0-0.5,0.1-0.7,0.2c-0.1,0-0.2,0.1-0.2,0.2c-0.1,0.1-0.1,0.1-0.2,0.2c0,0-0.1,0.1-0.1,0.2
s-0.1,0.2-0.1,0.3l0,0c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3c0,0.2,0.2,0.5,0.4,0.6c0.1,0.1,0.2,0.2,0.3,0.2
c0.2,0.1,0.4,0.2,0.6,0.2h1.9c0.2,0,0.4,0.2,0.4,0.4v3.7c0,0.5,0.4,1.3,1.3,1.3s1.3-0.8,1.3-1.3c0-0.1,0-2.3,2.3-2.3h14.5
c2.2,0,2.3,2.1,2.3,2.3c0,0.5,0.4,1.3,1.3,1.3s1.3-0.8,1.3-1.3v-3.7c0-0.2,0.2-0.4,0.4-0.4h0.1c0.7,0,1.3-0.6,1.3-1.3
C298.9,97.4,298.3,96.8,297.6,96.8z M297,77.7c0.1,0,0.3,0.1,0.4,0.1h0.1c0.3,0,0.5,0.2,0.5,0.5s-0.2,0.5-0.5,0.5h-0.1
c-0.2,0-0.3,0-0.4,0.1V77.7z M271,79.7h-1v-2.9h1V79.7z M270.5,98.6c-0.2,0-0.3-0.1-0.4-0.2s-0.2-0.2-0.2-0.4v-0.1
c0-0.1,0.1-0.2,0.1-0.2s0.1-0.1,0.2-0.1s0.1,0,0.2,0c0.3,0,0.5,0.2,0.5,0.5C271,98.4,270.7,98.6,270.5,98.6z M272.8,98.7
c-0.1,0-0.3-0.1-0.4-0.1h-0.7c0.1-0.2,0.1-0.3,0.1-0.5s0-0.4-0.1-0.5h0.7c0.1,0,0.3,0,0.4-0.1V98.7z M272.8,78.9
c-0.1,0-0.3-0.1-0.4-0.1h-0.6v-1h0.6c0.1,0,0.3,0,0.4-0.1V78.9z M275.4,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1
c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.1,0-0.3,0-0.4,0.1V77.7z M275.4,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4
c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V80z M275.4,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1
c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.1,0-0.3,0-0.4,0.1V97.6z M273.6,76.5c0-0.1,0-0.5,0.5-0.5s0.5,0.4,0.5,0.5v23.4
c0,0.2,0,0.5-0.5,0.5c-0.4,0-0.5-0.4-0.5-0.5V76.5z M274.6,103.5c0,0.1,0,0.5-0.5,0.5c-0.4,0-0.5-0.4-0.5-0.5v-2.4
c0.2,0.1,0.3,0.1,0.5,0.1c0.9,0,1.3-0.8,1.3-1.3v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.2,0,0.5,0.2,0.7
C275,101.1,274.6,102.6,274.6,103.5z M278.2,99.9c0,0.1,0,0.5-0.5,0.5c-0.4,0-0.5-0.4-0.5-0.5V76.5c0-0.1,0-0.5,0.5-0.5
s0.5,0.4,0.5,0.5V99.9z M279,77.7L279,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1c-0.1,0-0.3-0.1-0.4-0.1h-0.2
c-0.2,0-0.3,0-0.4,0.1l0,0V77.7z M280,80v16.4c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V79.9c0-0.2,0.2-0.4,0.4-0.4h0.2
C279.8,79.6,280,79.8,280,80z M279,97.6L279,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1c-0.1,0-0.3-0.1-0.4-0.1h-0.2
c-0.2,0-0.3,0-0.4,0.1l0,0V97.6z M278.9,100.4c0.1-0.2,0.1-0.4,0.1-0.5v-0.2c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v0.1
c0,0.2,0,0.3,0.1,0.5L278.9,100.4L278.9,100.4z M281.8,99.9c0,0.2-0.1,0.5-0.5,0.5s-0.5-0.4-0.5-0.5V76.5c0-0.1,0-0.5,0.5-0.5
c0.4,0,0.5,0.4,0.5,0.5V99.9z M282.6,77.7c0.1,0,0.2,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1c-0.1,0-0.3-0.1-0.4-0.1H283
c-0.1,0-0.3,0-0.4,0.1V77.7L282.6,77.7z M282.6,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4c0,0.2-0.2,0.4-0.4,0.4
H283c-0.2,0-0.4-0.2-0.4-0.4V80L282.6,80z M282.6,97.6c0.1,0,0.2,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1c-0.1,0-0.3-0.1-0.4-0.1
H283c-0.1,0-0.3,0-0.4,0.1V97.6L282.6,97.6z M282.5,100.4c0.1-0.2,0.1-0.4,0.1-0.5v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2
c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.2,0,0.3,0.1,0.5H282.5z M285.4,99.9c0,0.2,0,0.5-0.5,0.5c-0.4,0-0.5-0.4-0.5-0.5V76.5
c0-0.1,0-0.5,0.5-0.5s0.5,0.4,0.5,0.5V99.9z M286.2,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
c-0.1,0-0.2-0.1-0.4-0.1h-0.2c-0.1,0-0.3,0-0.4,0.1V77.7z M286.2,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4
c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V80z M286.2,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
c-0.1,0-0.2-0.1-0.4-0.1h-0.2c-0.1,0-0.3,0-0.4,0.1V97.6z M286.1,100.4c0.1-0.2,0.1-0.4,0.1-0.5v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2
c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.2,0,0.3,0.1,0.5H286.1z M289,99.9c0,0.2-0.1,0.5-0.5,0.5s-0.5-0.4-0.5-0.5V76.5
c0-0.1,0-0.5,0.5-0.5c0.4,0,0.5,0.4,0.5,0.5V99.9z M289.8,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.2,0-0.3,0-0.4,0.1V77.7z M289.8,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4
c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V80z M289.8,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.2,0-0.3,0-0.4,0.1V97.6z M289.7,100.4c0.1-0.2,0.1-0.4,0.1-0.5v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2
c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.2,0,0.3,0.1,0.5H289.7z M292.6,99.9c0,0.1,0,0.5-0.5,0.5l0,0c-0.5,0-0.5-0.4-0.5-0.5V76.5
c0-0.2,0-0.5,0.5-0.5c0.4,0,0.5,0.4,0.5,0.5V99.9L292.6,99.9z M293.4,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.2,0-0.3,0-0.4,0.1V77.7z M293.4,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4
c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V80z M293.4,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.2,0-0.3,0-0.4,0.1V97.6z M296.3,103.5c0,0.2-0.1,0.5-0.5,0.5s-0.5-0.4-0.5-0.5
c0-0.9-0.4-2.4-2-2.9c0.1-0.2,0.2-0.5,0.2-0.7v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.5,0.4,1.3,1.3,1.3
c0.2,0,0.4,0,0.5-0.1V103.5z M296.3,99.9c0,0.1,0,0.5-0.5,0.5s-0.5-0.4-0.5-0.5V76.5c0-0.2,0.1-0.5,0.5-0.5s0.5,0.4,0.5,0.5V99.9z
M297.6,98.6h-0.1c-0.2,0-0.3,0-0.4,0.1v-1.1c0.1,0,0.3,0.1,0.4,0.1h0.1c0.3,0,0.5,0.2,0.5,0.5S297.8,98.6,297.6,98.6z" />
<path class="st0" d="M278.2,96.5v3.4l0,0V96.5L278.2,96.5z" />
<path class="st0" d="M273.4,100.8" />
<path class="st0" d="M269.2,97.8c0,0.1,0,0.2,0,0.3s0,0.2,0,0.3c0-0.1,0-0.2,0-0.3S269.2,97.9,269.2,97.8z" />
</g>
<g id="plant">
<polygon class="st0" points="105.9,90.5 92.2,90.5 93.9,103.8 103.8,103.8 " />
<g>
<path class="st0" d="M98.4,90.9c-0.1,0-0.2-0.1-0.2-0.2S97.7,80,96.5,74.5c0-0.1,0.1-0.3,0.2-0.3s0.3,0.1,0.3,0.2
c1.3,5.6,1.8,16.2,1.8,16.3C98.6,90.7,98.5,90.9,98.4,90.9L98.4,90.9z" />
</g>
<g>
<path class="st0" d="M99.7,90.9c-0.1,0-0.2-0.1-0.2-0.2s-0.1-8.2,2.4-14.5c0.1-0.1,0.2-0.2,0.3-0.1c0.1,0.1,0.2,0.2,0.1,0.3
c-2.5,6.1-2.4,14.2-2.4,14.3C99.9,90.8,99.8,90.9,99.7,90.9L99.7,90.9z" />
</g>
<g>
<path class="st0" d="M97.6,90.8c-0.1,0-0.2-0.1-0.2-0.2s-1.1-9.9-5-14.1c-0.1-0.1-0.1-0.3,0-0.3c0.1-0.1,0.3-0.1,0.3,0
c4,4.3,5.1,14,5.1,14.4C97.9,90.7,97.8,90.8,97.6,90.8C97.7,90.8,97.6,90.8,97.6,90.8z" />
</g>
<g>
<path class="st0" d="M99,90.9c-0.1,0-0.2-0.1-0.2-0.2c0-0.4-0.7-10.5,0.6-15.5c0-0.1,0.2-0.2,0.3-0.2c0.1,0,0.2,0.2,0.2,0.3
c-1.3,4.9-0.6,15.2-0.6,15.3C99.3,90.7,99.2,90.9,99,90.9C99.1,90.9,99,90.9,99,90.9z" />
</g>
<g>
<path class="st0" d="M100.3,90.9c-0.1,0-0.2-0.1-0.2-0.2s-0.2-6.4,4.8-10.2c0.1-0.1,0.3-0.1,0.3,0s0.1,0.3,0,0.3
c-4.8,3.6-4.6,9.7-4.6,9.7C100.6,90.7,100.5,90.9,100.3,90.9L100.3,90.9z" />
</g>
<g>
<path class="st0" d="M90.1,78.8c-0.2,0-0.3,0-0.3-0.1l-2.5-0.8c-0.1,0-0.2-0.1-0.2-0.3c0-0.1,0.1-0.2,0.2-0.2
c0.4,0,1.5-0.3,1.8-0.9v-0.1c0,0-0.1,0-0.2,0c-0.6,0-1.7,0.4-2.3,0.9c-0.1,0.1-0.2,0.1-0.3,0c-0.2-0.1-1.8-0.7-2.3-1.5
c0-0.1,0-0.2,0-0.2s0.1-0.1,0.2-0.1c0.8,0,1.7-0.2,1.8-0.5c0,0,0-0.1,0-0.2s-0.1-0.2-0.5-0.2c-0.7,0-1.8,0.6-1.8,0.6
c-0.1,0-0.2,0-0.2,0c-0.1-0.1-2.2-1.3-2.3-2.8v-0.1v-0.1c0,0,0-0.1,0.1-0.1c1.1-0.9,4.1-1,4.2-1s0.2,0.1,0.2,0.2
c0.1,0.4,0.6,1.6,1.2,1.4c0.1,0,0.1-0.1,0.1-0.1c0-0.1-0.4-0.7-0.8-1c-0.1-0.1-0.1-0.2-0.1-0.2c0-0.1,0.1-0.2,0.2-0.2
c0.9-0.1,2.5,0.7,2.6,0.7S89,72,89,72.1c0.1,0.7,0.6,2,0.9,2.1c0,0,0.1,0,0.2-0.2c0.3-0.6-0.2-1.6-0.4-1.9c-0.1-0.1-0.1-0.2,0-0.3
c0.1-0.1,0.2-0.1,0.3,0l2.3,1.4c0.2,0.1,0.9,0.4,0.8,2c0,0.9-0.3,1.3-0.4,1.5s-0.2,0.8-0.9,1.3C90.9,78.7,90.4,78.8,90.1,78.8z
M90,78.3c0,0,0.5,0.2,1.5-0.7c0.6-0.5,0.7-1,0.7-1.1s0-0.1,0.1-0.1l0,0c0,0,0.3-0.3,0.3-1.2c0.1-1.4-0.5-1.6-0.5-1.6s0,0-0.1,0
l-1.6-0.9c0.2,0.5,0.3,1.1,0.1,1.7c-0.3,0.5-0.7,0.6-1,0.3c-0.4-0.4-0.8-1.7-0.9-2.1c-0.3-0.1-1-0.5-1.6-0.6
c0.3,0.3,0.6,0.7,0.5,1.1c0,0.1-0.2,0.3-0.5,0.4c-1,0.2-1.5-1.1-1.7-1.6c-0.6,0-2.8,0.2-3.7,0.8c0.1,1,1.6,2,2,2.2
c0.3-0.2,1.2-0.6,1.9-0.6c0.5,0,0.8,0.2,0.9,0.4c0.2,0.3,0.1,0.5,0,0.6c-0.2,0.4-1.1,0.6-1.7,0.7c0.5,0.4,1.2,0.7,1.6,0.9
c0.7-0.5,1.8-0.9,2.5-0.9c0.3,0,0.5,0.1,0.6,0.3c0.1,0.1,0.1,0.3,0,0.5c-0.2,0.5-0.8,0.9-1.3,1L90,78.3
C89.9,78.3,89.9,78.3,90,78.3L90,78.3z" />
</g>
<g>
<path class="st0" d="M101.6,76.5c-0.1,0-0.1,0-0.2,0c-0.9,0-1.6-0.7-1.8-1c-0.3,0-1-0.1-1.8-0.9c-1.6-1.6-1.2-2.8-1.1-2.9l0.8-2.7
c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2c0,0,0.4,1.8,1.4,2.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1-0.4-1.1-2.5-1.6-3.2
c-0.1-0.1-0.1-0.1,0-0.2c0-0.1,0.8-1.8,1.7-2.3c0.1,0,0.2,0,0.2,0c0.1,0,0.1,0.1,0.1,0.2c0.1,0.9,0.4,2,0.7,2h0.1
c0.1-0.1,0.2-0.1,0.2-0.2c0.2-0.6-0.5-1.9-0.8-2.3c-0.1-0.1,0-0.2,0-0.3c0.1-0.1,2-2.6,3.7-2.6h0.1h0.1c0,0,0.1,0,0.1,0.1
c1.2,1.4,1.1,4.6,1.1,4.8c0,0.1-0.1,0.2-0.2,0.2c-0.4,0.1-1.6,0.5-1.9,1.1c-0.1,0.1-0.1,0.3-0.1,0.5c0.1,0.2,0.2,0.2,0.2,0.2
c0.4,0,1.1-0.6,1.5-1c0.1-0.1,0.1-0.1,0.2-0.1s0.2,0.1,0.2,0.2c0.3,1.1-0.2,3.1-0.2,3.2s-0.1,0.2-0.3,0.2c-0.1,0-0.2,0-0.2,0
c-1.1,0-2.4,0.6-2.5,1c0,0.1,0.1,0.1,0.1,0.1c0.2,0.1,0.4,0.2,0.7,0.2c0.8,0,1.6-0.5,1.6-0.5c0.1-0.1,0.2-0.1,0.3,0
c0.1,0.1,0.1,0.2,0.1,0.3l-1,2.8C103.8,75.5,103.4,76.5,101.6,76.5z M99.7,75c0.1,0,0.2,0,0.2,0.1c0,0,0.6,0.9,1.5,0.9
c1.7,0.1,2-0.7,2-0.7l0.8-2.2c-0.3,0.1-0.8,0.3-1.3,0.3c-0.3,0-0.6-0.1-0.9-0.2c-0.4-0.2-0.4-0.6-0.4-0.7c0.2-0.7,1.9-1.4,3-1.3
c0.1-0.4,0.3-1.5,0.3-2.3c-0.4,0.4-1,0.9-1.5,0.9c-0.2,0-0.5-0.1-0.7-0.6c-0.1-0.3-0.1-0.6,0.1-0.8c0.4-0.7,1.6-1.1,2-1.2
c0-0.7-0.1-3.1-1-4.2c-1.2,0.1-2.7,1.8-3.1,2.3c0.3,0.4,1,1.7,0.7,2.5c-0.1,0.2-0.2,0.4-0.4,0.6c-0.1,0.1-0.2,0.1-0.4,0.1
c-0.7,0-1-1.3-1.1-2c-0.4,0.5-0.9,1.3-1.1,1.7c0.4,0.6,1.8,2.8,1.6,3.5c-0.1,0.3-0.4,0.4-0.9,0.1c-0.7-0.3-1.2-1.2-1.4-1.8l-0.6,2
c0,0-0.3,1.1,1,2.4c0.7,0.6,1.2,0.7,1.4,0.7C99.6,75,99.6,75,99.7,75C99.6,75,99.6,75,99.7,75z" />
</g>
<g>
<path class="st0" d="M99.7,75.4C99.6,75.4,99.6,75.4,99.7,75.4c-0.2-0.1-0.3-0.2-0.2-0.3l4.2-12.6c0-0.1,0.2-0.2,0.3-0.2
c0.1,0,0.2,0.2,0.2,0.3L100,75.2C99.9,75.4,99.8,75.4,99.7,75.4z" />
</g>
<g>
<path class="st0" d="M105.4,83.2c-0.3,0-0.7-0.1-1.1-0.3c-0.6-0.3-0.8-0.7-0.9-0.8c-0.1-0.1-0.4-0.4-0.5-1.2
c-0.3-1.3,0.2-1.8,0.4-1.9l1.7-1.8c0.1-0.1,0.2-0.1,0.3,0c0.1,0.1,0.1,0.2,0.1,0.3c-0.1,0.3-0.4,1.3-0.1,1.8c0,0,0,0.1,0.1,0.1
c0.2-0.3,0.4-1.9,0.4-2.5c0-0.1,0-0.1,0.1-0.2s1.3-1.2,2.1-1.4c0.1,0,0.2,0,0.2,0.1c0.1,0.1,0.1,0.2,0,0.3
c-0.4,0.7-0.6,1.5-0.5,1.6c0.5-0.1,0.8-1.3,0.8-2.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,1.8-0.8,3-0.8c0.3,0,0.5,0,0.6,0.1
c0,0,0.1,0,0.1,0.1l0,0v0.1c0.1,1.2-1.3,3.6-1.4,3.7s-0.2,0.1-0.3,0.1c0,0-0.4-0.1-0.9-0.1c-0.4,0-1,0.1-1.1,0.4
c0,0.1,0,0.1,0,0.1l0,0c0,0,0.1,0.1,0.3,0.1c0.5,0,1.2-0.2,1.2-0.2c0.1,0,0.2,0,0.2,0.1c0.1,0.1,0.1,0.2,0.1,0.3
c-0.3,0.8-1.6,1.9-1.7,1.9c-0.1,0.1-0.2,0.1-0.3,0c-0.2-0.1-0.7-0.2-1.1-0.2c-0.7,0-1,0.2-1,0.2c0.2,0.3,0.6,0.3,0.9,0.3
s0.6-0.1,0.6-0.1c0.1,0,0.2,0,0.3,0.1c0,0.1,0,0.2-0.1,0.3l-2,1.4C106,83,105.8,83.2,105.4,83.2z M103.5,79.3c0,0-0.4,0.3-0.2,1.5
c0.2,0.7,0.4,0.9,0.4,0.9c0.1,0,0.1,0.1,0.1,0.1s0.1,0.4,0.7,0.6c0.3,0.1,0.6,0.2,0.9,0.2s0.4-0.1,0.4-0.1l1.3-1
c-0.5,0-0.9-0.2-1.1-0.5c-0.2-0.2-0.1-0.4,0-0.5c0.2-0.5,1.2-0.5,1.5-0.5c0.5,0,0.9,0.1,1.2,0.2c0.3-0.3,0.8-0.7,1.1-1.1
c-0.2,0-0.5,0.1-0.7,0.1c-0.3,0-0.6-0.1-0.7-0.3c-0.1-0.1-0.1-0.3,0-0.5c0.1-0.3,0.5-0.8,1.5-0.8c0.3,0,0.6,0,0.8,0.1
c0.4-0.7,1.2-2.3,1.3-3.2c-0.1,0-0.2,0-0.3,0c-0.9,0-2.2,0.5-2.7,0.7c0,0.6-0.2,2.2-1.1,2.4h-0.1l0,0c-0.2,0-0.3-0.1-0.4-0.2
c-0.2-0.3,0-1,0.2-1.5c-0.5,0.3-1,0.7-1.2,1c0,0.5-0.1,2.2-0.5,2.7c-0.1,0.2-0.3,0.2-0.4,0.2c-0.2,0-0.3-0.1-0.4-0.3
c-0.3-0.3-0.3-0.8-0.2-1.3L103.5,79.3L103.5,79.3L103.5,79.3z" />
</g>
<g>
<path class="st0" d="M103.6,82.2c-0.1,0-0.1,0-0.2-0.1s-0.1-0.3,0-0.3l8.5-7.5c0.1-0.1,0.3-0.1,0.3,0c0.1,0.1,0.1,0.3,0,0.3
l-8.5,7.5C103.7,82.2,103.6,82.2,103.6,82.2z" />
</g>
<g>
<path class="st0" d="M92.6,76.6L92.6,76.6c-3.2-1.6-11.3-3.8-11.4-3.8S81,72.6,81,72.5c0-0.1,0.2-0.2,0.3-0.2
c0.3,0.1,8.2,2.2,11.4,3.8c0.1,0.1,0.2,0.2,0.1,0.3C92.8,76.5,92.7,76.6,92.6,76.6z" />
</g>
<g>
<path class="st0" d="M104.1,104H93.7c-0.1,0-0.2-0.1-0.2-0.2L92,90.7c0-0.1,0-0.1,0.1-0.2c0-0.1,0.1-0.1,0.2-0.1H106
c0.1,0,0.1,0,0.2,0.1c0,0.1,0.1,0.1,0.1,0.2l-1.8,13.1C104.3,103.9,104.2,104,104.1,104z M93.9,103.5h10l1.7-12.7H92.5L93.9,103.5
z" />
</g>
<g>
<path class="st0" d="M94.6,75.3c-1,0-1.3-0.3-1.4-0.5l-1.8-2c-0.1-0.1-0.1-0.2,0-0.3s0.2-0.1,0.3-0.1c0,0,0.7,0.3,1.3,0.3
c0.3,0,0.5-0.1,0.7-0.2c0.1,0,0.1-0.1,0.1-0.1c-0.1-0.2-1.1-0.6-2.1-0.6c-0.2,0-0.4,0-0.5,0s-0.2,0-0.2-0.1
c-0.1-0.2-1.2-1.5-1.2-2.4c0-0.1,0-0.2,0.1-0.2s0.2,0,0.2,0c0.3,0.2,1.1,0.6,1.6,0.6c0.2,0,0.2-0.1,0.2-0.2c0-0.6-1.5-0.8-2.2-0.8
c-0.1,0-0.2-0.1-0.2-0.2s-0.7-3-0.1-4.3c0,0,0-0.1,0.1-0.1h0.1h0.1c1.4-0.2,3.9,1.5,4,1.6s0.1,0.2,0.1,0.3c-0.2,0.7-0.6,2.1,0,2.4
c0.1,0,0.1,0,0.2,0c0.2-0.3,0.2-1.2,0.1-1.8c0-0.1,0-0.2,0.1-0.2c0.1-0.1,0.2-0.1,0.2,0c0.9,0.3,1.8,1.9,1.9,2c0,0.1,0,0.2,0,0.3
c-0.2,0.6-0.7,2.4-0.5,2.7c0,0,0.1,0,0.2-0.1c0.6-0.4,0.6-1.5,0.6-1.9c0-0.1,0.1-0.2,0.2-0.2s0.2,0,0.3,0.1l0.5,1
c0,0.1,0,0.1,0,0.2c0,0-0.1,0.2-0.2,0.6c0,0.2-0.1,0.4-0.1,0.5s-0.1,0.2-0.1,0.3C97,72,97,72.3,97,72.5c0,0.1,0.1,0.3,0.2,0.5
c0.2,0.3,0.3,0.5,0.3,0.6c0.1,0.1,0.1,0.2,0,0.4c-0.4,0.5-0.7,0.6-0.8,0.7c-0.1,0.1-0.6,0.5-1.4,0.6
C95.1,75.3,94.8,75.3,94.6,75.3z M93.6,74.6c0,0,0.2,0.2,0.9,0.2c0.2,0,0.4,0,0.7-0.1c0.8-0.1,1.1-0.5,1.2-0.5l0.1-0.1l0,0
c0,0,0.2-0.1,0.5-0.4c-0.1-0.1-0.2-0.3-0.3-0.6c-0.1-0.2-0.2-0.5-0.2-0.6c0-0.3,0-0.6,0.1-1c0-0.1,0.1-0.2,0.1-0.4
c0-0.1,0.1-0.3,0.1-0.5c0.1-0.3,0.1-0.5,0.2-0.6h-0.1c-0.1,0.5-0.3,1.1-0.8,1.5c-0.4,0.3-0.7,0.2-0.9-0.1c-0.3-0.6,0.3-2.5,0.5-3
C95.5,68,95,67.3,94.5,67c0,0.5,0,1.3-0.3,1.7c-0.2,0.2-0.4,0.3-0.7,0.2c-1-0.4-0.5-2.2-0.4-2.8c-0.5-0.3-2.3-1.5-3.4-1.4
c-0.4,0.9-0.1,2.8,0.1,3.7c0.6,0,2.5,0.2,2.5,1.3c0,0.4-0.3,0.7-0.7,0.7l0,0c-0.4,0-1-0.2-1.4-0.4c0.2,0.6,0.6,1.2,0.9,1.6
c0.1,0,0.3,0,0.5,0c0.9,0,2.4,0.4,2.6,0.9c0,0.1,0.1,0.4-0.2,0.6c-0.3,0.2-0.6,0.3-1,0.3c-0.2,0-0.4,0-0.6-0.1L93.6,74.6
C93.6,74.5,93.6,74.5,93.6,74.6L93.6,74.6z" />
</g>
<g>
<path class="st0" d="M96.6,74.6c-0.1,0-0.2,0-0.2-0.1c-1.4-2.8-6.8-9.9-6.9-10s-0.1-0.3,0-0.3c0.1-0.1,0.3-0.1,0.3,0
c0.2,0.3,5.5,7.3,6.9,10.1C96.8,74.4,96.7,74.6,96.6,74.6C96.7,74.6,96.6,74.6,96.6,74.6z" />
</g>
<g>
<path class="st0" d="M104.7,76.8c-0.3,0-0.8-0.1-1.5-1.1c-0.1-0.1-0.1-0.2,0-0.3c0,0,0.1-0.2,0.2-0.5l0.3-0.7c0,0,0.3-0.7,0.5-1.2
c-0.1,0-0.1,0.1-0.2,0.1s-0.4,0.1-0.5,0.2c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2,0-0.3c0.7-1.3,1.3-1.5,1.4-1.5l2.6-0.7
c0.1,0,0.2,0,0.3,0.1c0.1,0.1,0,0.2-0.1,0.3c-0.3,0.2-1.2,1-1.2,1.6c0,0.1,0,0.1,0,0.1c0.4-0.1,1.5-1.5,1.9-2.1
c0-0.1,0.1-0.1,0.2-0.1s1.8,0.2,2.6,0.5c0.1,0,0.2,0.1,0.2,0.2s-0.1,0.2-0.2,0.2c-0.6,0.2-1.2,0.5-1.3,0.7l0,0c0.1,0,0.1,0,0.2,0
c0.6,0,1.4-0.7,1.7-1c0.1-0.1,0.1-0.1,0.2-0.1c0.3,0.1,2.9,0.8,3.6,1.7v0.1V73v0.1c-0.5,0.9-2.2,1.5-3.2,1.7H112l0,0
c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.3c-0.1,0-0.2,0-0.3,0h-0.2c-0.2,0-0.3,0-0.3-0.1c-0.6-0.4-1-0.5-1.3-0.3
c-0.1,0.1-0.1,0.1-0.1,0.1s0,0,0.1,0s0.2,0.1,0.2,0.2c0,0.2-0.1,0.2-0.5,0.3c-0.2,0.1-0.6,0.2-0.6,0.2s0,0.3,0,0.6c0,0,0,0,0,0.1
s-0.1,0.2-0.2,0.2l0,0c-0.1,0-0.2,0-0.2-0.1c0,0-0.2-0.2-0.3-0.2c-0.1-0.1-0.1-0.1-0.2-0.1s-0.1-0.1-0.2-0.1s-0.1-0.1-0.2-0.2
c-0.3-0.2-0.6-0.4-0.9-0.4c-0.2,0-0.2,0.1-0.2,0.1c0,0.3,0.3,0.6,0.6,0.7c0.1,0,0.1,0.1,0.1,0.2s0,0.1-0.1,0.2
c0,0-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.3,0.2h-0.1H106l-1.2,0.1C104.8,76.8,104.8,76.8,104.7,76.8z M103.8,75.6
c0.6,0.8,1,0.7,1,0.7l1.3-0.1c0,0,0.2-0.1,0.3-0.2l0,0c-0.3-0.3-0.5-0.6-0.5-1s0.3-0.6,0.7-0.6c0.4,0,0.8,0.2,1.2,0.5
c0.1,0.1,0.1,0.1,0.2,0.1s0.1,0.1,0.2,0.1s0.1,0.1,0.2,0.1l0,0c0-0.2,0.1-0.4,0.1-0.5c0.1-0.1,0.3-0.2,0.8-0.3c0,0,0,0,0-0.1
c-0.1-0.2,0-0.5,0.3-0.6c0.4-0.4,1.1-0.3,1.8,0.2c0,0,0,0,0.1,0h0.2c0.4,0,0.6,0.1,0.6,0.1c0.1,0,0.2,0.2,0.1,0.3l0,0
c1.3-0.3,2.3-0.8,2.6-1.3c-0.6-0.6-2.3-1.2-3.1-1.4c-0.3,0.3-1.2,1-2,1c-0.1,0-0.3,0-0.4-0.1c-0.3-0.1-0.3-0.3-0.3-0.4
c0-0.3,0.5-0.6,1-0.9c-0.6-0.1-1.3-0.2-1.6-0.3c-0.4,0.5-1.6,2.2-2.2,2.2c-0.1,0-0.4-0.1-0.5-0.6c0-0.5,0.3-0.9,0.6-1.3l-1.6,0.5
c0,0-0.3,0.1-0.7,0.7c0.1-0.1,0.2-0.1,0.3-0.2c0.1-0.1,0.2-0.1,0.3-0.1c0.1,0,0.2,0,0.2,0.1s0.1,0.2,0,0.2
c-0.1,0.5-0.6,1.7-0.6,1.8l-0.3,0.7C103.9,75.3,103.8,75.5,103.8,75.6z" />
</g>
<g>
<path class="st0" d="M104.1,74.3c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.3,0.2-0.3s5.3-1.1,11.2-0.9c0.1,0,0.2,0.1,0.2,0.2
s-0.1,0.2-0.2,0.2C109.4,73.3,104.2,74.3,104.1,74.3L104.1,74.3z" />
</g>
</g>
<g id="box">
<path class="st0" d="M17.8,88.7H3c-0.3,0-0.5,0.2-0.5,0.5v2.1c0,0.3,0.2,0.5,0.5,0.5h0.7v10.5h13.4V91.9h0.7c0.3,0,0.5-0.2,0.5-0.5
v-2.1C18.3,89,18.1,88.7,17.8,88.7z M4,100.4c0.9,0.1,1.6,0.8,1.7,1.7H4V100.4z M15,102.1c0.1-0.9,0.8-1.6,1.7-1.7v1.7H15z
M16.7,100c-1.1,0.1-2,1-2.1,2.1H6.1c-0.1-1.1-1-2-2.1-2.1v-8.1h12.7V100z M18,91.4c0,0.1-0.1,0.2-0.2,0.2H3
c-0.1,0-0.2-0.1-0.2-0.2v-2.1c0-0.1,0.1-0.2,0.2-0.2h14.8c0.1,0,0.2,0.1,0.2,0.2V91.4z" />
<path class="st0" d="M8.7,95.1H12c0.5,0,0.9-0.4,0.9-0.9s-0.4-0.9-0.9-0.9H8.7c-0.5,0-0.9,0.4-0.9,0.9S8.2,95.1,8.7,95.1z
M8.7,93.7H12c0.3,0,0.5,0.2,0.5,0.5s-0.2,0.5-0.5,0.5H8.7c-0.3,0-0.5-0.2-0.5-0.5S8.4,93.7,8.7,93.7z" />
<path class="st0" d="M17.1,89.5h-4.5v0.4h4.5c0.1,0,0.2,0.1,0.2,0.2v0.7h0.3v-0.7C17.6,89.7,17.4,89.5,17.1,89.5z" />
<rect x="11.5" y="89.5" class="st0" width="0.5" height="0.4" />
</g>
<g id="abacus">
<g transform="translate(50 50) scale(0.69 0.69) rotate(0) translate(-50 -50)">
<path class="st0" d="M173.8,57.7c-0.2,0-0.3,0.2-0.3,0.4v14c0,0.2,0.2,0.3,0.3,0.3H196c0.2,0,0.3-0.2,0.3-0.3v-14
c0-0.2-0.2-0.4-0.3-0.4l0,0L173.8,57.7C173.9,57.7,173.8,57.7,173.8,57.7z M174.2,58.4h21.5v13.3h-21.5V58.4z" />
<path class="st0" d="M173.9,62.6v0.2H196v-0.2H173.9z" />
<path class="st0" d="M176.1,58.1v14h0.2v-14H176.1z" />
<path class="st0" d="M179.6,58.1v14h0.2v-14H179.6z" />
<path class="st0" d="M183.1,58.1v14h0.2v-14H183.1z" />
<path class="st0" d="M186.6,58.1v14h0.2v-14H186.6z" />
<path class="st0" d="M190.1,58.1v14h0.2v-14H190.1z" />
<path class="st0" d="M193.6,58.1v14h0.2v-14H193.6z" />
<path class="st0" d="M175.6,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,69,175.6,69z" />
<path class="st0" d="M175.6,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,70.9,175.6,70.9z
" />
<path class="st0" d="M175.6,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,70,175.6,70z" />
<path class="st0" d="M175.6,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,68.1,175.6,68.1z
" />
<path class="st0" d="M175.6,63.4h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,63.4,175.6,63.4z
" />
<path class="st0" d="M179.1,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,69,179.1,69z" />
<path class="st0" d="M179.1,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,70.9,179.1,70.9z
" />
<path class="st0" d="M179.1,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,70,179.1,70z" />
<path class="st0" d="M179.1,65.3h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,65.3,179.1,65.3z
" />
<path class="st0" d="M179.1,64.4h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,64.4,179.1,64.4z
" />
<path class="st0" d="M182.6,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,69,182.6,69z" />
<path class="st0" d="M182.6,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,70.9,182.6,70.9z
" />
<path class="st0" d="M182.6,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,70,182.6,70z" />
<path class="st0" d="M182.6,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,68.1,182.6,68.1z
" />
<path class="st0" d="M182.6,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,67.2,182.6,67.2z
" />
<path class="st0" d="M182.6,63.4h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,63.4,182.6,63.4z
" />
<path class="st0" d="M186.1,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,69,186.1,69z" />
<path class="st0" d="M186.1,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3c0,0.2-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3
S185.9,70.9,186.1,70.9z" />
<path class="st0" d="M186.1,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,70,186.1,70z" />
<path class="st0" d="M186.1,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,68.1,186.1,68.1z
" />
<path class="st0" d="M186.1,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,67.2,186.1,67.2z
" />
<path class="st0" d="M186.1,63.4h1.2c0.2,0,0.3,0.2,0.3,0.3c0,0.2-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3
C185.8,63.6,185.9,63.4,186.1,63.4z" />
<path class="st0" d="M189.6,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,69,189.6,69z" />
<path class="st0" d="M189.6,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3c0,0.2-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3
S189.4,70.9,189.6,70.9z" />
<path class="st0" d="M189.6,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,70,189.6,70z" />
<path class="st0" d="M189.6,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,68.1,189.6,68.1z
" />
<path class="st0" d="M189.6,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,67.2,189.6,67.2z
" />
<path class="st0" d="M189.6,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,67.2,189.6,67.2z
" />
<path class="st0" d="M193.1,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,69,193.1,69z" />
<path class="st0" d="M193.1,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3c0,0.2-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3
S192.9,70.9,193.1,70.9z" />
<path class="st0" d="M193.1,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,70,193.1,70z" />
<path class="st0" d="M193.1,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,68.1,193.1,68.1z
" />
<path class="st0" d="M193.1,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,67.2,193.1,67.2z
" />
<path class="st0" d="M193.1,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,67.2,193.1,67.2z
" />
<path class="st0" d="M175.6,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,61.6,175.6,61.6z
" />
<path class="st0" d="M175.6,58.8h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,58.8,175.6,58.8z
" />
<path class="st0" d="M179.1,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,61.6,179.1,61.6z
" />
<path class="st0" d="M179.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,60.6,179.1,60.6z
" />
<path class="st0" d="M179.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,60.6,179.1,60.6z
" />
<path class="st0" d="M182.6,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,61.6,182.6,61.6z
" />
<path class="st0" d="M182.6,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,60.6,182.6,60.6z
" />
<path class="st0" d="M182.6,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,60.6,182.6,60.6z
" />
<path class="st0" d="M186.1,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,61.6,186.1,61.6z
" />
<path class="st0" d="M186.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,60.6,186.1,60.6z
" />
<path class="st0" d="M186.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,60.6,186.1,60.6z
" />
<path class="st0" d="M189.6,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,61.6,189.6,61.6z
" />
<path class="st0" d="M189.6,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,60.6,189.6,60.6z
" />
<path class="st0" d="M189.6,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,60.6,189.6,60.6z
" />
<path class="st0" d="M193.1,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,61.6,193.1,61.6z
" />
<path class="st0" d="M193.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,60.6,193.1,60.6z
" />
<path class="st0" d="M193.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,60.6,193.1,60.6z
" />
<path class="st0" d="M193.1,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,61.6,193.1,61.6z
" />
<path class="st0" d="M193.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,60.6,193.1,60.6z
" />
<path class="st0" d="M193.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,60.6,193.1,60.6z
" />
</g>
</g>
<g id="phone">
<path class="st0" d="M218.1,55.2v-2.7c0-0.1-0.1-0.2-0.2-0.2c-0.1,0-0.2,0.1-0.2,0.2v2.7h-0.4v2l0.7,2.2v4l-0.7,1.3v0.7h1.4V55.2
H218.1z" />
<path class="st0" d="M217.9,59.4l-0.7-2.2v-2h-2.9v2l0.7,2.2v4l-0.7,1.3v0.7h2.9v-0.8l0.7-1.3V59.4z M216.1,55.9
C216.1,55.9,216.2,56,216.1,55.9c0.1,0.1,0,0.2,0,0.2C216.1,56.1,216,56.1,216.1,55.9C216,56,216,55.9,216.1,55.9z M216.1,56.3
C216.1,56.3,216.2,56.3,216.1,56.3c0.1,0.1,0,0.2,0,0.2C216.1,56.5,216,56.4,216.1,56.3C216,56.3,216,56.3,216.1,56.3z M216.1,56.7
C216.1,56.7,216.2,56.7,216.1,56.7c0.1,0.1,0,0.2,0,0.2C216.1,56.8,216,56.8,216.1,56.7C216,56.7,216,56.7,216.1,56.7z M215.7,55.9
C215.8,55.9,215.8,56,215.7,55.9c0.1,0.1,0,0.2,0,0.2S215.7,56.1,215.7,55.9C215.6,56,215.7,55.9,215.7,55.9z M215.7,56.3
C215.8,56.3,215.8,56.3,215.7,56.3c0.1,0.1,0,0.2,0,0.2S215.7,56.4,215.7,56.3C215.6,56.3,215.7,56.3,215.7,56.3z M215.7,56.7
C215.8,56.7,215.8,56.7,215.7,56.7c0.1,0.1,0,0.2,0,0.2S215.7,56.8,215.7,56.7C215.6,56.7,215.7,56.7,215.7,56.7z M215.4,55.9
C215.4,55.9,215.5,56,215.4,55.9c0.1,0.1,0,0.2,0,0.2S215.3,56.1,215.4,55.9C215.3,56,215.3,55.9,215.4,55.9z M215.4,56.3
C215.4,56.3,215.5,56.3,215.4,56.3c0.1,0.1,0,0.2,0,0.2S215.3,56.4,215.4,56.3C215.3,56.3,215.3,56.3,215.4,56.3z M215.4,56.7
C215.4,56.7,215.5,56.7,215.4,56.7c0.1,0.1,0,0.2,0,0.2S215.3,56.8,215.4,56.7C215.3,56.7,215.3,56.7,215.4,56.7z M214.8,57.8h2.2
l0.4,1.1h-2.2L214.8,57.8z M215.5,62.2v-0.4h0.5v0.4H215.5z M216,62.8v0.4h-0.5v-0.4H216z M215.5,61.5v-0.4h0.5v0.4H215.5z
M215.5,60.7v-0.4h0.5v0.4H215.5z M215.5,60v-0.4h0.5V60H215.5z M215.9,65.2h-0.4c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.2-0.2h0.4
c0.1,0,0.2,0.1,0.2,0.2S216,65.2,215.9,65.2z M216.7,63.1h-0.5v-0.4h0.5V63.1z M216.7,62.2h-0.5v-0.4h0.5V62.2z M216.7,61.5h-0.5
v-0.4h0.5V61.5z M216.7,60.7h-0.5v-0.4h0.5V60.7z M216.7,60h-0.5v-0.4h0.5V60z M217.4,63.1h-0.5v-0.4h0.5V63.1z M217.4,62.2h-0.5
v-0.4h0.5V62.2z M217.4,61.5h-0.5v-0.4h0.5V61.5z M217.4,60.7h-0.5v-0.4h0.5V60.7z M217.4,60h-0.5v-0.4h0.5V60z" />
</g>
<g id="tiles">
<path class="st0" d="M122.3,15c0,0.1,0.1,0.1,0.1,0.1h2.8c0.1,0,0.1-0.1,0.1-0.1v-3.9c0-0.1-0.1-0.1-0.1-0.1h-3.9
c-0.1,0-0.1,0.1-0.1,0.1v2.8c0,0.1,0.1,0.1,0.1,0.1c0.1,0,0.1-0.1,0.1-0.1v-2.6h3.6v3.6L122.3,15C122.4,14.9,122.3,14.9,122.3,15z" />
<path class="st0" d="M123.5,11.7v1.1c0,0.1,0.1,0.1,0.1,0.1h1.1c0.1,0,0.1-0.1,0.1-0.1v-1.1c0-0.1-0.1-0.1-0.1-0.1h-1.1
C123.5,11.6,123.5,11.6,123.5,11.7z M123.7,11.8h0.8v0.8h-0.8V11.8z" />
<path class="st0" d="M123.2,12.8v-1.1c0-0.1-0.1-0.1-0.1-0.1H122c-0.1,0-0.1,0.1-0.1,0.1v1.1c0,0.1,0.1,0.1,0.1,0.1h1.1
C123.1,12.9,123.2,12.9,123.2,12.8z M122.9,12.7h-0.8v-0.8h0.8V12.7z" />
<path class="st0" d="M123.5,13.4v1.1c0,0.1,0.1,0.1,0.1,0.1h1.1c0.1,0,0.1-0.1,0.1-0.1v-1.1c0-0.1-0.1-0.1-0.1-0.1h-1.1
C123.5,13.2,123.5,13.3,123.5,13.4z M123.7,13.5h0.8v0.8h-0.8V13.5z" />
<path class="st0" d="M120.4,14.8v1.1c0,0.1,0.1,0.1,0.1,0.1h1.1c0.1,0,0.1-0.1,0.1-0.1v-1.1c0-0.1-0.1-0.1-0.1-0.1h-1.1
C120.5,14.6,120.4,14.7,120.4,14.8z M120.7,14.9h0.8v0.8h-0.8V14.9z" />
<circle class="st0" cx="121.9" cy="14.5" r="0.1" />
<circle class="st0" cx="121.9" cy="13.9" r="0.1" />
<circle class="st0" cx="121.9" cy="13.4" r="0.1" />
<circle class="st0" cx="122.5" cy="13.4" r="0.1" />
<circle class="st0" cx="123" cy="13.4" r="0.1" />
<circle class="st0" cx="123" cy="13.9" r="0.1" />
<circle class="st0" cx="123" cy="14.5" r="0.1" />
<circle class="st0" cx="122.5" cy="14.5" r="0.1" />
</g>
<rect id="flexboxPuzzleBtn" x="2.5" y="88.5" class="st2" width="16" height="14" />
<rect id="mathPuzzleBtn" x="135" y="55" class="st2" width="16" height="10" />
<rect id="puzzlerBtn" x="120.4" y="11" class="st2" width="5.1" height="5" />
<rect id="recursionPuzzleBtn" x="156" y="34.8" class="st2" width="34" height="23.5" />
<rect id="pipePuzzleBtn" x="269" y="75" class="st2" width="30" height="30" />
<g id="open-door" class="st3">
<path class="st0" d="M49.1,53.9c0,1.5,1.2,2.8,2.8,2.8c1.5,0,2.8-1.2,2.8-2.8c0-1.5-1.2-2.8-2.8-2.8C50.3,51.2,49.1,52.4,49.1,53.9
z M51.2,53.9c0-0.4,0.3-0.6,0.6-0.6c0.4,0,0.6,0.3,0.6,0.6s-0.3,0.6-0.6,0.6C51.5,54.6,51.2,54.3,51.2,53.9z" />
<path class="st0" d="M0,101.9v2.1h27.4l29.8-8.4V12.3L34.2,6h34.3v98h27.4v-2.1H74.5V0H21.4v101.9H0z M27.4,101.5V6.3L55,13.9V94
L27.4,101.5z M23.5,101.9V2.1h48.8v99.7h-1.7v-98H26.5l-1.2-0.3v0.3v98C25.3,101.9,23.5,101.9,23.5,101.9z" />
</g>
<g id="fishbooks">
<path class="st0" d="M249.8,42.7c0.1,0,0.2-0.1,0.2-0.2v-0.7c0-0.1-0.1-0.2-0.2-0.2h-4.9c1.8-0.7,2.9-2.5,2.9-4.4
c0-1.3-0.5-2.6-1.5-3.5c-0.1-0.1-0.1-0.1-0.2-0.2l-0.1-0.1h-5.9c-0.1,0-0.1,0-0.1,0.1c-2,1.7-2.3,4.7-0.5,6.7
c0.5,0.6,1.1,1,1.8,1.3h-2.7c-0.8,0-1.4,0.6-1.4,1.4c0,0.4,0.2,0.8,0.4,1h-0.3c-1,0-1.8,0.8-1.8,1.7s0.8,1.8,1.7,1.8v1.3
c0,0.1,0.1,0.2,0.2,0.2c0.1,0,0.1,0,0.1-0.1l0.5-0.6l0.5,0.6c0.1,0.1,0.2,0.1,0.3,0l0.1-0.1v-1.3h9.2c0.1,0,0.2-0.1,0.2-0.2v-0.7
c0-0.1-0.1-0.2-0.2-0.2h-0.4V45h0.4c0.1,0,0.2-0.1,0.2-0.2v-0.6h1.5c0.1,0,0.2-0.1,0.2-0.2v-0.7c0-0.1-0.1-0.2-0.2-0.2h-0.2v-0.6
h0.2V42.7z M240.2,33.8h5.7l0.1,0.1c0.2,0.2,0.4,0.4,0.6,0.6c-0.2,0-0.5,0.1-0.7,0.2c-0.6,0.2-1.2,0.2-1.8,0
c-0.3-0.1-0.7-0.2-1-0.2c-0.4,0-0.7,0.1-1,0.2c-0.3,0.1-0.6,0.2-0.9,0.2c-0.3,0-0.6-0.1-0.9-0.2c-0.2-0.1-0.5-0.2-0.7-0.2
C239.7,34.3,239.9,34.1,240.2,33.8z M238.7,37.2c0-0.8,0.2-1.6,0.6-2.2c0.3,0,0.6,0.1,0.8,0.2c0.3,0.1,0.7,0.2,1,0.2
c0.4,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.2,0.9-0.2c0.3,0,0.6,0.1,0.9,0.2c0.3,0.1,0.7,0.2,1,0.2c0.4,0,0.7-0.1,1-0.2
c0.3-0.1,0.5-0.2,0.8-0.2c1.2,2.1,0.5,4.8-1.6,6s-4.8,0.5-6-1.6C238.9,38.7,238.7,37.9,238.7,37.2z M248,47.1h-9v-0.4h9V47.1z
M247.4,46.4h-8.5V46c0-0.1-0.1-0.2-0.2-0.2h-1.3c-0.1,0-0.2,0.1-0.2,0.2v0.4c-0.4,0-0.6-0.3-0.6-0.7s0.3-0.6,0.7-0.6l0,0h10.1
V46.4z M248,44.7h-10.7c-0.6,0-1,0.4-1,1s0.4,1,1,1v0.4c-0.8,0-1.4-0.6-1.4-1.4s0.6-1.4,1.4-1.4H248V44.7z M249.6,44h-11.1
c-0.6,0-1-0.5-1-1c0-0.6,0.5-1,1-1h11.1v0.4h-10.9c-0.4,0-0.6,0.3-0.6,0.6c0,0.4,0.3,0.6,0.6,0.6h10.9V44z M249.3,43.2h-10.5
c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h10.5V43.2z" />
<path class="st0" d="M245.8,37.5l0.8,0.7c0.1,0.1,0.2,0.1,0.3,0l0.1-0.1v-1.7c0-0.1-0.1-0.2-0.2-0.2c0,0-0.1,0-0.1,0.1l-0.8,0.7
c-0.3-0.4-1.1-1.1-2.1-1.1c-1.2,0-2,1.3-2,1.3c0,0.1,0,0.1,0,0.2c0,0.1,0.8,1.3,2,1.3C244.7,38.6,245.5,37.8,245.8,37.5z
M246.5,36.8v0.8l-0.4-0.4L246.5,36.8z M242.1,37.2c0.2-0.3,0.8-1,1.6-1s1.6,0.7,1.8,1c-0.3,0.3-1,1-1.8,1
C242.9,38.2,242.3,37.5,242.1,37.2L242.1,37.2z" />
<circle class="st0" cx="242.8" cy="37" r="0.2" />
<path class="st0" d="M242.1,35.4c0-0.5-0.4-1-1-1c-0.5,0-1,0.4-1,1c0,0.5,0.4,1,1,1C241.6,36.4,242.1,35.9,242.1,35.4z M241.1,36
c-0.3,0-0.6-0.3-0.6-0.6s0.3-0.6,0.6-0.6s0.6,0.3,0.6,0.6S241.4,36,241.1,36z" />
<path class="st0" d="M240.2,36.6c-0.3,0-0.6,0.3-0.6,0.6s0.3,0.6,0.6,0.6s0.6-0.3,0.6-0.6C240.9,36.9,240.6,36.6,240.2,36.6
L240.2,36.6z M240.2,37.4c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.2-0.2c0.1,0,0.2,0.1,0.2,0.2l0,0C240.5,37.3,240.4,37.4,240.2,37.4z" />
</g>
</svg>
/***** Global Styles ******/
/*****
Objects in the Room
#door
#screenglitch
#computer
#desk
#servers
#poster
#radiator
#mirror
#plant
#noteWrap
#box
#abacus
#phone
#tiles
#open-door
******/
/* Start global colors */
:root {
--white: #e6e6e6; /* white alt */
--darkest-blue-color: #071e26; /* black alt */
--greyish-blue-color: #06394c;
--bright-blue-color: #0c4383; /*Recursion*/
--turquoise-blue-color: #22a0b6; /* Tiles */
--palest-blue-color: #6a96b9; /* Mirror */
--dark-magenta-color: #7b1346; /* Pipe */
--magenta-color: #cb0c59; /* Math */
--pink-color: #eb649f; /* Box */
}
/* End global color variables */
* {
box-sizing: border-box;
}
html {
height: 100%;
}
body {
display: grid;
align-items: center;
justify-items: center;
background-color: #051217;
background-image: radial-gradient(circle, #071e26, #051217);
font-family: "Cutive Mono", monospace;
}
svg {
width: 100%;
height: 100vh;
margin: 0 auto;
}
/* Room scene */
.st0 {
fill: var(--white);
transition: 0.4s ease-in-out;
}
#solidfill {
fill: var(--white);
}
#poster {
transition: 0.4s ease-in-out;
opacity: 1;
}
#flexboxPuzzleBtn:hover,
#mathPuzzleBtn:hover,
#puzzlerBtn:hover,
#recursionPuzzleBtn:hover,
#pipePuzzleBtn:hover,
#mirrorPuzzleBtn:hover,
#noteBtn:hover {
cursor: pointer;
}
/* End room scene */
/* The Modal (background) */
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0, 0, 0); /* Fallback color */
background-color: rgba(0, 0, 0, 0.4); /* Black w/ opacity */
}
// Less opaque versions of their color
#mirrorPuzzleModal .modal-content {
background-color: #6a96b9d9;
box-shadow: 0px 0px 30px 10px #6a96b9d9;
}
#recursionPuzzleModal .modal-content {
background-color: #0c4383f2;
box-shadow: 0px 0px 30px 10px #0c4383f2;
}
#puzzlerModal .modal-content {
background-color: #22a0b6f2;
box-shadow: 0px 0px 30px 10px #22a0b6f2;
width: 90%;
}
#flexboxPuzzleModal .modal-content {
background-color: #eb649fe6;
box-shadow: 0px 0px 30px 10px #eb649fe6;
}
#mathPuzzleModal .modal-content {
background-color: #cb0c59e6;
box-shadow: 0px 0px 30px 10px #cb0c59e6;
}
#pipePuzzleModal .modal-content {
background-color: #7b1346d9;
box-shadow: 0px 0px 30px 10px #7b1346d9;
}
/* Modal Content */
.modal-content {
background-color: #fefefe;
margin: auto;
padding: 20px;
width: 80%;
}
/* The Close Button */
.close {
color: var(--white);
float: right;
font-size: 28px;
font-weight: bold;
z-index: 100;
position: relative;
}
.close:hover,
.close:focus {
color: var(--darkest-blue-color);
text-decoration: none;
cursor: pointer;
}
/****** End Global Styles ******/
/* Cheryl Velez - Puzzler */
#puzzler-container {
margin: 0;
display: flex;
flex-direction: column;
}
#puzzler-container button {
font-size: 19px;
padding: 10px;
color: var(--white);
background: #253543;
margin-bottom: 8px;
border: 5px solid #22a0b6f2;
outline: 2px dashed var(--greyish-blue-color);
transition: 0.3s ease-in-out;
}
#alert {
position: relative;
color: var(--dark-magenta-color);
font-size: 32px;
text-align: center;
}
.quote {
position: relative;
color: var(--white);
font-size: 25px;
margin-top: 10px;
text-align: center;
cursor: auto;
width: 72%;
margin: 0 auto;
text-align: center;
}
.quote:last-of-type {
text-align: justify;
font-size: 18px;
margin-bottom: 35px;
}
#puzzler-container button:hover {
transform: scale(1.3);
}
.content {
display: flex;
flex-direction: column;
justify-content: space-evenly;
flex: 0 0 30%;
}
#btn-container {
text-align: center;
}
.topContainer {
margin-top: 20px;
justify-content: space-evenly;
display: flex;
}
.bottomContainer {
margin-top: 20px;
justify-content: space-evenly;
display: flex;
}
.outerflex {
display: flex;
flex-direction: column;
justify-content: space-around;
flex: 1;
height: 66vh;
}
#puzzler-container button {
cursor: pointer;
}
.outerBorder {
border: 2px dashed var(--greyish-blue-color);
padding: 5px;
height: fit-content;
width: fit-content;
margin: 10px;
}
.tile {
width: 100px;
height: 100px;
z-index: 1000;
box-sizing: border-box;
cursor: move;
border: 5px solid var(--darkest-blue-color);
}
.tile img {
filter: invert(100%);
}
.blank {
min-width: 116px;
min-height: 116px;
z-index: 100;
box-sizing: border-box;
border: 2px dashed var(--greyish-blue-color);
top: 200px;
padding: 5px;
margin: 10px;
}
.ui-state-highlight {
border-color: var(--dark-magenta-color);
}
@media all and (max-width: 1200px) {
.outerflex {
flex-direction: row;
justify-content: space-around;
height: auto;
}
.topContainer,
.bottomContainer {
flex-direction: column;
}
}
.revealtext {
background-color: var(--white);
transition: 0.3s ease;
}
.revealtext:hover {
cursor: pointer;
}
/* End Cheryl Velez - Puzzler */
/* Dominic Duffin - Math Puzzle */
:root {
--text-color: #111111;
}
#math-puzzle-container div {
color: var(--white);
}
#math-puzzle-container button {
line-height: 100px;
width: 100px;
border-radius: 40%;
border: 4px solid var(--white);
font-size: 2em;
font-weight: bold;
color: var(--white);
margin: 2px 0 0 2px;
}
#math-puzzle-main {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 50% 50%;
}
#math-puzzle-keypad {
grid-column: 1;
width: 50%;
margin-left: 10%;
}
#math-puzzle-sum {
grid-column: 2;
margin-right: 10%;
}
.math-puzzle-numberButton {
background-color: transparent;
}
.math-puzzle-zeroButton {
background-color: transparent;
}
.math-puzzle-signButton {
background-color: transparent;
}
.math-puzzle-position {
text-align: center;
line-height: 65px;
font-size: 2em;
padding: 10px;
font-weight: bold;
border-bottom: 1px solid var(--white);
}
#math-puzzle-message {
line-height: normal;
font-size: 1.5em;
}
/* End Dominic Duffin - Math Puzzle */
/* Paul - Flexbox Puzzle */
#flexbox-puzzle-container {
height: 700px;
margin: 0 auto;
display: flex;
flex-direction: column;
position: relative;
}
.heading {
margin: 8px;
color: var(--white);
}
.heading__rules {
padding: 0;
margin: 0 auto;
text-align: center;
}
.heading__subtitle {
display: block;
margin: 10px auto;
width: 80%;
height: 50px;
text-align: center;
}
.notification {
display: block;
width: 100%;
height: 35px;
font-size: 25px;
margin-bottom: 30px;
text-align: center;
color: var(--white);
transition: all 0.5s ease-in;
}
.flex-menu {
width: 100%;
height: 25%;
padding: 0.5rem;
text-align: center;
display: flex;
flex-direction: row;
justify-content: space-evenly;
align-items: center;
color: var(--white);
}
.flex-menu div {
display: flex;
flex-direction: column;
}
.flex-menu label {
display: inline-block;
padding-bottom: 0.5rem;
}
.flex-menu button {
margin: 10px;
margin-bottom: 50px;
border: 0;
padding: 10px 0;
width: 140px;
font-size: 0.75rem;
white-space: nowrap;
text-decoration: none;
outline: none;
box-shadow: 5px 6px 4px 2px rgba(12, 67, 131, 0.45);
}
.flex-menu__items {
background-color: var(--bright-blue-color);
padding: 4px;
text-decoration: none;
color: #fff;
cursor: pointer;
}
.flexPuzzle-container {
// display: block;
position: absolute;
height: 25%;
max-width: 100%;
left: 10%;
perspective: 1000px;
top: 300px;
}
.cube-1,
.cube-2,
.cube-3,
.cube-4,
.cube-5 {
//position: relative;
width: 75px;
height: 75px;
padding: 25px;
transform-style: preserve-3d;
transform: translateZ(-360px) rotateX(65deg) rotateZ(75deg);
transition: all 2s ease-in-out;
.side {
position: absolute;
width: 75px;
height: 75px;
}
.front {
background-color: var(--bright-blue-color);
transform: rotateY(0deg) translateZ(35px);
transition: all 0.5s ease-in-out;
}
.back {
background-color: var(--bright-blue-color);
transform: rotateX(180deg) translateZ(35px);
transition: all 0.5s ease-in-out;
}
.right {
background-color: var(--bright-blue-color);
transform: rotateY(90deg) translateZ(35px);
transition: all 0.5s ease-in-out;
}
.left {
transform: rotateY(-90deg) translateZ(35px);
transition: all 0.5s ease-in-out;
}
.top {
// background-color: var(--bright-blue-color);
transform: rotateX(90deg) translateZ(35px);
transition: all 0.5s ease-in-out;
}
.bottom {
background-color: var(--bright-blue-color);
transform: rotateX(-90deg) translateZ(35px);
transition: all 0.5s ease-in-out;
}
}
// Media queries smaller screen
@media only screen and (max-width: 1500px) {
#flexboxPuzzleModal .modal-content {
width: 90%;
}
.flexPuzzle-container {
left: 0;
}
}
/* End Paul - Flexbox Puzzle */
/* Kristopher Van Sant - Mirror Puzzle */
#mirror-puzzle-container {
text-align: center;
}
#mirror-clue,
#mirror-puzzle-container > p:first-of-type {
color: var(--white);
font-size: 1.7em;
margin-bottom: 50px;
}
#mirror-puzzle-container #note {
color: var(--darkest-blue-color);
width: 285px;
padding: 2%;
box-sizing: border-box;
display: inline-block;
vertical-align: middle;
background: var(--white);
background-size: contain;
text-align: left;
font-size: 19px;
}
#mirror-puzzle-container #note:hover {
cursor: grab;
}
#mirror-puzzle-container #note:active {
cursor: grabbing;
}
#mirror-puzzle-container #mmirror {
width: 500px;
height: 500px;
padding: 5%;
display: inline-block;
vertical-align: middle;
background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/108463/mirror.svg)
center center no-repeat;
background-size: contain;
}
#note-text {
margin: 0;
padding: 9%;
border: 2px dashed var(--darkest-blue-color);
}
#mirror-puzzle-container .mirror-text {
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
}
/* End Kristopher Van Sant - Mirror Puzzle */
/* Ryan Saunders - Pipe Puzzle */
#pipe-puzzle-container {
font-size: 100%;
height: 600px;
padding: 0;
margin: 0;
color: var(--white);
position: relative;
}
#pipePuzzleModal .modal-content {
height: 660px;
}
#pipe-puzzle-container span {
-webkit-transition-duration: 0.5s;
-moz-transition-duration: 0.5s;
-o-transition-duration: 0.5s;
transition-duration: 0.5s;
-webkit-transition-property: -webkit-transform;
-moz-transition-property: -moz-transform;
-o-transition-property: -o-transform;
transition-property: transform;
}
.container {
text-align: center;
margin-top: 50px;
font-size: 0;
width: 50%;
float: right;
}
.box {
width: 95px;
height: 95px;
position: relative;
display: inline-block;
font-size: 16px;
}
.box.fake {
border: none;
height: 25px;
}
#pipe-puzzle-container .left {
float: left;
position: absolute;
left: 0px;
top: 0px;
z-index: 9999;
width: 50%;
height: 100%;
font-size: xx-large;
line-height: 95px;
}
#pipe-puzzle-container .right {
float: left;
position: absolute;
right: 0px;
top: 0px;
z-index: 9999;
width: 50%;
height: 100%;
font-size: xx-large;
line-height: 95px;
}
.testArea {
position: absolute;
top: 20px;
left: 0px;
padding: 30px 15px;
background-color: #6a96b9d9;
text-align: center;
}
.testButton {
border: none;
padding: 10px;
background-color: var(--white);
}
.pipe {
width: 95px;
height: 95px;
filter: grayscale(1);
background: url("data:image/png;base64,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");
float: left;
//border: 1px solid #dddddd;
}
.pipe.pipe-straight {
background-position: -383px -192px;
background-size: 2400px;
}
.testArea .pipe.pipe-straight {
transition: all linear 2s;
opacity: 1;
filter: alpha(opacity=100);
}
.testArea .pipe.pipe-straight:hover {
box-shadow: inset 100px 0 0 0 blue;
opacity: 0.5;
filter: alpha(opacity=50);
}
.pipe.pipe-cross {
background-position: -95px -95px;
background-size: 2400px;
}
.testArea .pipe.pipe-cross {
transition: all linear 1s;
opacity: 1;
filter: alpha(opacity=100);
}
.testArea .pipe.pipe-cross:hover {
opacity: 0;
filter: alpha(opacity=0);
}
.pipe.pipe-angle {
background-position: -193px -192px;
background-size: 2400px;
}
.pipe.pipe-junction {
background-position: -193px -384px;
background-size: 2400px;
}
.pipe.pipe-empty {
background-position: 100px 0;
background-size: 2400px;
}
input[type="number"] {
width: 45px;
background-color: var(--white);
}
.startPipe {
position: absolute;
height: 20px;
width: 75%;
background: var(--palest-blue-color);
font-size: 16px;
bottom: 2px;
left: 12px;
}
.endPipe {
position: absolute;
height: 75%;
width: 20px;
background: var(--palest-blue-color);
font-size: 16px;
bottom: 10px;
left: 2px;
writing-mode: vertical-rl;
}
.bottomConsole {
position: absolute;
bottom: 0px;
left: 0px;
height: 50%;
width: 410px;
padding: 10px;
background-color: #6a96b9d9;
color: var(--white);
overflow-x: auto;
scrollbar-width: thin;
}
.bottomConsole hr {
color: var(--white);
}
#pipe-busted {
text-align: center;
display: none;
}
#pipe-busted h2 {
font-weight: ligher;
}
/* End Ryan Saunders - Pipe Puzzle */
/* Antoine Guillien - Recursion Puzzle */
#recursion-puzzle-container #app {
padding: 0.5rem;
font-size: 2rem;
}
#recursion-puzzle-container .fa-ice-cream {
font-size: 2rem;
color: var(--pink-color);
}
#recursion-puzzle-container h1 {
font-weight: normal;
font-size: 1.7rem;
text-align: center;
margin: 1rem 0 3.5rem 0;
color: var(--white);
}
#recursion-puzzle-container .thing {
> .flex {
font-size: 23px;
font-weight: 700;
color: var(--white);
border-bottom: 1px solid var(--pink-color);
padding-bottom: 5px;
display: flex;
div {
padding: 0.5rem;
}
div:nth-child(2) {
color: var(--white);
cursor: pointer;
transition: 0.3s ease-in-out;
}
div:nth-child(2):hover {
transform: scale(1.5);
}
}
> .children {
.thing {
padding: 0.5rem 0 0 2rem;
}
}
}
#recursion-puzzle-container .won {
padding: 1rem;
}
#recursion-puzzle-container h1 .fa-ice-cream {
color: var(--pink-color);
font-size: 7rem;
}
/* End Antoine Guillien - Recursion Puzzle */
.locked {
fill: var(--white);
}
/* padlock unlocked colors */
#padlock0 .unlocked {
fill: var(--turquoise-blue-color);
}
#padlock1 .unlocked {
fill: var(--magenta-color);
}
#padlock2 .unlocked {
fill: var(--pink-color);
}
#padlock4 .unlocked {
fill: var(--palest-blue-color);
}
#padlock3 .unlocked {
fill: var(--dark-magenta-color);
}
#padlock5 .unlocked {
fill: var(--bright-blue-color);
}
.unlocked {
opacity: 0;
}
#escaped {
visibility: hidden;
display: grid;
position: absolute;
z-index: 100;
width: 100%; /* Full width */
height: 100%; /* Full height */
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: var(--white);
text-align: center;
margin: 0;
font-family: "Bangers", cursive;
background-color: rgb(0, 0, 0); /* Fallback color */
background-color: rgba(0, 0, 0, 0.4);
overflow: hidden;
}
#escaped h1 {
font-size: 300px;
justify-self: center;
align-self: center;
}
// make font responsive
View Compiled
// Global
// These variables set to true when player solves puzzle:
// Please comment here with ✅ as triggers are added to puzzles:
var puzzlerSolved = false; // ✅
var mathPuzzleSolved = false; // ✅
var flexboxPuzzleSolved = false; // ✅
var mirrorPuzzleSolved = false; // ✅
var pipePuzzleSolved = false; // ✅
var recursionPuzzleSolved = false; // ✅
// Theme color variables - please use in all color functions.
var white = "#e6e6e6";
var darkestBlueColor = "#071e26";
var greyishBlueColor = "#06394c";
var brightBlueColor = "#0c4383";
var turquoiseBlueColor = "#22a0b6";
var palestBlueColor = "#6a96b9";
var darkMagentaColor = "#7b1346";
var magentaColor = "#cb0c59";
var pinkColor = "#eb649f";
// End Global
// Room scene
// Changes fill color of elements <selectors> to <color>
function toColor(selectors, color) {
var item = document.querySelectorAll(selectors);
item.forEach(function(i) {
i.style.fill = color;
});
}
// Changes opacity of element <selector> to <opacity>
function toOpacity(selector, opacity) {
var item = document.querySelector(selector);
item.style.opacity = opacity;
}
function abacusToColor() {
toColor("#abacus .st0", magentaColor);
}
function abacusToWhite() {
toColor("#abacus .st0", white);
}
function boxToColor() {
toColor("#box .st0", pinkColor);
}
function boxToWhite() {
toColor("#box .st0", white);
}
function mirrorToColor() {
toColor("#mirror .st0", palestBlueColor);
}
function mirrorToWhite() {
toColor("#mirror .st0", white);
}
function mirrorToColor() {
toColor("#mirror .st0", palestBlueColor);
}
function mirrorToWhite() {
toColor("#mirror .st0", white);
}
function radiatorToColor() {
toColor("#radiator .st0", darkMagentaColor);
}
function radiatorToWhite() {
toColor("#radiator .st0", white);
}
function computerToColor() {
toColor("#computer #desktop .st0", brightBlueColor);
}
function computerToWhite() {
toColor("#computer .st0", white);
}
function posterToTransparent() {
toOpacity("#poster", "0.2");
}
function posterToOpaque() {
toOpacity("#poster", "1");
}
function tilesToColor() {
toColor("#tiles .st0", turquoiseBlueColor);
}
function tilesToWhite() {
toColor("#tiles .st0", white);
}
document
.getElementById("mathPuzzleBtn")
.addEventListener("mouseover", abacusToColor);
document
.getElementById("mathPuzzleBtn")
.addEventListener("mouseout", abacusToWhite);
document
.getElementById("flexboxPuzzleBtn")
.addEventListener("mouseover", boxToColor);
document
.getElementById("flexboxPuzzleBtn")
.addEventListener("mouseout", boxToWhite);
document
.getElementById("mirrorPuzzleBtn")
.addEventListener("mouseover", mirrorToColor);
document
.getElementById("mirrorPuzzleBtn")
.addEventListener("mouseout", mirrorToWhite);
document
.getElementById("pipePuzzleBtn")
.addEventListener("mouseover", radiatorToColor);
document
.getElementById("pipePuzzleBtn")
.addEventListener("mouseout", radiatorToWhite);
document
.getElementById("recursionPuzzleBtn")
.addEventListener("mouseover", computerToColor);
document
.getElementById("recursionPuzzleBtn")
.addEventListener("mouseout", computerToWhite);
document
.getElementById("puzzlerBtn")
.addEventListener("mouseover", posterToTransparent);
document
.getElementById("puzzlerBtn")
.addEventListener("mouseout", posterToOpaque);
document
.getElementById("puzzlerBtn")
.addEventListener("mouseover", tilesToColor);
document
.getElementById("puzzlerBtn")
.addEventListener("mouseout", tilesToWhite);
// End room scene
// Cheryl Velez - Puzzler
// MODAL
// Get the modal
var puzzlerModal = document.getElementById("puzzlerModal");
// Get the button that opens the modal
var puzzlerBtn = document.getElementById("puzzlerBtn");
// Get the <span> element that closes the modal
var closePuzzler = document.getElementsByClassName("close-puzzler")[0];
// When the user clicks the button, open the modal
puzzlerBtn.onclick = function() {
puzzlerModal.style.display = "grid";
};
// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closePuzzler.onclick = function() {
puzzlerModal.style.display = "none";
verify();
};
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == puzzlerModal) {
puzzlerModal.style.display = "none";
}
};
// END MODAL
// Start JS for Puzzler Puzzler
!(function(a) {
function f(a, b) {
if (!(a.originalEvent.touches.length > 1)) {
a.preventDefault();
var c = a.originalEvent.changedTouches[0],
d = document.createEvent("MouseEvents");
d.initMouseEvent(
b,
!0,
!0,
window,
1,
c.screenX,
c.screenY,
c.clientX,
c.clientY,
!1,
!1,
!1,
!1,
0,
null
),
a.target.dispatchEvent(d);
}
}
if (((a.support.touch = "ontouchend" in document), a.support.touch)) {
var e,
b = a.ui.mouse.prototype,
c = b._mouseInit,
d = b._mouseDestroy;
(b._touchStart = function(a) {
var b = this;
!e &&
b._mouseCapture(a.originalEvent.changedTouches[0]) &&
((e = !0),
(b._touchMoved = !1),
f(a, "mouseover"),
f(a, "mousemove"),
f(a, "mousedown"));
}),
(b._touchMove = function(a) {
e && ((this._touchMoved = !0), f(a, "mousemove"));
}),
(b._touchEnd = function(a) {
e &&
(f(a, "mouseup"),
f(a, "mouseout"),
this._touchMoved || f(a, "click"),
(e = !1));
}),
(b._mouseInit = function() {
var b = this;
b.element.bind({
touchstart: a.proxy(b, "_touchStart"),
touchmove: a.proxy(b, "_touchMove"),
touchend: a.proxy(b, "_touchEnd")
}),
c.call(b);
}),
(b._mouseDestroy = function() {
var b = this;
b.element.unbind({
touchstart: a.proxy(b, "_touchStart"),
touchmove: a.proxy(b, "_touchMove"),
touchend: a.proxy(b, "_touchEnd")
}),
d.call(b);
});
}
})(jQuery);
/* *** end jQuery UI Touch Punch *** */
var tileArr = [];
var ansID = ["6", "8", "1", "2", "7", "4", "3", "5"];
var droppedID = [0, 0, 0, 0, 0, 0, 0, 0];
var dragThis = 0;
var dropThis = 0;
$(document).ready(function() {
$(".tile").each(function() {
$(this).draggable({
drag: function(event, ui) {
dragThis = $(this).attr("id");
console.log(droppedID);
}
});
});
$(".blank").each(function() {
$(this).droppable({
drop: function(event, ui) {
$(this).addClass("ui-state-highlight");
dropThis =
$(this)
.attr("id")
.substring(2, 1) - 1;
droppedID[dropThis] = dragThis;
},
out: function(event, ui) {
$(this).removeClass("ui-state-highlight");
droppedID[dropThis] = 0;
}
});
});
$("button").click(function() {
var c = 0;
$(".blank").each(function(obj, value) {
if ($(this).hasClass("ui-state-highlight")) {
//do nothing
} else {
c++;
}
});
if (c > 0) {
$("#alert").html("Please place all tiles!");
} else {
var w = 0;
$.each(ansID, function(obj, value) {
if (value == droppedID[obj]) {
w++;
}
if (w == 8) {
puzzlerSolved = true;
$("#alert").html("You solved it!");
//unlock 1st padlock once puzzle is solved
// checkPadlocks('padlock0',puzzlerSolved);
// document.querySelector('.unlocked').setAttribute('fill', "#22a0b6");
document.querySelector("#padlock0 .locked").style.opacity = "0";
document.querySelector("#padlock0 .unlocked").style.opacity = "1";
//$("#alert").html(`You win! ${puzzlerSolved}`);
//console.log(puzzlerSolved); //done- trigger worked
} else {
$("#alert").html("Sorry please try again!");
puzzlerSolved = false;
}
//unlock 1st padlock once puzzle is solved
// puzzlerSolved= true;
// checkPadlocks('padlock0',puzzlerSolved);
});
}
});
});
// End JS for Puzzler Puzzle
document.querySelector(".revealtext").onclick = function() {
document.querySelector(".revealtext").style.backgroundColor = "transparent";
};
// End Cheryl Velez - Puzzler
// Dominic Duffin - Math Puzzle
// Get the modal
var mathPuzzleModal = document.getElementById("mathPuzzleModal");
// Get the button that opens the modal
var mathPuzzleBtn = document.getElementById("mathPuzzleBtn");
// Get the <span> element that closes the modal
var closeMathPuzzle = document.getElementsByClassName("close-mathpuzzle")[0];
// When the user clicks the button, open the modal
mathPuzzleBtn.onclick = function() {
mathPuzzleModal.style.display = "grid";
};
// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closeMathPuzzle.onclick = function() {
mathPuzzleModal.style.display = "none";
verify();
};
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == mathPuzzleModal) {
mathPuzzleModal.style.display = "none";
}
};
// Begin Math Puzzle JavaScript (not modal)
// TODO Replace window.alerts with something else!
var positionA; //A-G store value assigned to positions in sum
var positionB;
var positionC;
var positionD;
var positionE; //F doesn't exist because = is hard wired for F.
var positionG;
var choice; //Stores value of button last pressed by user
var bPlus = true; //Switch to false if user selects minus for B
var dPlus = true; //Switch to false if user selects minus for D
var sumTotal; //Stores correct sum for comparison with final position
//Messages:
function invalidMessage() {
document.getElementById("math-puzzle-message").innerHTML =
"Sorry, your choice is invalid!";
}
function fullMessage() {
document.getElementById("math-puzzle-message").innerHTML =
"Sorry, there are no more positions to fill!";
}
function solvedMessage() {
document.getElementById("math-puzzle-message").innerHTML =
"Yay, you've solved this one!";
}
function wrongMessage() {
document.getElementById("math-puzzle-message").innerHTML =
"Oh no, you got it wrong, better try again!";
}
function resetMathPuzzle() {
positionA = void 0;
positionB = void 0;
positionC = void 0;
positionD = void 0;
positionE = void 0;
positionG = void 0;
document.getElementById("math-puzzle-a").innerHTML = "Number";
document.getElementById("math-puzzle-b").innerHTML = "Sign";
document.getElementById("math-puzzle-c").innerHTML = "Number";
document.getElementById("math-puzzle-d").innerHTML = "Sign";
document.getElementById("math-puzzle-e").innerHTML = "Number";
document.getElementById("math-puzzle-g").innerHTML = "Number";
}
function checkNumber(x) {
//Returns true if x is a number 0 ≥ x ≤ 9
for (var i = 0; i < 10; i++) {
if (x == i) {
var y = true;
i = 10; //To stop loop
} else {
var y = false;
}
}
return y;
}
function checkSign(x) {
//Returns true if x is '+' or '-'
if (x == "+" || x == "-") {
var y = true;
} else {
var y = false;
}
return y;
}
//The assignPosition functions assign the user's choice to the position's var, after checking for validity.
function assignPositionA() {
isChoiceValid = checkNumber(choice);
if (isChoiceValid == true) {
positionA = choice;
document.getElementById("math-puzzle-a").innerHTML = choice;
} else {
invalidMessage();
}
}
function assignPositionB() {
isChoiceValid = checkSign(choice);
if (isChoiceValid == true) {
positionB = choice;
document.getElementById("math-puzzle-b").innerHTML = choice;
if (choice == "-") {
bPlus = false;
//console.log(bPlus);
}
} else {
invalidMessage();
}
}
function assignPositionC() {
isChoiceValid = checkNumber(choice);
if (isChoiceValid == true) {
positionC = choice;
document.getElementById("math-puzzle-c").innerHTML = choice;
} else {
invalidMessage();
}
}
function assignPositionD() {
isChoiceValid = checkSign(choice);
if (isChoiceValid == true) {
positionD = choice;
document.getElementById("math-puzzle-d").innerHTML = choice;
if (choice == "-") {
dPlus = false;
//console.log(dPlus);
}
} else {
invalidMessage();
}
}
function assignPositionE() {
isChoiceValid = checkNumber(choice);
if (isChoiceValid == true) {
positionE = choice;
document.getElementById("math-puzzle-e").innerHTML = choice;
} else {
invalidMessage();
}
}
function assignPositionG() {
//Also calls calculate function
isChoiceValid = checkNumber(choice);
if (isChoiceValid == true) {
positionG = choice;
document.getElementById("math-puzzle-g").innerHTML = choice;
calculateSumTotal();
} else {
invalidMessage();
}
}
function findEmptyPosition() {
//Finds the first unfilled position
if (positionA == undefined) {
assignPositionA();
} else if (positionB == undefined) {
assignPositionB();
} else if (positionC == undefined) {
assignPositionC();
} else if (positionD == undefined) {
assignPositionD();
} else if (positionE == undefined) {
assignPositionE();
} else if (positionG == undefined) {
assignPositionG();
} else {
fullMessage();
}
}
//The clicked functions record button presses by user
function oneClicked() {
choice = 1;
findEmptyPosition();
}
function twoClicked() {
choice = 2;
findEmptyPosition();
}
function threeClicked() {
choice = 3;
findEmptyPosition();
}
function fourClicked() {
choice = 4;
findEmptyPosition();
}
function fiveClicked() {
choice = 5;
findEmptyPosition();
}
function sixClicked() {
choice = 6;
findEmptyPosition();
}
function sevenClicked() {
choice = 7;
findEmptyPosition();
}
function eightClicked() {
choice = 8;
findEmptyPosition();
}
function nineClicked() {
choice = 9;
findEmptyPosition();
}
function zeroClicked() {
choice = 0;
findEmptyPosition();
}
function plusClicked() {
choice = "+";
findEmptyPosition();
}
function minusClicked() {
choice = "-";
findEmptyPosition();
}
function calculateSumTotal() {
//Calculates correct total
if (bPlus == true && dPlus == true) {
sumTotal = positionA + positionC + positionE;
} else if (bPlus == true && dPlus == false) {
sumTotal = positionA + positionC - positionE;
} else if (bPlus == false && dPlus == true) {
sumTotal = positionA - positionC + positionE;
} else if (bPlus == false && dPlus == false) {
sumTotal = positionA - positionC - positionE;
}
endGame();
}
function endGame() {
//Checks whether user is correct
if (sumTotal == positionG) {
solvedMessage();
mathPuzzleSolved = true; // Global var
//unlock 2nd lock
// checkPadlocks('padlock1',mathPuzzleSolved);
// document.querySelector('.unlocked').setAttribute('fill', "#cb0c59");
document.querySelector("#padlock1 .locked").style.opacity = "0";
document.querySelector("#padlock1 .unlocked").style.opacity = "1";
} else {
wrongMessage();
resetMathPuzzle();
}
}
//Tests for checkNumber
//var output = checkNumber(0);
//console.log(output); //true
//output = checkNumber(-1);
//console.log(output); //false
//output = checkNumber(9);
//console.log(output); //true
//output = checkNumber(10);
//console.log(output); //false
//output = checkNumber('+');
//console.log(output); //false
//Tests for checkSign:
//var output = checkSign('+');
//console.log(output); //true
//output = checkSign('-');
//console.log(output); //true
//output = checkSign(8);
//console.log(output); //false
//Tests for assignPosition functions:
//choice = 5;
//assignPositionA();
//assignPositionB(); //invalid
//assignPositionC();
//assignPositionD(); //invalid
//assignPositionE();
//assignPositionG();
//choice = '+';
//assignPositionA(); //invalid
//assignPositionB();
//assignPositionC(); //invalid
//assignPositionD();
//assignPositionE(); //invalid
//assignPositionG(); //invalid
//Tests for calculateSumTotal:
//bPlus = true;
//dPlus = true;
//positionA = 1;
//positionC = 2;
//positionE = 4;
//calculateSumTotal();
//console.log(sumTotal) //7
//bPlus = true;
//dPlus = false;
//positionA = 4;
//positionC = 2;
//positionE = 6;
//calculateSumTotal();
//console.log(sumTotal) //0
//bPlus = false;
//dPlus = true;
//positionA = 1;
//positionC = 2;
//positionE = 4;
//calculateSumTotal();
//console.log(sumTotal) //3
//bPlus = false;
//dPlus = false;
//positionA = 1;
//positionC = 1;
//positionE = 1;
//calculateSumTotal();
//console.log(sumTotal) //-1
//Tests for endGame:
//sumTotal = 9;
//positionG = 9;
//endGame(); //You win!
//sumTotal = 0;
//positionG = 9;
//endGame(); //Oh no, you're wrong!
document
.getElementById("math-puzzle-one")
.addEventListener("click", oneClicked, false);
document
.getElementById("math-puzzle-two")
.addEventListener("click", twoClicked, false);
document
.getElementById("math-puzzle-three")
.addEventListener("click", threeClicked, false);
document
.getElementById("math-puzzle-four")
.addEventListener("click", fourClicked, false);
document
.getElementById("math-puzzle-five")
.addEventListener("click", fiveClicked, false);
document
.getElementById("math-puzzle-six")
.addEventListener("click", sixClicked, false);
document
.getElementById("math-puzzle-seven")
.addEventListener("click", sevenClicked, false);
document
.getElementById("math-puzzle-eight")
.addEventListener("click", eightClicked, false);
document
.getElementById("math-puzzle-nine")
.addEventListener("click", nineClicked, false);
document
.getElementById("math-puzzle-zero")
.addEventListener("click", zeroClicked, false);
document
.getElementById("math-puzzle-plus")
.addEventListener("click", plusClicked, false);
document
.getElementById("math-puzzle-minus")
.addEventListener("click", minusClicked, false);
// End Math Puzzle JavaScript
// End Dominic Duffin - Math Puzzle
// `Paul` - Flexbox Puzzle
// Get the modal
var flexboxPuzzleModal = document.getElementById("flexboxPuzzleModal");
// Get the button that opens the modal
var flexboxPuzzleBtn = document.getElementById("flexboxPuzzleBtn");
// Get the <span> element that closes the modal
var closeFlexboxPuzzle = document.getElementsByClassName(
"close-flexboxpuzzle"
)[0];
// When the user clicks the button, open the modal
flexboxPuzzleBtn.onclick = function() {
flexboxPuzzleModal.style.display = "grid";
};
// When the user clicks on <span> (x), close the modal adn check whether all puzzles solved
closeFlexboxPuzzle.onclick = function() {
flexboxPuzzleModal.style.display = "none";
verify();
};
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == flexboxPuzzleModal) {
flexboxPuzzleModal.style.display = "none";
}
};
//define all variables used
let i = 0;
let subTitle = document.getElementsByClassName("heading__subtitle");
let displayFlex = document.getElementById("flexDisplay");
let directionOfFlex = document.getElementById("flexDirectn");
let justContent = document.getElementById("flexJustCont");
let flexAlign = document.getElementById("flexAlignItems");
let notification = document.querySelector(".notification");
let cubes = document.getElementsByClassName("cubes");
const containerClass = document.getElementsByClassName("flexPuzzle-container");
const flexDirections = ["row", "row-reverse", "column", "column-reverse"];
const flexJustifyContent = [
"flex-start",
"flex-end",
"center",
"space-between",
"space-around",
"space-evenly"
];
const flexAlignArray = [
"stretch",
"center",
"flex-start",
"flex-end",
"baseline"
];
//buttons event listener
displayFlex.addEventListener("click", function() {
if (containerClass[0].style.display == "block") {
containerClass[0].style.display = "flex";
displayFlex.innerHTML = "flex";
//add space on cubes when flex is on
for (i = 0; i < 5; i++) {
cubes[i].style.padding = "125px";
}
} else {
containerClass[0].style.display = "block";
displayFlex.innerHTML = "Display Flex";
//bring back original padding size on each cube
for (i = 0; i < 5; i++) {
cubes[i].style.padding = "15px";
}
}
checkPuzzle();
});
let itemLength = flexDirections.length;
directionOfFlex.addEventListener("click", function() {
// console.log(this.textContent);
subTitle[0].innerHTML =
"The flex-direction CSS property specifies how flex items are placed in the flex container defining the main axis and the direction (normal or reversed).";
if (i <= itemLength) {
this.textContent = flexDirections[i];
containerClass[0].style.flexDirection = flexDirections[i];
i++;
if (
document.querySelector(".flexPuzzle-container").style.flexDirection ===
"column-reverse"
) {
document.querySelector(".flexPuzzle-container").style.top = "1100px";
document.querySelector("#flexboxPuzzleModal .modal-content").style.height =
"1300px";
}
if (
document.querySelector(".flexPuzzle-container").style.flexDirection ===
"column"
) {
document.querySelector("#flexboxPuzzleModal .modal-content").style.height =
"1300px";
}
}
if (i > itemLength) {
document.querySelector("#flexboxPuzzleModal .modal-content").style.height =
"745px";
document.querySelector(".flexPuzzle-container").style.top = "300px";
this.textContent = "Change Flex Direction";
containerClass[0].style.flexDirection = "row";
i = 0;
}
checkPuzzle();
});
let itemJustifyContLength = flexJustifyContent.length;
justContent.addEventListener("click", function() {
// console.log(subTitle[0].innerHTML);
subTitle[0].innerHTML =
"justify-content property defines how the browser distributes space between and around content items along the main-axis of their container.";
if (i <= itemJustifyContLength) {
this.textContent = flexJustifyContent[i];
containerClass[0].style.justifyContent = flexJustifyContent[i];
i++;
}
if (i > itemJustifyContLength) {
this.textContent = "Change Flex Direction";
containerClass[0].style.justifyContent = "flex-start";
i = 0;
}
checkPuzzle();
});
let itemAlignmentArrayLen = flexAlignArray.length;
let midItem = document.getElementsByClassName("cubes");
flexAlign.addEventListener("click", function() {
// console.log(midItem[2].innerHTML);
subTitle[0].innerHTML =
"This controls the alignment of items on the Cross Axis.";
if (i <= itemAlignmentArrayLen) {
this.textContent = flexAlignArray[i];
containerClass[0].style.alignItems = flexAlignArray[i];
i++;
}
if (i > itemAlignmentArrayLen) {
this.textContent = "Change Flex Direction";
containerClass[0].style.alignItems = "flex-start";
midItem[2].classList.remove("itemHeight");
i = 0;
}
checkPuzzle();
});
function checkPuzzle() {
if (displayFlex.innerHTML === "flex") {
document.querySelectorAll(".front")[0].style.backgroundColor = "#7b1346";
// document.querySelectorAll('.side')[0]].style.backgroundColor = '#7b1346';
document.querySelectorAll(".left")[0].style.backgroundColor = "#7b1346";
document.querySelectorAll(".right")[0].style.backgroundColor = "#7b1346";
document.querySelectorAll(".bottom")[0].style.backgroundColor = "#7b1346";
document.querySelectorAll(".top")[0].style.backgroundColor = "#7b1346";
document.querySelectorAll(".back")[0].style.backgroundColor = "#7b1346";
notification.innerHTML = "Keep going! Try changing flex direction now.";
notification.style.color = "#0c4383";
checkDirection();
} else {
document.querySelectorAll(".front")[0].style.backgroundColor = "#0c4383";
// document.querySelectorAll('.side')[0].style.backgroundColor = '#0c4383';
document.querySelectorAll(".left")[0].style.backgroundColor = "#0c4383";
document.querySelectorAll(".right")[0].style.backgroundColor = "#0c4383";
document.querySelectorAll(".bottom")[0].style.backgroundColor = "#0c4383";
document.querySelectorAll(".top")[0].style.backgroundColor = "#0c4383";
document.querySelectorAll(".back")[0].style.backgroundColor = "#0c4383";
notification.innerHTML = 'Start with turning on "Display Flex"';
notification.style.color = "#E6E6E6";
}
checkAllButtons();
}
function checkDirection() {
if (displayFlex.innerHTML == "flex" && directionOfFlex.innerHTML == "row") {
document.querySelectorAll(".front")[4].style.backgroundColor = "#7b1346";
// document.querySelectorAll('.side')[4].style.backgroundColor = '#7b1346';
document.querySelectorAll(".left")[4].style.backgroundColor = "#7b1346";
document.querySelectorAll(".right")[4].style.backgroundColor = "#7b1346";
document.querySelectorAll(".bottom")[4].style.backgroundColor = "#7b1346";
document.querySelectorAll(".top")[4].style.backgroundColor = "#7b1346";
document.querySelectorAll(".back")[4].style.backgroundColor = "#7b1346";
notification.innerHTML = "Ok now, keep going...";
notification.style.color = "#0c4383";
checkJustifyContent();
} else {
document.querySelectorAll(".front")[4].style.backgroundColor = "#0c4383";
// document.querySelectorAll('.side')[4].style.backgroundColor = '#0c4383';
document.querySelectorAll(".left")[4].style.backgroundColor = "#0c4383";
document.querySelectorAll(".right")[4].style.backgroundColor = "#0c4383";
document.querySelectorAll(".bottom")[4].style.backgroundColor = "#0c4383";
document.querySelectorAll(".top")[4].style.backgroundColor = "#0c4383";
document.querySelectorAll(".back")[4].style.backgroundColor = "#0c4383";
}
}
function checkJustifyContent() {
if (
displayFlex.innerHTML == "flex" &&
directionOfFlex.innerHTML == "row" &&
justContent.innerHTML == "center"
) {
document.querySelectorAll(".front")[1].style.backgroundColor = "#7b1346";
// document.querySelectorAll('.side')[1].style.backgroundColor = '#7b1346';
document.querySelectorAll(".left")[1].style.backgroundColor = "#7b1346";
document.querySelectorAll(".right")[1].style.backgroundColor = "#7b1346";
document.querySelectorAll(".bottom")[1].style.backgroundColor = "#7b1346";
document.querySelectorAll(".top")[1].style.backgroundColor = "#7b1346";
document.querySelectorAll(".back")[1].style.backgroundColor = "#7b1346";
document.querySelectorAll(".front")[3].style.backgroundColor = "#7b1346";
// document.querySelectorAll('.side')[3].style.backgroundColor = '#7b1346';
document.querySelectorAll(".left")[3].style.backgroundColor = "#7b1346";
document.querySelectorAll(".right")[3].style.backgroundColor = "#7b1346";
document.querySelectorAll(".bottom")[3].style.backgroundColor = "#7b1346";
document.querySelectorAll(".top")[3].style.backgroundColor = "#7b1346";
document.querySelectorAll(".back")[3].style.backgroundColor = "#7b1346";
notification.innerHTML = "Hmm, you're getting hotter.";
notification.style.color = "#0d4383";
checkAllButtons();
} else {
document.querySelectorAll(".front")[1].style.backgroundColor = "#0c4383";
// document.querySelectorAll('.side')[1].style.backgroundColor = '#0c4383';
document.querySelectorAll(".left")[1].style.backgroundColor = "#0c4383";
document.querySelectorAll(".right")[1].style.backgroundColor = "#0c4383";
document.querySelectorAll(".bottom")[1].style.backgroundColor = "#0c4383";
document.querySelectorAll(".top")[1].style.backgroundColor = "#0c4383";
document.querySelectorAll(".back")[1].style.backgroundColor = "#0c4383";
document.querySelectorAll(".front")[3].style.backgroundColor = "#0c4383";
// document.querySelectorAll('.side')[3].style.backgroundColor = '#0c4383';
document.querySelectorAll(".left")[3].style.backgroundColor = "#0c4383";
document.querySelectorAll(".right")[3].style.backgroundColor = "#0c4383";
document.querySelectorAll(".bottom")[3].style.backgroundColor = "#0c4383";
document.querySelectorAll(".top")[3].style.backgroundColor = "#0c4383";
document.querySelectorAll(".back")[3].style.backgroundColor = "#0c4383";
notification.innerHTML = "Ok now, keep going...";
}
}
function checkAllButtons() {
if (
displayFlex.innerHTML == "flex" &&
directionOfFlex.innerHTML == "row" &&
justContent.innerHTML == "center" &&
flexAlign.innerHTML == "center"
) {
document.querySelectorAll(".front")[2].style.backgroundColor = "#7b1346";
// document.querySelectorAll('.side')[2].style.backgroundColor = '#7b1346';
document.querySelectorAll(".left")[2].style.backgroundColor = "#7b1346";
document.querySelectorAll(".right")[2].style.backgroundColor = "#7b1346";
document.querySelectorAll(".bottom")[2].style.backgroundColor = "#7b1346";
document.querySelectorAll(".top")[2].style.backgroundColor = "#7b1346";
document.querySelectorAll(".back")[2].style.backgroundColor = "#7b1346";
notification.innerHTML = "Well done! You've solved it!";
notification.style.color = "#0d4383";
flexboxPuzzleSolved = true;
//unlock 2nd padlock once puzzle is solved
// checkPadlocks('padlock2',flexboxPuzzleSolved);
// document.querySelector('.unlocked').setAttribute('fill', "#eb649f");
flexboxPuzzleSolved = true;
document.querySelector("#padlock2 .locked").style.opacity = "0";
document.querySelector("#padlock2 .unlocked").style.opacity = "1";
} else {
document.querySelectorAll(".front")[2].style.backgroundColor = "#0c4383";
// document.querySelectorAll('.side')[2].style.backgroundColor = '#0c4383';
document.querySelectorAll(".left")[2].style.backgroundColor = "#0c4383";
document.querySelectorAll(".right")[2].style.backgroundColor = "#0c4383";
document.querySelectorAll(".bottom")[2].style.backgroundColor = "#0c4383";
document.querySelectorAll(".top")[2].style.backgroundColor = "#0c4383";
document.querySelectorAll(".back")[2].style.backgroundColor = "#0c4383";
notification.innerHTML = "Ok now, keep going...";
flexboxPuzzleSolved = false;
document.querySelector("#padlock2 .locked").style.opacity = "1";
document.querySelector("#padlock2 .unlocked").style.opacity = "0";
}
console.log(flexboxPuzzleSolved);
}
// End Paul - Flexbox Puzzle
// Kristopher Van Sant - Mirror Puzzle
// Get the modal
var mirrorPuzzleModal = document.getElementById("mirrorPuzzleModal");
// Get the button that opens the modal
var mirrorPuzzleBtn = document.getElementById("mirrorPuzzleBtn");
// Get the <span> element that closes the modal
var closeMirrorPuzzle = document.getElementsByClassName(
"close-mirrorpuzzle"
)[0];
// When the user clicks the button, open the modal
mirrorPuzzleBtn.onclick = function() {
mirrorPuzzleModal.style.display = "grid";
};
// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closeMirrorPuzzle.onclick = function() {
mirrorPuzzleModal.style.display = "none";
verify();
};
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == mirrorPuzzleModal) {
mirrorPuzzleModal.style.display = "none";
}
};
// // Drag and drop note
// Draggable.create("#noteWrap", {
// bounds:"svg"
// });
// Begin JS for Mirror Puzzle (not modal)
$(function() {
$("#note").draggable();
});
$(function() {
$("#note").draggable();
$("#mmirror").droppable({
drop: function(event, ui) {
$("#note-text").removeClass("mirror-text");
$("#mirror-clue").replaceWith("<p>Ah, there we go. Interesting.</p>");
mirrorPuzzleSolved = true;
//unlock 4th padlock once puzzle is solved
// checkPadlocks('padlock4',mirrorPuzzleSolved);
// document.querySelector('use#ulock4 >
document.querySelector("#padlock4 .locked").style.opacity = "0";
document.querySelector("#padlock4 .unlocked").style.opacity = "1";
}
});
});
// End JS for Mirror Puzzle
// End Kristopher Van Sant - Mirror Puzzle
// Ryan Saunders - Pipe Puzzle
// Pipe Break Timer
var myVar;
function myFunction() {
myVar = setTimeout(function() {
document.querySelector(
"#pipePuzzleModal .modal-content "
).style.backgroundImage =
"url('https://media.giphy.com/media/46LMaiLUFRkoU/giphy.gif')";
document.querySelector(
"#pipePuzzleModal .modal-content "
).style.backgroundSize =
"cover";
document.querySelector("#pipePuzzleModal .modal-content ").style.boxShadow =
"0px 0px 30px 10px #727ab9";
document.querySelector("#pipe-notbusted").style.display = "none";
document.querySelector("#pipe-notbusted").style.display = "none";
document.querySelector("#pipe-busted").style.display = "block";
pipePuzzleSolved = true;
document.querySelector("#padlock3 .locked").style.opacity = "0";
document.querySelector("#padlock3 .unlocked").style.opacity = "1";
}, 75000);
}
function myStopFunction() {
clearTimeout(myVar);
}
// Get the modal
var pipePuzzleModal = document.getElementById("pipePuzzleModal");
// Get the button that opens the modal
var pipePuzzleBtn = document.getElementById("pipePuzzleBtn");
// Get the <span> element that closes the modal
var closePipePuzzle = document.getElementsByClassName("close-pipepuzzle")[0];
// When the user clicks the button, open the modal
pipePuzzleBtn.onclick = function() {
pipePuzzleModal.style.display = "grid";
myFunction();
};
// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closePipePuzzle.onclick = function() {
pipePuzzleModal.style.display = "none";
verify();
myStopFunction();
};
// When the user clicks anywhere outside of the modal, close it
// window.onclick = function(event) {
// if (event.target == pipePuzzleModal) {
// pipePuzzleModal.style.display = "none";
// myStopFunction2();
// }
// }
// Begin JS for Pipe Puzzle (not Modal)
// Store our Pipes directions within an array
// NOTE: We need to look into extending this on a per row basis
let pipeDef = [];
// Set rows to have letter assigned
var rowAlpha = "A".charCodeAt(0);
var curRow = String.fromCharCode(rowAlpha++);
// Array of classes for our different types of pipe
var pipeType = ["straight", "cross", "angle", "junction", "empty"];
var pipeTypeX = [
["Up", "Down"],
["Up", "Right", "Down", "Left"],
["Right", "Down"],
["Up", "Right", "Down"],
["None"]
];
// Text for pipe current direction
var dirText = ["Up", "Right", "Down", "Left"];
// Set initial line count & pipe count
var lineCount = 0; // current line
var pipeCount = 0; // current pipe number
// Set the initial number of total blocks and columns
var columns = 5; // Total of 4 coluns - 4 * 4 = 16 total blocks
var totalBlocks = 25;
$(document).ready(function() {
// Add the first row with the start point
addStart();
// Call our newPipe function for the total number of blocks
for (var i = 0; i < totalBlocks; i++) newPipe();
// Add the final end block to the screen
addEnd();
// When a pipe is clicked on the left half, turn counter clockwise & save the direction
$(document).on("click touchstart", ".left", function() {
pipeID = $(this)
.next()
.next()
.attr("id")
.substring(5);
pipeDef[pipeID].direction -= 90;
$(this)
.next()
.next()
.css("transform", "rotate(" + pipeDef[pipeID].direction + "deg)");
});
// When a pipe is clicked on the right half, turn clockwise & save the direction
$(document).on("click touchstart", ".right", function() {
pipeID = $(this)
.next()
.attr("id")
.substring(5);
pipeDef[pipeID].direction += 90;
$(this)
.next()
.css("transform", "rotate(" + pipeDef[pipeID].direction + "deg)");
});
});
// Function to add a new pipe to the screen
function newPipe() {
// When the current lineCount reaches the column maximum, force a clear to start a new line
if (lineCount == columns) {
$(".container").append($("<div>", { style: "clear: both" }));
lineCount = 0;
curRow = String.fromCharCode(rowAlpha++);
}
// Add our new 'box' div within the content div
$(".container").append($("<div>", { class: "box" }));
// Add the left overlaid div as a child of 'box'
$(".box")
.last()
.append($("<div>", { class: "left", text: curRow }));
// Add the right overlaid div as a child of 'box'
$(".box")
.last()
.append($("<div>", { class: "right", text: lineCount + 1 }));
// Before any specific pipe code is spat out, call function which will return the details of the pipe as an object. Pass argument of "A1" etc.
// curRow = A | lineCount = 0 + 1 (starts on line 0)
var curPipe = valPipe(curRow + (lineCount + 1));
// Increase the pipeDef array to have the same number of elements as there are pipes.
if (pipeDef.length <= pipeCount) {
pipeDef.push(curPipe);
}
//alert(pipeDef[pipeCount].direction);
//alert(curPipe.id + " " + curPipe.direction + " " + curPipe.type);
// Here we need to put our algorithm to make this work.
// Also need random rotation for each pipe so that they don't always start in the same direction!
// I need to calculate the route for a win from A1 to D4.
// So, A1, A2, B2, B3, C3, D3, D4
// 1 2 3 4
// A [[X][X][ ][ ]]
// B [[ ][X][X][ ]]
// C [[ ][ ][X][ ]]
// D [[ ][ ][X][X]]
// A1 is Bend, Junction or cross
// A2 is Bend, Junction or Cross
// B2 is Bend, Junction or Cross
// B3 is Bend, Junction or Cross
// C3 is Straight, Junction or Cross
// D3 is Bend, Junction or Cross
// D4 is Straight, Junction or Cross
// Then we need to work out orientation of pipes
// If pipeType = 2 for first pipe, we need to make A2 have a pipe
// if A2 = pipeType 2 then B2 must have pipe!
// if B2 = pipeType 2 then B1 or B3 must have pipe!
// add our actual pipe span (Random)
$(".box")
.last()
.append(
$("<span>", {
class: "pipeblock pipe pipe-" + pipeType[curPipe.type],
id: "pipe-" + pipeCount,
style: "transform: rotate(" + curPipe.direction + "deg);"
})
);
// Increment the pipeCount & lineCount counters
pipeCount += 1;
lineCount += 1;
// Output number of rows and columns to test area
document.getElementById("rowCount").value = Math.ceil(pipeCount / columns);
document.getElementById("colCount").value = columns;
}
// Add a new "Start" block/label to the first line.
function addStart() {
// Add our new 'box' div within the content div
$(".container").append($("<div>", { class: "box fake" }));
// Add the end pipe as a child of 'box'
$(".box")
.last()
.append($("<span>", { class: "startPipe", text: "Start" }));
for (var i = 0; i < columns - 1; i++) {
$(".container").append($("<div>", { class: "box fake" }));
}
$(".container").append($("<div>", { style: "clear: both" }));
}
// Add a new "End" block/label to the last pipe added.
function addEnd() {
// Add our new 'box' div within the content div
$(".container").append(
$("<div>", {
class: "box",
style: "width:25px; border: none; position: absolute;"
})
);
// Add the end pipe as a child of 'box'
$(".box")
.last()
.append($("<span>", { class: "endPipe", text: "End" }));
}
// Function to add a new pipe to the screen
function updatePipes() {
clearAll();
columns = document.getElementById("colCount").value;
totalBlocks = document.getElementById("rowCount").value * columns;
//alert("Columns: " + columns + " | Total Blocks: " + totalBlocks + " | Rows: " + (totalBlocks / columns));
addStart();
for (var i = 0; i < totalBlocks; i++) newPipe();
addEnd();
}
function clearAll() {
//$(".container").innerHTML = '';
// Store our Pipes directions within an array
pipeDef = [];
// Set initial line count & pipe count
lineCount = 0;
pipeCount = 0;
document.getElementById("container").innerHTML = "";
// reset row letters
rowAlpha = "A".charCodeAt(0);
curRow = String.fromCharCode(rowAlpha++);
}
function valPipe(cell) {
var x;
var topLeft =
pipeCount - columns - 1 >= 0 &&
(pipeCount - columns - 1) % columns != columns - 1
? pipeCount - columns - 1
: "None";
var top = pipeCount - columns >= 0 ? pipeCount - columns : "None";
var topRight =
pipeCount - columns + 1 >= 0 && (pipeCount - columns + 1) % columns != 0
? pipeCount - columns + 1
: "None";
var left =
pipeCount - 1 >= 0 && (pipeCount - 1) % columns != columns - 1
? pipeCount - 1
: "None";
// If A1 (So if Above = Empty and Left = Empty and lineCount not final pipe) then must contain pipe (not empty)
// If Above = empty & left = straight then pick anything.
// If above = empty & left = bent then pick any other than empty
// Set x to a random value between 0-4 (0-3 for first element and last element)
// First element can be 0-3 but last needs to check various bits!
if (cell == "A1") {
x = Math.floor(Math.random() * 4);
} else {
x =
pipeCount == 0
? Math.floor(Math.random() * 4)
: pipeCount == totalBlocks - 1
? Math.floor(Math.random() * 4)
: Math.floor(Math.random() * 5);
}
$(".bottomConsole").append("<strong>" + cell + ": </strong>");
$(".bottomConsole").append(
"Top Left: " +
(topLeft != "None"
? pipeType[pipeDef[topLeft].type]
: "<strong>None</strong>") +
" | Top: " +
(top != "None" ? pipeType[pipeDef[top].type] : "<strong>None</strong>") +
" | Top Right: " +
(topRight != "None"
? pipeType[pipeDef[topRight].type]
: "<strong>None</strong>") +
" | Left: " +
(left != "None"
? pipeType[pipeDef[left].type]
: "<strong>None</strong>") +
"<br />"
);
$(".bottomConsole").append(
"Top Left Pipe can Join on: " +
(topLeft != "None"
? pipeTypeX[pipeDef[topLeft].type]
.toString()
.split(",")
.join(", ")
: "None") +
"<br />"
);
$(".bottomConsole").append(
"Top Pipe can Join on: " +
(top != "None"
? pipeTypeX[pipeDef[top].type]
.toString()
.split(",")
.join(", ")
: "None") +
"<br />"
);
$(".bottomConsole").append(
"Top Right Pipe can Join on: " +
(topRight != "None"
? pipeTypeX[pipeDef[topRight].type]
.toString()
.split(",")
.join(", ")
: "None") +
"<br />"
);
$(".bottomConsole").append(
"Left Pipe can Join on: " +
(left != "None"
? pipeTypeX[pipeDef[left].type]
.toString()
.split(",")
.join(", ")
: "None") +
"<br />"
);
//if (left != "None") {
// $('.bottomConsole').append(pipeTypeX[pipeDef[left].type].includes('Right'));
//}
// A1 - Still tempted to just check for cell == 'A1' here...
if (left == "None" && top == "None") {
// Setting direction to -90 as the images I'm using are not the same as the actual algorithm being used.
var y = -90;
var dirCount = 0;
var dirCheck = "";
var z = [];
// This for loop swaps our directions to see which orientations are valid (Does the pipe connect?)
for (var r = 0; r < 4; r++) {
dirCheck = "Run " + (r + 1) + ": ";
for (var i = 0; i < pipeTypeX[x].length; i++) {
dirCheck +=
(dirText.indexOf(pipeTypeX[x][i]) + r > dirText.length - 1
? (dirText.indexOf(pipeTypeX[x][i]) + r) % (dirText.length - 1) > 0
? dirText[
(dirText.indexOf(pipeTypeX[x][i]) + r) %
(dirText.length - 1) -
1
]
: dirText[
(dirText.indexOf(pipeTypeX[x][i]) + r) %
(dirText.length - 1) +
2
]
: dirText[dirText.indexOf(pipeTypeX[x][i]) + r]) +
"[" +
(dirText.indexOf(pipeTypeX[x][i]) + r > dirText.length - 1
? (dirText.indexOf(pipeTypeX[x][i]) + r) % (dirText.length - 1) > 0 // if out of bounds, this corrects index
? (dirText.indexOf(pipeTypeX[x][i]) + r) % (dirText.length - 1) -
1
: (dirText.indexOf(pipeTypeX[x][i]) + r) % (dirText.length - 1) +
2
: dirText.indexOf(pipeTypeX[x][i]) + r) + // if within bounds, this simply grabs new index
"] ";
// puts all current directions into string, if our count >= 2 then it's a valid pipe that
// we can use to connect to others. If so, we +1 to our master check. At the end if our total > 0
// the pipe is valid? I need to save f though on a "good" pipe.
//alert("Run " + (f+1) + ": " + dirText.indexOf(pipeTypeX[x][i]) + " - " + pipeTypeX[x][i] + " Becomes: " + (((dirText.indexOf(pipeTypeX[x][i])+f) > (dirText.length -1)) ? (dirText.indexOf(pipeTypeX[x][i])+f)%(dirText.length -1)-1 : (dirText.indexOf(pipeTypeX[x][i])+f)) + " - " + (((dirText.indexOf(pipeTypeX[x][i])+f) > (dirText.length -1)) ? dirText[(dirText.indexOf(pipeTypeX[x][i])+f)%(dirText.length -1)-1] : dirText[(dirText.indexOf(pipeTypeX[x][i])+f)]));
//alert(dirText.indexOf(pipeTypeX[x][i])+f%(dirText.length -1) + " - " + (dirText.length -1));
}
// These need to be dynamic based upon what's around it.
dirCount += dirCheck.includes("Up") ? 1 : -1;
dirCount += dirCheck.includes("Right") ? 1 : 0;
dirCount += dirCheck.includes("Down") ? 1 : 0;
dirCount += dirCheck.includes("Left") ? 0 : 0;
//bleh += (pipeTypeX[x].includes('Up')) ? 1 : -1;
//bleh += (pipeTypeX[x].includes('Right')) ? 1 : 0;
//bleh += (pipeTypeX[x].includes('Down')) ? 1 : 0;
//bleh += (pipeTypeX[x].includes('Left')) ? -1 : 0;
// Add successful direction to Connection State
if (dirCount >= 2) {
z.push(r);
}
dirCount = 0;
}
} else {
// Direction of pipe (When finished will be based on surrounding)
var y = 90 * Math.floor(Math.random() * 4);
// Shoving directions in here for now. Changing to orientation (0-3) later - can have more than 1 value
var z = pipeTypeX[x];
}
$(".bottomConsole").append("<hr />");
return {
id: cell, // A1 (A1-E5)
type: x, // 1 (Used in pipeType Array (0,1,2,3,4))
direction: y, // 90 (Degrees (0,90,180,270))
state: z // 1,2 (Orientations that are valid (0-3))
};
}
function test() {
$(".bottomConsole").empty();
var dirNum;
for (var i = 0; i < pipeDef.length; i++) {
dirNum = pipeDef[i].direction / 360;
dirNum = (dirNum - Math.floor(dirNum)) * 4;
$(".bottomConsole").append(
"Pipe ID: pipe-" +
i +
" | Pipe Position: " +
pipeDef[i].id +
" | Pipe Direction: " +
pipeDef[i].direction +
" ( " +
dirText[dirNum] +
") | Pipe Type: " +
pipeType[pipeDef[i].type] +
" | Connection State: " +
pipeDef[i].state +
"<br />"
);
}
}
// NOTES:
// Make button with slider to select difficulty ?
// Easy - Normal - Hard - Extreme - Expert
// 2x2 - 3x3 - 4x4 - 5x5 - 6x6
// Multi dimensional key-pair/array? each side has an index?
// create algorithm to generate correct "path" to win
// and based on difficulty, spit out "grid" in random
// order (avoiding solved path).
// top left & bottom right always ends. Direction is
// random based on possible solved path outcomes
// End JS for Pipe Puzzle
// End Ryan Saunders - Pipe Puzzle
// Antoine Guillien - Recursion Puzzle
// Get the modal
var recursionPuzzleModal = document.getElementById("recursionPuzzleModal");
// Get the button that opens the modal
var recursionPuzzleBtn = document.getElementById("recursionPuzzleBtn");
// Get the <span> element that closes the modal
var closeRecursionPuzzle = document.getElementsByClassName(
"close-recursionpuzzle"
)[0];
// When the user clicks the button, open the modal
recursionPuzzleBtn.onclick = function() {
recursionPuzzleModal.style.display = "grid";
};
// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closeRecursionPuzzle.onclick = function() {
recursionPuzzleModal.style.display = "none";
verify();
};
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == recursionPuzzleModal) {
recursionPuzzleModal.style.display = "none";
verify();
}
if (event.target == puzzlerModal) {
puzzlerModal.style.display = "none";
verify();
}
if (event.target == mathPuzzleModal) {
mathPuzzleModal.style.display = "none";
verify();
}
if (event.target == flexboxPuzzleModal) {
flexboxPuzzleModal.style.display = "none";
verify();
}
if (event.target == mirrorPuzzleModal) {
mirrorPuzzleModal.style.display = "none";
verify();
}
if (event.target == pipePuzzleModal) {
pipePuzzleModal.style.display = "none";
verify();
myStopFunction();
}
};
// Start JS for Recursion Puzzle
const TYPE = {
ROOM: 0,
CORRIDOR: 1,
DOOR_IN: 2,
DOOR_OUT: 3,
OBJECT: 4,
CONTAINER: 5,
CAT: 6,
THOUGHTS: 7,
EXIT: 8
};
const config = {
[TYPE.ROOM]: {
seeds: () => {
const adjectives = ["Tiny", "Big", "Dirty"];
const colors = ["Fluorescent", "Dark", "Luminous", "Resplendant"];
return `${_.sample(adjectives)} ${_.sample(colors)} Room`;
},
relations: [
{ type: TYPE.DOOR_OUT, min: 1, max: 3 },
{ type: TYPE.CONTAINER, min: 1, max: 5 },
{ type: TYPE.CAT, min: 1, max: 1, p: 0.2 }
]
},
[TYPE.CONTAINER]: {
seeds: ["Freezer", "Fridge", "Icebox"],
relations: [
{ type: TYPE.OBJECT, min: 1, max: 2 },
{
type: TYPE.EXIT,
min: 1,
max: 1,
p: data => {
const nb = countParents(data);
if (nb > 2) {
return 0.05 * (nb / 2);
} else {
return 0;
}
}
}
]
},
[TYPE.OBJECT]: {
seeds: [
"Beans",
"Carrots",
"French fries",
"Cucumber",
"Peas",
"Strawberries",
"Blueberries",
"Shrimp",
"Pizza",
"Broccoli",
"Spinach",
"Soup"
],
relations: []
},
[TYPE.CORRIDOR]: {
seeds: ["Corridor", "Aisle", "Passage", "Couloir", "Lobby"],
relations: [{ type: TYPE.DOOR_IN, min: 1, max: 3 }]
},
[TYPE.DOOR_IN]: {
seeds: ["A Door"],
relations: [{ type: TYPE.ROOM, min: 1, max: 1 }]
},
[TYPE.DOOR_OUT]: {
seeds: ["A Door"],
relations: [{ type: TYPE.CORRIDOR, min: 1, max: 1 }]
},
[TYPE.EXIT]: {
seeds: ["wiiiii"],
relations: []
},
[TYPE.CAT]: {
seeds: () => {
const adjectives = ["Majestic", "Big", "Lazy"];
const coats = ["", "Bi-Coloured", "Tabby", "Tortoiseshell", "Calico"];
const colors = [
"Dark",
"White",
"Brown",
"Ginger",
"Grey",
"Cinnamon",
""
];
return `${_.sample(adjectives)} ${_.sample(coats)} ${_.sample(
colors
)} Cat`;
},
relations: [{ type: TYPE.THOUGHTS, min: 1, max: 2 }]
},
[TYPE.THOUGHTS]: {
seeds: [
"Sharp Look",
"Paws",
"Tail",
"Weird Look",
"Thoughts Of Destruction",
"Starvation"
],
relations: []
}
};
let tid = 0;
const generateThing = (type, parent) => {
let name = Array.isArray(config[type].seeds)
? _.sample(config[type].seeds)
: config[type].seeds();
return {
type: type,
name,
id: tid++,
links: [],
parent
};
};
const countParents = data => {
let sum = 0;
let p = data;
while (p.parent) {
p = p.parent;
sum++;
}
return sum;
};
const generateFromParent = parent => {
let links = [];
config[parent.type].relations.forEach(r => {
let p = r.p ? (r.p instanceof Function ? r.p(parent) : r.p) : 1;
if (r.type == TYPE.EXIT) {
console.log(p);
}
if (p === 1 || Math.random() < p) {
links = links.concat(
Array.from({ length: _.random(r.min, r.max) }, () =>
generateThing(r.type, parent)
)
);
}
});
return links;
};
Vue.component("thing", {
props: ["data", "create", "cb"],
data: () => ({
show: false
}),
methods: {
createLinks: function() {
let self = this;
this.data.links = generateFromParent(this.data);
this.cb(this.data);
},
handle: function() {
if (!this.data.links.length) {
this.createLinks();
}
this.show = !this.show;
}
},
template: `
<div class="thing">
<div class="flex">
<div>
<span v-if="data.type == TYPE.EXIT"><i class="fa fa-ice-cream"></i></span>
<span v-else>{{data.name}}</span>
</div>
<div @click="handle" v-if="[TYPE.OBJECT, TYPE.EXIT, TYPE.THOUGHTS].indexOf(data.type) === -1">
<i v-if="show" class="fas fa-arrow-left"></i>
<i v-else class="fas fa-arrow-right"></i>
</div>
</div>
<div class="children" v-if="show">
<div v-for="c in data.links">
<thing :data="c" :key="c.id" :cb="cb"></thing>
</div>
</div>
</div>
`
});
const app = new Vue({
el: "#app",
data: {
root: null,
won: false,
details: {
clicks: 0,
level: 0,
opened: 0
}
},
beforeMount: function() {
this.root = generateFromParent({ type: TYPE.DOOR_IN, links: [] }).pop();
},
methods: {
cb: function(data) {
if (data.type === TYPE.CONTAINER) {
this.details.opened++;
}
if (data.links.some(l => l.type === TYPE.EXIT)) {
this.details.level = countParents(data);
this.won = true;
recursionPuzzleSolved = true;
//unlock 6th padlock once puzzle is solved
// checkPadlocks('padlock5',recursionPuzzleSolved);
// document.querySelector(' .unlocked').setAttribute('fill', "#7b1346");
document.querySelector("#padlock5 .locked").style.opacity = "0";
document.querySelector("#padlock5 .unlocked").style.opacity = "1";
}
this.details.clicks++;
}
}
});
// End Antoine Guillien - Recursion Puzzle
// Padlock Functionality and Verification
// let padlocks = document.querySelectorAll('[id^=padlock]'),
// pathsToAnimate = document.querySelectorAll('[id^=ulock]');
// function checkPadlocks(whichLock,bol=false) {
// //iterate through each path id of svg padlock
// for(let i=0; i < 6; i++) {
// //console.log(i + ' ' + padlocks[i].getAttribute('id'));
// //console.log(whichLock === padlocks[i].getAttribute('id'));
// if(whichLock === padlocks[i].getAttribute('id') && bol) {
// // pathsToAnimate[i].setAttribute('href','#unlocked');
// // console.log(pathsToAnimate[i]);
// // document.querySelector(`${whichLock}.locked`).style.opacity="0";
// // document.querySelector(`${whichLock}.unlocked`).style.opacity="1";
// var paths = document.getElementsByTagName("path");
// whichLock.paths[0].style.opacity = "0";
// whichLock.paths[1].style.opacity = "1";
// }
// }
// }
// Start JS for verification
var haveEscaped;
function escapeNow() {
haveEscaped = setTimeout(function() {
// replace door with opened version
document.getElementById("door").style.opacity = "0";
document.getElementById("open-door").style.opacity = "1";
// window.alert("You may now escape!");
document.getElementById("escaped").style.visibility = "visible";
}, 750);
}
// Checks whether player has solved all puzzles, if yes, escape!
function verify() {
// testing
// var puzzlerSolved = true; // ✅
// var mathPuzzleSolved = true; // ✅
// var flexboxPuzzleSolved = true; // ✅
// var mirrorPuzzleSolved = true; // ✅
// var pipePuzzleSolved = true; // ✅
// var recursionPuzzleSolved = true; // ✅
if (
puzzlerSolved == true &&
mathPuzzleSolved == true &&
flexboxPuzzleSolved == true &&
mirrorPuzzleSolved == true &&
pipePuzzleSolved == true &&
recursionPuzzleSolved == true
) {
//ESCAPE
escapeNow();
}
}
verify();
// End JS for verification