<snapdata remixID="15003130"><project name="UI Engine (I mean I made text label block and that uses a properties block)" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes>Version: 1.4.2.1&#xD;Next Update: ???&#xD;&#xD;Features:&#xD;- Leaderboard of Online Users&#xD;- Data Saving/Handling&#xD;- Upgrades (4)&#xD;- Reset Layers (1)&#xD;&#xD;FAQ:&#xD;    Question: What does the Reset Shield do?&#xD;    Answer: The first level protects points and the points value upgrade, the second level protects points multiplier upgrade, the third protects points exponent upgrade, and etc.&#xD;&#xD;    Question: What do I do at Infinity?&#xD;    Answer: You won! The game will get revamped in the future to have more depth. Only two choices from here being to reset data and play through it again or come back after some months or years in hopes of an update!</notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="UI Engine (I mean I made text label block and that uses a properties block)"><notes>Version: 1.4.2.1&#xD;Next Update: ???&#xD;&#xD;Features:&#xD;- Leaderboard of Online Users&#xD;- Data Saving/Handling&#xD;- Upgrades (4)&#xD;- Reset Layers (1)&#xD;&#xD;FAQ:&#xD;    Question: What does the Reset Shield do?&#xD;    Answer: The first level protects points and the points value upgrade, the second level protects points multiplier upgrade, the third protects points exponent upgrade, and etc.&#xD;&#xD;    Question: What do I do at Infinity?&#xD;    Answer: You won! The game will get revamped in the future to have more depth. Only two choices from here being to reset data and play through it again or come back after some months or years in hopes of an update!</notes><palette><category name="MQTT" color="143,0,100,1"/><category name="UI" color="128,128,128,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="store key: %&apos;key&apos; value: %&apos;value&apos; in browser" type="command" category="other"><header></header><code></code><translations>ca:desa clau: _ amb valor: _ al navegador&#xD;pl:przechowaj klucz: _ wartość: _ w przeglądarce&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>db_store(key, val)</l><list><custom-block s="encode %txt"><block var="key"/></custom-block><block var="value"/></list></block></script></block-definition><block-definition s="stored data in browser" type="reporter" category="other"><header></header><code></code><translations>ca:dades desades al navegador&#xD;pl:dane w przeglądarce&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>db_getall</l><list></list></block></block></script></block-definition><block-definition s="remove encoded key: %&apos;key&apos; in browser" type="command" category="other"><header></header><code></code><translations>ca:esborra clau: _ del navegador&#xD;pl:usuń klucz: _ w przeglądarce&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>db_remove(key)</l><list><custom-block s="encode %txt"><block var="key"/></custom-block></list></block></script></block-definition><block-definition s="clear encoded data in browser" type="command" category="other"><header></header><code></code><translations>ca:esborra dades del navegador&#xD;pl:wyczyść dane w przeglądarce&#xD;</translations><inputs></inputs><script><block s="doWarp"><script><block s="doForEach"><l>item</l><custom-block s="stored data in browser"></custom-block><script><custom-block s="remove encoded key: %s in browser"><custom-block s="decode %txt"><block s="reportListItem"><l>1</l><block var="item"/></block></custom-block></custom-block></script></block></script></block></script></block-definition><block-definition s="get value from key: %&apos;key&apos; in browser" type="reporter" category="other"><comment x="0" y="0" w="199.33333333333334" collapsed="false">Reports the value previously stored under&#xD;the input key in the browser&apos;s local storage.&#xD;Reports False if the key is not found.</comment><header></header><code></code><translations>ca:obté valor de clau: _ al navegador&#xD;pl:pobierz wartość z klucza: _ w przeglądarce&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>db_get(key)</l><list><custom-block s="encode %txt"><block var="key"/></custom-block></list></block></block></script></block-definition><block-definition s="E-Notation %&apos;Value&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n" initial="1">0</input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="Value"/><l><option>number</option></l></block><script><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="Value"/><block s="reportPower"><l>10</l><l>21</l></block></list></block><script><block s="doIfElse"><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportMonadic"><l><option>log</option></l><block var="Value"/></block><l>3</l></list></block><script><block s="doDeclareVariables"><list><l>TempValue</l></list></block><block s="doDeclareVariables"><list><l>FinalValue</l></list></block><block s="doSetVar"><l>TempValue</l><block s="reportTextSplit"><block var="Value"/><l><option>letter</option></l></block></block><block s="doSetVar"><l>FinalValue</l><block s="reportNewList"><list><l></l></list></block></block><block s="doInsertInList"><l>.</l><l>2</l><block var="TempValue"/></block><block s="doFor"><l>i</l><l>1</l><l>4</l><script><block s="doAddToList"><block s="reportListItem"><block var="i"/><block var="TempValue"/></block><block var="FinalValue"/></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block var="FinalValue"/><l>e</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportMonadic"><l><option>log</option></l><block var="Value"/></block></block></list></block></block></script><script><block s="doReport"><block var="Value"/></block></script></block></script><script><block s="doReport"><block s="reportJoinWords"><list><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="Value"/><l>1</l><l>4</l></custom-block><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="Value"/><l>-4</l><l>-1</l></custom-block></list></block></block></script></block></script><script><block s="doReport"><block var="Value"/></block></script></block></script></block-definition><block-definition s="multiline %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o texto multilinha _&#xD;ca:multilínia _&#xD;pl:wielowiersz _&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doReport"><block var="text"/></block></script></block-definition><block-definition s="substring of %&apos;string&apos; before %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="175.33333333333334" collapsed="false">Reports the part of the first string up to the first instance of the second string inside it.  If the second string isn&apos;t found, reports the entire first string.</comment><header></header><code></code><translations>pt:o texto de _ antes de _&#xD;ca:part del text _ anterior a _&#xD;pl:podciąg _ przed _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doSetVar"><l>index</l><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>0</l></list></block><block var="string"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>1</l></list></block><l></l><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="string"/><l>1</l><block s="reportDifference"><block var="index"/><l>1</l></block></custom-block></block></block></block></script></block-definition><block-definition s="substring of %&apos;string&apos; after %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="203.33333333333334" collapsed="false">Reports the portion of the first input string starting after the first occurrence of the second string.  If the second string isn&apos;t found in the first string, reports an empty string.</comment><header></header><code></code><translations>pt:o texto de _ depois de _&#xD;ca:part del text _ posterior a _&#xD;pl:podciąg _ po _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>end</l></list></block><block s="doSetVar"><l>index</l><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block></block><block s="doSetVar"><l>end</l><block s="reportVariadicSum"><list><block var="index"/><block s="reportTextAttribute"><l><option>length</option></l><block var="marker"/></block></list></block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>0</l></list></block><l></l><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block var="end"/><block s="reportTextAttribute"><l><option>length</option></l><block var="string"/></block></list></block><l></l><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="string"/><block var="end"/><l></l></custom-block></block></block></block></script></block-definition><block-definition s="position of %&apos;small&apos; in %&apos;large&apos;" type="reporter" category="operators"><comment x="0" y="0" w="294" collapsed="false">Reports the character position (starting from 1) of the beginning of the first input string inside the second input string.&#xD;If it&apos;s not found, reports 0.</comment><header></header><code></code><translations>pt:a posição de _ em _&#xD;ca:posició de _ en _&#xD;pl:pozycja _ w _&#xD;</translations><inputs><input type="%s"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportGlobalFlag"><l><option>case sensitivity</option></l></block><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><block var="small"/><block var="large"/></list></block><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><block s="reportTextAttribute"><l><option>lower case</option></l><block var="small"/></block><block s="reportTextAttribute"><l><option>lower case</option></l><block var="large"/></block></list></block></block></block></script></block-definition><block-definition s="substring of %&apos;str&apos; from position %&apos;start&apos; to position %&apos;end&apos; inclusive" type="reporter" category="operators"><comment x="0" y="0" w="297.3333333333333" collapsed="false">Reports the portion of the first input (string) starting at the position given by the second input (counting from 1, like LETTER n OF) and ending at the position given by the third input (also counting from 1).  If the third input is empty, reports the portion from the first position to the end of the string.&#xD;If a position number is negative, counts from the end backward, so -1 is the last character, -2 is the next to last, etc.</comment><header></header><code></code><translations>pt:o texto de _ entre as posições _ e _ , inclusive&#xD;ca:part del text _ des de la posició _ fins _&#xD;pl:podciąg _ od pozycji _ do pozycji _ włącznie&#xD;</translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block var="start"/><l>0</l></list></block><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="start"/><l>1</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block></list></block><block var="start"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="end"/><l>0</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block var="end"/><l>0</l></list></block><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="end"/><l>1</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block></list></block><block var="end"/></block></block></block><block var="str"/></block></block></block></script></block-definition><block-definition s="text %&apos;string&apos; contains %&apos;marker&apos;" type="predicate" category="operators"><comment x="0" y="0" w="218" collapsed="false">Reports True if the first input string contains the second input string, otherwise false.&#xD;&#xD;Comparison is case-independent by default; use USE CASE-INDEPENDENT COMPARISONS to change that.</comment><header></header><code></code><translations>pt:o texto de _ antes de _&#xD;ca:text _ conté _ ?&#xD;pl:tekst _ zawiera _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportVariadicGreaterThan"><list><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block><l>0</l></list></block></block></script></block-definition><block-definition s="$flash sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="161.14285714285708" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><translations>ca:ordena _ segons criteri _&#xD;pl:$flash sortuj _ za pomocą _&#xD;</translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>lst_sort(list, fn)</l><list><block var="data"/><block var="function"/></list></block></block></script></block-definition><block-definition s="$flash assoc %&apos;key&apos; %&apos;a-list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="289.3333333333333" collapsed="false">The second input is an &quot;association list,&quot; a list of two-item lists.  Each of those smaller lists has a &quot;key&quot; as its first item and a &quot;value&quot; as its second.  ASSOC reports the first key-value pair in the association list whose key matches the first input.</comment><header></header><code></code><translations>ca:associació _ _&#xD;pl:$flash skojarz _ _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportAtomicFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block var="key"/><block s="reportListItem"><l>1</l><l/></block></list></block></autolambda><list></list></block><block var="a-list"/></block></block></script></block-definition><block-definition s="%&apos;#&apos; for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><comment x="0" y="0" w="228.57142857142858" collapsed="false">This block carries out the given script for each item of the given list, like the primitive FOR EACH.&#xD;&#xD;What&apos;s different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.</comment><header></header><code></code><translations>ca:_ per cada _ de _ _&#xD;pl:_ dla każdego _ z _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doForEach"><l>inner item</l><block var="data"/><script><block s="doSetVar"><l>item</l><block var="inner item"/></block><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="☠︎ linked? %&apos;data&apos;" type="predicate" category="lists" helper="true"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>lst_linked(list)</l><list><block var="data"/></list></block></block></script></block-definition><block-definition s="☠︎ link %&apos;data&apos;" type="reporter" category="lists" helper="true"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><block s="reportCDR"><block var="data"/></block></block></block></script></block-definition><block-definition s="printable %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="188.66666666666666" collapsed="false">Takes a (possibly deep) list as input,&#xD;and reports a human-readable text form &#xD;of the list (namely, Lisp notation).&#xD;&#xD;Will not work on circular lists.</comment><header></header><code></code><translations>ca:notació textual de _&#xD;pl:tekstowa _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><l>()</l></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><list><l>(</l><block s="reportAtomicCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="printable %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> </l><l></l></list></block></autolambda><list></list></block></block><l>)</l></list></block></block></script></block-definition><block-definition s="sentence %&apos;phrase&apos;" type="reporter" category="lists"><comment x="0" y="0" w="302.6666666666667" collapsed="false">SENTENCE is the main constructor for sentences, represented&#xD;as lists of words.  It takes zero or more inputs, each of which can&#xD;be either a list or a text string.  If a list, the input is assumed to be&#xD;a list of words.  If a text string, it is converted to a list of words using&#xD;SENTENCE→LIST.  Then all the lists of words are appended to form a new list of words.&#xD;&#xD;If the inputs are lists of lists rather than lists of words, SENTENCE,&#xD;like APPEND, does only one level of flattening, reporting a list of&#xD;all the items of all the input lists.</comment><header></header><code></code><translations>ca:frase _&#xD;pl:zdanie _&#xD;</translations><inputs><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><l></l><custom-block s="sentence $arrowRight list %txt"><l></l></custom-block></block></autolambda><list></list></block><block var="phrase"/></block></block></block></script></block-definition><block-definition s="$flash zip %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="192" collapsed="false">ZIP takes any number of lists as inputs.  The lists should all be the same length.  ZIP reports a list of lists in which the first item is a list of all the first items, the second item is a list of all the second items, etc.&#xD;Viewing the inputs as the rows of a matrix, ZIP reports its transpose.</comment><header></header><code></code><translations>pl:$flash spakuj _&#xD;</translations><inputs><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block var="lists"/></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="lists"><comment x="0" y="0" w="105.33333333333333" collapsed="false">The identity function reports its input.</comment><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="multimap %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="267.3333333333333" collapsed="false">Takes as input a function of N inputs and N lists.&#xD;The function is called with item 1 of all the lists as its inputs, with item 2 of all the lists as its inputs, and so on.  (The lists should all be the same length.)</comment><header></header><code></code><translations>ca:multi-mapeja _ sobre _&#xD;pl:mapuj wielokrotnie _ na _&#xD;</translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="function"/><custom-block s="%s"><l></l></custom-block></block></autolambda><list></list></block><custom-block s="$flash zip %mult%l"><block var="lists"/></custom-block></block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="196" collapsed="false">Takes a sentence in text string form and reports the sentence as a list of its words.</comment><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;pt:uma lista com as palavras da frase _&#xD;pl:zdanie $arrowRight lista _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportAtomicKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><l></l></block><l>0</l></list></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></block></script></block-definition><block-definition s="set %&apos;#1&apos; in %&apos;#2&apos; to %&apos;#3&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%l" initial="1"></input><input type="%s" initial="1"></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><custom-block s="$flash assoc %s %l"><block var="#1"/><block var="#2"/></custom-block><l></l></list></block><script><block s="doAddToList"><block s="reportNewList"><list><block var="#1"/><block var="#3"/></list></block><block var="#2"/></block></script><script><block s="doReplaceInList"><l>2</l><custom-block s="$flash assoc %s %l"><block var="#1"/><block var="#2"/></custom-block><block var="#3"/></block></script></block></script><scripts><script x="250" y="163.9166666666668"><block s="bubble"><l>Error: Key not found in "set in to" block . Check to see if the parameters are correct.</l></block></script></scripts></block-definition><block-definition s="get %&apos;#1&apos; in %&apos;#2&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><custom-block s="$flash assoc %s %l"><block var="#1"/><block var="#2"/></custom-block><l></l></list></block><script><block s="doReport"><l>Error: Key not found in "set in to" block . Check to see if the parameters are correct.</l></block></script><script><block s="doReport"><block s="reportListItem"><l>2</l><custom-block s="$flash assoc %s %l"><block var="#1"/><block var="#2"/></custom-block></block></block></script></block></script></block-definition><block-definition s="store key: %&apos;#1&apos; in: %&apos;#2&apos; in browser" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>Association List</l></list></block><block s="doSetVar"><l>Association List</l><custom-block s="$flash assoc %s %l"><block var="#1"/><block var="#2"/></custom-block></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="Association List"/><l></l></list></block><script><block s="bubble"><l>Error: Key not found in "store key in list in browser" block . Check to see if the parameters are correct.</l></block></script><script><custom-block s="store key: %s value: %s in browser"><block s="reportListItem"><l>1</l><block var="Association List"/></block><block s="reportListItem"><l>2</l><block var="Association List"/></block></custom-block></script></block></script></block-definition><block-definition s="get saved value %&apos;Key&apos; or initialize to %&apos;Value&apos; if unfound" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%s" initial="1"></input></inputs><script><block s="doIfElse"><custom-block s="get value from key: %s in browser"><block var="Key"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block var="Key"/><custom-block s="get value from key: %s in browser"><block var="Key"/></custom-block></list></block></block></script><script><custom-block s="store key: %s value: %s in browser"><block var="Key"/><block var="Value"/></custom-block><block s="doReport"><block s="reportNewList"><list><block var="Key"/><block var="Value"/></list></block></block></script></block></script></block-definition><block-definition s="change %&apos;variable&apos; in %&apos;association list&apos; by %&apos;x&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%l" initial="1"></input><input type="%n" initial="1"></input></inputs><script><custom-block s="set %s in %l to %s"><block var="variable"/><block var="association list"/><block s="reportVariadicSum"><list><custom-block s="get %s in %l"><block var="variable"/><block var="association list"/></custom-block><block var="x"/></list></block></custom-block></script></block-definition><block-definition s="Upgrades" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="get list from item %n of %l to item %n"><l>1</l><block s="reportNewList"><list><block s="reportJoinWords"><list><l>POINTS VALUE UPGRADE</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Cost: </l><custom-block s="E-Notation %n"><custom-block s="get %s in %l"><l>Points Value Upgrade Cost</l><block var="Costs"/></custom-block></custom-block><l> Points</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Value: </l><custom-block s="get %s in %l"><l>Points Value</l><block var="Values"/></custom-block><l> &gt;&gt; </l><block s="reportVariadicSum"><list><custom-block s="get %s in %l"><l>Points Value</l><block var="Values"/></custom-block><l>1</l></list></block></list></block><block s="reportJoinWords"><list><l>POINTS MULTIPLIER UPGRADE</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Cost: </l><custom-block s="E-Notation %n"><custom-block s="get %s in %l"><l>Points Multiplier Upgrade Cost</l><block var="Costs"/></custom-block></custom-block><l> Points</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Value: </l><custom-block s="get %s in %l"><l>Points Multiplier Value</l><block var="Values"/></custom-block><l> &gt;&gt; </l><block s="reportVariadicSum"><list><custom-block s="get %s in %l"><l>Points Multiplier Value</l><block var="Values"/></custom-block><l>1</l></list></block></list></block><block s="reportJoinWords"><list><l>POINTS EXPONENT UPGRADE</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Cost: </l><custom-block s="E-Notation %n"><custom-block s="get %s in %l"><l>Points Exponent Upgrade Cost</l><block var="Costs"/></custom-block></custom-block><l> Points</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Value: </l><custom-block s="get %s in %l"><l>Points Exponent Value</l><block var="Values"/></custom-block><l> &gt;&gt; </l><block s="reportVariadicSum"><list><custom-block s="get %s in %l"><l>Points Exponent Value</l><block var="Values"/></custom-block><l>1</l></list></block></list></block><block s="reportJoinWords"><list><l>RESET SHIELD</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Cost: </l><custom-block s="E-Notation %n"><custom-block s="get %s in %l"><l>Reset Shield Upgrade Cost</l><block var="Costs"/></custom-block></custom-block><l> Points</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Level: </l><custom-block s="get %s in %l"><l>Reset Shield Value</l><block var="Values"/></custom-block><l> &gt;&gt; </l><block s="reportVariadicSum"><list><custom-block s="get %s in %l"><l>Reset Shield Value</l><block var="Values"/></custom-block><l>1</l></list></block></list></block><l>Coming Soon...</l><l>Coming Soon...</l><l>Coming Soon...</l></list></block><block s="reportVariadicSum"><list><custom-block s="get %s in %l"><l>Promotion Value</l><block var="Values"/></custom-block><l>1</l></list></block></custom-block></block></script></block-definition><block-definition s="precision round %&apos;x&apos; to %&apos;precision&apos; decimals" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n" initial="1"></input><input type="%n" initial="1"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportRound"><block s="reportVariadicProduct"><list><block var="x"/><block s="reportPower"><l>10</l><block var="precision"/></block></list></block></block><block s="reportPower"><l>10</l><block var="precision"/></block></block></block></script></block-definition><block-definition s="Position Check Me From %&apos;position&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportNewList"><list><custom-block s="precision round %n to %n decimals"><block s="xPosition"></block><l>1</l></custom-block><custom-block s="precision round %n to %n decimals"><block s="yPosition"></block><l>1</l></custom-block></list></block><block var="position"/></list></block></block></script></block-definition><block-definition s="go to %&apos;layer&apos; layers behind the front" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n" initial="1">0</input></inputs><script><block s="goToLayer"><l><option>front</option></l></block><block s="goBack"><block var="layer"/></block></script></block-definition><block-definition s="Reset Layers" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportJoinWords"><list><l>PROMOTION</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Cost: </l><custom-block s="E-Notation %n"><custom-block s="get %s in %l"><l>Promotion Cost</l><block var="Costs"/></custom-block></custom-block><l> Points</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Resets: </l><l>Everything before promotion.</l><block s="reportUnicodeAsLetter"><l>10</l></block><l>Rank: </l><custom-block s="E-Notation %n"><custom-block s="get %s in %l"><l>Promotion Value</l><block var="Values"/></custom-block></custom-block><l> &gt;&gt; </l><custom-block s="E-Notation %n"><block s="reportVariadicSum"><list><custom-block s="get %s in %l"><l>Promotion Value</l><block var="Values"/></custom-block><l>1</l></list></block></custom-block></list></block></list></block></block></script></block-definition><block-definition s="$cloudOutline MQTT connect to %&apos;broker&apos; %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="455" collapsed="false">Connect to a broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. username (some brokers need this)&#xD;2. password (some brokers need this)&#xD;3. keepalive (default time is 60 seconds but some brokers need a shorter time)&#xD;4. connection callback (ringed set of scripts to be run when connection is made or remade)&#xD;&#xD;ADVANCED: The brokers offered in the menu are accessed using default ports and  basepaths (if needed).  If accessing other brokers, the complete urls should be formed like this:&#xD;&#xD;siteURL:port/basepath &#xD;e.g mqtt.eclipseprojects.io:443/mqtt&#xD;&#xD;It is possible to have more than one connection to the same broker, for instance, using two different user/pass accounts simultaneously. To do this, add a connection id at the end of the broker:&#xD;&#xD;e.g mqtt.eclipseprojects.io:443/mqtt|1&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%group%s%s%n%cmdRing" expand="username&#xD;password&#xD;keepalive&#xD;connection callback" max="4">​&#xD;​&#xD;60</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><custom-block s="sanitise options %l"><block var="options"/></custom-block></block><block s="doDeclareVariables"><list><l>connection status</l><l>callback</l></list></block><block s="doSetVar"><l>connection status</l><l>connecting</l></block><block s="doSetVar"><l>callback</l><l></l></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>4</l><block var="options"/></block><l><option>command</option></l></block><script><block s="doSetVar"><l>callback</l><block s="reportListItem"><l>4</l><block var="options"/></block></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>username</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>password</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>keepalive</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_connect(broker,callback,options)</l><list><block var="broker"/><block var="callback"/><block var="options"/></list></block><block s="doWaitUntil"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connecting</l></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connected</l></list></block></block><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="connection status"/></list></block></script><list></list></block></script></block-definition><block-definition s="$cloudOutline MQTT subscribe to %&apos;broker&apos; topic %&apos;topic&apos; $nl on each message run %&apos;callback&apos; %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="306.99999999999943" collapsed="false">Subscribe to a topic on a broker&#xD;&#xD;Make sure you have already run an MQTT connect block before using this one&#xD;&#xD;You should add a script to be run inside he grey ring.&#xD;&#xD;It will be run each time a message is received&#xD;&#xD;If you click on the arrow on the grey ring twice, you can use #1 and #2 inside your script.&#xD;&#xD;#1 will contain the received payload&#xD;&#xD;#2 will contain the received topic name&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. Subscribed QoS (0,1 or 2)  Note this will be downgraded if it exceeds the QoS of the stored message held on the broker &#xD;&#xD;2. Binary mode (boolean) Default (false) - payload is returned as text&#xD;&#xD;If true, payload returned as single column list of values in the range of 0 to 255..  </comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input><input type="%cmdRing"></input><input type="%group%n%b" expand="QoS&#xD;binary mode" max="2">0&#xD;false</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>qos</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_sub(broker,topic,callback,options)</l><list><block var="broker"/><block var="topic"/><block var="callback"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT publish to %&apos;broker&apos; topic %&apos;topic&apos; payload %&apos;payload&apos; %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="455" collapsed="false">Publish a message to an MQTT broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. QoS (quality of service 0,1 or 2 - see  https://www.emqx.com/en/blog/introduction-to-mqtt-qos)&#xD;&#xD;2. Retain flag (boolean)&#xD;&#xD;3. Binary mode (boolean).    Default (false) - the payload is published as text&#xD;&#xD;If set to true then payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text. Note that many brokers are configured to limit the payload size to 1 MB.&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input><input type="%mlt">hello</input><input type="%group%n%b%b" expand="QoS&#xD;retain flag&#xD;binary mode" max="3">0&#xD;false&#xD;false</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>qos</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>retain</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>3</l><block s="reportTextSplit"><block var="options"/><l><option>json</option></l></block></block></block></block><script><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>list</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportListAttribute"><l><option>json</option></l><block var="payload"/></block></block></script><list></list></block><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>number</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportJoinWords"><list><block var="payload"/></list></block></block></script><list></list></block></script><list></list></block><block s="doApplyExtension"><l>mqt_pub(broker,topic,payload,options)</l><list><block var="broker"/><block var="topic"/><block var="payload"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT unsubscribe from %&apos;broker&apos; topic %&apos;topic&apos;" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_unsub(broker,topic)</l><list><block var="broker"/><block var="topic"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT disconnect from %&apos;broker&apos;" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">all<options>all&#xD;broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_disconnect(broker)</l><list><block var="broker"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT response %&apos;broker&apos; topic %&apos;topic&apos; $nl reply %&apos;reply&apos; %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="292.22207031250036" collapsed="false">Options:&#xD;&#xD;1. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true then subscribed, received payload is returned as single column list of values in the range of 0 to 255..  Default (false) - it is returned as text&#xD;&#xD;2.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name/#</input><input type="%repRing"></input><input type="%group%b%b" expand="sub binary mode&#xD;pub binary mode" max="2">false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>callbackTopic</l><l>error</l></list></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><block var="broker"/><block var="topic"/><block s="reifyScript"><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><l>/@</l><block var="received topic"/></list></block><l>0</l></list></block><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list><block var="received payload"/><block var="received topic"/></list></block></block></script><list></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list></list></block></block></script><list></list></block><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block><block s="doSetVar"><l>callbackTopic</l><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block var="received topic"/><l>@</l></block></block></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><block var="broker"/><block var="callbackTopic"/><block var="resp"/><list><l>0</l><l><bool>false</bool></l><block s="reportListItem"><l>2</l><block var="options"/></block></list></custom-block></script><list></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; $nl on response run %&apos;callback&apos; %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="242.99999999999997" collapsed="false">The options are not required but can be filled if needed.&#xD;&#xD;1. Append response topic (boolean): If true, the response topic is added at the end of the call topic after @ sign. The default condition (true) response topic is added.&#xD;&#xD;2. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true,then the subscribed, received payload is returned as a single column list of values in the range of 0 to 255..  &#xD;&#xD;3.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%cmdRing"></input><input type="%group%b%b%b" expand="append response topic&#xD;sub binary mode&#xD;pub binary mode&#xD;" max="3">true&#xD;false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>error</l><l>informTopic</l><l>topicCall</l></list></block><block s="doSetVar"><l>informTopic</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="options"/></block><l><option>Boolean</option></l></block><block s="reportListItem"><l>1</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list><block var="received payload"/><block var="received topic"/></list></block></script><list></list></block><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list></list></block></script><list></list></block><block var="error"/></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></custom-block><block s="doIfElse"><block var="informTopic"/><script><block s="doSetVar"><l>topicCall</l><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block></block></script><script><block s="doSetVar"><l>topicCall</l><block var="topic"/></block></script></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><block var="broker"/><block var="topicCall"/><block var="payload"/><list><l>0</l><l><bool>false</bool></l><block s="reportListItem"><l>3</l><block var="options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT example response reporter payload %&apos;payload&apos; topic %&apos;topic&apos;" type="reporter" category="MQTT"><comment x="0" y="0" w="90" collapsed="false">This is a simple echo example.&#xD;Topic can be used to filter the response.</comment><header></header><code></code><translations></translations><inputs><input type="%mlt">hello</input><input type="%txt">name</input></inputs><script><block s="doReport"><block var="payload"/></block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; %&apos;options&apos;" type="reporter" category="MQTT"><comment x="0" y="0" w="343" collapsed="false">The response topic should be a unique value for each call e.g. use timer&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1.  Timeout value - default is 3 seconds&#xD;&#xD;2.  Append response topic (boolean): If true, the response topic is added at the end of the call topic after @ sign. The default condition (true) response topic is added.&#xD;&#xD;3. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true, subscribed, received payload returned as single column list of values in the range of 0 to 255..  Default (false) - it is returned as text&#xD;&#xD;4.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%group%n%b%b%b" expand="timeout&#xD;append response topic&#xD;sub binary mode&#xD;pub binary mode&#xD;" max="4">3&#xD;true&#xD;false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>semaphore</l><l>timer0</l><l>timeout</l><l>informTopic</l><l>topicCall</l></list></block><block s="doSetVar"><l>semaphore</l><l>0</l></block><block s="doSetVar"><l>timeout</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="options"/></block><l><option>number</option></l></block><block s="reportListItem"><l>1</l><block var="options"/></block><l>3</l></block></block><block s="doSetVar"><l>informTopic</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="options"/></block><l><option>Boolean</option></l></block><block s="reportListItem"><l>2</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><block s="doSetVar"><l>resp</l><l>timeout</l></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block var="received payload"/></block><block s="doSetVar"><l>semaphore</l><l>1</l></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></custom-block><block s="doIfElse"><block var="informTopic"/><script><block s="doSetVar"><l>topicCall</l><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block></block></script><script><block s="doSetVar"><l>topicCall</l><block var="topic"/></block></script></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><block var="broker"/><block var="topicCall"/><block var="payload"/><list><l>0</l><l><bool>false</bool></l><block s="reportListItem"><l>4</l><block var="options"/></block></list></custom-block><block s="doSetVar"><l>timer0</l><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="doWaitUntil"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="semaphore"/><l>1</l></list></block><block s="reportVariadicGreaterThan"><list><block s="reportDifference"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="timer0"/></block><block s="reportVariadicProduct"><list><block var="timeout"/><l>1000</l></list></block></list></block></list></block></block><custom-block s="$cloudOutline MQTT unsubscribe from %s topic %s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block></custom-block><block s="doReport"><block var="resp"/></block></script></block-definition><block-definition s="%&apos;data&apos; to base64" type="reporter" category="MQTT"><comment x="0" y="0" w="290" collapsed="false">Encode costume, sound or data to Base64</comment><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doReport"><block s="reportApplyExtension"><l>mqt_to_base64(media_or_data)</l><list><block var="data"/></list></block></block></script></block-definition><block-definition s="sanitise options %&apos;data&apos;" type="reporter" category="MQTT" helper="true"><comment x="0" y="0" w="226" collapsed="false">Modify variadic defaults to be able to work for blank entries&#xD;&#xD;Any blank defaults should be set as zero width spaces which are removed by this reporter&#xD;&#xD;This is needed for the username and password option in the connect block in the MQTT library&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>zero width space</l></list></block><block s="doSetVar"><l>zero width space</l><block s="reportUnicodeAsLetter"><l>8203</l></block></block><block s="doSetVar"><l>data</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>text</option></l></block><block s="reportCombine"><block s="reportTextSplit"><block var="value"/><block var="zero width space"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l><l></l></list></block></autolambda><list></list></block></block><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="data"/></block></block><block s="doReport"><block var="data"/></block></script></block-definition><block-definition s="%&apos;data&apos; from base64 %&apos;options&apos;" type="reporter" category="MQTT"><comment x="0" y="0" w="290" collapsed="false">Decode costume, sound or data from Base64</comment><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%mult%b" expand="as byte list" max="1">true</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block><script><block s="doReport"><block s="reportApplyExtension"><l>mqt_from_base64_to_byte_list(b64)</l><list><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block var="data"/><l>,</l></block></block></list></block></block></script><list><l><bool>true</bool></l><script><block s="doReport"><block s="reportApplyExtension"><l>mqt_from_base64(b64)</l><list><block var="data"/></list></block></block></script></list></block></script></block-definition><block-definition s="MQTT Extension Examples" type="command" category="MQTT"><comment x="0" y="0" w="385.9999999999999" collapsed="false">Open (edit) this block to look at examples how to use the MQTT Extension blocks&#xD;&#xD;Background documentation:&#xD;https://github.com/pixavier/mqtt4snap&#xD;&#xD;Last source code version (mqtt.xml and mqttExtension.js):&#xD;https://gitlab.com/cymplecy/Snap/-/tree/master/libraries</comment><header></header><code></code><translations></translations><inputs></inputs><scripts><comment x="489.9999999999997" y="215.19999999999993" w="222.99999999999997" collapsed="false">Step 0: Connect to the broker</comment><comment x="31.333333333333353" y="152.2000000000001" w="239.99999999999997" collapsed="false">PubSub Hello World!</comment><comment x="489.9999999999997" y="271.1999999999996" w="222" collapsed="false">Step 1: Subscribe to a topic</comment><script x="25.33333333333341" y="272.19999999999936"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><l>broker.emqx.io</l><l>name</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>received topic</l></list></block><list></list></custom-block></script><script x="29.33333333333337" y="366.8666666666661"><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><l>broker.emqx.io</l><l>name</l><l>hello</l><list></list></custom-block></script><comment x="492.99999999999966" y="357.19999999999936" w="222" collapsed="false">Step 2: Publish a message</comment><script x="33.99999999999968" y="484.1999999999998"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><l>broker.emqx.io</l><l>name1</l><block s="reifyScript"><script><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><l>broker.emqx.io</l><l>name2</l><block var="payload"/><list></list></custom-block></script><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="498.9999999999999" y="481.6999999999981" w="220" collapsed="false">Step 1: Activate the responder as a simple subscription</comment><script x="32.99999999999993" y="602.0333333333336"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %group%n%b%b%b"><l>broker.emqx.io</l><l>name1</l><l>name2</l><l>hello</l><list><l>3</l><l><bool>false</bool></l></list></custom-block><l>2</l></block></script><comment x="500.0000000000001" y="606.699999999999" w="220" collapsed="false">Step 2: Send a request and wait the answer.</comment><comment x="504.9999999999997" y="131.19999999999987" w="191" collapsed="false">To execute the examples, single click on blocks, following the corresponding steps.</comment><comment x="499.6666666666671" y="756.3666666666654" w="224.00000000000003" collapsed="false">Step 2 bis: Send a request and do not wait for the answer</comment><comment x="24.33333333333337" y="871.1999999999988" w="356.99999999999994" collapsed="false">Synchronous client-server Hello World! with dynamic response topic (timer)</comment><comment x="510.9999999999996" y="930.700000000001" w="220" collapsed="false">Step 1: Activate the responder</comment><script x="34.33333333333337" y="1048.1999999999982"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %group%n%b%b%b"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><list><l>3</l><l><bool>false</bool></l></list></custom-block><l>2</l></block></script><comment x="510.9999999999996" y="1050.6999999999987" w="219.0000000000002" collapsed="false">Step 2: Send a request (timer acts as idCall) and wait for the answer</comment><comment x="31.999999999999886" y="1138.6999999999982" w="352.0000000000003" collapsed="false">Asynchronous client-server Hello World! with dynamic response topic (timer)</comment><script x="31.999999999999886" y="1207.0333333333313"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %group%b%b%b"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="514.9999999999998" y="1204.6999999999991" w="224.00000000000003" collapsed="false">Step 2 bis: Send a request (timer acts as idCall) and do not wait for the answer</comment><script x="28.99999999999968" y="225.20000000000022"><custom-block s="$cloudOutline MQTT connect to %s %group%s%s%n%cmdRing"><l>broker.emqx.io</l><list></list></custom-block></script><script x="25.33333333333341" y="932.2000000000014"><custom-block s="$cloudOutline MQTT response %s topic %s %br reply %repRing %group%b%b"><l>broker.emqx.io</l><l>name/#</l><block s="reifyReporter"><autolambda><custom-block s="$cloudOutline MQTT example response reporter payload %mlt topic %txt"><block var="payload"/><block var="topic"/></custom-block></autolambda><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="26.999999999999886" y="685.6999999999982" w="372.0000000000004" collapsed="false">Asynchronous client-server Hello World! with static response topic (name2)</comment><script x="27.999999999999925" y="751.0333333333324"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %group%b%b%b"><l>broker.emqx.io</l><l>name1</l><l>name2</l><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list><l><bool>false</bool></l></list></custom-block></script><comment x="28.99999999999987" y="412.36666666666696" w="361.99999999999994" collapsed="false">Synchronous client-server Hello World! with static response topic (name2)</comment></scripts></block-definition><block-definition s="GenerateUserId" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>UserId</l></list></block><block s="doSetVar"><l>UserId</l><l></l></block><block s="doWarp"><script><block s="doRepeat"><l>15</l><script><block s="doSetVar"><l>UserId</l><block s="reportJoinWords"><list><block var="UserId"/><block s="reportRandom"><l>0</l><l>9</l></block></list></block></block></script></block></script></block><block s="doReport"><block var="UserId"/></block></script></block-definition><block-definition s="ask %&apos;question&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">what&apos;s your name?</input></inputs><script><block s="doAsk"><block var="question"/></block><block s="doReport"><block s="getLastAnswer"></block></block></script></block-definition><block-definition s="notify %&apos;message&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">Alert!</input></inputs><script><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doAsk"><block s="reportNewList"><list><block s="reportApplyExtension"><l>ide_translate(text)</l><list><block var="message"/></list></block><block s="reportNewList"><list><block s="reportApplyExtension"><l>ide_translate(text)</l><list><l>Ok</l></list></block></list></block></list></block></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="prompt %&apos;title&apos; options %&apos;options&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">choose!</input><input type="%mult%s"></input></inputs><script><block s="doReport"><custom-block s="ask %s"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="title"/><l></l></list></block><block var="options"/><block s="reportNewList"><list><block s="reportApplyExtension"><l>ide_translate(text)</l><list><block var="title"/></list></block><block var="options"/></list></block></block></custom-block></block></script></block-definition><block-definition s="submenu %&apos;title&apos; items %&apos;items&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">title</input><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="title"/><l></l></list></block><l>menu</l><block s="reportApplyExtension"><l>ide_translate(text)</l><list><block var="title"/></list></block></block><block var="items"/></list></block></block></script></block-definition><block-definition s="divider" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block-definition><block-definition s="menu item icon %&apos;icon&apos; label %&apos;text&apos; value %&apos;value&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_objectsMenu</options></input><input type="%s">option</input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="icon"/><l></l></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="text"/><l></l></list></block><block var="value"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l></l></list></block><block var="text"/><block s="reportNewList"><list><block var="text"/><block var="value"/></list></block></block></block><block s="reportNewList"><list><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="text"/><l></l></list></block><block s="reportIfElse"><block s="reportIsA"><block var="icon"/><l><option>text</option></l></block><block s="reportObject"><block var="icon"/></block><block var="icon"/></block><block s="reportNewList"><list><block s="reportIfElse"><block s="reportIsA"><block var="icon"/><l><option>text</option></l></block><block s="reportObject"><block var="icon"/></block><block var="icon"/></block><block var="text"/></list></block></block><block var="value"/></list></block></block></block></script></block-definition><block-definition s="menu item speech ballon %&apos;orientation&apos; message %&apos;message&apos; value %&apos;value&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">left<options>left&#xD;right</options></input><input type="%s">hey!</input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l></l></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="orientation"/><l>right</l></list></block><block s="reportNewList"><list><l></l><block var="message"/></list></block><block s="reportNewList"><list><block var="message"/></list></block></block><block s="reportNewList"><list><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="orientation"/><l>right</l></list></block><block s="reportNewList"><list><l></l><block var="message"/></list></block><block s="reportNewList"><list><block var="message"/></list></block></block><block var="value"/></list></block></block></block></script></block-definition><block-definition s="menu examples" type="command" category="sensing"><comment x="0" y="0" w="212" collapsed="false">open my definition to look at examples how to use the menu blocks</comment><header></header><code></code><translations></translations><inputs></inputs><scripts><script x="10" y="79.00000000000001"><block s="doAsk"><l>what&apos;s your name?</l></block></script><script x="10" y="118.00000000000001"><custom-block s="ask %s"><l>what&apos;s your name?</l></custom-block></script><script x="10" y="151"><custom-block s="notify %s"><l>Alert!</l></custom-block></script><script x="10" y="190"><custom-block s="prompt %s options %mult%s"><l>choose!</l><list><l>foo</l><l>bar</l><l>baz</l></list></custom-block></script><script x="10" y="223"><custom-block s="prompt %s options %mult%s"><l>choose!</l><block s="reportGet"><l><option>costumes</option></l></block></custom-block></script><script x="10" y="261"><custom-block s="submenu %s items %mult%s"><l>more</l><list><l>frob</l><l>quux</l><l>garply</l></list></custom-block></script><script x="10" y="294"><custom-block s="prompt %s options %mult%s"><l>choose!</l><list><l>foo</l><l>bar</l><custom-block s="divider"></custom-block><custom-block s="submenu %s items %mult%s"><l>more</l><list><l>frob</l><custom-block s="submenu %s items %mult%s"><l></l><list><l>fred</l><l>test</l></list></custom-block><custom-block s="divider"></custom-block><l>quux</l><l>garply</l></list></custom-block><l>baz</l></list></custom-block></script><script x="10" y="377.8333333333334"><custom-block s="menu item icon %s label %s value %s"><l></l><l>option</l><l></l></custom-block></script><script x="10" y="411.8333333333334"><custom-block s="prompt %s options %mult%s"><l>choose!</l><list><custom-block s="menu item icon %s label %s value %s"><l>monkey</l><l>monkey</l><block s="reportObject"><l>monkey</l></block></custom-block><custom-block s="menu item icon %s label %s value %s"><l>Octo</l><l></l><l>42</l></custom-block><custom-block s="menu item icon %s label %s value %s"><l></l><l>choice</l><l>yay!</l></custom-block><custom-block s="divider"></custom-block><custom-block s="submenu %s items %mult%s"><l>more</l><list><custom-block s="menu item icon %s label %s value %s"><l>Alonzo</l><l>Alonzo</l><block s="reportObject"><l>Alonzo</l></block></custom-block><custom-block s="menu item icon %s label %s value %s"><l></l><l>foo</l><l>bar</l></custom-block></list></custom-block></list></custom-block></script><script x="10" y="565.8333333333335"><custom-block s="menu item speech ballon %s message %s value %s"><l>left</l><l>hey!</l><l></l></custom-block></script><script x="10" y="599.8333333333335"><custom-block s="prompt %s options %mult%s"><l>choose!</l><list><custom-block s="menu item speech ballon %s message %s value %s"><l>left</l><l>hey!</l><l></l></custom-block><custom-block s="menu item speech ballon %s message %s value %s"><l>right</l><l>wassup?</l><l></l></custom-block><custom-block s="menu item speech ballon %s message %s value %s"><l>left</l><block s="reportObject"><l>Alonzo</l></block><l></l></custom-block><custom-block s="menu item speech ballon %s message %s value %s"><l>right</l><l>so?</l><block s="reportGet"><l><option>costumes</option></l></block></custom-block></list></custom-block></script></scripts></block-definition><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control" helper="true"><comment x="0" y="0" w="276" collapsed="false">Catch errors.&#xD;&#xD;Runs the first script.  If it succeeds, nothing else happens.&#xD;But if it has an error (something that would otherwise result&#xD;in a red halo around the block), then the second script is run,&#xD;with the text of the error message that would have been shown in the variable ERROR.</comment><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _&#xD;ca:prova de forma segura _ i si _ _&#xD;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block var="action"/><block var="handler"/><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;pl:błąd _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;" type="reporter" category="control"><comment x="0" y="0" w="316.6666666666667" collapsed="false">Catch errors in a reporter.&#xD;&#xD;Evaluates its first input.  If that expression successfully reports a value, this block reports that value.  If the expression causes a Snap! error,&#xD;then the final input slot is evaluated with the text of what would have&#xD;been the error message in variable ERROR.  SAFELY TRY then reports the value of that final expression.&#xD;&#xD;Sometimes you&apos;ll want to throw an error in the final expression.  You&#xD;can put an ERROR block inside a CALL block to do that.</comment><header></header><code></code><translations>ca:prova de forma segura reportant _ i si _ reportant _&#xD;pl:bezpiecznie spróbuj zgłosić _ a jeśli _ zgłoś _&#xD;</translations><inputs><input type="%anyUE"></input><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>value</l><block s="evaluate"><block var="this"/><list></list></block></block></script><l>err</l><script><block s="doSetVar"><l>error</l><block var="err"/></block><block s="doSetVar"><l>value</l><block s="evaluate"><block var="that"/><list></list></block></block></script></custom-block><block s="doReport"><block var="value"/></block></script></block-definition><block-definition s="listify %&apos;jsonString&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:os dados JSON _ em formato de lista&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="jsonString"/><l><option>json</option></l></block></block></script></block-definition><block-definition s="value at key %&apos;key&apos; of %&apos;lst&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o valor com chave _ em _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>each item</l><block var="lst"/><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="each item"/></block><block var="key"/></list></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="each item"/></block></block></script><list></list></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="%&apos;method&apos; url: %&apos;url&apos; send: %&apos;payload&apos; headers: %&apos;headers&apos;" type="reporter" category="sensing"><header></header><code></code><translations>pt:a resposta a _ de _ enviando _ e cabeçalhos _&#xD;</translations><inputs><input type="%s" readonly="true">GET<options>GET&#xD;POST&#xD;PUT&#xD;DELETE</options></input><input type="%s">https://snap.berkeley.edu</input><input type="%s"></input><input type="%mult%l" readonly="true"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>xhr_request(mth, url, dta, hdrs)</l><list><block var="method"/><block var="url"/><block var="payload"/><block var="headers"/></list></block></block></script></block-definition><block-definition s="key: %&apos;key&apos; value: %&apos;value&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:um par (chave: _ , valor: _ )&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="key"/><block var="value"/></list></block></block></script></block-definition><block-definition s="current location" type="reporter" category="sensing"><comment x="0" y="0" w="200" collapsed="false">Reports a three-item list containing the latitude and longitude of the user, and the precision of the measurements.  Works only if the user allows snap.berkeley.edu access to location data.  Some browsers also require an HTTPS connection to Snap!.</comment><header></header><code></code><translations>pt:a localização actual do dispositivo&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>callback</l></list></block><block s="doSetVar"><l>callback</l><block s="reportApplyExtension"><l>geo_location(acc?)</l><list><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></block><block s="doWaitUntil"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block s="evaluate"><block var="callback"/><list></list></block></block><l>3</l></list></block></block><block s="doReport"><block s="evaluate"><block var="callback"/><list></list></block></block></script></block-definition><block-definition s="binary data from %&apos;url&apos; type %&apos;idl&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s" readonly="true" initial="1">octet<options>byte&#xD;octet&#xD;short&#xD;unsigned short&#xD;long&#xD;unsigned long&#xD;unrestricted float&#xD;unrestricted double&#xD;bigint</options></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>xhr_binary(url, webIDL_type)</l><list><block var="url"/><block var="idl"/></list></block></block></script></block-definition><block-definition s="MQTT Run Code %&apos;input&apos;" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doSetVar"><l>index</l><block s="reportListIndex"><custom-block s="$flash assoc %s %l"><block s="reportListItem"><l>1</l><block var="input"/></block><block var="Users"/></custom-block><block var="Users"/></block></block><block s="doIfElse"><block s="reportVariadicGreaterThanOrEquals"><list><block var="index"/><l>1</l></list></block><script><block s="doReplaceInList"><block var="index"/><block var="Users"/><block var="input"/></block></script><script><block s="doAddToList"><block var="input"/><block var="Users"/></block></script></block></script></block-definition><block-definition s="Initialization" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Currencies</l><block s="reportNewList"><list><custom-block s="get saved value %s or initialize to %s if unfound"><l>Points</l><l>0</l></custom-block></list></block></block><block s="doSetVar"><l>Values</l><block s="reportNewList"><list><custom-block s="get saved value %s or initialize to %s if unfound"><l>Points Value</l><l>1</l></custom-block><custom-block s="get saved value %s or initialize to %s if unfound"><l>Promotion Value</l><l>0</l></custom-block><custom-block s="get saved value %s or initialize to %s if unfound"><l>Points Multiplier Value</l><l>1</l></custom-block><custom-block s="get saved value %s or initialize to %s if unfound"><l>Points Exponent Value</l><l>1</l></custom-block><custom-block s="get saved value %s or initialize to %s if unfound"><l>Reset Shield Value</l><l>0</l></custom-block></list></block></block><block s="doSetVar"><l>Costs</l><block s="reportNewList"><list><custom-block s="get saved value %s or initialize to %s if unfound"><l>Points Value Upgrade Cost</l><l>1</l></custom-block><custom-block s="get saved value %s or initialize to %s if unfound"><l>Promotion Cost</l><l>1000</l></custom-block><custom-block s="get saved value %s or initialize to %s if unfound"><l>Points Multiplier Upgrade Cost</l><l>2000</l></custom-block><custom-block s="get saved value %s or initialize to %s if unfound"><l>Points Exponent Upgrade Cost</l><l>100000</l></custom-block><custom-block s="get saved value %s or initialize to %s if unfound"><l>Reset Shield Upgrade Cost</l><l>10000</l></custom-block></list></block></block><block s="doSetVar"><l>Trackers</l><block s="reportNewList"><list><block s="reportNewList"><list><l>Current Upgrade</l><l>1</l></list></block><block s="reportNewList"><list><l>Current Reset Layer</l><l>1</l></list></block><block s="reportNewList"><list><l>Current Tab Open</l><l>0</l></list></block></list></block></block><block s="doSetVar"><l>Users</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>MenuPosition</l><block s="reportNewList"><list><l>213.6</l><l>-153</l></list></block></block><block s="doSetVar"><l>Debounces</l><block s="reportNewList"><list><block s="reportNewList"><list><l>MenuDebounce</l><block s="reportBoolean"><l><bool>true</bool></l></block></list></block><block s="reportNewList"><list><l>ToggleDebounce</l><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></list></block></block><block s="doSetVar"><l>Timers</l><block s="reportNewList"><list><block s="reportNewList"><list><l>LeaderboardTimer</l><block s="getTimer"></block></list></block><block s="reportNewList"><list><l>SavingTimer</l><block s="getTimer"></block></list></block></list></block></block><block s="doSetVar"><l>TimerResets</l><block s="reportNewList"><list><block s="reportNewList"><list><l>LeaderboardTimer</l><l>0</l></list></block><block s="reportNewList"><list><l>SavingTimer</l><l>0</l></list></block></list></block></block></script><scripts><script x="413.2587890625" y="415.6333333333332"><custom-block s="encode %txt"><l>UserId</l></custom-block></script></scripts></block-definition><block-definition s="Point Gain" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportVariadicProduct"><list><block s="reportPower"><custom-block s="get %s in %l"><l>Points Value</l><block var="Values"/></custom-block><custom-block s="get %s in %l"><l>Points Exponent Value</l><block var="Values"/></custom-block></block><custom-block s="get %s in %l"><l>Points Multiplier Value</l><block var="Values"/></custom-block></list></block></block></script></block-definition><block-definition s="get list from item %&apos;starting index&apos; of %&apos;list&apos; to item %&apos;ending index&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%n" initial="1"></input><input type="%l" initial="1"></input><input type="%n" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>range</l></list></block><block s="doDeclareVariables"><list><l>new list</l></list></block><block s="doSetVar"><l>range</l><block s="reportNumbers"><block var="starting index"/><block var="ending index"/></block></block><block s="doSetVar"><l>new list</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doForEach"><l>index</l><block var="range"/><script><block s="doAddToList"><block s="reportListItem"><block var="index"/><block var="list"/></block><block var="new list"/></block></script></block></script></block><block s="doReport"><block var="new list"/></block></script></block-definition><block-definition s="encode %&apos;variable&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>ProjectId</l></list></block><block s="doSetVar"><l>ProjectId</l><l>xzalegros&amp;ProjectName=Incremental</l></block><block s="doReport"><block s="reportJoinWords"><list><block var="variable"/><l>_</l><block var="ProjectId"/></list></block></block></script></block-definition><block-definition s="decode %&apos;variable&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>ProjectId</l></list></block><block s="doSetVar"><l>ProjectId</l><l>xzalegros&amp;ProjectName=Incremental</l></block><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="variable"/><block s="reportJoinWords"><list><l>_</l><block var="ProjectId"/></list></block></block></block></block></script></block-definition><block-definition s="clear data in browser" type="command" category="other"><header></header><code></code><translations>ca:esborra dades del navegador&#xD;pl:wyczyść dane w przeglądarce&#xD;</translations><inputs></inputs><script><block s="doWarp"><script><block s="doForEach"><l>item</l><custom-block s="stored data in browser"></custom-block><script><custom-block s="remove key: %s in browser"><block s="reportListItem"><l>1</l><block var="item"/></block></custom-block></script></block></script></block></script></block-definition><block-definition s="remove key: %&apos;key&apos; in browser" type="command" category="other"><header></header><code></code><translations>ca:esborra clau: _ del navegador&#xD;pl:usuń klucz: _ w przeglądarce&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>db_remove(key)</l><list><block var="key"/></list></block></script></block-definition><block-definition s="reset %&apos;timer&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input></inputs><script><custom-block s="change %s in %l by %n"><block var="timer"/><block var="TimerResets"/><custom-block s="get %s in %l"><block var="timer"/><block var="Timers"/></custom-block></custom-block><custom-block s="set %s in %l to %s"><block var="timer"/><block var="TimerResets"/><block s="reportQuotient"><block s="reportRound"><block s="reportVariadicProduct"><list><custom-block s="get %s in %l"><block var="timer"/><block var="TimerResets"/></custom-block><l>10</l></list></block></block><l>10</l></block></custom-block></script></block-definition><block-definition s="costume from text %&apos;text&apos; size %&apos;size&apos;" type="reporter" category="looks"><header></header><code></code><translations>de:Kostüm aus Text _ Größe _&#xD;pt:um traje com o texto _ de tamanho _&#xD;ca:vestit amb el text _ i mida _&#xD;</translations><inputs><input type="%s">A</input><input type="%n">72</input></inputs><script><block s="doDeclareVariables"><list><l>costume</l><l>x</l><l>y</l><l>dir</l><l>cst</l><l>tmp</l><l>trails</l><l>pen state</l></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="text"/><l> </l></list></block><script><block s="doSetVar"><l>tmp</l><custom-block s="costume from text %s size %n"><l>A</l><block var="size"/></custom-block></block><block s="doReport"><block s="reportNewCostume"><block s="reportReshape"><l>0</l><block s="reportListAttribute"><l><option>dimensions</option></l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="tmp"/></block></block></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="tmp"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="tmp"/></block></block></block></script><list></list></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>y</l><block s="yPosition"></block></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>cst</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>pen state</l><block s="getPenDown"></block></block><block s="up"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="setHeading"><l>90</l></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="doSetVar"><l>trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><block s="write"><block var="text"/><block var="size"/></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><block s="doSetVar"><l>costume</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="costume"/><block s="reportJoinWords"><list><block var="text"/></list></block></list></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="cst"/></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="dir"/></block><block s="doIf"><block var="pen state"/><script><block s="down"></block></script><list></list></block><block s="doReport"><block var="costume"/></block></script></block-definition><block-definition s="create a %&apos;clone&apos; of myself and tell it to %&apos;code&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar" initial="1">clone</input><input type="%cmdRing" initial="1"></input></inputs><script><block s="doIf"><block s="reportNot"><custom-block s="is variable %s in the scope of %s ?"><l>clones</l><l>thisSprite</l></custom-block></block><script><custom-block s="create %s var %mult%txt"><l>sprite</l><list><l>clones</l></list></custom-block><block s="doSetVar"><l>clones</l><block s="reportNewList"><list></list></block></block></script><list><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clones"/><block s="reportNewList"><list></list></block></list></block><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %s deleted?"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="clones"/></block></block></custom-block></block><script><block s="doSetVar"><l>clones</l><block s="reportNewList"><list></list></block></block></script></list></block><block s="doAddToList"><block s="reportNewList"><list><block s="newClone"><l><option>myself</option></l></block><block s="reportVariadicSum"><list><block s="reportListAttribute"><l><option>length</option></l><block var="clones"/></block><l>1</l></list></block></list></block><block var="clones"/></block><block s="doSetVar"><l>clone</l><block s="reportListItem"><l><option>last</option></l><block var="clones"/></block></block><block s="doTellTo"><block s="reportListItem"><l>1</l><block s="reportListItem"><l><option>last</option></l><block var="clones"/></block></block><block var="code"/><list></list></block></script></block-definition><block-definition s="is variable %&apos;varname&apos; in the scope of %&apos;sprite&apos; ?" type="predicate" category="variables"><comment x="0" y="0" w="118.6666666666668" collapsed="false">Reports true if the varname is part of the scope of the sprite. the varname is not used case-sensitive!</comment><header></header><code></code><translations></translations><inputs><input type="%s">varname</input><input type="%s">thisSprite<options>thisSprite&#xD;theStage&#xD;anotherSprite</options></input></inputs><script><block s="doDeclareVariables"><list><l>target</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>target</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="sprite"/><l>theStage</l></list></block><block s="reportObject"><l>Stage</l></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="sprite"/><l>thisSprite</l></list></block><block s="reportObject"><l><option>myself</option></l></block><block s="reportObject"><block var="sprite"/></block></block></block></block><block s="doReport"><block s="reportListContainsItem"><block s="reportAskFor"><block var="target"/><block s="reifyReporter"><autolambda><block s="reportApplyExtension"><l>var_names(scope)</l><list><l></l></list></block></autolambda><list></list></block><list><l>sprite</l></list></block><block var="varname"/></block></block></script></block></script></block-definition><block-definition s="create %&apos;_scope&apos; var %&apos;_names&apos;" type="command" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block creates  new variables on the selected scope: global (for all sprites), sprite (for this sprite only) or script (only for that blocks stack) with the names given (in &apos;names&apos; list).&#xD;&#xD;If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.</comment><header></header><code></code><translations>pt:cria as variáveis _ _&#xD;ca:crea les _ variables _&#xD;es:crear las _ variables _&#xD;de:erstellen _ var _&#xD;pl:utwórz zmienną _ _&#xD;</translations><inputs><input type="%s" readonly="true">global<options>global&#xD;sprite&#xD;script</options></input><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>_item</l><block var="_names"/><script><block s="doApplyExtension"><l>var_declare(scope, name)</l><list><block var="_scope"/><block var="_item"/></list></block></script></block></script></block></script></block-definition><block-definition s="is %&apos;sprite&apos; deleted?" type="predicate" category="control"><comment x="0" y="0" w="90" collapsed="false">Checks whether the specified sprite is in the list of deleted sprites.</comment><header></header><code></code><translations></translations><inputs><input type="%s">thisSprite<options>thisSprite&#xD;anotherSprite</options></input></inputs><script><block s="doDeclareVariables"><list><l>allTheSprites</l><l>dummy</l><l>target</l></list></block><block s="doWarp"><script><block s="doIfElse"><block s="reportIsA"><block var="sprite"/><l><option>sprite</option></l></block><script><block s="doSetVar"><l>target</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="sprite"/><l>thisSprite</l></list></block><block s="reportObject"><l><option>myself</option></l></block><block var="sprite"/></block></block></script><script><block s="doSetVar"><l>target</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="sprite"/><l>thisSprite</l></list></block><block s="reportObject"><l><option>myself</option></l></block><block s="reportObject"><block var="sprite"/></block></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="target"/><l><option>sprite</option></l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="doSetVar"><l>allTheSprites</l><block s="reportGet"><l><option>other sprites</option></l></block></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doAddToList"><block s="reportGet"><l><option>self</option></l></block><block var="allTheSprites"/></block></script><l>error</l><script><block s="doSetVar"><l>dummy</l><l>0</l></block></script></custom-block><block s="doReport"><block s="reportNot"><block s="reportListContainsItem"><block var="allTheSprites"/><block var="target"/></block></block></block></script></block></script></block-definition><block-definition s="delete all my clones" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doForEach"><l>clone</l><block var="clones"/><script><block s="doTellTo"><block s="reportListItem"><l>1</l><block var="clone"/></block><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block></script><l>error</l><script><block s="bubble"><l></l></block></script></custom-block><block s="doSetVar"><l>clones</l><block s="reportNewList"><list></list></block></block></script></block-definition><block-definition s="set color to r: %&apos;red&apos; g: %&apos;green&apos; b: %&apos;blue&apos; a: %&apos;alpha&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n" initial="1">0</input><input type="%n" initial="1">0</input><input type="%n" initial="1">0</input><input type="%n" initial="1">255</input></inputs><script><block s="doSwitchToCostume"><custom-block s="rectangle costume %clr width: %n height: %n"><block s="reportNewList"><list><block var="red"/><block var="green"/><block var="blue"/><block var="alpha"/></list></block><block s="reportGetImageAttribute"><l><option>width</option></l><l><option>current</option></l></block><block s="reportGetImageAttribute"><l><option>height</option></l><l><option>current</option></l></block></custom-block></block></script></block-definition><block-definition s="rectangle costume %&apos;color&apos; width: %&apos;w&apos; height: %&apos;h&apos;" type="reporter" category="looks"><comment w="204.00000000000023" collapsed="false">make a rectangle costume with the given color, width and height. The color can be either specified by the color picker from the input slot, or it can be a list of r-g-b-a values.</comment><header></header><code></code><translations>pl:prostokątny kostium _ szerokość: _ wysokość: _&#xD;</translations><inputs><input type="%clr">rgba(0,0,0,1)</input><input type="%n">20</input><input type="%n">60</input></inputs><script><block s="doIf"><block s="reportIsA"><block var="color"/><l><option>list</option></l></block><script><block s="doSetVar"><l>color</l><block s="reportApplyExtension"><l>clr_rgba(r, g, b, a)</l><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block s="reportListAttribute"><l><option>length</option></l><block var="color"/></block><l>4</l></list></block><block s="reportConcatenatedLists"><list><block s="reportReshape"><block var="color"/><list><l>3</l></list></block><block s="reportNewList"><list><l>255</l></list></block></list></block><block s="reportReshape"><block var="color"/><list><l>4</l></list></block></block></block></block></script><list></list></block><block s="doReport"><block s="reportNewCostume"><block s="reportReshape"><block s="reportVariadicProduct"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportApplyExtension"><l>clr_channel(clr, rgba)</l><list><block var="color"/><l></l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>r</l><l>g</l><l>b</l><l>a</l></list></block></block><block s="reportNewList"><list><l>1</l><l>1</l><l>1</l><l>255</l></list></block></list></block><list><block s="reportVariadicProduct"><list><block s="reportVariadicMax"><list><block s="reportMonadic"><l><option>abs</option></l><block var="h"/></block><l>1</l></list></block><block s="reportVariadicMax"><list><block s="reportMonadic"><l><option>abs</option></l><block var="w"/></block><l>1</l></list></block></list></block><l>4</l></list></block><block s="reportVariadicMax"><list><block s="reportMonadic"><l><option>abs</option></l><block var="w"/></block><l>1</l></list></block><block s="reportVariadicMax"><list><block s="reportMonadic"><l><option>abs</option></l><block var="h"/></block><l>1</l></list></block></block></block></script></block-definition><block-definition s="properties - text: %&apos;text&apos; text size: %&apos;size&apos; color: %&apos;color&apos; x: %&apos;x&apos; y: %&apos;y&apos; size x: %&apos;sizeX&apos; size y: %&apos;sizeY&apos; text boundaries: %&apos;textBoundaries&apos; visable: %&apos;visible&apos;" type="reporter" category="UI"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1">TextLabel</input><input type="%n" initial="1">24</input><input type="%clr" initial="1">rgba(0,0,0,1)</input><input type="%n" initial="1">-240</input><input type="%n" initial="1">180</input><input type="%n" initial="1">36</input><input type="%n" initial="1">48</input><input type="%b" initial="1">true</input><input type="%b" initial="1">false</input></inputs><script><block s="doDeclareVariables"><list><l>properties</l></list></block><block s="doSetVar"><l>properties</l><block s="reportNewList"><list></list></block></block><custom-block s="set %s in %l to %s"><l>text</l><block var="properties"/><block var="text"/></custom-block><custom-block s="set %s in %l to %s"><l>size</l><block var="properties"/><block var="size"/></custom-block><custom-block s="set %s in %l to %s"><l>color</l><block var="properties"/><block var="color"/></custom-block><custom-block s="set %s in %l to %s"><l>x</l><block var="properties"/><block var="x"/></custom-block><custom-block s="set %s in %l to %s"><l>y</l><block var="properties"/><block var="y"/></custom-block><custom-block s="set %s in %l to %s"><l>sizeX</l><block var="properties"/><block var="sizeX"/></custom-block><custom-block s="set %s in %l to %s"><l>sizeY</l><block var="properties"/><block var="sizeY"/></custom-block><custom-block s="set %s in %l to %s"><l>textBoundaries</l><block var="properties"/><block var="textBoundaries"/></custom-block><custom-block s="set %s in %l to %s"><l>visible</l><block var="properties"/><block var="visible"/></custom-block><block s="doReport"><block var="properties"/></block></script><scripts><script x="248.00000000000006" y="247.49999999999943"><custom-block s="set %s in %l to %s"><l></l><block var="properties"/><l></l></custom-block></script></scripts></block-definition><block-definition s="TextLabel %&apos;properties&apos;" type="command" category="UI"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>lines</l></list></block><block s="doSetVar"><l>lines</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doIf"><custom-block s="get %s in %l"><l>textBoundaries</l><block var="properties"/></custom-block><script><block s="doUntil"><block s="reportVariadicEquals"><list><custom-block s="get %s in %l"><l>text</l><block var="properties"/></custom-block><l></l></list></block><script><block s="doAddToList"><custom-block s="substring of %txt from position %n to position %n inclusive"><custom-block s="get %s in %l"><l>text</l><block var="properties"/></custom-block><l>1</l><custom-block s="get %s in %l"><l>sizeX</l><block var="properties"/></custom-block></custom-block><block var="lines"/></block><custom-block s="set %s in %l to %s"><l>text</l><block var="properties"/><block s="reportJoinWords"><list><block s="reportCDR"><block s="reportTextSplit"><custom-block s="get %s in %l"><l>text</l><block var="properties"/></custom-block><custom-block s="substring of %txt from position %n to position %n inclusive"><custom-block s="get %s in %l"><l>text</l><block var="properties"/></custom-block><l>1</l><custom-block s="get %s in %l"><l>sizeX</l><block var="properties"/></custom-block></custom-block></block></block></list></block></custom-block></script></block></script><list></list></block><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>line</l><block s="reportIfElse"><custom-block s="get %s in %l"><l>textBoundaries</l><block var="properties"/></custom-block><block var="lines"/><block s="reportTextSplit"><custom-block s="get %s in %l"><l>text</l><block var="properties"/></custom-block><l>\n</l></block></block><script><custom-block s="set %s in %l to %s"><l>text</l><block var="properties"/><block var="line"/></custom-block><custom-block s="%upvar %s"><l>TextLabel</l><block var="properties"/></custom-block><block s="doTellTo"><block var="TextLabel"/><block s="reifyScript"><script><block s="changeYPosition"><block s="reportVariadicProduct"><list><l>-1</l><block s="reportVariadicProduct"><list><block var="#"/><custom-block s="get %s in %l"><l>size</l><block var="properties"/></custom-block></list></block></list></block></block></script><list></list></block><list></list></block></script></custom-block></script></block></script></block-definition><block-definition s="%&apos;TextLabel&apos; %&apos;properties&apos;" type="command" category="UI"><header></header><code></code><translations></translations><inputs><input type="%upvar" initial="1"></input><input type="%s" initial="1"></input></inputs><script><block s="show"></block><custom-block s="create a %upvar of myself and tell it to %cmdRing"><l>clone</l><block s="reifyScript"><script><block s="gotoXY"><custom-block s="get %s in %l"><l>x</l><block var="properties"/></custom-block><custom-block s="get %s in %l"><l>y</l><block var="properties"/></custom-block></block><block s="setColor"><custom-block s="get %s in %l"><l>color</l><block var="properties"/></custom-block></block><block s="doSwitchToCostume"><custom-block s="costume from text %s size %n"><custom-block s="get %s in %l"><l>text</l><block var="properties"/></custom-block><custom-block s="get %s in %l"><l>size</l><block var="properties"/></custom-block></custom-block></block></script><list></list></block></custom-block><block s="doSetVar"><l>TextLabel</l><block s="reportListItem"><l>1</l><block var="clone"/></block></block><block s="doIf"><block s="reportNot"><custom-block s="get %s in %l"><l>visible</l><block var="properties"/></custom-block></block><script><block s="hide"></block></script><list></list></block></script></block-definition><block-definition s="TextButton %&apos;properties&apos;" type="command" category="UI"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>self</l></list></block><block s="doSetVar"><l>self</l><block s="reportGet"><l><option>self</option></l></block></block><custom-block s="%upvar %s"><l>TextLabel</l><block var="properties"/></custom-block><block s="doSwitchToCostume"><custom-block s="rectangle costume %clr width: %n height: %n"><color>0,0,0,1</color><block s="reportAttributeOf"><l><option>width</option></l><block var="TextLabel"/></block><block s="reportAttributeOf"><l><option>height</option></l><block var="TextLabel"/></block></custom-block></block><block s="doTellTo"><block var="TextLabel"/><block s="reifyScript"><script><block s="doGotoObject"><block var="self"/></block><block s="changeXPosition"><block s="reportQuotient"><block s="reportAttributeOf"><l><option>width</option></l><block var="TextLabel"/></block><l>-2</l></block></block><block s="changeYPosition"><block s="reportQuotient"><block s="reportAttributeOf"><l><option>height</option></l><block var="TextLabel"/></block><l>-2</l></block></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="export costume %&apos;costume&apos;" type="command" category="looks"><header></header><code></code><translations>pl:eksportuj kostium _&#xD;</translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doSetVar"><l>costume</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><block var="costume"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportGetImageAttribute"><l><option>name</option></l><l></l></block><block var="costume"/></list></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="doIf"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><script><block s="doApplyExtension"><l>cst_export(cst, name)</l><list><block var="costume"/><l></l></list></block></script><list></list></block></script></block-definition><block-definition s="set name of costume %&apos;costume&apos; to %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations>pl:ustaw nazwę kostiumu _ na _&#xD;</translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%s">thing</input></inputs><script><block s="doSetVar"><l>costume</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><block var="costume"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportGetImageAttribute"><l><option>name</option></l><l></l></block><block var="costume"/></list></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="doIf"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><script><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="costume"/><block var="name"/></list></block></script><list></list></block></script></block-definition><block-definition s="$camera snap" type="reporter" category="sensing"><comment x="0" y="0" w="216" collapsed="false">takes a snapshot with the webcam and reports it as a new costume, or zero if the user cancels</comment><header></header><code></code><translations>pt:$camera a imagem actual do vídeo&#xD;pl:$camera zdjęcie&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>callback</l><l>pic</l></list></block><block s="doSetVar"><l>callback</l><block s="reportApplyExtension"><l>mda_snap</l><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="callback"/><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="export costume list %&apos;costumes&apos; base name %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations>pl:eksportuj listę kostiumu _ nazwa _&#xD;</translations><inputs><input type="%l"></input><input type="%s">frame</input></inputs><script><block s="doDeclareVariables"><list><l>count</l></list></block><block s="doSetVar"><l>count</l><block s="reportListAttribute"><l><option>length</option></l><block var="costumes"/></block></block><block s="doForEach"><l>item</l><block s="reportListAttribute"><l><option>reverse</option></l><block var="costumes"/></block><script><block s="doApplyExtension"><l>cst_export(cst, name)</l><list><block var="item"/><block s="reportJoinWords"><list><block var="name"/><l> (</l><block var="count"/><l>)</l></list></block></list></block><block s="doChangeVar"><l>count</l><l>-1</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="count"/><l>10</l></block><l>0</l></list></block><script><block s="doWait"><l>1</l></block></script><list></list></block></script></block></script></block-definition><block-definition s="grayscales of %&apos;costume&apos;" type="reporter" category="looks"><header></header><code></code><translations>pl:_ w skali szarości&#xD;</translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doReport"><block s="reportReshape"><block s="reportVariadicSum"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportVariadicProduct"><list><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block><block s="reportNewList"><list><l>.3</l><l>.6</l><l>.1</l></list></block></list></block></block></block><list><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block></list></block></block></script></block-definition><block-definition s="%&apos;filter&apos; filter on %&apos;costume&apos; alpha %&apos;alpha&apos;" type="reporter" category="looks"><header></header><code></code><translations>pl:filtr _ na _ kanał alfa _&#xD;</translations><inputs><input type="%s" readonly="true">blur<options>blur&#xD;sharpen&#xD;outline&#xD;emboss&#xD;edge={&#xD;left&#xD;right&#xD;top&#xD;bottom&#xD;}&#xD;Gauss</options></input><input type="%s" readonly="true">current<options>§_costumesMenu</options></input><input type="%b">true</input></inputs><script><block s="doDeclareVariables"><list><l>kernel</l><l>pixels</l><l>channels</l></list></block><block s="doSetVar"><l>kernel</l><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block s="reportListAttribute"><l><option>rank</option></l><block var="filter"/></block><l>1</l></list></block><block var="filter"/><custom-block s="filter %s"><block var="filter"/></custom-block></block></block><block s="doSetVar"><l>pixels</l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block><block s="doIf"><block var="alpha"/><script><block s="doSetVar"><l>channels</l><l>4</l></block></script><list><l><bool>true</bool></l><script><block s="doSetVar"><l>channels</l><l>3</l></block><block s="doSetVar"><l>pixels</l><block s="reportVariadicProduct"><list><block var="pixels"/><block s="reportNewList"><list><l>1</l><l>1</l><l>1</l></list></block></list></block><comment w="137" collapsed="true">remove alpha channel</comment></block></script></list></block><block s="doReport"><block s="reportNewCostume"><custom-block s="convolve matrix %l * kernel %l"><block s="reportReshape"><block var="pixels"/><list><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block><block var="channels"/></list></block><block var="kernel"/></custom-block><l></l><l></l></block></block></script></block-definition><block-definition s="filter %&apos;name&apos;" type="reporter" category="looks"><header></header><code></code><translations>pl:filtr _&#xD;</translations><inputs><input type="%s" readonly="true">blur<options>blur&#xD;sharpen&#xD;outline&#xD;emboss&#xD;edge={&#xD;left&#xD;right&#xD;top&#xD;bottom&#xD;}&#xD;Gauss</options></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="name"/><l>sharpen</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>0</l><l>-1</l><l>0</l><l>-1</l><l>5</l><l>-1</l><l>0</l><l>-1</l><l>0</l></custom-block></block></script><list><block s="reportVariadicEquals"><list><block var="name"/><l>outline</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>-1</l><l>-1</l><l>-1</l><l>8</l><l>-1</l><l>-1</l><l>-1</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>emboss</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-2</l><l>-1</l><l>0</l><l>-1</l><l>1</l><l>1</l><l>0</l><l>1</l><l>2</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>left</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>0</l><l>1</l><l>-2</l><l>0</l><l>2</l><l>-1</l><l>0</l><l>1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>right</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>1</l><l>0</l><l>-1</l><l>2</l><l>0</l><l>-2</l><l>1</l><l>0</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>top</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>-2</l><l>-1</l><l>0</l><l>0</l><l>0</l><l>1</l><l>2</l><l>1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>bottom</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>1</l><l>2</l><l>1</l><l>0</l><l>0</l><l>0</l><l>-1</l><l>-2</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>gauss</l></list></block><script><block s="doReport"><block s="reportQuotient"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l><l>4</l><l>1</l></list></block><block s="reportNewList"><list><l>4</l><l>16</l><l>26</l><l>16</l><l>4</l></list></block><block s="reportNewList"><list><l>7</l><l>26</l><l>41</l><l>26</l><l>7</l></list></block><block s="reportNewList"><list><l>4</l><l>16</l><l>26</l><l>16</l><l>4</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l><l>4</l><l>1</l></list></block></list></block><l>273</l></block></block></script></list></block><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>0.0625</l><l>0.125</l><l>0.0625</l><l>0.125</l><l>0.25</l><l>0.125</l><l>0.0625</l><l>0.125</l><l>0.0625</l><comment w="80" collapsed="false">blur</comment></custom-block></block></script></block-definition><block-definition s="kernel $nl %&apos;a1&apos; %&apos;b1&apos; %&apos;c1&apos; $nl %&apos;a2&apos; %&apos;b2&apos; %&apos;c2&apos; $nl %&apos;a3&apos; %&apos;b3&apos; %&apos;c3&apos;" type="reporter" category="lists"><header></header><code></code><translations>pl:jądro _ _ _ _ _ _ _ _ _ _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportReshape"><block s="reportEnvironment"><l><option>inputs</option></l></block><list><l>3</l><l>3</l></list></block></block></script></block-definition><block-definition s="convolve matrix %&apos;matrix&apos; * kernel %&apos;kernel&apos;" type="reporter" category="operators"><header></header><code></code><translations>pl:przemnóż macierz _ * jądro _&#xD;</translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>padding</l><l>channels</l><l>every coordinate</l><l>channel indices</l></list></block><block s="doSetVar"><l>padding</l><block s="reportQuotient"><block s="reportDifference"><block s="reportListItem"><block s="reportNewList"><list><l>1</l><l>2</l></list></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block></block><l>1</l></block><l>2</l></block><comment w="119" collapsed="false">assume odd dimensions, typically 3x3 or 5x5</comment></block><block s="doSetVar"><l>channels</l><block s="reportListItem"><l>3</l><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block></block></block><block s="doSetVar"><l>every coordinate</l><block s="reportCrossproduct"><block s="reportNumbers"><l>1</l><block s="reportListItem"><block s="reportNewList"><list><l>1</l><l>2</l></list></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block></block></block></block></block><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="channels"/><l>0</l></list></block><script><block s="doSetVar"><l>channel indices</l><block s="reportNewList"><list><block s="reportReshape"><block s="reportNumbers"><l>1</l><block var="channels"/></block><list><block s="reportListAttribute"><l><option>length</option></l><block var="every coordinate"/></block><block var="channels"/></list></block></list></block></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block><l>3</l></list></block><script><block s="doSetVar"><l>kernel</l><block s="reportReshape"><custom-block s="stretch %l by %n"><block s="reportListAttribute"><l><option>flatten</option></l><block var="kernel"/></block><block var="channels"/></custom-block><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block><block s="reportNewList"><list><block var="channels"/></list></block></list></block></block></block></script><list></list><comment w="90" collapsed="false">reshape the kernel to match the input matrix&apos;s channels, if any</comment></block></script><script><block s="doSetVar"><l>channel indices</l><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportReshape"><block s="reportVariadicSum"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportVariadicSum"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportVariadicProduct"><list><block s="reportListItem"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>columns</option></l><block s="reportNumbers"><block s="reportDifference"><block var="every coordinate"/><block var="padding"/></block><block s="reportVariadicSum"><list><block var="every coordinate"/><block var="padding"/></list></block></block></block><block var="channel indices"/></list></block></block><block var="matrix"/></block><block var="kernel"/></list></block></block></block></block></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block><comment w="80" collapsed="false">for every padded pixel create a partial copy of the input, item-multiply it with the kernel and take its overall sum (∑)</comment></block></block></script></block-definition><block-definition s="stretch %&apos;data&apos; by %&apos;factor&apos;" type="reporter" category="lists"><header></header><code></code><translations>pl:rozciągnij _ o _&#xD;de:strecke _ um _&#xD;</translations><inputs><input type="%l"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportQuotient"><block s="reportNumbers"><l>1</l><block s="reportVariadicProduct"><list><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><block var="factor"/></list></block></block><block var="factor"/></block></block><block var="data"/></block></block></script></block-definition><block-definition s="compress %&apos;data&apos; by %&apos;factor&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:stauche _ um _&#xD;</translations><inputs><input type="%l" initial="1"></input><input type="%n" initial="1"></input></inputs><script><block s="doReport"><custom-block s="stretch %l by %n"><block var="data"/><block s="reportQuotient"><l>1</l><block var="factor"/></block></custom-block></block></script></block-definition></blocks><primitives><block-definition s="set pen color to %&apos;color&apos;" type="command" category="pen" selector="setColor" primitive="setColor"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doPrimitive"><l><bool>true</bool></l><l>setColor</l></block><block s="doApplyExtension"><l>clr_setpen(clr)</l><list><block var="color"/></list></block></script></block-definition><block-definition s="round %&apos;#1&apos;" type="reporter" category="operators" selector="reportRound" primitive="reportRound"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doPrimitive"><l><bool>true</bool></l><l>reportRound</l></block></script></block-definition></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="4406"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="4407"></list></costumes><sounds><list struct="atomic" id="4408"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><watcher s="getPenDown" style="normal" x="10" y="31.000001999999995" color="0,161,120" hidden="true"/><watcher s="xPosition" style="normal" x="10" y="55.00000399999999" color="74,108,212" hidden="true"/><watcher s="yPosition" style="normal" x="10" y="76.00000599999994" color="74,108,212" hidden="true"/><watcher var="CurrentText" style="normal" x="10" y="97.00000799999998" color="243,118,29" hidden="true"/><watcher s="direction" style="normal" x="10" y="118.00000999999997" color="74,108,212" hidden="true"/><watcher var="Points" style="normal" x="9" y="43" color="243,118,29" hidden="true"/><watcher s="getScale" style="normal" x="76" y="83.00001199999993" color="143,86,227" hidden="true"/><watcher s="getPenDown" style="normal" x="10" y="139.00001199999977" color="0,161,120" hidden="true"/><watcher var="CurrentUpgrade" style="normal" x="13" y="237.00001799999995" color="243,118,29" hidden="true"/><watcher var="Value" style="normal" x="10" y="160.00001399999985" color="243,118,29" hidden="true"/><watcher var="Upgrades" style="normal" x="17" y="47.00001599999996" color="243,118,29" hidden="true"/><watcher s="yPosition" style="normal" x="10" y="181.00001599999996" color="74,108,212" hidden="true"/><watcher s="xPosition" style="normal" x="10" y="202.00001799999995" color="74,108,212" hidden="true"/><watcher s="yPosition" style="normal" x="10" y="223.00001999999995" color="74,108,212" hidden="true"/><watcher s="xPosition" style="normal" x="10" y="244.00002199999994" color="74,108,212" hidden="true"/><watcher var="MenuPosition" style="normal" x="10" y="265.00002399999977" color="243,118,29" hidden="true"/><watcher var="Debounces" style="normal" x="39" y="67.99999800000002" color="243,118,29" hidden="true"/><watcher var="DataResetPosition" style="normal" x="10" y="338.99999799999955" color="243,118,29" hidden="true"/><watcher s="xPosition" style="normal" x="10" y="338.99999799999955" color="74,108,212" hidden="true"/><watcher s="yPosition" style="normal" x="26" y="279.99999799999983" color="74,108,212" hidden="true"/><watcher var="UpgradePosition" style="normal" x="6" y="312.99999800000006" color="243,118,29" hidden="true"/><watcher var="message" style="normal" x="10" y="266.999998" color="243,118,29" hidden="true"/><watcher var="Leaderboard" style="normal" x="22" y="31.999998000000005" color="243,118,29" hidden="true"/><watcher var="CurrentLine" style="normal" x="10" y="338.99999799999955" color="243,118,29" hidden="true"/><watcher var="UserId" style="normal" x="37" y="130.999998" color="243,118,29" hidden="true"/><watcher var="Trackers" style="normal" x="19" y="60.999998000000005" color="243,118,29" hidden="true"/><watcher var="Costs" style="normal" x="54" y="145.00001599999976" color="243,118,29" hidden="true"/><watcher var="Values" style="normal" x="23" y="142.00001599999996" color="243,118,29" hidden="true"/><watcher var="Currencies" style="normal" x="8" y="104.00001599999996" color="243,118,29" hidden="true"/><watcher var="Timers" style="normal" x="49" y="119.999998" color="243,118,29" hidden="true"/><watcher scope="Stage" s="getTimer" style="normal" x="268" y="168.99999799999947" color="4,148,220" hidden="true"/><watcher var="Users" style="normal" x="2" y="261.999998" color="243,118,29" hidden="true"/><watcher var="TimerResets" style="normal" x="112" y="229.999998" color="243,118,29" hidden="true"/><watcher scope="TextLabel" var="clones" style="normal" x="10" y="301.999998" color="243,118,29" hidden="true"/><sprite name="TextLabel" idx="1" x="12" y="-109.00000000000011" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="0,0,0,1" pen="tip" id="4447"><wear><ref mediaID="1"></ref></wear><costumes><list struct="atomic" id="4448"></list></costumes><sounds><list struct="atomic" id="4449"></list></sounds><blocks></blocks><variables><variable name="clones"><list id="4452"><item><list id="4453"><item></item><item><l>1</l></item></list></item></list></variable></variables><scripts><script x="20" y="10"><block s="receiveGo"></block><block s="doIf"><custom-block s="is variable %s in the scope of %s ?"><l>clones</l><l>thisSprite</l></custom-block><script><custom-block s="delete all my clones"></custom-block></script><list></list></block><custom-block s="TextButton %s"><custom-block s="properties - text: %txt text size: %n color: %clr x: %n y: %n size x: %n size y: %n text boundaries: %b visable: %b"><l>Every single bird is braindead right?</l><l>24</l><color>255,255,255,1</color><l>-240</l><l>180</l><l>36</l><l>48</l><l><bool>true</bool></l><l><bool>true</bool></l></custom-block></custom-block></script><script x="29" y="225.5833333333334"><custom-block s="TextLabel %s"><custom-block s="properties - text: %txt text size: %n color: %clr x: %n y: %n size x: %n size y: %n text boundaries: %b visable: %b"><l>“Ingredients for life,” said the backside of the truck. They mean food, but really food is only 1 ingredient of life. Life has so many more ingredients such as pain, happiness, laughter, joy, tears, and smiles. Life also has hard work, easy play, sleepless nights, and sunbathing by the ocean. Love, hatred, envy, self-assurance, and fear could be just down aisle 3 ready to be bought when needed. How I wish I could pull ingredients like these off shelves in a store.</l><l>24</l><color>145,26,68,1</color><l>-240</l><l>180</l><l>36</l><l>48</l><l><bool>true</bool></l><l><bool>true</bool></l></custom-block></custom-block></script><script x="349" y="77.3333333333334"><custom-block s="rectangle costume %clr width: %n height: %n"><color>145,26,68,1</color><l>20</l><l>60</l></custom-block></script><script x="53" y="367.8333333333334"><custom-block s="TextLabel %s"><custom-block s="properties - text: %txt text size: %n color: %clr x: %n y: %n size x: %n size y: %n text boundaries: %b visable: %b"><l>TextLabel</l><l>24</l><color>0,0,0,1</color><l>-240</l><l>180</l><l>36</l><l>48</l><l><bool>true</bool></l><l><bool>true</bool></l></custom-block></custom-block></script><script x="41" y="434.99999999999994"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="bubble"><l>Hello!</l></block></script><script x="142" y="507.0000000000001"><block s="changeXPosition"><l>10</l></block></script></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="UI Engine (I mean I made text label block and that uses a properties block)" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><costume name="costume" center-x="239" center-y="11" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAd4AAAAWCAYAAABuUv2uAAABQklEQVR4AezVSwoDIRAEUMn975zPrrJoULTdzIMEKuJ0mEdDvcYYb18GdsAO2AE7YAfu7MCveL/WPgQIECBAgMANAcWbyjIBAgQIEGgWULzNwMYTIECAAIEUULypIaeATIAAAQINAoq3AdVIAgQIECBQCSjeSsY5gRSQCRAgcEhA8R6CNIYAAQIECMwIKN4ZJXcIEEgBmQCBDQHFu4HnUQIECBAgsCqgeFfF3CdAgEAKyAQWBRTvIpjrBAgQIEBgR0Dx7uh5lgABAgRSQJ4QULwTSK4QIECAAIFTAor3lKQ5BAgQIEAgBYqseAsYxwQIECBAoENA8XaomkmAAAECBAqBhxZvoeGYAAECBAg0CyjeZmDjCRAgQIBACije1Hho9toECBAgcE9A8d6z9k8ECBAgQGAoXktA4E/ADwIECPQKfAAAAP//SjRB0QAAAAZJREFUAwCj0txexu/KOwAAAABJRU5ErkJggg==" mediaID="1"/></media></snapdata>