<snapdata remixID="8596110"><project name="U1L5 optional-project-modeling-art.xml" app="Snap! 5.1, http://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAADLklEQVR4Xu3XQUojYRAF4A6YlXoDIRfJKbLyjHoMbxJvEMhKpAcDDrOYVWfxCt7ncuDvqnrvY5zZreu6Ln4kEEpgB2AoeWNvCQAIQjQBAKPxGw4gA9EEAIzGbziADEQTADAav+EAMhBNAMBo/IYDyEA0AQCj8RsOIAPRBACMxm84gAxEEwAwGr/hADIQTQDAaPyGA8hANAEAo/EbDiAD0QQAjMZvOIAMRBMAMBq/4QAyEE0AwGj8hgPIQDQBAKPxGw4gA9EEAIzGbziADEQTADAav+EAMhBNAMBo/IYDyEA0AQCj8RsOIAPRBACMxm84gAxEEwAwGr/hADIQTQDAaPyGA8hANAEAo/EbDiAD0QQAjMZvOIAMRBMAMBq/4QAyEE0AwGj8hgPIQDQBAKPxGw4gA9EEAIzGbziADEQTADAav+EAMhBNAMBo/IYDyEA0AQCj8RsOIAPRBAC8I/7j8bjsdrvl4+Pjjq90PwXwjv73+/3t9dfX1x1f6X4K4B39//zt9/OzrusdX+l+CuDG/s/n83I4HG6vPz8/l5eXl41f6n4G4Mb+n56eluv1env9/Py8XC6XjV/qfgbgxv5/f/3+PvdreFuQAG7L7fa/339/ANwWJIAbcnt/f19eX1+X7+/v2+uHh4fl7e1tOZ1OG77W/QTADf0/Pj7+/fff7/P//dmGT9c9AbCu8lkHAzirj7ptAKyrfNbBAM7qo24bAOsqn3UwgLP6qNsGwLrKZx0M4Kw+6rYBsK7yWQcDOKuPum0ArKt81sEAzuqjbhsA6yqfdTCAs/qo2wbAuspnHQzgrD7qtgGwrvJZBwM4q4+6bQCsq3zWwQDO6qNuGwDrKp91MICz+qjbBsC6ymcdDOCsPuq2AbCu8lkHAzirj7ptAKyrfNbBAM7qo24bAOsqn3UwgLP6qNsGwLrKZx0M4Kw+6rYBsK7yWQcDOKuPum0ArKt81sEAzuqjbhsA6yqfdTCAs/qo2wbAuspnHQzgrD7qtgGwrvJZBwM4q4+6bQCsq3zWwQDO6qNuGwDrKp91MICz+qjbBsC6ymcdDOCsPuq2AbCu8lkHAzirj7pt/gAcpgi3ninlCAAAAABJRU5ErkJggg==</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" volume="100" pan="0" lines="flat" ternary="true" codify="false" inheritance="false" sublistIDs="false" scheduled="true" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><watcher scope="Sprite" s="xPosition" style="normal" x="1.3454120971300654" y="1.3454120971302928" color="74,108,212" hidden="true"/><watcher scope="Sprite" s="direction" style="normal" x="1.3454120971300654" y="4.1707777701863264" color="74,108,212" hidden="true"/><watcher scope="Sprite" s="yPosition" style="normal" x="1.479953306843754" y="4.978025297546928" color="74,108,212" hidden="true"/><sprite name="Sprite" idx="1" x="0" y="0" heading="0" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="0,0,0,1" pen="tip" id="11"><costumes><list struct="atomic" id="12"></list></costumes><sounds><list struct="atomic" id="13"></list></sounds><blocks></blocks><variables></variables><scripts><script x="10" y="10"><block s="receiveKey"><l><option>space</option></l><comment w="272.0000000000001" collapsed="true">SCRIPT 0: a &quot;cleanup&quot; script you might find useful.</comment></block><block s="doStopThis"><l><option>all but this script</option></l></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="setHeading"><l>0</l></block><block s="clear"></block><block s="down"></block></script><script x="10" y="159.16666666666646"><custom-block s="set flag %s to %b"><l>Flat line ends</l><l><bool>true</bool></l><comment w="267.16666666666663" collapsed="false">SCRIPT 1: Experiment with the two numerical inputs and with changing the √ to an X in the FLAT LINE ENDS flag.</comment></custom-block><block s="setSize"><l>30</l></block><block s="forward"><l>100</l></block></script><script x="10" y="239.00000000000023"><custom-block s="set flag %s to %b"><l>Flat line ends</l><l><bool>false</bool></l><comment w="290.16666666666674" collapsed="false">SCRIPT 2: Look inside TUNNEL and figure out why changing √ to X has the impact that it does</comment></custom-block><custom-block s="tunnel, size: %n"><l>.5</l></custom-block></script><script x="10" y="575.9999999999999"><custom-block s="set flag %s to %b"><l>Flat line ends</l><l><bool>false</bool></l></custom-block><block s="setHeading"><l>35</l></block><custom-block s="sphere, steps: %n color: %n size: %n"><l>40</l><l>0</l><l>200</l><comment w="195.33333333333334" collapsed="false">SCRIPT 4: SPHERE is a bit like TUNNEL with inputs to give you more control.&#xD;Click, then experiment with the inputs.</comment></custom-block></script><comment x="10" y="697.1666666666666" w="516.6666666666666" collapsed="true">Now, invent some artwork of your own. </comment><script x="10" y="317.2000000000004"><block s="setPenHSVA"><l><option>brightness</option></l><l>100</l></block><custom-block s="set flag %s to %b"><l>Flat line ends</l><l><bool>true</bool></l><comment w="236.3333343333333" collapsed="true">SCRIPT 3: Click. Then modify. Experiment.</comment></custom-block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>7</l><l>1</l><script><block s="setPenHSVA"><l><option>hue</option></l><block s="reportProduct"><block s="reportRandom"><l>1</l><l>10</l></block><l>10</l></block></block><block s="setSize"><block s="reportProduct"><block var="i"/><l>50</l></block></block><block s="forward"><block s="reportProduct"><block var="i"/><l>50</l></block></block><block s="forward"><block s="reportProduct"><block var="i"/><l>-50</l></block></block><block s="up"></block><block s="forward"><l>10</l></block><block s="down"></block></script></custom-block></script><script x="44.666666666666515" y="750.499999"><block s="receiveGo"></block><block s="doRepeat"><l>30</l><script><block s="gotoXY"><l>0</l><l>0</l></block><block s="turn"><l>290</l></block><custom-block s="tunnel, size: %n"><l>0.5</l></custom-block></script></block></script></scripts></sprite></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="tunnel, size: %&apos;steps&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="setPenHSVA"><l><option>brightness</option></l><l>100</l><comment w="145" collapsed="true">brightest possible</comment></block><block s="setPenHSVA"><l><option>hue</option></l><l>56</l><comment w="115.83333333333334" collapsed="true">happens to be red</comment></block><block s="setSize"><l>300</l></block><block s="doRepeat"><l>10</l><script><block s="down"></block><block s="forward"><block var="steps"/><comment w="254.16666666666669" collapsed="true">does what your first experiments would predict</comment></block><block s="up"></block><block s="forward"><l>10</l><comment w="216.66666666666669" collapsed="true">move to a new location without drawing</comment></block><block s="changePenHSVA"><l><option>brightness</option></l><l>-17</l><comment w="231.66666666666669" collapsed="false">change things: here, to make a tunnel, we get darker and smaller. For other purposes, we could change color and get larger, or....</comment></block><block s="changeSize"><l>-40</l></block></script></block></script></block-definition><block-definition s="sphere, steps: %&apos;steps&apos; color: %&apos;color&apos; size: %&apos;size&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="setPenHSVA"><l><option>brightness</option></l><l>10</l><comment w="266" collapsed="true">This dark shade makes any color look almost black</comment></block><block s="setPenHSVA"><l><option>hue</option></l><block var="color"/></block><block s="setSize"><block var="size"/></block><block s="doRepeat"><block var="steps"/><script><block s="down"></block><block s="forward"><l>.5</l></block><block s="up"></block><block s="forward"><block s="reportQuotient"><l>65</l><block var="steps"/></block><comment w="151.33333333333334" collapsed="true">Try 20 or 200 instead of 65.</comment></block><block s="changePenHSVA"><l><option>brightness</option></l><block s="reportQuotient"><l>100</l><block var="steps"/><comment w="176.66666666666666" collapsed="true">Lighter shade shows more color.</comment></block></block><block s="changeSize"><block s="reportQuotient"><l>-240</l><block var="steps"/></block></block></script></block></script><scripts><comment x="162" y="125.46666666666665" w="265.3333333333333" collapsed="false">Experiment: start with a /light/ shade and get /darker/.</comment></scripts></block-definition><block-definition s="flat line ends %&apos;tf&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>tf</l></list><l>SpriteMorph.prototype.useFlatLineEnds = tf</l></block><list><block var="tf"/></list></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="setting %&apos;which&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>Project notes&#xD;Project name&#xD;User&#xD;Presentation mode&#xD;Language&#xD;Zoom blocks&#xD;Stage size&#xD;Stage scale&#xD;Retina display support&#xD;Long form input dialog&#xD;Plain prototype labels&#xD;Input sliders&#xD;Execute on slider change&#xD;Clicking sound&#xD;Turbo mode&#xD;Flat design&#xD;Keyboard editing&#xD;Table support&#xD;Table lines&#xD;Visible stepping&#xD;Thread safe scripts&#xD;Prefer smooth animations&#xD;Flat line ends&#xD;Codification support&#xD;Inheritance support</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>which</l></list><l>var   stage = this.parentThatIsA(StageMorph),&#xD;        ide = stage.parentThatIsA(IDE_Morph),&#xD;        world = stage.parentThatIsA(WorldMorph);&#xD;&#xD;switch (which) {&#xD;    case &apos;Project notes&apos;:&#xD;        return ide.projectNotes;&#xD;    case &apos;Project name&apos;:&#xD;        return ide.projectName;&#xD;    case &apos;User&apos;:&#xD;        return SnapCloud.username;&#xD;    case &apos;Presentation mode&apos;:&#xD;        return ide.isAppMode;&#xD;    case &apos;Language&apos;:&#xD;        return SnapTranslator.language;&#xD;    case &apos;Zoom blocks&apos;:&#xD;        return SyntaxElementMorph.prototype.scale;&#xD;    case &apos;Stage size&apos;:&#xD;        return new List([StageMorph.prototype.dimensions.x,&#xD;                                   StageMorph.prototype.dimensions.y]);&#xD;    case &apos;Stage scale&apos;:&#xD;       return stage.scale;&#xD;    case &apos;Retina display support&apos;:&#xD;        return isRetinaEnabled();&#xD;    case &apos;Long form input dialog&apos;:&#xD;        return InputSlotDialogMorph.prototype.isLaunchingExpanded;&#xD;    case &apos;Plain prototype labels&apos;:&#xD;        return BlockLabelPlaceHolderMorph.prototype.plainLabel;&#xD;    case &apos;Input sliders&apos;:&#xD;        return MorphicPreferences.useSliderForInput;&#xD;    case &apos;Execute on slider change&apos;:&#xD;        return ArgMorph.prototype.executeOnSliderEdit;&#xD;    case &apos;Clicking sound&apos;:&#xD;        return !!BlockMorph.prototype.snapSound;&#xD;    case &apos;Turbo mode&apos;:&#xD;        return stage.isFastTracked;&#xD;    case &apos;Flat design&apos;:&#xD;        return MorphicPreferences.isFlat;&#xD;    case &apos;Keyboard editing&apos;:&#xD;        return ScriptsMorph.prototype.enableKeyboard;&#xD;    case &apos;Table support&apos;:&#xD;        return List.prototype.enableTables;&#xD;    case &apos;Table lines&apos;:&#xD;        return TableMorph.prototype.highContrast;&#xD;    case &apos;Visible stepping&apos;:&#xD;        return Process.prototype.enableSingleStepping;&#xD;    case &apos;Thread safe scripts&apos;:&#xD;        return stage.isThreadSafe;&#xD;    case &apos;Prefer smooth animations&apos;:&#xD;        return StageMorph.prototype.frameRate &gt; 0;&#xD;    case &apos;Flat line ends&apos;:&#xD;        return SpriteMorph.prototype.useFlatLineEnds;&#xD;    case &apos;Codification support&apos;:&#xD;        return StageMorph.prototype.enableCodeMapping;&#xD;    case &apos;Inheritance support&apos;:&#xD;        return StageMorph.prototype.enableInheritance;&#xD;    default: return which;&#xD;}</l></block><list><block var="which"/></list></block></block></script></block-definition><block-definition s="set flag %&apos;which&apos; to %&apos;tf&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>Presentation mode&#xD;Retina display support&#xD;Long form input dialog&#xD;Plain prototype labels&#xD;Input sliders&#xD;Execute on slider change&#xD;Clicking sound&#xD;Turbo mode&#xD;Flat design&#xD;Keyboard editing&#xD;Table support&#xD;Table lines&#xD;Visible stepping&#xD;Thread safe scripts&#xD;Prefer smooth animations&#xD;Flat line ends&#xD;Codification support&#xD;Inheritance support</options></input><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>tf</l></list><l>var   stage = this.parentThatIsA(StageMorph),&#xD;        ide = stage.parentThatIsA(IDE_Morph),&#xD;        world = stage.parentThatIsA(WorldMorph);&#xD;&#xD;if (tf != !!tf) return;&#xD;&#xD;try{&#xD;ide.savingPreferences = false;&#xD;&#xD;switch (which) {&#xD;    case &apos;Presentation mode&apos;:&#xD;        if (tf != ide.isAppMode) ide.toggleAppMode();&#xD;        break;&#xD;    case &apos;Retina display support&apos;:&#xD;        if (tf != isRetinaEnabled()) ide.toggleRetina();&#xD;        break;&#xD;    case &apos;Long form input dialog&apos;:&#xD;        if (tf != InputSlotDialogMorph.prototype.isLaunchingExpanded)&#xD;            ide.toggleLongFormInputDialog();&#xD;        break;&#xD;    case &apos;Plain prototype labels&apos;:&#xD;        if (tf != BlockLabelPlaceHolderMorph.prototype.plainLabel)&#xD;            ide.togglePlainPrototypeLabels();&#xD;        break;&#xD;    case &apos;Input sliders&apos;:&#xD;        MorphicPreferences.useSliderForInput = tf;&#xD;        break;&#xD;    case &apos;Execute on slider change&apos;:&#xD;        ArgMorph.prototype.executeOnSliderEdit = tf;&#xD;        break;&#xD;    case &apos;Clicking sound&apos;:&#xD;        if (tf != !!BlockMorph.prototype.snapSound)&#xD;            BlockMorph.prototype.toggleSnapSound();&#xD;        break;&#xD;    case &apos;Turbo mode&apos;:&#xD;        if (tf != stage.isFastTracked)&#xD;            ide.toggleFastTracking();&#xD;        break;&#xD;    case &apos;Flat design&apos;:&#xD;        if (tf == MorphicPreferences.isFlat) break;&#xD;        if (tf)&#xD;            ide.flatDesign();&#xD;        else&#xD;            ide.defaultDesign();&#xD;        break;&#xD;    case &apos;Keyboard editing&apos;:&#xD;            ScriptsMorph.prototype.enableKeyboard = tf;&#xD;        break;&#xD;    case &apos;Table support&apos;:&#xD;            List.prototype.enableTables = tf;&#xD;        break;&#xD;    case &apos;Table lines&apos;:&#xD;                TableMorph.prototype.highContrast = tf;&#xD;        break;&#xD;    case &apos;Visible stepping&apos;:&#xD;        if (tf != Process.prototype.enableSingleStepping)&#xD;            ide.toggleSingleStepping();&#xD;        break;&#xD;    case &apos;Thread safe scripts&apos;:&#xD;        stage.isThreadSafe = tf;&#xD;        break;&#xD;    case &apos;Prefer smooth animations&apos;:&#xD;        if (tf != (StageMorph.prototype.frameRate &gt; 0))&#xD;            ide.toggleVariableFrameRate();&#xD;        break;&#xD;    case &apos;Flat line ends&apos;:&#xD;        SpriteMorph.prototype.useFlatLineEnds = tf;&#xD;        break;&#xD;    case &apos;Codification support&apos;:&#xD;        if (tf != StageMorph.prototype.enableCodeMapping) {&#xD;            StageMorph.prototype.enableCodeMapping = tf;&#xD;            ide.currentSprite.blocksCache.variables = null;&#xD;            ide.currentSprite.paletteCache.variables = null;&#xD;            ide.refreshPalette();&#xD;        }&#xD;        break;&#xD;    case &apos;Inheritance support&apos;:&#xD;        if (tf != StageMorph.prototype.enableInheritance) {&#xD;            StageMorph.prototype.enableInheritance = tf;&#xD;            ide.currentSprite.blocksCache.variables = null;&#xD;            ide.currentSprite.paletteCache.variables = null;&#xD;            ide.refreshPalette();&#xD;        }&#xD;        break;&#xD;};&#xD;}&#xD;finally {&#xD;ide.savingPreferences = false;&#xD;};&#xD;</l></block><list><block var="which"/><block var="tf"/></list></block></script></block-definition><block-definition s="set value %&apos;which&apos; to %&apos;value&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>Project notes&#xD;Project name&#xD;Language&#xD;Zoom blocks&#xD;Stage size&#xD;Stage scale</options></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>value</l></list><l>var   stage = this.parentThatIsA(StageMorph),&#xD;        ide = stage.parentThatIsA(IDE_Morph),&#xD;        world = stage.parentThatIsA(WorldMorph);&#xD;&#xD;try {&#xD;ide.savingPreferences = false;&#xD;&#xD;switch (which) {&#xD;    case &apos;Project notes&apos;:&#xD;        ide.projectNotes = value;&#xD;        break;&#xD;    case &apos;Project name&apos;:&#xD;        ide.setProjectName(value);&#xD;        break;&#xD;    case &apos;Language&apos;:&#xD;        ide.setLanguage(value);&#xD;        break;&#xD;    case &apos;Zoom blocks&apos;:&#xD;        if (!isNaN(value)) ide.setBlocksScale(Math.min(value, 12));&#xD;        break;&#xD;    case &apos;Stage size&apos;:&#xD;        if ((value instanceof List) &amp;&amp; value.length()==2&#xD;                       &amp;&amp; !isNaN(value.at(1)) &amp;&amp; !isNaN(value.at(2)))&#xD;            ide.setStageExtent(new Point(value.at(1), value.at(2)));&#xD;        break;&#xD;    case &apos;Stage scale&apos;:&#xD;        ide.toggleStageSize(value != 1, Math.max(0.1, value));&#xD;        break;&#xD;};&#xD;}&#xD;finally {ide.savingPreferences = true;&#xD;};</l></block><list><block var="which"/><block var="value"/></list></block></script></block-definition><block-definition s="Draw Circle" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRepeat"><l>24</l><script><block s="setColor"><color>0,39,184,1</color></block><block s="setPenHSVA"><l><option>brightness</option></l><l>100</l></block><custom-block s="set flag %s to %b"><l>Flat line ends</l><l><bool>true</bool></l><comment w="236.3333343333333" collapsed="true">SCRIPT 3: Click. Then modify. Experiment.</comment></custom-block><block s="doRepeat"><l>1</l><script><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>7</l><l>1</l><script><block s="setPenHSVA"><l><option>hue</option></l><block s="reportProduct"><block s="reportRandom"><l>1</l><l>10</l></block><l>10</l></block></block><block s="setSize"><block s="reportProduct"><block var="i"/><l>10</l></block></block><block s="turn"><l>15</l></block><block s="forward"><block s="reportProduct"><block var="i"/><l>20</l></block></block><block s="forward"><block s="reportProduct"><block var="i"/><l>-20</l></block></block><block s="up"></block><block s="forward"><l>5</l></block><block s="down"></block></script></custom-block></script></block></script></block></script></block-definition></blocks><variables></variables></project><media name="U1L5 optional-project-modeling-art.xml" app="Snap! 5.1, http://snap.berkeley.edu" version="1"></media></snapdata>