<blocksapp="Snap! 4.1, http://snap.berkeley.edu"version="1"><block-definitions="id %'arg'"type="reporter"category="operators"><header></header><code></code><inputs><inputtype="%n"></input></inputs><script><blocks="doReport"><blockvar="arg"/></block></script></block-definition><block-definitions="if %'test' then %'true' else %'false'"type="reporter"category="control"><header></header><code></code><inputs><inputtype="%b"></input><inputtype="%anyUE"></input><inputtype="%anyUE"></input></inputs><script><blocks="doIf"><blockvar="test"/><script><blocks="doReport"><blocks="evaluate"><blockvar="true"/><list></list></block></block></script></block><blocks="doReport"><blocks="evaluate"><blockvar="false"/><list></list></block></block></script></block-definition><block-definitions="-- %'n'"type="reporter"category="variables"><header></header><code></code><inputs><inputtype="%anyUE"readonly="true"></input></inputs><script><blocks="doRun"><blocks="reifyScript"><script><blocks="doChangeVar"><l></l><l>-1</l></block></script><list></list></block><list><blockvar="n"/></list></block><blocks="doReport"><blocks="evaluate"><blockvar="n"/><list></list></block></block></script></block-definition><block-definitions="animate setter %'setter' getter %'getter' delta %'delta' over %'duration' secs easing %'easing'"type="command"category="control"><header></header><code></code><inputs><inputtype="%cmdRing"></input><inputtype="%repRing"></input><inputtype="%n">50</input><inputtype="%n">1</input><inputtype="%repRing"></input></inputs><script><blocks="doDeclareVariables"><list><l>end time</l><l>destination</l></list></block><blocks="doSetVar"><l>end time</l><blocks="reportSum"><blocks="reportDate"><l><option>time in milliseconds</option></l></block><blocks="reportProduct"><blockvar="duration"/><l>1000</l></block></block></block><blocks="doSetVar"><l>destination</l><blocks="reportSum"><blocks="evaluate"><blockvar="getter"/><list></list></block><blockvar="delta"/></block></block><blocks="doUntil"><blocks="reportGreaterThan"><blocks="reportDate"><l><option>time in milliseconds</option></l></block><blockvar="end time"/></block><script><blocks="doRun"><blockvar="setter"/><list><blocks="reportDifference"><blockvar="destination"/><blocks="reportProduct"><blockvar="delta"/><blocks="evaluate"><blockvar="easing"/><list><blocks="reportQuotient"><blocks="reportDifference"><blockvar="end time"/><blocks="reportDate"><l><option>time in milliseconds</option></l></block></block><blocks="reportProduct"><blockvar="duration"/><l>1000</l></block></block></list></block></block></block></list></block></script></block><blocks="doRun"><blockvar="setter"/><list><blockvar="destination"/></list></block></script></block-definition><block-definitions="%'a' raised to %'b'"type="reporter"category="operators"><header></header><code></code><inputs><inputtype="%n"></input><inputtype="%n"></input></inputs><script><blocks="doReport"><blocks="reportMonadic"><l><option>e^</option></l><blocks="reportProduct"><blockvar="b"/><blocks="reportMonadic"><l><option>ln</option></l><blockvar="a"/></block></block></block></block></script></block-definition><block-definitions="PI"type="reporter"category="operators"><header></header><code></code><inputs></inputs><script><blocks="doReport"><l>3.141592653589793</l></block></script></block-definition><block-definitions="degrees %'radians'"type="reporter"category="operators"><header></header><code></code><inputs><inputtype="%n">0.5</input></inputs><script><blocks="doReport"><blocks="reportQuotient"><blocks="reportProduct"><blockvar="radians"/><l>180</l></block><custom-blocks="PI"></custom-block></block></block></script></block-definition><block-definitions="find first in %'list' such that %'test'"type="reporter"category="lists"><header></header><code></code><inputs><inputtype="%l"></input><inputtype="%predRing
elastic</options></input></inputs><script><blocks="doDeclareVariables"><list><l>destX</l><l>destY</l><l>end time</l><l>deltaX</l><l>deltaY</l><l>func</l></list></block><blocks="forward"><blockvar="steps"/></block><blocks="doSetVar"><l>destX</l><blocks="xPosition"></block></block><blocks="doSetVar"><l>destY</l><blocks="yPosition"></block></block><blocks="forward"><blocks="reportProduct"><blockvar="steps"/><l>-1</l></block></block><blocks="doSetVar"><l>end time</l><blocks="reportSum"><blocks="reportDate"><l><option>time in milliseconds</option></l></block><blocks="reportProduct"><blockvar="duration"/><l>1000</l></block></block></block><blocks="doSetVar"><l>deltaX</l><blocks="reportDifference"><blockvar="destX"/><blocks="xPosition"></block></block></block><blocks="doSetVar"><l>deltaY</l><blocks="reportDifference"><blockvar="destY"/><blocks="yPosition"></block></block></block><blocks="doIfElse"><blocks="reportIsA"><blockvar="easing"/><l><option>reporter</option></l></block><script><blocks="doSetVar"><l>func</l><blockvar="easing"/></block></script><script><blocks="doSetVar"><l>func</l><custom-blocks="easing %txt"><blockvar="easing"/></custom-block></block></script></block><blocks="doUntil"><blocks="reportGreaterThan"><blocks="reportDate"><l><option>time in milliseconds</option></l></block><blockvar="end time"/></block><script><blocks="setXPosition"><blocks="reportDifference"><blockvar="destX"/><blocks="reportProduct"><blockvar="deltaX"/><blocks="evaluate"><blockvar="func"/><list><blocks="reportQuotient"><blocks="reportDifference"><blockvar="end time"/><blocks="reportDate"><l><option>time in milliseconds</option></l></block></block><blocks="reportProduct"><blockvar="duration"/><l>1000</l></block></block></list></block></block></block></block><blocks="setYPosition"><blocks="reportDifference"><blockvar="destY"/><blocks="reportProduct"><blockvar="deltaY"/><blocks="evaluate"><blockvar="func"/><list><blocks="reportQuotient"><blocks="reportDifference"><blockvar="end time"/><blocks="reportDate"><l><option>time in milliseconds</option></l></block></block><blocks="reportProduct"><blockvar="duration"/><l>1000</l></block></block></list></block></block></block></block></script></block><blocks="gotoXY"><blockvar="destX"/><blockvar="destY"/></block></script></block-definition><block-definitions="animate %'attribute' by %'delta' in %'duration' secs easing %'easing'"type="command"category="motion"><header></header><code></code><inputs><inputtype="%s"readonly="true">x position<options>x position