<snapdata remixID="14940879"><project name="Tic Tac Toe" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Tic Tac Toe"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="label %&apos;text&apos; of size %&apos;size&apos;" type="command" category="pen"><comment x="0" y="0" w="90" collapsed="false">LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + &apos;px monospace&apos;;&#xD;context.textAlign = &apos;left&apos;;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/></list></block></script></block-definition><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block var="data"/><block s="reportNewList"><list></list></block></list></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script><list></list></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="start"/><block var="end"/></list></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script><scripts><script x="229.00000300000002" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></script></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block><custom-block s="ignore %s"><l>3</l></custom-block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script><list></list></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="tell %&apos;sprite&apos; to %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportAttributeOf"><block var="action"/><block var="sprite"/></block><list></list></block></script></block-definition><block-definition s="ask %&apos;sprite&apos; for %&apos;expression&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportAttributeOf"><block var="expression"/><block var="sprite"/></block><list></list></block></block></script></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block></script></block-definition><block-definition s="make ONE row" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRepeat"><l>3</l><script><block s="doChangeVar"><l>clone number</l><l>1</l></block><block s="createClone"><l><option>myself</option></l></block><block s="changeXPosition"><l>50</l></block></script></block></script></block-definition><block-definition s="make Tic Tac Toe Board" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>column</l><l>1</l><l>3</l><script><custom-block s="make ONE row"></custom-block><block s="changeXPosition"><l>-150</l></block><block s="changeYPosition"><l>-50</l></block></script></block><block s="gotoXY"><l>1000</l><l>1000</l></block></script></block-definition><block-definition s="%&apos;X or O&apos; wins?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doForEach"><l>triple</l><block var="winning triples"/><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="triple"/></block><block var="board"/></block><block var="X or O"/></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>2</l><block var="triple"/></block><block var="board"/></block><block var="X or O"/></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="triple"/></block><block var="board"/></block><block var="X or O"/></list></block></list></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="speak %&apos;text&apos; with %&apos;lang&apos; accent $nl and pitch %&apos;pitch&apos; rate %&apos;rate&apos;" type="command" category="sound"><header></header><code></code><translations>de:sprich _ mit _ Aussprache _ und Höhe _ Geschwindigkeit _&#xD;pt:fala _ na língua _ _ com tom _ e velocidade _&#xD;ca:digues _ amb accent _ _ to _ i velocitat _&#xD;pl:powiedz _ z akcentem _ _ wysokość _ szybkość _&#xD;</translations><inputs><input type="%s">Hello, World!</input><input type="%txt">en-US<options>العربية=ar&#xD;Български=bg&#xD;বাংলা=bn&#xD;Català=ca&#xD;Català - Valencià=ca-VA&#xD;Česky=cs&#xD;Deutsch=de&#xD;Dansk=dk&#xD;Ελληνικά=el&#xD;English-American=en-US&#xD;English-British=en-GB&#xD;Esperanto=eo&#xD;Español=es&#xD;Eesti=et&#xD;Euskara=eu&#xD;suomi=fi&#xD;Français=fr&#xD;Galego=gl&#xD;Hrvatski=hr&#xD;Magyar=hu&#xD;Interlingua=ia&#xD;Bahasa Indonesia=id&#xD;Italiano=it&#xD;日本語=ja&#xD;にほんご=ja-HIRA&#xD;ಕನ್ನಡ=kn&#xD;한국어=ko&#xD;Malayalam=ml&#xD;Nederlands=nl&#xD;Norsk=no&#xD;Polski=pl&#xD;Português=pt&#xD;Português do Brasil=pt-BR&#xD;Român=ro&#xD;Русский=ru&#xD;Slovenščina=si&#xD;svenska=sv&#xD;Tamil=ta&#xD;Telagu=te&#xD;Türkçe=tr&#xD;Українська=ua&#xD;简体中文=zh-CN&#xD;繁體中文=zh-TW</options></input><input type="%n">1</input><input type="%n">1</input></inputs><script><block s="doApplyExtension"><l>tts_speak(txt, lang, pitch, rate)</l><list><block var="text"/><block var="lang"/><block var="pitch"/><block var="rate"/></list></block></script></block-definition><block-definition s="speak %&apos;text&apos; with %&apos;lang&apos; accent $nl and pitch %&apos;pitch&apos; rate %&apos;rate&apos; and wait" type="command" category="sound"><header></header><code></code><translations>de:sprich _ mit _ Aussprache _ und Höhe _ Geschwindigkeit _ und warte&#xD;pt:fala _ na língua _ _ com tom _ e velocidade _ , e espera&#xD;ca:digues _ amb accent _ _ to _ velocitat _ i espera&#xD;pl:powiedz _ z akcentem _ _ wysokość _ szybkość _ i czekaj&#xD;</translations><inputs><input type="%s">Hello, World!</input><input type="%txt">en-US<options>العربية=ar&#xD;Български=bg&#xD;বাংলা=bn&#xD;Català=ca&#xD;Català - Valencià=ca-VA&#xD;Česky=cs&#xD;Deutsch=de&#xD;Dansk=dk&#xD;Ελληνικά=el&#xD;English-American=en-US&#xD;English-British=en-GB&#xD;Esperanto=eo&#xD;Español=es&#xD;Eesti=et&#xD;Euskara=eu&#xD;suomi=fi&#xD;Français=fr&#xD;Galego=gl&#xD;Hrvatski=hr&#xD;Magyar=hu&#xD;Interlingua=ia&#xD;Bahasa Indonesia=id&#xD;Italiano=it&#xD;日本語=ja&#xD;にほんご=ja-HIRA&#xD;ಕನ್ನಡ=kn&#xD;한국어=ko&#xD;Malayalam=ml&#xD;Nederlands=nl&#xD;Norsk=no&#xD;Polski=pl&#xD;Português=pt&#xD;Português do Brasil=pt-BR&#xD;Român=ro&#xD;Русский=ru&#xD;Slovenščina=si&#xD;svenska=sv&#xD;Tamil=ta&#xD;Telagu=te&#xD;Türkçe=tr&#xD;Українська=ua&#xD;简体中文=zh-CN&#xD;繁體中文=zh-TW</options></input><input type="%n">1</input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>callback</l></list></block><block s="doSetVar"><l>callback</l><block s="reportApplyExtension"><l>tts_speak(txt, lang, pitch, rate)</l><list><block var="text"/><block var="lang"/><block var="pitch"/><block var="rate"/></list></block></block><block s="doWaitUntil"><block s="evaluate"><block var="callback"/><list></list></block></block></script></block-definition><block-definition s="recognize speech" type="reporter" category="sensing"><header></header><code></code><translations>de:erkenne Gesprochenes&#xD;ar:التعرف على الكلام&#xD;bg:Разпознаване на изговорени думи&#xD;hr:Prepoznavanje izgovorenih riječi&#xD;hy:ճանաչել ասված բառերը&#xD;ca:reconèixer les paraules pronunciades&#xD;cs:Rozpoznávání mluvených slov&#xD;dk:At genkende talte ord&#xD;eu:ahozko hitzak ezagutu&#xD;el:Αναγνώριση προφορικών λέξεων&#xD;es:Reconocer palabras habladas&#xD;fi:Puhuttujen sanojen tunnistaminen&#xD;fr:Reconnaître les mots parlés&#xD;he:זיהוי מילים מדוברות&#xD;hi:बोले गए शब्दों को पहचानना&#xD;hu:A kimondott szavak felismerése&#xD;it:Riconoscere le parole pronunciate&#xD;ja:話し言葉を認識する&#xD;ko:말한 단어 인식&#xD;no:Gjenkjenne talte ord&#xD;po:Rozpoznawanie wypowiedzianych słów&#xD;pt_BR:Reconhecendo palavras faladas&#xD;pt:Reconhecendo palavras faladas&#xD;ro:Recunoașterea cuvintelor rostite&#xD;ru:Распознавание произнесенных слов&#xD;sk:Rozpoznávanie hovorených slov&#xD;si:Prepoznavanje govorjenih besed&#xD;sv:Att känna igen talade ord&#xD;ti:ዝተዛረቡ ቃላት ምልላይ&#xD;tr:Konuşulan kelimeleri tanıma&#xD;ua:Розпізнавання вимовлених слів&#xD;zh_CN:识别口语单词&#xD;zh_TW:辨識口語單字&#xD;nl:gesproken woorden herkennen&#xD;et:ära tunda öeldud sõnu&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>tts_recognize</l><list></list></block></block></script></block-definition><block-definition s="stop speech recognition" type="command" category="sensing"><header></header><code></code><translations>de:stoppe Spracherkennung&#xD;</translations><inputs></inputs><script><block s="doApplyExtension"><l>tts_stop</l><list></list></block></script></block-definition><block-definition s="activate speech synthesis %&apos;msg&apos;" type="command" category="sound"><comment x="0" y="0" w="201" collapsed="false">create a DOM button element covering the stage displaying the given label text, if any, blocking the current script&apos;s execution until the user has clicked the button, which will enable speech synthesis on stupid iOS / iPadOS devices, where Apple forgot to activate speech synthesis when the user interacts with a canvas element. Sigh.&#xD;&#xD;Do this right when you start the project. What a kludge.&#xD;</comment><header></header><code></code><translations>de:aktiviere Sprachausgabe _&#xD;</translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doApplyExtension"><l>tts_activate(msg)</l><list><block var="msg"/></list></block></script></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" id="756"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KADAAQAAAABAAABaAAAAAAHwbojAAAL30lEQVR4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgMDI3+AAEeFvcCAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="757"></list></costumes><sounds><list struct="atomic" id="758"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="1000" y="1000" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="80,80,80,1" pen="tip" id="763"><costumes><list id="764"><item><ref mediaID="Tic Tac Toe_Square_cst_Empty"></ref></item><item><ref mediaID="Tic Tac Toe_Square_cst_X"></ref></item><item><ref mediaID="Tic Tac Toe_Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="765"></list></sounds><blocks></blocks><variables><variable name="clone number"><l>9</l></variable></variables><scripts><script x="10" y="10"><block s="receiveGo"><comment w="131" collapsed="false">When the green flag is clicked, the clone number variable will be set to 0, the square sprite will appear at (-50, 50), the sprite&apos;s costume will switch to Empty, the X&apos;s turn variable will be set to true, the board&apos;s list items will all be set to empty, and the board will be created (see block components below).&#xD;- S.P.</comment></block><block s="doSetVar"><l>clone number</l><l>0</l></block><block s="gotoXY"><l>-50</l><l>50</l></block><block s="doSwitchToCostume"><l>Empty</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>board</l><block s="reportNewList"><list><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l><l>Empty</l></list></block></block><custom-block s="make Tic Tac Toe Board"></custom-block></script><script x="11" y="855.4666666666675"><block s="doRepeat"><l>3</l><script><block s="doChangeVar"><l>clone number</l><l>1</l></block><block s="createClone"><l><option>myself</option></l></block><block s="changeXPosition"><l>50</l></block></script><comment w="330" collapsed="false">In the make ONE row block (on the right of this comment), for 3 times, the square will change its clone number by one, creates a clone of itself, and changes the x value by 50.&#xD;- S.P.</comment></block></script><script x="11" y="973.8000000000004"><block s="doFor"><l>column</l><l>1</l><l>3</l><script><custom-block s="make ONE row"></custom-block><block s="changeXPosition"><l>-150</l></block><block s="changeYPosition"><l>-50</l></block></script><comment w="343" collapsed="false">In the make Tic Tac Toe board block (on the right of this comment), for 1 to 3 of the variable column, it&apos;ll make a row, and change its position by (-150, 50), then lastly the final clone will go off-screen to (1,000, 1,000).&#xD;- S.P.</comment></block><block s="gotoXY"><l>1000</l><l>1000</l></block></script><script x="11" y="1113.0833333333333"><block s="doForEach"><l>triple</l><block var="winning triples"/><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="triple"/></block><block var="board"/></block><block var="X or O"/></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>2</l><block var="triple"/></block><block var="board"/></block><block var="X or O"/></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="triple"/></block><block var="board"/></block><block var="X or O"/></list></block></list></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block></script><comment w="92" collapsed="false">In the X/O wins block (on the right of this comment), for each triple in the winning triples list, it will check if each item in a separate list item within the list is all X or all O, and if it is, it&apos;ll report true, else it&apos;ll report false.&#xD;- S.P.</comment></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script x="544" y="858.8000000000008"><custom-block s="make ONE row"></custom-block></script><script x="543" y="976.9666666666669"><custom-block s="make Tic Tac Toe Board"></custom-block></script><script x="11" y="1331.3333333333328"><block s="doSetVar"><l>winning triples</l><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></list></block><comment w="135" collapsed="false">These are the 8 sets of numbers for the winning triples list variable.&#xD;- S.P.</comment></block></script><script x="581" y="1116.0833333333333"><custom-block s="%s wins?"><l></l></custom-block></script><script x="10" y="246.99999999999955"><block s="receiveInteraction"><l><option>clicked</option></l><comment w="217.1083984375" collapsed="false">When a clone of a square is clicked, then if the costume is set to #1 (Empty), then it will switch to the X costume, sets the X&apos;s turn variable to false, replaces the clone number item of the board list with X, and broadcasts the computer&apos;s turn (see code right). If X wins, then it says and speaks that X has won and stops all code, else if the board variable does not contain a list item named Empty, then the program says and speaks out that it&apos;s a draw and it&apos;ll stop all code.&#xD;- S.P.</comment></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block><script><block s="doSwitchToCostume"><l>X</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doReplaceInList"><block var="clone number"/><block var="board"/><l>X</l></block><block s="doBroadcast"><l>O&apos;s turn</l><list></list></block></script><list></list></block><block s="doIfElse"><custom-block s="%s wins?"><l>X</l></custom-block><script><block s="bubble"><l>X wins!</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>X wins!</l><l>en-US</l><l>1</l><l>1</l></custom-block><block s="doStopThis"><l><option>all</option></l></block></script><script><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block var="board"/><l>Empty</l></block></block><script><block s="bubble"><l>It&apos;s a draw!</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>It&apos;s a draw!</l><l>en-US</l><l>1</l><l>1</l></custom-block><block s="doStopThis"><l><option>all</option></l></block></script><list></list></block></script></block></script><script x="548" y="237.9999999999999"><block s="receiveMessage"><l>O&apos;s turn</l><list></list><comment w="116" collapsed="false">When the computer&apos;s turn message is broacasted, if X&apos;s turn is false and the board contains an empty slot, it&apos;ll set X&apos;s turn to true, wait 1 second, and set&apos;s O&apos;s turn to a random list item from 1 to 9 until it finds an empty slot, and if so, the O&apos;s turn variable will replace the slot with O, and if O wins, then it says and speaks that O has won and stops all code.&#xD;- S.P.</comment></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block var="X&apos;s turn?"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block s="reportListContainsItem"><block var="board"/><l>Empty</l></block></list></block><script><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doWait"><l>1</l></block><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="O&apos;s turn?"/><block var="board"/></block><l>Empty</l></list></block><script><block s="doSetVar"><l>O&apos;s turn?</l><block s="reportRandom"><l>1</l><l>9</l></block></block></script></block><block s="doReplaceInList"><block var="O&apos;s turn?"/><block var="board"/><l>O</l></block><block s="doIf"><custom-block s="%s wins?"><l>O</l></custom-block><script><block s="bubble"><l>O wins!</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>O wins!</l><l>en-US</l><l>1</l><l>1</l></custom-block><block s="doStopThis"><l><option>all</option></l></block></script><list></list></block><block s="doWaitUntil"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block var="X&apos;s turn?"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block s="reportListContainsItem"><block var="board"/><l>Empty</l></block></list></block></block></script><list></list></block></script><script x="547.9999999999998" y="624.6666666666666"><block s="receiveOnClone"><comment w="217" collapsed="false">When the square starts as a clone, it&apos;ll wait until an item within the board list is set to O, and it will set the corresponding clone&apos;s costume to O.&#xD;- S.P.</comment></block><block s="doWaitUntil"><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="clone number"/><block var="board"/></block><l>O</l></list></block></block><block s="doSwitchToCostume"><l>O</l></block></script></scripts></sprite><watcher scope="Square" s="xPosition" style="normal" x="10" y="10" color="74,108,212" hidden="true"/><watcher scope="Square" s="yPosition" style="normal" x="10" y="31.000001999999995" color="74,108,212" hidden="true"/><watcher var="X&apos;s turn?" style="normal" x="10" y="52.000003999999976" color="243,118,29"/><watcher var="board" style="normal" x="10" y="76.00000599999994" color="243,118,29" extX="80" extY="70"/><watcher scope="Square" var="clone number" style="normal" x="10" y="272.000008" color="243,118,29"/><watcher var="winning triples" style="normal" x="10" y="186.999998" color="243,118,29" extX="185.5615234375" extY="150"/><watcher var="O&apos;s turn?" style="normal" x="10" y="338.9999979999997" color="243,118,29"/></sprites></stage><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="1127">Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty</list></variable><variable name="winning triples"><list id="1128"><item><list struct="atomic" id="1129">1,2,3</list></item><item><list struct="atomic" id="1130">1,4,7</list></item><item><list struct="atomic" id="1131">1,5,9</list></item><item><list struct="atomic" id="1132">2,5,8</list></item><item><list struct="atomic" id="1133">3,5,7</list></item><item><list struct="atomic" id="1134">3,6,9</list></item><item><list struct="atomic" id="1135">4,5,6</list></item><item><list struct="atomic" id="1136">7,8,9</list></item></list></variable><variable name="O&apos;s turn?"><l>2</l></variable></variables></scene></scenes></project><media name="Tic Tac Toe" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAANKADAAQAAAABAAAANAAAAABdv+0DAAAAx0lEQVRoBe2asQ2DMAAErSglaUlNJmEWImYFRdnJATb4FCewzpLL18l3lJTS4Bm3N9UW7jC8vrc90PSeS6310ndZP6XrHvfjQfujWjk+6OwlLWQh2ICfHCw8xlkoVgYPLAQLj3EWipXBAwvBwmOchWJl8MBCsPAYZ6FYGTywECw8xlkoVgYPLAQLj3EWipXBAwvBwmOchWJl8MBCsPAYZ6FYGTywECw8xlkoVgYPLAQLj3EWipXBAwvBwv/CjduqiT8a+/65/gAgXfnWAcy/sAAAAABJRU5ErkJggg==" mediaID="Tic Tac Toe_Square_cst_Empty"/><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAANKADAAQAAAABAAAANAAAAABdv+0DAAACJUlEQVRoBe3aT0sCQRQA8Gd0EIT8AFaIn8JO9gE0kI7ln05BdMhblyLtWp0iqOwjRNCn2AjM/nuS/mjZN0i6tCMsSLizOzPvzc6GD4aR1R3fb+ex8HQjAJDM5fKbsVg0ar8OdfT7Pw+TtiDZ632UiuWVUIO+ep9w02i8MhCkUqnv9bXVUIOsq2sGgolQ19iI5MegERfFqEPcHXp77xiVLEvGKycuqFqtwdb2jjGox6dnmM9k4Pzi0jUnLuhgfw9arZYRKIbJZbOwtFyAxfyCHCgen4L66UngqGHMbo1fMdwdYpchaJQIhuXrCQoSJYrxDQoCJYMRAulEyWKEQTpQKhgpECVKFSMNokBhYJRAmCgsjDIIA4WJQQGpoLAxaCAZFAUGFSSCosKgg/ygKDEkIB6KGkMGGoXSgSEFDaOazSbMpdOD5syrn2HnqYSv9kHlCzrdLtzf3UIikVBZxve5pCCnzArFEliWpaXzJQM5GPYbACszXZ0vCegvxqkXHSh0kBtGFwoV5IXRgUID+cVQo1BAohhKlDJIFkOFUgKpYihQ0iAsDDZKCoSNwUQJg6gwWCghEDUGA+UbpAujivIF0o1RQXmCgsLIorigoDEyKC6oslHR0jY7ifPm4daD96fx4NEYt4XqZ3WYnZl2e1v7cQfFZrfg7pBJGAfAw7DPcEHOImGaxyDTd2twU2i329HDo2PTc+Xmxx4AZBGxR9IeZXv8h3j5BRxf4Dto8cI/AAAAAElFTkSuQmCC" mediaID="Tic Tac Toe_Square_cst_X"/><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAANKADAAQAAAABAAAANAAAAABdv+0DAAAE/UlEQVRoBe2aXUwUVxTHTxof2fXNhtA2EVlY25h2+Yi8WNYt1KRBrVYrlmqMski1jcpa0wctu9pEq4I1tsbCQz8UWIWKfPigKIo+uAouvtSvNTWFtrwK+j7e/9VpkJ07XzvLTKknmczu/Tj3/O49c/bOuUs0DcXPmKTpcM2enT34ChZo/YYgSZL0n76uxW5QRoZrBgcC1HSRl0BOX8kZVht4/kIfxeNDlLh/jy71XaSHD/9IGmLFylWUlZVF7/jyKbCwhN54/bWkNmYLLHG54ZG/aNfXYcrOnkNNjY3cllUVFXS5v18x0IRCIQ5zayhO/pISWvlxBf3W0WWWIamfn0U5FuSMy5/DI9LOXXUSC5fS3m8PSvhuRtpPd0ps1aSyskUSPpsRFuWkefPevgU6U0A//XLiX5BHj8bM2JDU51zvRQ6FCTY6OTKQYZcbGxunrdtC1HLiOLW0RumrHSGaOdOdtOxmCt4vDVBb2yny5OZxV8TzaFQMBQXAVAWrye1284GtAploNHRikjweD9VUB+lA/SH6aNmSiU1UP+sGkmG8Xi/t2R1WVWpFJSC8eR5aXF7O1emF0u1ytaHtPNROBYw8IW+9OZe6e3poxfKlFLs+IBer3nUBfX/0RxofH6dIuE5VWToqAcUiH32yuoLgJVqiCfT77Tv0xeYaCjOYdDwzWgaiHu62ZOmHVBeOaDbXBGpoOERHfjhGmCk7Bd7R1XlG0/VUgeC32L6sqVxtJwsfG95Ru30HNTU1qdqiChSNRrkSu1xtsuWYWEwwHgORCIGwPzv8XYMjVkc2HhNbXbOJotGTclHSXQjUd6mftmyttS0QJFn6vGBx+Qd0PRYTVZMQCDvhBe+WCDvaVYHg9OBBQuh2QiBEFPxSO1EQwu/eSyiaJgTCi5ndoVrRYlaY48ml0dFRxWpFIIRrvFU6VXJzPTQUv6loniIQWmJH7VRxu1xC04RAwh4Or/h/ALlcGTQyPOzYtfj7n1FyCdxOcYUQ3Xp7zzkWCBEOkU5JFIHQkGVgNHe2SgqnogwRLjMzU3EoIdD84mL243VfsZPdhdigFhXmK5ohBEJW82xPt2InOwuRCcrJ8QizrUKg0oCf2ttOEnbdTpKrV65QoLRMaJIQCFt1lhVluTfxVl2oNU0VyCl8syfC8gviXYwQCDYFg1XUeOyoruREmhheUHu8uZVPslpyXxUIHSs/XUMH6xteUGzHF7g+kjWYZDVRBUJHKGhmaV+9eTG1wVKpi0R2EzsQEAYDWbcmEFYJ6Vi9eTFZsZX3ffvreV7ws41BTbWaQNCAvBhcD3ltPck+zVENNMC5EZ5jvXlBXUAYHylg5LWnEgowX4a28XSw3pdN3UCTodRSSQYWQNgU6WejMFBmCAgdsFIFhUX8VODnX5tRZKkgmm2oqqauMx2GVkY2wjAQOuL8BoddOPTC4FZEQDybWBWcueLACwdfet1MhsHdFBA6Fs8v4oP68gt4BASYmYNfrAiimM/n43mCVE8FdR94AWKyYHv0+aaNPLva0dlN0dYW7vdIM+F9pbDg2Y54rjePJyzx3D1+/ITwgpZIJOjm4AC/EEEBgklKVVICkgcH2Lq1lfzCjA8MxrnBSKzjXAmbXAg7LaeFgff42yaAcbxvBYRsB+6WAE1UiB/i5L1WdGKTtH42/Qyl1aoUlL8ESmHypqyrn400Lf7ROGvWq7GnDxUGe9396PcAAAAASUVORK5CYII=" mediaID="Tic Tac Toe_Square_cst_O"/></media></snapdata>