<snapdata remixID="13523259"><project name="Digi4all Randomly appearing " app="Snap! 10, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Digi4all Randomly appearing "><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="%&apos;attribute&apos; of sound %&apos;sound&apos;" type="reporter" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">duration<options>name&#xD;duration&#xD;length&#xD;number of channels&#xD;sample rate&#xD;samples</options></input><input type="%obj"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="attribute"/><l>name</l></list></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l></list><l>return sound.name;</l></block><list><block var="sound"/></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="attribute"/><l>samples</l></list></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>audioBuffer</l></list><l>var result, i;&#xD;if (audioBuffer.numberOfChannels &gt; 1) {&#xD;    result = new List();&#xD;    for (i = 0; i &lt; audioBuffer.numberOfChannels; i += 1) {&#xD;        result.add(new List(audioBuffer.getChannelData(i)));&#xD;    }&#xD;    return result;&#xD;}&#xD;return new List(audioBuffer.getChannelData(0));</l></block><list><custom-block s="%s of sound %obj"><l></l><block var="sound"/></custom-block></list></block></block></script><list></list></block><block s="doRun"><block s="reportJSFunction"><list><l>sound</l></list><l>var base64, binaryString, len, bytes, i,&#xD;    arrayBuffer, audioCtx;&#xD;if (sound.audioBuffer) {&#xD;    return;&#xD;}&#xD;base64 = sound.audio.src.split(&apos;,&apos;)[1];&#xD;binaryString =  window.atob(base64);&#xD;len = binaryString.length;&#xD;bytes = new Uint8Array(len);&#xD;for (i = 0; i &lt; len; i += 1)        {&#xD;  bytes[i] = binaryString.charCodeAt(i);&#xD;}&#xD;arrayBuffer = bytes.buffer;&#xD;Note.prototype.setupContext();&#xD;audioCtx = Note.prototype.audioContext;&#xD;audioCtx.decodeAudioData(arrayBuffer, function(buffer) {&#xD;   sound.audioBuffer = buffer;&#xD;});</l></block><list><block var="sound"/></list></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l></list><l>return !isNil(sound.audioBuffer);</l></block><list><block var="sound"/></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l><l>choice</l></list><l>switch (choice) {&#xD;case &apos;sample rate&apos;:&#xD;    return sound.audioBuffer.sampleRate;&#xD;case &apos;duration&apos;:&#xD;    return sound.audioBuffer.duration;&#xD;case &apos;length&apos;:&#xD;    return sound.audioBuffer.length;&#xD;case &apos;number of channels&apos;:&#xD;    return sound.audioBuffer.numberOfChannels;&#xD;default:&#xD;    return sound.audioBuffer;&#xD;}</l></block><list><block var="sound"/><block var="attribute"/></list></block></block></script></block-definition><block-definition s="turbo %&apos;action&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>begin</l></list></block><block s="doSetVar"><l>begin</l><block s="reportGlobalFlag"><l><option>turbo mode</option></l></block></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><l><bool>true</bool></l></block><block s="doRun"><block var="action"/><list></list></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><block var="begin"/></block></script></block-definition><block-definition s="play %&apos;samples&apos; at %&apos;sampleRate&apos; Hz" type="command" category="sound"><comment x="0" y="0" w="164" collapsed="false">play back a sound, a list of samples (single channel), or a list of lists (multiple channels) at the given sample rate.&#xD;for demo purposes this block also fast-plots the samples on the stage</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">44100<options>22.05 kHz=22050&#xD;44.1 kHz=44100&#xD;88.2 kHz=88200&#xD;96 kHz=96000</options></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="samples"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><custom-block s="%s of sound %obj"><l>samples</l><block var="samples"/></custom-block></block></script><list></list></block><block s="doRun"><block s="reportJSFunction"><list><l>samples</l><l>rate</l></list><l>var audioCtx, channels, frameCount, arrayBuffer, i, source;&#xD;Note.prototype.setupContext();&#xD;audioCtx = Note.prototype.audioContext;&#xD;channels = (samples.at(1) instanceof List) ? samples.length() : 1; &#xD;frameCount = (channels === 1) ? samples.length() : samples.at(1).length(); &#xD;arrayBuffer = audioCtx.createBuffer(channels, frameCount, rate);&#xD;if (!arrayBuffer.copyToChannel) {&#xD;    arrayBuffer.copyToChannel = function (src, channel) {&#xD;        var buffer = this.getChannelData(channel);&#xD;        for (i = 0; i &lt; src.length; i += 1) {&#xD;            buffer[i] = src[i];&#xD;        }&#xD;    }&#xD;}&#xD;if (channels === 1) {&#xD;    arrayBuffer.copyToChannel(Float32Array.from(samples.asArray()), 0, 0);&#xD;} else {&#xD;    for (i = 0; i &lt; channels; i += 1) {&#xD;        arrayBuffer.copyToChannel(Float32Array.from(samples.at(i + 1).asArray()), i, 0);&#xD;    }&#xD;}&#xD;source = audioCtx.createBufferSource();&#xD;source.buffer = arrayBuffer;&#xD;source.connect(audioCtx.destination);&#xD;source.start();&#xD;source.pause = source.stop;&#xD;this.parentThatIsA(StageMorph).activeSounds.push(source);</l></block><list><block var="samples"/><block var="sampleRate"/></list></block><custom-block s="plot sound %obj"><block var="samples"/></custom-block></script></block-definition><block-definition s="%&apos;frequency&apos; Hz for %&apos;duration&apos; secs at %&apos;sample rate&apos; Hz sample rate" type="reporter" category="sound"><comment x="0" y="0" w="205" collapsed="false">generate a list of samples representing a sine wave at the given frequency, duration and sample rate</comment><header></header><code></code><translations></translations><inputs><input type="%n">440<options>a 55=55&#xD;a 110=110&#xD;a 220=220&#xD;a 440=440&#xD;a 880=880&#xD;a 1760=1760&#xD;a 3520=3520</options></input><input type="%n">1</input><input type="%n">44100<options>22.05 kHz=22050&#xD;44.1 kHz=44100&#xD;88.2 kHz=88200&#xD;96 kHz=96000</options></input></inputs><script><block s="doDeclareVariables"><list><l>output</l><l>sample period</l><l>duration in samples</l><l>time</l></list></block><block s="doSetVar"><l>sample period</l><block s="reportQuotient"><l>1</l><block var="sample rate"/></block></block><block s="doSetVar"><l>duration in samples</l><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportVariadicProduct"><list><block var="duration"/><block var="sample rate"/></list></block></block></block><block s="doSetVar"><l>time</l><l>0</l></block><block s="doSetVar"><l>output</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doRepeat"><block var="duration in samples"/><script><block s="doAddToList"><block s="reportMonadic"><l><option>sin</option></l><custom-block s="degrees %n"><block s="reportVariadicProduct"><list><l>2</l><block s="reportVariadicProduct"><list><custom-block s="PI"></custom-block><block s="reportVariadicProduct"><list><block var="frequency"/><block var="time"/></list></block></list></block></list></block></custom-block></block><block var="output"/></block><block s="doChangeVar"><l>time</l><block var="sample period"/></block></script></block></script></block><block s="doReport"><block var="output"/></block></script></block-definition><block-definition s="PI" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>3.141592653589793</l></block></script></block-definition><block-definition s="degrees %&apos;radians&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">0.5</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="radians"/><l>180</l></list></block><custom-block s="PI"></custom-block></block></block></script></block-definition><block-definition s="find first in %&apos;list&apos; such that %&apos;test&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="list"/><block s="reportNewList"><list></list></block></list></block><script><custom-block s="error %s"><l>item not found in list</l></custom-block></script><list></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list><block s="reportListItem"><l>1</l><block var="list"/></block></list></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script><list></list></block><block s="doReport"><custom-block s="find first in %l such that %predRing"><block s="reportCDR"><block var="list"/></block><block var="test"/></custom-block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg)</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="sound named %&apos;name&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="find first in %l such that %predRing"><block s="reportGet"><l><option>sounds</option></l></block><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><custom-block s="%s of sound %obj"><l>name</l><block var="sound"/></custom-block><block var="name"/></list></block></autolambda><list><l>sound</l></list></block></custom-block></block></script></block-definition><block-definition s="plot sound %&apos;sound&apos;" type="command" category="pen"><comment x="0" y="0" w="164" collapsed="false">quickly plot the samples of a sound, a list of samples (single channel), or a list of lists (multiple channels) to the stage at a lower resolution.</comment><header></header><code></code><translations></translations><inputs><input type="%obj"></input></inputs><script><block s="doDeclareVariables"><list><l>samples</l><l>step</l><l>offset</l><l>i</l><l>stage height</l></list></block><block s="doSetVar"><l>stage height</l><custom-block s="stage height"></custom-block></block><block s="doIfElse"><block s="reportIsA"><block var="sound"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><custom-block s="%s of sound %obj"><l>samples</l><block var="sound"/></custom-block></block><block s="doSetVar"><l>step</l><block s="reportQuotient"><custom-block s="%s of sound %obj"><l>length</l><block var="sound"/></custom-block><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block></block></block></script><script><block s="doSetVar"><l>samples</l><block var="sound"/></block></script></block><block s="clear"></block><block s="up"></block><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="samples"/></block><l><option>list</option></l></block><script><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block s="reportListItem"><l>1</l><block var="samples"/></block></block><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block></block></block><block s="doSetVar"><l>offset</l><block s="reportQuotient"><block var="stage height"/><l>4</l></block></block><custom-block s="for each %upvar of %l %cs"><l>channel</l><block var="samples"/><script><block s="doSetVar"><l>i</l><l>0</l></block><block s="gotoXY"><block s="reportQuotient"><custom-block s="stage width"></custom-block><l>-2</l></block><block var="offset"/></block><block s="down"></block><block s="setSize"><l>1</l></block><custom-block s="turbo %cs"><script><block s="doRepeat"><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportVariadicSum"><list><block s="xPosition"></block><l>0.5</l></list></block><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="channel"/></block><block s="reportQuotient"><block var="stage height"/><l>6.4</l></block></list></block><block var="offset"/></list></block></block></script></block></script></custom-block><block s="up"></block><block s="doChangeVar"><l>offset</l><block s="reportQuotient"><custom-block s="stage height"></custom-block><l>-2</l></block></block></script></custom-block></script><script><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block var="samples"/></block><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block></block></block><block s="gotoXY"><block s="reportQuotient"><custom-block s="stage width"></custom-block><l>-2</l></block><l>0</l></block><block s="down"></block><block s="setSize"><l>1</l></block><custom-block s="turbo %cs"><script><block s="doRepeat"><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportVariadicSum"><list><block s="xPosition"></block><l>0.5</l></list></block><block s="reportVariadicProduct"><list><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="samples"/></block><block s="reportQuotient"><block var="stage height"/><l>3.2</l></block></list></block></block></script></block></script></custom-block><block s="up"></block></script></block></script></block-definition><block-definition s="stage width" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return StageMorph.prototype.dimensions.x;</l></block><list></list></block></block></script></block-definition><block-definition s="stage height" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return StageMorph.prototype.dimensions.y;</l></block><list></list></block></block></script></block-definition><block-definition s="$circleSolid-1-255-0-0 record" type="reporter" category="sensing"><comment x="0" y="0" w="192" collapsed="false">records an audio snippet and reports it as a new sound, or zero if the user cancels</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>test</l><l>pic</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var soundRecorder,&#xD;    result = false;&#xD;&#xD;soundRecorder = new SoundRecorderDialogMorph(&#xD;    function (audio) {&#xD;        if (audio) {&#xD;            result = new Sound(audio, &apos;recording&apos;);&#xD;        } else {&#xD;            result = null;&#xD;            this.destroy();&#xD;        }&#xD;    }&#xD;);&#xD;&#xD;soundRecorder.cancel = function () {&#xD;    result = null;&#xD;    this.destroy();&#xD;};&#xD;&#xD;soundRecorder.key = &apos;microphone&apos;;&#xD;soundRecorder.popUp(this.world());&#xD;return function () {return result; };</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reifyScript"><script><block s="doSetVar"><l>pic</l><block s="evaluate"><block var="test"/><list></list></block></block><block s="doReport"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block></block></block></script><list></list></block><list></list></block></block><block s="doReport"><block var="pic"/></block></script></block-definition><block-definition s="loudness" type="reporter" category="sensing"><header></header><code></code><translations>ca:volum del so&#xD;es:volumen del sonido&#xD;</translations><inputs></inputs><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter == &apos;undefined&apos;</l></block><list></list></block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>navigator.getUserMedia = ( navigator.getUserMedia ||&#xD;                       navigator.webkitGetUserMedia ||&#xD;                       navigator.mozGetUserMedia ||&#xD;                       navigator.msGetUserMedia);&#xD;&#xD;var audioContext = new AudioContext();&#xD;&#xD;/*&#xD;The MIT License (MIT)&#xD;&#xD;Copyright (c) 2014 Chris Wilson&#xD;&#xD;Permission is hereby granted, free of charge, to any person obtaining a copy&#xD;of this software and associated documentation files (the "Software"), to deal&#xD;in the Software without restriction, including without limitation the rights&#xD;to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&#xD;copies of the Software, and to permit persons to whom the Software is&#xD;furnished to do so, subject to the following conditions:&#xD;&#xD;The above copyright notice and this permission notice shall be included in all&#xD;copies or substantial portions of the Software.&#xD;&#xD;THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&#xD;IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&#xD;FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&#xD;AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&#xD;LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&#xD;OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&#xD;SOFTWARE.&#xD;*/&#xD;&#xD;function createAudioMeter (audioContext,clipLevel,averaging,clipLag) {&#xD;	 var processor = audioContext.createScriptProcessor(512);&#xD;	 processor.onaudioprocess = volumeAudioProcess;&#xD;	 processor.clipping = false;&#xD;	 processor.lastClip = 0;&#xD;	 processor.volume = 0;&#xD;	 processor.clipLevel = clipLevel || 0.98;&#xD;	 processor.averaging = averaging || 0.95;&#xD;	 processor.clipLag = clipLag || 750;&#xD; 	processor.connect(audioContext.destination);&#xD; 	return processor;&#xD;};&#xD;&#xD;function volumeAudioProcess (event) {&#xD;  var buf = event.inputBuffer.getChannelData(0),&#xD;      bufLength = buf.length,&#xD; 	    sum = 0,&#xD;      x;&#xD;  for (var i=0; i&lt;bufLength; i++) {&#xD;   	x = buf[i];&#xD;   	if (Math.abs(x)&gt;=this.clipLevel) {&#xD;    		this.clipping = true;&#xD;    		this.lastClip = window.performance.now();&#xD;   	}&#xD;   	sum += x * x;&#xD;  }&#xD;  var rms =  Math.sqrt(sum / bufLength);&#xD;  this.volume = Math.max(rms, this.volume*this.averaging);&#xD;};&#xD;&#xD;function gotStream (stream) {&#xD;  mediaStreamSource = audioContext.createMediaStreamSource(stream);&#xD;  window.meter = createAudioMeter(audioContext);&#xD;  mediaStreamSource.connect(meter);&#xD;};&#xD;&#xD;navigator.getUserMedia(&#xD;  {&#xD;    "audio": {&#xD;      "mandatory": {&#xD;        "googEchoCancellation": "false",&#xD;        "googAutoGainControl": "false",&#xD;        "googNoiseSuppression": "false",&#xD;        "googHighpassFilter": "false"&#xD;      },&#xD;      "optional": []&#xD;    },&#xD;  }, gotStream, nop);</l></block><list></list></block></script><list></list></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter != &apos;undefined&apos;</l></block><list></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return Math.floor(meter.volume * 100);</l></block><list></list></block></block></script></block-definition><block-definition s="$flash map %&apos;fn&apos; over %&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="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicMap(fn, data);</l></block><list><block var="fn"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash keep %&apos;test&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="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicKeep(fn, data);</l></block><list><block var="test"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash combine %&apos;fn&apos; with %&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="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicCombine(fn, data);</l></block><list><block var="fn"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash sort %&apos;data&apos; by %&apos;fn&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>data</l><l>fn</l><l>proc</l></list><l>return proc.reportAtomicSort(data, fn);</l></block><list><block var="data"/><block var="fn"/></list></block></block></script></block-definition><block-definition s="$flash reverse %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l></list><l>return new List(list.asArray().slice().reverse());</l></block><list><block var="list"/></list></block></block></script></block-definition><block-definition s="Leap number of hands" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller.frame(0).hands.length;</l></block><list></list></block></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; position of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">x<options>x&#xD;y&#xD;z</options></input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><custom-block s="Leap number of hands"></custom-block></list></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var a = {x:0, y:1, z:2}[pos]; return window.controller.frame(0).hands[num-1].stabilizedPalmPosition[a];</l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; rotation of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">yaw<options>yaw&#xD;pitch&#xD;roll</options></input><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><custom-block s="Leap number of hands"></custom-block></list></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var f = window.controller.frame(0);&#xD;switch (pos){&#xD;  case "yaw":&#xD;    return f.hands[num-1].yaw();&#xD;  case "pitch":&#xD;    return f.hands[num-1].pitch();&#xD;  case "roll":&#xD;    return f.hands[num-1].roll();&#xD;};&#xD;            &#xD;        </l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; position of finger %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">x<options>x&#xD;y&#xD;z</options></input><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller.frame(0).fingers.length;</l></block><list></list></block></list></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var a = {x:0, y:1, z:2}[pos]; return window.controller.frame(0).fingers[num-1].stabilizedTipPosition[a];</l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap hand %&apos;num&apos; is pinching" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><custom-block s="Leap number of hands"></custom-block></list></block></block><script><block s="doReport"><block s="reportVariadicGreaterThan"><list><block s="evaluate"><block s="reportJSFunction"><list><l>num</l></list><l>return window.controller.frame(0).hands[num-1].pinchStrength;</l></block><list><block var="num"/></list></block><l>0.75</l></list></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="Leap pinch strength of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><custom-block s="Leap number of hands"></custom-block></list></block></block><script><block s="doReport"><block s="reportVariadicProduct"><list><block s="evaluate"><block s="reportJSFunction"><list><l>num</l></list><l>return window.controller.frame(0).hands[num-1].pinchStrength;</l></block><list><block var="num"/></list></block><l>100</l></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap $flag" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller !== undefined</l></block><list></list></block><script><block s="doStopThis"><l><option>this block</option></l></block></script><list></list></block><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var leapScript,&#xD;    done = false;&#xD;leapScript = document.createElement(&apos;script&apos;),&#xD;leapScript.onload = function () {&#xD;    done = true;&#xD;    console.log(&apos;leap is ready&apos;);&#xD;};&#xD;document.head.appendChild(leapScript);&#xD;leapScript.src = &apos;https://js.leapmotion.com/leap-0.6.4.min.js&apos;;&#xD;return function () {return done; }</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block var="test"/><list></list></block></block><block s="doRun"><block s="reportJSFunction"><list></list><l>window.controller = new Leap.Controller({enableGestures: true, background: true}); window.controller.connect();</l></block><list></list></block></script></block-definition><block-definition s="square %&apos;side&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRepeat"><l>4</l><script><block s="forward"><block var="side"/></block><block s="turn"><l>90</l></block></script></block></script></block-definition><block-definition s="polygon corner: %&apos;corner&apos; side: %&apos;side&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRepeat"><block var="corner"/><script><block s="forward"><block var="side"/></block><block s="turn"><l>45</l></block></script></block></script><scripts><script x="186.7744160625" y="106.000002"><block s="reportQuotient"><l></l><l></l></block></script></scripts></block-definition><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>de:drucke _ in Größe _&#xD;ca:etiqueta _ de mida _&#xD;es:etiqueta _ de tamaño _&#xD;fr:étiquette _ d&apos;une taille de _&#xD;</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="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations>de:ist _ leer?&#xD;ca:_ buida?&#xD;es:_ vacía?&#xD;fr:_ vide?&#xD;</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>de:behalte Elemente, die _ aus _&#xD;ca:manté els elements on _ de _&#xD;es:mantener los elementos donde _ de _&#xD;fr:garder les items tels que _ de _&#xD;</translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><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-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:kombiniere mit _ die Elemente von _&#xD;ca:combina amb _ els elements de _&#xD;es:combinar con _ los elementos de _&#xD;fr:combine avec _ les items de _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><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-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>de:wenn _ dann _ sonst _&#xD;ca:si _ llavors _ si no _&#xD;es:si _ entonces _ sino _&#xD;fr:si _ alors _ sinon _&#xD;</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>de:für _ = _ bis _ _&#xD;ca:per _ = _ fins _ _&#xD;es:para _ = _ hasta _ _&#xD;fr:pour _ allant de _ à _ _&#xD;</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>de:füge Wörter zusammen _&#xD;ca:uneix les paraules _&#xD;es:unir las palabras _&#xD;fr:fusionne les mots _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><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-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Liste $arrowRight Satz _&#xD;ca:llista $arrowRight frase _&#xD;es:lista $arrowRight frase _&#xD;fr:liste $arrowRight phrase _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Satz $arrowRight Liste _&#xD;ca:frase $arrowRight llista _&#xD;es:frase $arrowRight lista _&#xD;fr:phrase $arrowRight liste _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;</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>de:wirf _&#xD;ca:llança _&#xD;es:lanzar _&#xD;fr:lance _&#xD;</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>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;</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>de:wirf _ _&#xD;ca:llança _ _&#xD;es:lanzar _ _&#xD;fr:lance _ _&#xD;</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>de:für jedes _ von _ _&#xD;ca:per cada _ de _ _&#xD;es:para cada _ de _ _&#xD;fr:pour chaque _ de _ _&#xD;</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>de:falls _ dann _ und pause $pause-1-255-220-0&#xD;ca:si _ fes _ i atura-ho tot $pause-1-255-220-0&#xD;es:si _ haz _ y páralo todo $pause-1-255-220-0&#xD;fr:si _ faire _ et mettre tout en pause $pause-1-255-220-0&#xD;</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>de:Wort $arrowRight Liste _&#xD;ca:paraula $arrowRight llista _&#xD;es:palabra $arrowRight lista _&#xD;fr:mot $arrowRight liste _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Liste $arrowRight Wort _&#xD;ca:llista $arrowRight paraula _&#xD;es:lista $arrowRight palabra _&#xD;fr:liste $arrowRight mot _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block var="x"/></block></script></block-definition><block-definition s="numbers from %&apos;from&apos; to %&apos;to&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:Zahlen von _ bis _&#xD;ca:nombres des de _ a _&#xD;es:números de _ a _&#xD;fr:nombres de _ à _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="from"/><block var="to"/></list></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block var="from"/><custom-block s="numbers from %n to %n"><block s="reportVariadicSum"><list><block var="from"/><l>1</l></list></block><block var="to"/></custom-block></block></block></script></block-definition><block-definition s="map %&apos;func&apos; over %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:wende _ an auf _&#xD;ca:mapeja _ sobre _&#xD;es:mapear _ sobre _&#xD;fr:appliquer _ à _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="func"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><custom-block s="map %repRing over %l"><block var="func"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block-definition></blocks><primitives></primitives><stage name="Bühne" width="480" height="360" costume="1" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="1471"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAgAElEQVR4Xu3dB5idVZ3H8f+9k4b0YjItQSSrNPVZNQq4q6Dr0sQJQighmZkECEqx0BLdZ90s7RkEkeKzQBYyJUSUUBLLoqIBFkWkKLi6qJkhlMxMiqxYiCkz9+7vvZlgzBMyd247557zzfPkIcB933P+n3Pm/vKet6WMXwgggAACCCBQcYFUxVukQQQQQAABBBAwAphJgAACCCCAgAMBAtgBOk0igAACCCBAADMHEEAAAQQQcCBAADtAp0kEEEAAAQQIYOYAAggggAACDgQIYAfoNIkAAggggAABzBxAAAEEEEDAgQAB7ACdJhFAAAEEECCAmQMIIIAAAgg4ECCAHaDTJAIIIIAAAgQwcwABBBBAAAEHAgSwA3SaRAABBBBAgABmDiCAAAIIIOBAgAB2gE6TCCCAAAIIEMDMAQQQQAABBBwIEMAO0GkSAQQQQAABApg5gAACCCCAgAMBAtgBOk0igAACCCBAADMHEEAAAQQQcCBAADtAp0kEEEAAAQQIYOYAAggggAACDgQIYAfoNIkAAggggAABzBxAAAEEEEDAgQAB7ACdJhFAAAEEECCAmQMIIIAAAgg4ECCAHaDTJAIIIIAAAgQwcwABBBBAAAEHAgSwA3SaRAABBBBAgABmDiCAAAIIIOBAgAB2gE6TCCCAAAIIEMDMAQQQQAABBBwIEMAO0GkSAQQQQAABApg5gAACCCCAgAMBAtgBOk0igAACCCBAADMHEEAAAQQQcCBAADtAp0kEEEAAAQQIYOYAAggggAACDgQIYAfoNIkAAggggAABzBxAAAEEEEDAgQAB7ACdJhFAAAEEECCAmQMIIIAAAgg4ECCAHaDTJAIIIIAAAgQwcwABBBBAAAEHAgSwA3SaRAABBBBAgABmDiCAAAIIIOBAgAB2gE6TCCCAAAIIEMDMAQQQQAABBBwIEMAO0GkSAQQQQAABApg5gAACCCCAgAMBAtgBOk0igAACCCBAADMHEEAAAQQQcCBAADtAp0kEEEAAAQQIYOYAAggggAACDgQIYAfoNIkAAggggAABzBxAAAEEEEDAgQAB7ACdJhFAAAEEECCAmQMIIIAAAgg4ECCAHaDTJAIIIIAAAgQwcwABBBBAAAEHAgSwA3SaRAABBBBAgABmDiCAAAIIIOBAgAB2gE6TCCCAAAIIEMDMAQQQQAABBBwIEMAO0GkSAQQQQAABApg5gAACCCCAgAMBAtgBOk0igAACCCBAADMHEEAAAQQQcCBAADtAp0kEEEAAAQQIYOYAAggggAACDgQIYAfoNIkAAggggAABzBxAAAEEEEDAgQAB7ACdJhFAAAEEECCAmQMIIIAAAgg4ECCAHaDTJAIIIIAAAgQwcwABBBBAAAEHAgSwA3SaRAABBBBAgABmDiCAAAIIIOBAgAB2gE6TCCCAAAIIEMDMAQQQQAABBBwIEMAO0GkSAQQQQAABApg5gAACCCCAgAMBAtgBOk0igAACCCBAADMHEEAAAQQQcCBAADtAp0kEEEAAAQQIYOYAAggggAACDgQIYAfoNIkAAggggAABzBxAAAEEEEDAgQAB7ACdJhFAAAEEECCAmQMIIIAAAgg4ECCAHaDTJAIIIIAAAgQwcwABBBBAAAEHAgSwA3SaRAABBBBAgABmDiCAAAIIIOBAgAB2gE6TCCCAAAIIEMDMAQQQQAABBBwIEMAO0GkSAQQQQAABApg5gAACCCCAgAMBAtgBOk0igAACCCBAADMHEEAAAQQQcCBAADtAp0kEEEAAAQQIYOYAAggggAACDgQIYAfoNIkAAggggAABzBxAAAEEEEDAgQAB7ACdJhFAAAEEECCAmQMIIIAAAgg4ECCAHaDTJAIIIIAAAgQwcwABBBBAAAEHAgSwA3SaRAABBBBAgABmDiAQuUBvi92cTllXXYc9GTkF5SNQUQECuKLcNIaAXwJ9LXabvgTqag+wqan5lvGrd/QGgbAFCOCwx5fqEHhDgf4Wa8+a7V7faafAhAAClRcggCtvTosIOBfQsvPXkh9+he90552hAwhEKkAARzrwlB2vgJad79EP/p/qOm3WVoW+VpuXStkdde22Ll4ZKkegsgIEcGW9aQ0BZwLZ+ZZevdKWatm5X0e+527tyNppttvArnalZW2OvhDaatdbW2qJbXLWURpGIBIBAjiSgabMuAVWttq4sWZLU1lboSPfC3ek0TvD3p6usbkK6OMtZW31HXZD3GpUj0B5BQjg8vqydwScC7xypu2xcZQt0xHuz+q77OLhOtTfalOyGZunED4sm7VrGrps4XDb8P8RQGDkAgTwyM3YAoGqEeifZW/ODtpShekjWnb+wkg6vrrFPqL7kuZpm730u03b3zuS7fksAgjsXIAAZoYgEKjAy83WUJPSsnPKvqOHbMwvtMw1zXZSJmXzMln7s6WtraHDHix0X2yHAAJ/FSCAmQ0IBCiweqYdkE3rgqusfUPLzleXosRVrdaa0tK0Av25wYy1TVxkPy3FftkHArEKEMCxjjx1ByvQO9venhqwZdmU3d7QadeVulDdxvRp7TMJ4u9refua+kX2XKnbYH8IxCBAAMcwytQYjYCWnd+ZLDvr2c5fqe2wm8tV+FNzbHT9RpubC+KsLRw1ytrevND6ytUe+0UgRAECOMRRpaYoBfpm2nt1jnaprna+QsvOt1UCYVWz7asj4Xn6Ivmc2msbpXuIxy/RuWJ+IYDAsAIE8LBEfAAB/wV6Z9mRqcHcsvNlWnZur3SPk3POmXTuiulTFMhtuujr2kr3gfYQqDYBArjaRoz+IrCdgO7bPUoXWy3Tfz5Ptwotdgm0Zra9KzNo8/Qwj8N1JN5WqSNxlzXTNgKFChDAhcqxHQIeCGjZ+Zhk2VnnYWfWddk9HnQp1wVdqPVBHQnP1a1LjfrXNh2V3+VL3+gHAr4IEMC+jAT9QGCEAr2tdqKCN3m280kKuG+OcPOKfHx1s30suYdYjWX0UI9rGjvtOxVpmEYQqAIBArgKBokuIrC9gI4wT9bTrZLl5ql6ZvN3fRfS25ama0k6CeKXhpamf+R7n+kfAuUWIIDLLcz+ESixgB4ReYaOJm/T0W+Tlp0fKvHuy7q7VS32Kd0iNVch/FiNzhFP6LJflLVBdo6AxwIEsMeDQ9cQ2F4geRpVOmvXadm5ScvOP65Wod5mhXBy+5Ke1JXS4y111fQL1VoL/UagUAECuFA5tkOgwgJadp6jI8f5CqwmBdaTFW6+5M2tm227b07euqSlaX0RXbfLZmvb62v2+5I3xA4R8FSAAPZ0YOgWAtsK9DfbBbrH92Ld4jO18U57NiSdVWdaY80ovYc4a63Je4jr9DCP1BIbDKlGakFgRwIEMPMCAc8FdAHTRTpKPFfh1KQLrn7teXcL7p5enXiIni2dvIf4w0PvIS7bozQL7iQbIlBCAQK4hJjsCoFSC2jZ+fMK3+k6QmyasNCeL/X+fdzf6lY7PPce4qy9TV9QbXWd1uVjP+kTAsUKEMDFCrI9AmUS0IVK/6aHWZyYGdCy82JbVaZmvN1t8pARne9OlqbflLyHWEf/S73tLB1DoAABArgANDZBoNwCWna+SlcIH/1axqZOXmRry92ez/vXld/TdOV38njLV/SO47bGdlvuc3/pGwL5ChDA+UrxOQQqJNDfYtfqqG/KuHHWtM8C+0OFmvW+md4WOyu5Ylr3ET+TzeTeQ/yU952mgwjsRIAAZnog4JGAlp1v0kVIB2XWW9PEJfYXj7rmTVd0Xjx59WFyD/G3a3REPL7DVnjTOTqCwAgECOARYPFRBMopoGXnWxUqDY+ut6mnchvOTqlXttq4MVtCeK4+eGvNaD1V63ZbU87xYd8IlFqAAC61KPtDoAABLTsv1LLznnp938kFbB7tJnoP8fih9xCfl7yHeOA1u4aVg2inQ9UVTgBX3ZDR4dAEtOy8WMvOaT1a8ozQaqtUPWvPsskDA7mXPXw8eZiHrpi+vlJt0w4ChQoQwIXKsR0CJRDQ+cwlOnJ7TY+WbC3B7qLfhTzfI4QkiP9+6K1Lt0ePAoC3AgSwt0NDx0IW0C01Kb3VaKmWnddo2XlOyLW6qE2P7jxaj+5Mnqq1Xyabew/x3S76QZsI7EyAAGZ+IFBhgRUX2thd/6jwNevRsvMFFW4+quZWz7Im3bKU3EO8Ifcwj3b7XlQAFOu1AAHs9fDQudAEcm8AGrRlquuZ+k4945lfFRHQe4ib06anapl1a9WhrbHLflKRhmkEgZ0IEMBMDwQqJLCq2fbVQySW6dzko1p2/nyFmqWZbQR0wdsFufcQmz009JzpXwGEgCsBAtiVPO1GJfDSbKsfNZhbdn5Ay87/FlXxnhWbnW/p/hdefw9xl25juqah3V72rJt0JwIBAjiCQaZEtwL9rfYWBe9SHfku0bLzVW57Q+tbBV6cbnuPGZN72cNl+m9tYwesbd/F9keEEKiUAAFcKWnaiVJAy85vS5ad9SW/sKHLro0SwfOi+86y/W3LPcSna3n6Gt1D3OZ5l+leIAIEcCADSRn+CegpTYdpeTO54OpGHfne5F8P6dG2AnoP8TsyumJaIfwPQ+eHb0EIgXIKEMDl1GXf0QoMPRBiqb7Mr9IR1a3RQlRh4X3NCuBU7orptyRL0/rL0+IqLIMuV4EAAVwFg0QXq0tAy85HaNk5ecjG57XsvLC6ek9vtwr0z7Tj9f7heRrHmuQe4oYO+xY6CJRSgAAupSb7il6gf5Z9SA9+SJadz+fIKYzp0Nuqc8NamtZRcd+g3kM8cZE9EkZlVOFagAB2PQK0H4zAmlb76GDWlumLukXPdl4STGEUkhPQaYXkkaFJED9Ro6VpvYf4GWgQKEaAAC5Gj20RGBLQsvPHhpadT9ayc3IEzK9ABfQwj0uTc8S6rey+mlF6D/FCez7QUimrzAIEcJmB2X34An2t9gl9GX9dR79NE7vsgfArpkJd4b5r7j3E2dwR8Q3ZTbp96S77HTIIjESAAB6JFp9FYDsB3bpyut6285/ptDXVtttygOISWDfD6jbX5O4hPltB3FY7xtpSC2xzXApUW6gAAVyoHNtFL6Bl5xYtO1+vo6AmPdv5R9GDRAygVZCDUtncrUszBlN2yMQOWxExB6XnKUAA5wnFxxDYVkBfuOcoeC/Xl25TXZc9gQ4Cun94ko6CH6/rtHo0EMhHgADOR4nPILCNQG+Lna8v2kszZlMbuRKWuTEkoGd+H697hi/U7WfHgYJAPgIEcD5KfAaBIQHdivI5/fFTui+0qX6RPQcMAlsFdHX0XJ2S2E9HwJeigkA+AgRwPkp8BgEJaNk5uep1hu4BbZrQaT2gIPA3pyVabJFOSfxApyQ6kUEgHwECOB8lPhO9gJadvyiEqXokYRPvjo1+OuwQQKsjP9f/OFtL0E8jhEA+AgRwPkp8JmoBfbFeqR+Uj6S07Fy7yNZGjUHxOxTQ1c+p/mbb9No62+3vHrCNMCGQjwABnI8Sn4lWQF+qX8qm7P27pKxp7w57NVoICt+pwMt6lWGNHsaio99DoUIgXwECOF8pPhedgJadb1TRh6TG6oKrBbY+OgAKzltAc+UMfXhqQ6edlvdGfDB6AQI4+ikAwI4EtOx8i344Jv76RZt69MM2gBICOxPQBXpXZTK2obHLrkAKgXwFCOB8pfhcNAK6n/MO3c+5t5YTPxFN0RRalEB/iy3TLUjtEzpsaVE7YuOoBAjgqIabYocT0JHvIp3zHa2Xr58+3Gf5/whsFVAA9+jNSMeMv8O6UUEgXwECOF8pPhe8gML3bt3nu0HPdW4OvlgKLJnA/82xPTdutJf1AI49SrZTdhSFAAEcxTBT5HACeo7vUkvZOi07nzPcZ/n/CGwrsKbFPqDHkl6rAD4SGQRGIkAAj0SLzwYn8KtpNmbvN9lSLTuv1LLz+cEVSEFlF1jVap9MZ+zdWjmZU/bGaCAoAQI4qOGkmJEIrJ1muw0m4Wv2PzryTZ7xzC8ERiygW5C+qi/S32oO3TTijdkgagECOOrhj7f4l8+yfWoGbJnC9zHduzk3XgkqL1ZApy8eztTY5Y3ttrzYfbF9XAIEcFzjTbUSWNtqtQNZW6YLrr6nZcPkGc/8QqBgAV289zstQR/CY0oLJox2QwI42qGPs/C+6ba/jc7dq3mvlgyvjFOBqksloKPfSbp47zHNpcZS7ZP9xCNAAMcz1tFX+kKzHTEmrft8s7ZAy85fih4EgKIF9NCW47MZ+7RWUo4temfsIDoBAji6IY+34OStRlp2nq4vy7fGq0DlpRTQBViX6Ut0vI6ALynlftlXHAIEcBzjTJVDAloyfFKPDLyittO+CQoCxQpoPnVl0ra8scM6it0X28cnQADHN+ZRV6yj4DMFcJaOWD4cNQTFl0RA8+ln2tE5mk9Pl2SH7CQqAQI4quGm2ERAb655ZjBjn5/YZQ8ggkAxAnoG9KbaPWz31M22sZj9sG2cAgRwnOMeddU6bzcrlbLT6ju4cCbqiVBk8atn2mHZGvtGXYcdWuSu2DxSAQI40oGPvWwtHf6vnt97YWOn/TB2C+ovTGB1q52uK+pP0jOgTytsD2wVuwABHPsMiLR+BfAcPQXrRN2OdGKkBJRdpIAuwLoqlbYNOgK+oshdsXmkAgRwpANP2WY6f7dCL2GYraXoR/FAYKQCOpWxLJW1Dt3Wdv9It+XzCCQCBDDzIFqB3ma7QD8AR+sL9ORoESi8YAGtovQMpuzYiR22ouCdsGHUAgRw1MNP8foSfTGjC7J0H+fjaCCQr0DPNNtzlzfZKt1+tHu+2/A5BLYXIICZE1ELrGq2i/RD8L6GLjs9agiKH5GAlp8/oA2u0zUER4xoQz6MwDYCBDDTIWqB7HxL96+0XkvbCfXtuYcq8AuBYQV0Ada5OoH3Xh0BnzPsh/kAAm8gQAAzNaIX0LngufpBOFTngpujxwAgLwFdwHezbkHq1py5Ma8N+BACOxAggJkW0QusbLVxY7O2Su90PUrvdP1l9CAADCugawce0n3kV3If+bBUfGAnAgQw0wMBCfQ327/qlqT9taR4NiAIDCegAF6nv7Adqr+wrR3us/x/BN5IgABmbiAggXWzbffNg9abHbQpDXfab0BB4I0EemfZRMvY47oAqwElBIoRIICL0WPboAT0cvXLdV7vzToK/lRQhVFMSQW0WnJcNm2f4VniJWWNcmcEcJTDTtE7EtAtSfvqXcHJueBDtLS4EiUEdiSgv6hdalmboGdAX4IQAsUIEMDF6LFtcAL6cm3TUfAuOgr+THDFUVBJBHQLUpeeAb1cz4DuKMkO2Um0AgRwtENP4TsSWNtqtQNZ6x2TtUn7den+YH4hsJ2ALsD6mc4Bz6lfZE+Bg0AxAgRwMXpsG6SAvmCv1w/GoJYYLw2yQIoqSkDzY9PGlO1xQIdtKGpHbBy9AAEc/RQAYHsBLTFOSqWsJ5WxBm4zYX5sK/DSTDtsVNru1imKQ5BBoFgBArhYQbYPUiD3pCOzP+mL9gtBFkhRBQn0ttrpegXhJzQvTi1oB2yEwDYCBDDTAYEdCLw8wybXpO0Xu6Stfu8OexUkBBIBLT9fqb+YbdI9wJcjgkCxAgRwsYJsH6yAvmxv09Ox+hs6bH6wRVLYiAT6Wm2pDVqXLsC6b0Qb8mEEdiBAADMtEHgDgb6ZdrDekvQT3RecnAt+DSgEdGqiuyZlx43vsBVoIFCsAAFcrCDbBy2g976264KsFXrq0dVBF0pxwwq8cqbtsXGU9en8727DfpgPIJCHAAGcBxIfiVdg1Qx7V7rGHuwbaw3vXWCb45Wg8jWz7MhMxr6s29OOQAOBUggQwKVQZB9BC+hc8J06F/yszgVfG3ShFLdTAc2DOfrAFB0BnwMVAqUQIIBLocg+ghZ4qdWm1GRtKW+/CXqYhy1OpyNu1i1I3fVdduOwH+YDCOQhQADngcRHENDRz916AP+P+fKNdy5oDjyUNruyttN+GK8ClZdSgAAupSb7ClZA74A9Uk/GWqzlxwOCLZLCdr4E3WzrasbYYRNutzVQIVAKAQK4FIrsIwoBHQHdrzclPdjQZf8RRcEU+bqA/gI2UbejPa4LsBpgQaBUAgRwqSTZT/ACelXhUQrg23QU/Pbgi6XAvxHob7bjdCHeZzX2x0CDQKkECOBSSbKfKAT0oobvqND7dS749igKpsicgJ4BfalOQdRq3C+GBIFSCRDApZJkP1EIrGm1jw5m7Ss6EjosioIpMieg0w+degb0w7oSvh0SBEolQACXSpL9RCPQ22wPplO2SOcDu6IpOvJCFcBPD6Tsk5M67MnIKSi/hAIEcAkx2VUcAnoe8Ak6GrpCR8HvjqNiqlQAb6xL2Z6pDtuABgKlEiCASyXJfqIS0FtxHk4uyNKS5F1RFR5hsfoL16EZs3s01gdHWD4ll1GAAC4jLrsOV0AXY52UStvcug47PNwqqSwRWN1sp2XTdrLG+lREECilAAFcSk32FZWAHk34mH6Avqyl6HujKjyyYle32BU65bBZ5/wvj6x0yi2zAAFcZmB2H66AliZP1RfzhQrgfwy3SirTRXdLtdrRpVdS3ocGAqUUIIBLqcm+ohPQxTlP6oroy2s77FvRFR9JwRrj7kzWjm/sst9GUjJlVkiAAK4QNM2EKaBzwTP0QzSrrss+EmaFcVe14kzbY9dR1qdVjt3ilqD6cggQwOVQZZ9RCWgp+lk9pnCulii/G1XhERTbO0Mv4Rhl12tsudgugvGudIkEcKXFaS84AQXwLN2SdJoeU3hscMVFXpCWn+eI4H06Aj47cgrKL4MAAVwGVHYZn4C+qJ9Lp+382nZbHl/14VaslzDcpFuQntcR8A3hVkllrgQIYFfytBuUgM4Fn6tl6BP0sIaPB1VY5MXoL1bLtbpxtV5B+YPIKSi/DAIEcBlQ2WWcAlqK7taXdauWon8Up0B4VSuA125M2TsP6LDV4VVHRa4FCGDXI0D7wQjoftELUyn7kM4XnhJMUREXsupMa0yPsic0nvURM1B6GQUI4DLisuv4BHTE9NJgxqZNXGQ/ja/6sCrW876Ptax9TgF8TFiVUY0vAgSwLyNBP4IQ0Jf2RVqGnqJzwWcEUVDEReiUwiU6r1+nC7AujpiB0ssoQACXEZddxyeQnW/p/pXWpxA+Thfu/Dw+gXAq7m+1Dh0BP6JnQLeHUxWV+CRAAPs0GvQlCAEdBc/TF/fBWrpsCaKgSIvQ6YSndU7/k3oL0pORElB2mQUI4DIDs/v4BFa22rixWesdyNiHJi2yX8YnEEbFetvVxsx622viEvtLGBVRhW8CBLBvI0J/ghDQl/cX9cM1UUfB5wRRUGRFvNhih442u0fjd3BkpVNuBQUI4Api01Q8ArmH+NdYb8bsPbxFp/rGXbeUnabl51MUwNOqr/f0uFoECOBqGSn6WXUCOod4hTq9r77Ez6u6zkfe4WTsdCHdgC6k+/fIKSi/jAIEcBlx2XXcAquabV89H7pXP2QH6UKeF+LWqK7qFcD3q8d36i9P91ZXz+ltNQkQwNU0WvS16gR0LvgaLWWO1b2kn626zkfcYd0DvCIzaB9ruNN+EzEDpZdZgAAuMzC7j1vghRlWN0bnggezNnFil/XGrVEd1a+bbbtvHrTVOvrdtTp6TC+rVYAArtaRo99VI6DlzOt1FDygZejLqqbTEXd0TbMdMZiyGxTA74+YgdIrIEAAVwCZJuIW6Jtu+6dG2wpLW0Ndu62LW8P/6vUglXP0IJX3K4DP9r+39LCaBQjgah49+l41Ajqn+FVdVfsHvarwX6qm05F2VCsWN1rKVuq8/Q2RElB2hQQI4ApB00zcAmtn2OSBGnt23Fir32eB/SFuDb+rVwAvr8na1RO67Ad+95TeVbsAAVztI0j/q0agr9kW6Aeut457S70eMwXw2lEpe+f4DlvtdUfpXNULEMBVP4QUUC0C/bPskGzGfmxjraF+ga2vln7H1M9VZ1pjzSh7Qm9Aqo+pbmp1I0AAu3Gn1UgFdC64XeeCV+hc8NWREnhdti7AOlYXYF2kC7D+2euO0rkgBAjgIIaRIqpFYM1se9fgoH2/7kVrSD1sA9XS71j6qQenXKIvxXoF8EWx1Eyd7gQIYHf2tBypgM4FL9Z9wT/XMud1kRJ4W7aOgDt0muC/9Qzohd52ko4FI0AABzOUFFItAv2tNiWTtfsbOq2xWvocSz91AdZTemrZeXpq2ROx1Eyd7gQIYHf2tByxgL7ol6j8R7XUeVPEDN6VrnHZoIvk9uEiOe+GJsgOEcBBDitF+S6gc40f0A/fIgXwW33vawz9W9lqe402+6guwPpSY6cdEEPN1OhegAB2Pwb0IFIBnW9cqqXo7+kL/5ZICSpadt8Ztl96nB2YydhkffEdqMYP1BXpk1Np/Tlr47K6R1v/XK8r1KdUtGM0Fq0AARzt0FO4awGdCz5KX/q36pGHB7nuSyjtr2212s3ZLcGaTgI29dewHaqxR+Y96ax1699zfx6Vtm4euhHKDKiuOgjg6hovehuYgM45/pdC4F5dkHVHYKWVrZzcwzLG/M2R7OTkaFZXlifBu0G/e9KpvwZsJqV/H2PdOq/7u7J1ih0jUIAAAVwAGpsgUCoBBXDywIcv61zwO0q1zxD2o9WBt6R0JKsl+txy8dYjWf1lJQnb3ydHrwrcbt0ylDuKTf68i4J27w57NYT6qSEOAQI4jnGmSo8FFMIP6u07XVqKXuRxN0vaNYVmat1ZduDGQS0VK2hzIatwff2fWevfGqy5f+p3TY11p/5kPeOX2J9L2hl2hoAjAQLYETzNIrBVQI+nPEEhc7mOgt8Tkkp2jo3u37RlqTg5H7v1SDZZLtbv5Eh2pf7i0Z0L2KEj2WTpeIOOZA/o0O1A/EIgcAECOPABprzqENBR8CNaZr2locO+Xh093tLLl6fZLrarTa5JAlZHskm4bj2S1TOnPtgAAAbdSURBVJ8nJedjc0vFCln9e+7PmbT1/PZ56zmaR3FW01DT1zIIEMBlQGWXCIxUQI+nPEnbzNUtMIePdNtyf37dbNt908CWo9hMErRbbtvJXfik3+OTYE2OZG2b87EK5J4JnbnQ5RcCCLyBAAHM1EDAEwE9nOMnOkK8VueC76t0l16dbnv/ZYxNzgVschvP0PnYoXOye2x7JFuThK2WiZMj2fo77MVK95X2EAhFgAAOZSSpo+oFepvtNAXw+ToX/MFyFNM908aP0606256Pff2BFGZjkiPZrVcWb1021nORe/Rc5N5y9Id9IhC7AAEc+wygfq8EkpcB6Krg+bVd9u1COvbSbKsflRm64EnLxDqS3XLxU3I7T8oGtXScWy5+/QpjHclu3GA9b73L1hTSHtsggEDhAgRw4XZsiUDJBXQueIaCslWvKvynN9q5PjMpCdXk92BawTp08ZM+n5yXfW1ruOrq49wRrQK9Z1BHt41d9krJO8wOEUCgYAECuGA6NkSgPAI6Cv6FwvP6VI31bn2kolp6/V5ZHcW+sv2VxbqCumfsJuved7H9sTy9Yq8IIFBqAQK41KLsD4EiBVY12601aZuu8P1pcrFT8rQn/aB2J0exNeNyj1RcX2QTbI4AAh4IEMAeDAJdQGBbgew0q0kt0flafiGAQNACBHDQw0txCCCAAAK+ChDAvo4M/UIAAQQQCFqAAA56eCkOAQQQQMBXAQLY15GhXwgggAACQQsQwEEPL8UhgAACCPgqQAD7OjL0CwEEEEAgaAECOOjhpTgEEEAAAV8FCGBfR4Z+IYAAAggELUAABz28FIcAAggg4KsAAezryNAvBBBAAIGgBQjgoIeX4hBAAAEEfBUggH0dGfqFAAIIIBC0AAEc9PBSHAIIIICArwIEsK8jQ78QQAABBIIWIICDHl6KQwABBBDwVYAA9nVk6BcCCCCAQNACBHDQw0txCCCAAAK+ChDAvo4M/UIAAQQQCFqAAA56eCkOAQQQQMBXAQLY15GhXwgggAACQQsQwEEPL8UhgAACCPgqQAD7OjL0CwEEEEAgaAECOOjhpTgEEEAAAV8FCGBfR4Z+IYAAAggELUAABz28FIcAAggg4KsAAezryNAvBBBAAIGgBQjgoIeX4hBAAAEEfBUggH0dGfqFAAIIIBC0AAEc9PBSHAIIIICArwIEsK8jQ78QQAABBIIWIICDHl6KQwABBBDwVYAA9nVk6BcCCCCAQNACBHDQw0txCCCAAAK+ChDAvo4M/UIAAQQQCFqAAA56eCkOAQQQQMBXAQLY15GhXwgggAACQQsQwEEPL8UhgAACCPgqQAD7OjL0CwEEEEAgaAECOOjhpTgEEEAAAV8FCGBfR4Z+IYAAAggELUAABz28FIcAAggg4KsAAezryNAvBBBAAIGgBQjgoIeX4hBAAAEEfBUggH0dGfqFAAIIIBC0AAEc9PBSHAIIIICArwIEsK8jQ78QQAABBIIWIICDHl6KQwABBBDwVYAA9nVk6BcCCCCAQNACBHDQw0txCCCAAAK+ChDAvo4M/UIAAQQQCFqAAA56eCkOAQQQQMBXAQLY15GhXwgggAACQQsQwEEPL8UhgAACCPgqQAD7OjL0CwEEEEAgaAECOOjhpTgEEEAAAV8FCGBfR4Z+IYAAAggELUAABz28FIcAAggg4KsAAezryNAvBBBAAIGgBQjgoIeX4hBAAAEEfBUggH0dGfqFAAIIIBC0AAEc9PBSHAIIIICArwIEsK8jQ78QQAABBIIWIICDHl6KQwABBBDwVYAA9nVk6BcCCCCAQNACBHDQw0txCCCAAAK+ChDAvo4M/UIAAQQQCFqAAA56eCkOAQQQQMBXAQLY15GhXwgggAACQQsQwEEPL8UhgAACCPgqQAD7OjL0CwEEEEAgaAECOOjhpTgEEEAAAV8FCGBfR4Z+IYAAAggELUAABz28FIcAAggg4KsAAezryNAvBBBAAIGgBQjgoIeX4hBAAAEEfBUggH0dGfqFAAIIIBC0AAEc9PBSHAIIIICArwIEsK8jQ78QQAABBIIWIICDHl6KQwABBBDwVYAA9nVk6BcCCCCAQNACBHDQw0txCCCAAAK+ChDAvo4M/UIAAQQQCFqAAA56eCkOAQQQQMBXAQLY15GhXwgggAACQQsQwEEPL8UhgAACCPgqQAD7OjL0CwEEEEAgaAECOOjhpTgEEEAAAV8FCGBfR4Z+IYAAAggELUAABz28FIcAAggg4KsAAezryNAvBBBAAIGgBQjgoIeX4hBAAAEEfBUggH0dGfqFAAIIIBC0AAEc9PBSHAIIIICArwIEsK8jQ78QQAABBIIW+H8bAqfDFpLtfQAAAABJRU5ErkJggg==</pentrails><costumes><list id="1472"><item><ref mediaID="Bühne_cst_Unbenannt"></ref></item></list></costumes><sounds><list struct="atomic" id="1473"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Stift" idx="1" x="17.840571277810568" y="69.24094157747578" heading="127.99999999996157" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="230,95,0,1" pen="tip" id="1478"><costumes><list struct="atomic" id="1479"></list></costumes><sounds><list struct="atomic" id="1480"></list></sounds><blocks></blocks><variables></variables><scripts><script x="161.999999" y="109"><block s="receiveGo"></block><block s="setColor"><color>230,95,0,1</color></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="down"></block><block s="doSetVar"><l>seitenlänge</l><l>50</l></block><block s="doSetVar"><l>seitenzahl</l><l>5</l></block><block s="doForever"><script><block s="turnLeft"><l>15</l></block><block s="clear"></block><block s="doWarp"><script><block s="doRepeat"><block var="seitenzahl"/><script><block s="forward"><block var="seitenlänge"/></block><block s="turn"><block s="reportQuotient"><l>360</l><block var="seitenzahl"/></block></block><block s="doChangeVar"><l>seitenlänge</l><l>1</l></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="seitenlänge"/><l>100</l></list></block><script><block s="doSetVar"><l>seitenlänge</l><l>0</l></block></script><list></list></block></script></block></script></block><block s="turn"><l>10</l></block></script></block></script></scripts></sprite><watcher var="seitenlänge" style="normal" x="10" y="10" color="243,118,29"/><watcher var="seitenzahl" style="normal" x="10" y="31.000001999999995" color="243,118,29"/></sprites></stage><variables><variable name="seitenlänge"><l>98</l></variable><variable name="seitenzahl"><l>5</l></variable></variables></scene></scenes></project><media name="Digi4all Randomly appearing " app="Snap! 10, https://snap.berkeley.edu" version="2"><costume name="Unbenannt" center-x="240" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOjUlEQVR4Xu3VsQkAIBAEwbf/otXAGtxkBOOD4WHXzOz7PQIECBAgQOCjwBLgj9qmCBAgQIDAExBgp0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAAEBdgMECBAgQCAQEOAA3SQBAgQIEBBgN0CAAAECBAIBAQ7QTRIgQIAAAQF2AwQIECBAIBAQ4ADdJAECBAgQEGA3QIAAAQIEAgEBDtBNEiBAgAABAXYDBAgQIEAgEBDgAN0kAQIECBAQYDdAgAABAgQCAQEO0E0SIECAAIEDaGBoELcU5kcAAAAASUVORK5CYII=" mediaID="Bühne_cst_Unbenannt"/></media></snapdata>