<snapdata remixID="11306096"><project name="L13 Tic-Tac-Toe" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="L13 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></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></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="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></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></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></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="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></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="reportGreaterThan"><block var="i"/><block var="end"/></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></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></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></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.7777807777777"><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></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="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><custom-block s="for %upvar = %n to %n %cs"><l>row</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>column</l><l>1</l><l>3</l><script><block s="doSetVar"><l>number</l><block s="reportSum"><block var="number"/><l>1</l></block></block><block s="doSetVar"><l>square number</l><block var="number"/></block><block s="doAddToList"><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block><block var="block positions"/></block><block s="createClone"><l><option>myself</option></l></block><block s="setHeading"><l>180</l></block><block s="forward"><l>50</l></block></script></custom-block><block s="forward"><l>-150</l></block><block s="setHeading"><l>90</l></block><block s="forward"><l>50</l></block></script></custom-block><block s="hide"></block></script></block-definition><block-definition s="TicTacToe wins" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</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><block s="reportNewList"><list><l>1</l><l>4</l><l>7</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>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="status of triple %&apos;triple&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><list><block var="triple"/></list></custom-block></block></script></block-definition><block-definition s="won? %&apos;who&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportListContainsItem"><custom-block s="status of triple %l"><custom-block s="TicTacToe wins"></custom-block></custom-block><block s="reportNewList"><list><block var="who"/><block var="who"/><block var="who"/></list></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="go to %&apos;blocks&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="gotoXY"><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="blocks"/></block><block var="block positions"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="blocks"/></block><block var="block positions"/></block></block></block><block s="down"></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportListItem"><l>2</l><block var="blocks"/></block><block var="block positions"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><block s="reportListItem"><l>2</l><block var="blocks"/></block><block var="block positions"/></block></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="blocks"/></block><block var="block positions"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><block s="reportListItem"><l>3</l><block var="blocks"/></block><block var="block positions"/></block></block></block><block s="up"></block></script></block-definition></blocks><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="803"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAEj5JREFUeF7t3eGNHMcVhdHeFAwwBDMYWYrJglMi6WDEEAwrA5kGAdoQSIm7M9s9t96t47/e7ao67wEfKAji0+F/BAgQIECAwMMFnh5+ogMJECBAgACBQ4AtAQECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAECBAgQCAgIcADdkQQIECBAQIDtAAEC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d5NBe+ZIAQEeOTaXJvC8gPg+b+QnCCQFBDip72wCFwmI70WwPkvgRAEBPhHTpwisICC+K0zBHQg8LyDAzxv5CQJjBMR3zKhclMAhwJaAQImA+JYM0jO2ERDgbUbtoc0C4ts8XW9rFRDg1sl61zYC4rvNqD20TECAywbqOXsJiO9e8/baLgEB7pqn12wkIL4bDdtTKwUEuHKsHrWLwOcIv/l4fNjlvd5JoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEZAgMeMykUJECBAoElAgJum6S0ECBAgMEbgv56bBYfJqXslAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="804"></list></costumes><sounds><list struct="atomic" id="805"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="150" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="810"><costumes><list id="811"><item><ref mediaID="Square_cst_Empty"></ref></item><item><ref mediaID="Square_cst_X"></ref></item><item><ref mediaID="Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="812"></list></sounds><blocks></blocks><variables><variable name="id"><l>0</l></variable><variable name="square number"><l>9</l></variable></variables><scripts><script x="24.333333333333314" y="345.9333333333337"><block s="receiveGo"></block><block s="clear"></block><block s="up"></block><block s="doSetVar"><l>block positions</l><block s="reportNewList"><list><l></l></list></block></block><block s="doDeleteFromList"><l>1</l><block var="block positions"/></block><block s="show"></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><block s="doSetVar"><l>number</l><l>0</l></block><block s="doBroadcast"><l>Start</l><list></list></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doWait"><l>.1</l><comment w="181.33333333333334" collapsed="true">Wait for old clones to be deleted.</comment></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l><comment w="90" collapsed="true">X plays first.</comment></block></block></script><script x="30.599999999999966" y="209.4666666666667"><block s="receiveGo"></block><block s="removeClone"><comment w="118" collapsed="false">This affects only clones, not the original sprite.</comment></block></script><script x="32.599999999999966" y="13.599999999999909"><block s="doWearNextCostume"></block></script><script x="89.26666666666688" y="77.20000000000027"><block s="doSetVar"><l>square number</l><l>0</l></block></script><script x="296.2793619791669" y="95.33333333333354"><custom-block s="TicTacToe wins"></custom-block></script><script x="174.26666666666688" y="156.26666666666716"><custom-block s="status of triple %l"><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block></custom-block></script><script x="438.26666666666677" y="10"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIfElse"><block s="reportEquals"><block s="getCostumeIdx"></block><l>2</l></block><script><block s="doBroadcast"><l>X block</l><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script><script><block s="doIfElse"><block s="reportEquals"><block s="getCostumeIdx"></block><l>3</l></block><script><block s="doBroadcast"><l>O block</l><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block></script><script><block s="doSwitchToCostume"><l>O</l></block></script></block><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doReplaceInList"><block var="square number"/><block var="board"/><l>X</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doReplaceInList"><block var="square number"/><block var="board"/><l>O</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block></script></block><block s="doIf"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="doBroadcast"><l>X</l><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script></block><block s="doIf"><custom-block s="won? %s"><l>O</l></custom-block><script><block s="doBroadcast"><l>O</l><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block var="board"/><l>Empty</l></block></block><script><block s="doBroadcast"><l>Tie</l><list></list></block></script></block></script><script x="570.3333333333334" y="495.39999999999964"><custom-block s="for each %upvar of %l %cs"><l>item</l><custom-block s="TicTacToe wins"></custom-block><script><block s="doIf"><block s="reportEquals"><block var="item"/><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block><script><custom-block s="go to %l"><block var="item"/></custom-block></script></block></script></custom-block></script><script x="58.33333333333326" y="669.8999999999996"><block s="receiveKey"><l><option>r</option></l><list></list></block><block s="clear"></block><block s="up"></block><block s="doSetVar"><l>block positions</l><block s="reportNewList"><list><l></l></list></block></block><block s="doDeleteFromList"><l>1</l><block var="block positions"/></block><block s="show"></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><block s="doSetVar"><l>number</l><l>0</l></block><block s="doBroadcast"><l>Start</l><list></list></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doWait"><l>.1</l><comment w="181.33333333333334" collapsed="true">Wait for old clones to be deleted.</comment></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l><comment w="90" collapsed="true">X plays first.</comment></block></block></script><script x="29" y="303.7333333333334"><custom-block s="status of triple %l"><custom-block s="TicTacToe wins"></custom-block></custom-block></script></scripts></sprite><watcher var="X&apos;s turn?" style="normal" x="5" y="5" color="243,118,29" hidden="true"/><watcher scope="Square" var="id" style="normal" x="20" y="20.000000000000014" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="10" y="10" color="243,118,29" extX="80" extY="70"/><watcher scope="Square" var="square number" style="normal" x="10" y="103.000002" color="243,118,29" hidden="true"/><watcher var="number" style="normal" x="11" y="129.000004" color="243,118,29" hidden="true"/><watcher var="block positions" style="normal" x="10" y="124.00000399999999" color="243,118,29" hidden="true"/><watcher var="Wins" style="normal" x="10" y="250.00000599999998" color="243,118,29" hidden="true"/><watcher scope="Stage" s="reportMouseX" style="normal" x="10" y="271.000008" color="4,148,220" hidden="true"/><watcher scope="Stage" s="reportMouseY" style="normal" x="10" y="292.0000099999999" color="4,148,220" hidden="true"/><sprite name="Sprite" idx="2" x="100" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="235,38,0,1" pen="tip" id="1066"><wear><ref mediaID="4"></ref></wear><costumes><list struct="atomic" id="1067"></list></costumes><sounds><list struct="atomic" id="1068"></list></sounds><blocks></blocks><variables></variables><scripts><script x="63.999999999999886" y="10"><block s="receiveMessage"><l>O</l><list></list></block><block s="doSayFor"><l>O has won!</l><l>2</l></block><block s="doSetVar"><l>Wins</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><list><block s="reportListItem"><block var="Wins"/><custom-block s="TicTacToe wins"></custom-block></block></list></custom-block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></block><script><block s="doSetVar"><l>Wins</l><block s="reportSum"><block var="Wins"/><l>1</l></block></block></script></block><custom-block s="go to %l"><block s="reportListItem"><block var="Wins"/><custom-block s="TicTacToe wins"></custom-block></block></custom-block><block s="setSize"><l>10</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doSwitchToCostume"><block s="reportPenTrailsAsCostume"></block></block><block s="doSayFor"><l>Press r to play again</l><l>2</l></block></script><script x="502" y="18.233333333333263"><block s="receiveGo"></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="up"></block><block s="gotoXY"><l>-210</l><l>-150</l></block></script><script x="58.999999999999886" y="389.5999999999996"><block s="receiveMessage"><l>Start</l><list></list></block><block s="doSayFor"><l>X goes first.</l><l>2</l></block></script><script x="278" y="12.166666666666657"><block s="receiveMessage"><l>X block</l><list></list></block><block s="doSayFor"><l>X already chose this block</l><l>2</l></block></script><script x="256.33333333333337" y="327.2333333333333"><block s="gotoXY"><l>0</l><l>0</l></block></script><script x="429.0000000000001" y="264.5999999999996"><block s="receiveMessage"><l>O block</l><list></list></block><block s="doSayFor"><l>O already chose this block</l><l>2</l></block></script><script x="334.0000000000001" y="358.99999999999983"><block s="receiveMessage"><l>X</l><list></list></block><block s="doSayFor"><l>X has won!</l><l>2</l></block><block s="doSetVar"><l>Wins</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><list><block s="reportListItem"><block var="Wins"/><custom-block s="TicTacToe wins"></custom-block></block></list></custom-block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block><script><block s="doSetVar"><l>Wins</l><block s="reportSum"><block var="Wins"/><l>1</l></block></block></script></block><custom-block s="go to %l"><block s="reportListItem"><block var="Wins"/><custom-block s="TicTacToe wins"></custom-block></block></custom-block><block s="goToLayer"><l><option>front</option></l></block><block s="setSize"><l>20</l></block><block s="doSwitchToCostume"><block s="reportPenTrailsAsCostume"></block></block><block s="doSayFor"><l>Press r to play again</l><l>2</l></block></script><script x="21.99999999999997" y="504.6666666666672"><custom-block s="TicTacToe wins"></custom-block></script><script x="586" y="360.8999999999997"><block s="doSwitchToCostume"><l><option>Turtle</option></l></block></script><script x="603" y="153.9999999999999"><block s="receiveKey"><l><option>r</option></l><list></list></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="up"></block><block s="gotoXY"><l>-210</l><l>-150</l></block></script><script x="604" y="590.0000000000001"><block s="reportEquals"><l></l><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block></script><script x="388" y="660.0000000000001"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><list><block s="reportListItem"><l>1</l><custom-block s="TicTacToe wins"></custom-block></block></list></custom-block></script><script x="660.2080078125" y="627.0000000000001"><block var="Wins"/></script><script x="61.999999999999886" y="319.2666666666665"><block s="receiveMessage"><l>Tie</l><list></list></block><block s="doSayFor"><l>Tie Game.</l><l>2</l></block></script></scripts></sprite></sprites></stage><variables><variable name="X&apos;s turn?"><bool>false</bool></variable><variable name="board"><list struct="atomic" id="1274">X,O,X,O,X,O,X,Empty,Empty</list></variable><variable name="number"><l>9</l></variable><variable name="block positions"><list id="1275"><item><list struct="atomic" id="1276">0,0</list></item><item><list struct="atomic" id="1277">0,-50</list></item><item><list struct="atomic" id="1278">0,-100</list></item><item><list struct="atomic" id="1279">50,0</list></item><item><list struct="atomic" id="1280">50,-50</list></item><item><list struct="atomic" id="1281">50,-100</list></item><item><list struct="atomic" id="1282">100,0</list></item><item><list struct="atomic" id="1283">100,-50</list></item><item><list struct="atomic" id="1284">100,-100</list></item></list></variable><variable name="Wins"><l>8</l></variable></variables></scene></scenes></project><media name="L13 Tic-Tac-Toe" app="Snap! 7, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAASZJREFUaEPtm7ENgzAQRX82yAZJSZdIVFQOldfICEgMgBkAiXVcEVdUSCkpyQaMEDlCSAlJ6rP1meDe/f90jdkBMABOAM6I87vvFkgF4BInI26fkJPWGlmWHUMG7vt+stZ6BM/xDqm1ntq2RZIkQUOO4zgVRQFr7RbSGIOqqkIOcZ29rmt4nk2ShAwsXyZJJwOqLOvKurKusjZAJ+mkrEb+nYZ1ZV1ZV1kboJN0UlYjeULoJJ2kk7I2QCfppKxG8k7SSTpJJ2VtgE7SSVmN5J2kk3SSTsraAJ2kk7IayTtJJ+lkDE4qpeamaZCm6T4gns2owzDMZVnCOec5Ns+zZ6UU8jwPGrLrutk55+G/QoYc4K/ZX0lelwfphxgJATw8ZKy/SqyZPQG3g6gCsLPvogAAAABJRU5ErkJggg==" mediaID="Square_cst_Empty"/><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAAAAXNSR0IArs4c6QAAA8BJREFUaEPd271P20AYBvCHViIMlWDokC0ZKtaEvZBEXdIJ+AuAjRHUhQ3YGGFggSHJxkbGLhUMjFUFggkxwMZQVbABUqXqcTnLOeyzfR92nJNYYgf7d+/de8fdMYbRLFMAHgRtDMAWgBqA+oh43wEoA3gB8AfAL4FsAGiOCFJmnMrIl1KphPX19fGJiYlCmZ+entDtdnF/fx+L9G6o1+s4OTnB1BSbdjHK4uIi+v2+/7LT09O/r6+vPwJ4E0n/piJBV1ZWvCiK0ul0cHd3h60tphsJubCwMFAbRYDKwM3NTQ+3vb0djuTFSqUCflGUYYbKwKWlJT+iSiRrgqEfdqgKyADFInlTGJRtnZHNu8QBEyPDoMy2zLp5QpMAUyG91HR6Ciakx8dHL4B5QuXWFeyDcutK1FyDXzo/P0ez2cwVmgaYOpICmydUBjYaDa+FqUrqSOYJlYG1Ws0Dxs3GtJHEZhlRXaB2c826j5oArSBdR9QUaA3pCsru0Gq18PDw/w/7pH3QeAhRZTGbfdQW0GokbWZdGTg5OekluWq1qjWLNMquUU80iWgYkMOEyfTRCTKqj3JSz2mhqnKCfZARNAU6aa6q4YXXCF1eXn7jdBFB8RBnkRQPuL299aJ3cXHhw2Qo75mZmfGzqK0IZobkgzgEcFIfBuU1NlFGksU20HlzDbbJMOj+/j4ODw+dAjNFRkU0WBHHx8fKxKQ1fiRd/tD95WHfY0RnZ2dxdXU1cDkqIdl4tvPEI78kkXNzc7i8vBxNpJxk5ApwFc1MI8lhQmRRApl4Dg4OlMNLoZpr2PI9JwWq4cUGMLPsGgUUCNdQ58016dqoS6hTZFKgKqLck+F2hUlxhkwLVEHZd5l5dYsTpC4wCF1bW0Ov1/NdJlDrSLEfKN5OtXwfFxnCbECtItMu38ched0G1BrSBVBUginUCtLG2mhcVE2gxsgsgKYRNUJmCTSBaiPzAOpCtZBcJuS6jCi6y/dx/VB1PU0fTY20uXxvgkwzvKRCykCe8+FncZugphjTiCZGulz8Na0EuelynZdzXVH5iZDDDIxKRsHTY7HIIgAFdHd3l0dX/YYhoHt7e9Fn6+bn5wc2QV2sbps2Vfn7YafH2u02dnZ2eOvgUdCNjQ0cHR2B+xQsRQAKsAwtl8vigO8gslQq/X1+fn5fNGAU9PXzM3E8+wuAz8FmsLq6CtZG0QrzSfAEM/eeBPIbgA9FAyV8359EcneUW8FfAYwDOANwk/AXDPNtn15f7geR4l8l+CF/vg/zm+u82z+7cTdw3z7H+AAAAABJRU5ErkJggg==" mediaID="Square_cst_X"/><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAABF9JREFUaEPtmos1LEEQhnsiQARsBIgAEbARIAJEsLsRIAI2AkRgNwJEgAgQwdzzzbm1p7bNo7rnsWupc5z7MNPdf/1Vf1dXT+KcGzrn9tzq2jT5D3Kwuhjd6FeCHKVp+uNZTZJk5JwTHPNMpmm6MlGbJARpZt2BfHt7c+/v79msm5ubbmtrq1WHtg5yOp26+/t7N5lM3PPzcymYnZ0dt7+/746OjtzeXnMi3wpImBqNRhm4z8/PKJbW19czsIPBoDbTjYIE0PX1tRsO2W6LTYeoDt2iNxjv7OzMATzGGgN5e3vrLi4uvjEHIBiRMCxbpIQ1f0rOyvMAvLy8dCcnJ8E4GwEJuKurq7nJySkYAFyMkcO8T05rOz8/z8CGWC2QhOfp6WmWe2IwB2DYa8IYG2CaWca+ubkxh280SAAeHBzMKebx8XEGMDZ3ipzCXAAdj8ezR1Dix8dH01zRIGGQPBRDBasEpy6zjI9qi5GfMFplUSD9yZgoRhCqFpf3exyLg0OcGwySHOn3+7NJkHZfdGIWH/IOoctWJXZ3d1eqAcEge72eY2/DDg8P50QnZKF1n0V8Hh4esmEoC19fXwuHDAIJY2wX2NraWga2aZGxgkeMAPf19ZW9wrYCw3lmBsmgsChlWtmg1oXWfU47HWfDZp7TzSD1gOyFErJ1F1r3fdiUPbTI8WaQu7u7sz2xSzWtcoJWW6osKiXfTCAJ0Y2Njdm7Hx8fC8tFH4BlbSaQFm9VebzN31P9vLy8ZFPkRZkJJBu9lFTLIDi+w7ReUFrqSoxnTSA5SchpgHox9mTRFpvkIXU0lpeXfyDF84iO7I/LJDqyPi0+7JOsUZuJSfWQW9ZWZdka/0AK5Vqin56eHP9eJqPVSbGCbW9vf2t9mphcIXUdzl346NzTIKvObotgWJ9xo7cQ3QnI22wXAUzPqYuVvDaMCtdiJnXMVx1QFwFYb3F5mmHKSRbO/iMH1GUSH01A0RHQDFKHxDKFrGVdZpC6PoRZTuFtX7lVhT4Hd7oVYkV1tRkkA2mV5e8MukijKJdDctGB2XwKESC+5xa5nfj917LICmISsDoHECPY7LoCQmxgUQ4NVRoRDJKBCVU5iZOXqG1XrUm/a0gZR8iWzR8MEjbxJEBlSwm5fKmTw6QL3Xu5lqf3C8CqSIoCyUJ9tW07dP0QZQ3WLkU0SCbxkx+gcvVdhzH/Xe49/O54SFu0Fsi80OX/CB8aXnV7QUQL1xL6qxFriAZ3BqpYIVe4gBExkucBiRqzh1kLB8aiaUaU+I1iRIYTh3UsWUdtJmUgVI/WID8iSNo5sCtX7CxSFgoouXIAQN63PrBHuPITo+KNgdRg/avvqkgo+30TV/SNg9TVkXyyIveIVrDce8onMaGhmTdHayD1ZISy/uxMh6gOXfnsLCYkyxzYCUgrg209Z+oMtDV5V+P+Nia/fZ49SdM07puxrigyzJMkCbeyguN3foNu8NOPeyRrSf748Kxy+z+VzUmjGHSyOAAAAABJRU5ErkJggg==" mediaID="Square_cst_O"/><costume name="Costume" center-x="101" center-y="1" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAABmCAYAAAA53+RiAAAAAXNSR0IArs4c6QAAAsVJREFUeF7t3O1x2zAMh3Fohd55hGaYtpmpua6UpsMkI/TSDdr0lMur4xdQJECQePyZlnj48U+ZksxF+ISqwJ8L+fLpVn4toXqVvDMryl+Rn/Igl8AEGQxvUXZ3cgNMAJh9lLVLwHSG+f1Zvsoi1+v0tSbluTvAdIQ5hkJigqIA0wnmVFKYygKjkBhnHE1SSExgFBLjhFOSFBITGIXEGONsSQqJcUBZFrl+2FvRa0/Lyl9bqYJ2a1JqUJjKCoqtbfo0fa237r+9vfel/T5TWWmlFO1boZAYRbG1TVqiAKOt+pl2rVGAaQBjgQJMJYwVCjAVMJYowGyEsUYBZgOMBwowhTBeKMAUwHiiAKOE8UYBRgHTAwWYDit6xVh4bMJt/yOV6pWU5+4AcwCmNwqJCYoCzB5MhKQwlQVGITFPOJGSQmICo6RPTMSkpE9MZJS0iYmOkhJmBJR0MKOgpIIZCSUNzGgoKWBGRJkeZlSUqWFGRpkWZnSUKWFmQJkOZhaUqWDuL+T7P5Gr2n9yaV+WsG43xTP/l/2+RH7sbuXKumgexx8e5tAmbB6Fsz7H0DCzogx9janZ3MB6tLc4/pCJmR1lyMRkQBkOJgvKUDCZUIaByYYyBExGlPAwWVFCw2RGCQuTHSUkzIpSuwlbi5V372OEWvmD8jocwsDM9JCrRdpCwIDykbI7DCiH89UVBpTjk143GFBOX4m6wIBy/ueBOwwo51HcF5ig6FBcYUDRo7jBgFKG4gIDSjmKOQwo21BMYUDZjmIGA0odigkMKPUozWFAaYPSFAaUdijNYEBpi9IEBpT2KNUwoNigVMGAYoeyGQYUW5RNMKDYoxTDgOKDUgQDih+KGgYUXxQVDCj+KGdhQOmDchIGlH4oR2FA6YtyEAaU/igfYECJgfIOBpQ4KC8woMRCeYQBJR7Ku8Ts7uQmZhdz9uo/P4AC4AvUrx0AAAAASUVORK5CYII=" mediaID="4"/></media></snapdata>