<snapdata remixID="14100858"><project name="App Challenge" app="Snap! 10.3.6, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="App Challenge"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><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).</comment><header></header><code></code><translations>ca:notació textual de _&#xD;es:imprimible _&#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="reportCombine"><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;es:oración _&#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="reportKeep"><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>word</option></l></block></block></block></script></block-definition><block-definition s="first word of %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:erstes Wort von _&#xD;pl:pierwsze słowo _&#xD;</translations><inputs><input type="%s">this is fine</input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="text"/><l><option>word</option></l></block></block></block></script></block-definition><block-definition s="all but first word of %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:alles außer dem ersten Wort von _&#xD;pl:_ bez pierwszego słowa&#xD;</translations><inputs><input type="%s">this is fine</input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>text</option></l><block s="reportCDR"><block s="reportTextSplit"><block var="text"/><l><option>word</option></l></block></block></block></block></script></block-definition><block-definition s="sentence with %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Satz aus _&#xD;pl:zdanie z _&#xD;</translations><inputs><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>text</option></l><block var="words"/></block></block></script></block-definition><block-definition s="is %&apos;text&apos; empty?" type="predicate" category="operators"><header></header><code></code><translations>de:ist _ leer?&#xD;pl:_ jest puste?&#xD;</translations><inputs><input type="%s">word</input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block var="text"/><l></l></list></block></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="all but first letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="199" collapsed="false">Takes a text string as input, and reports a new text string containing all but the first character of the input.</comment><header></header><code></code><translations>pt:_ sem o primeiro caractere&#xD;ca:_ sense la primera lletra&#xD;es:todos menos la primera letra de _&#xD;pl:_ bez pierwszej litery&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="string"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="all but first letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><block s="reportCDR"><block s="reportTextSplit"><custom-block s="require nonempty %s %s"><block var="string"/><l>All but first of empty word.</l></custom-block><l><option>letter</option></l></block></block></block></block></script></block-definition><block-definition s="all but first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="223.000001" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the first word, with one space between words and no spaces at the beginning or end. (Note: consider using SENTENCE➞LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a primeira palavra&#xD;ca:_ sense la primera paraula&#xD;es:todas menos la primera palabra de _&#xD;pl:_ bez pierwszego słowa&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportCDR"><block var="sentence"/></block></block></script></block></script><list></list></block><block s="doReport"><custom-block s="list $arrowRight sentence %l"><block s="reportCDR"><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>All but first of empty sentence.</l></custom-block></block></custom-block></block></script></block-definition><block-definition s="all but last letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="218" collapsed="false">Takes a text string as input, and reports a new text string containing all but the last letter of the input.</comment><header></header><code></code><translations>pt:_ sem o último caractere&#xD;ca:_ sense la darrera lletra&#xD;es:todos menos la última letra de _&#xD;pl:_ bez ostatniej litery&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="string"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="all but last letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportTextSplit"><custom-block s="require nonempty %s %s"><block var="string"/><l>All but first of empty word.</l></custom-block><l><option>letter</option></l></block></block></block></block></block></block></script></block-definition><block-definition s="all but last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211.99999999999997" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the last word, with one space between words and no spaces at the beginning or end.  (Note: consider using SENTENCE-&gt;LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a última palavra&#xD;ca:_ sense la darrera paraula&#xD;es:todos menos la última palabra de _&#xD;pl:_ bez ostatniego słowa&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><block var="sentence"/></block></block></block></block></script></block></script><list></list></block><block s="doReport"><custom-block s="list $arrowRight sentence %l"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>All but last of empty sentence.</l></custom-block></block></block></block></custom-block></block></script></block-definition><block-definition s="first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="236" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the first word, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a primeira palavra de _&#xD;ca:primera paraula de _&#xD;es:primera palabra de _&#xD;pl:pierwsze słowo _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="sentence"/></block></block></script></block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>First of empty sentence.</l></custom-block></block></block></script></block></script></block-definition><block-definition s="last letter of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="260" collapsed="false">Takes a text string as input, and reports the last character in the string.</comment><header></header><code></code><translations>pt:o último caractere de _&#xD;ca:primera lletra de _&#xD;es:última letra de _&#xD;pl:ostatnia litera _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="last letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="word"/></block><l>0</l></list></block><script><custom-block s="error %txt"><l>Last of empty word.</l></custom-block></script><list></list></block><block s="doReport"><block s="reportLetter"><block s="reportTextAttribute"><l><option>length</option></l><block var="word"/></block><block var="word"/></block></block></script></block-definition><block-definition s="last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="262" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the last word of the input, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a última palavra de _&#xD;ca:darrera paraula de _&#xD;es:última palabra de _&#xD;pl:ostatnie słowo _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><block var="sentence"/></block></block></script></block></script><list></list></block><block s="doReport"><block s="reportListItem"><l><option>last</option></l><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>Last of empty sentence.</l></custom-block></block></block></script></block-definition><block-definition s="empty word? %&apos;word&apos;" type="predicate" category="operators"><comment x="0" y="0" w="208" collapsed="false">Takes a text string as input, and reports TRUE if the string has no characters in it of any kind, otherwise false.</comment><header></header><code></code><translations>pt:a palavra _ está vazia&#xD;ca:paraula buida? _&#xD;es:¿palabra vacía? _&#xD;pl:puste słowo? _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="empty word? %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script><list></list></block><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="word"/></block><l>0</l></list></block></block></script></block-definition><block-definition s="empty sentence? %&apos;sentence&apos;" type="predicate" category="operators"><comment x="0" y="0" w="221" collapsed="false">Takes a text string as input, and reports TRUE if the input contains no characters other than spaces (therefore, no words when the string is considered as a sentence), otherwise FALSE.</comment><header></header><code></code><translations>pt:a frase _ está vazia&#xD;ca:frase buida? _&#xD;es:¿oración vacía? _&#xD;pl:puste zdanie? _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListIsEmpty"><block var="sentence"/></block></block></script><list></list></block><block s="doReport"><block s="reportListIsEmpty"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block></block></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><comment x="0" y="0" w="230.66666666666666" collapsed="false">Like JOIN, takes any number of words (text strings) and reports a sentence with its inputs concatenated, but inserts a blank space between the inputs.&#xD;Consider using SENTENCE (Lists palette) instead.</comment><header></header><code></code><translations>de:füge Wörter zusammen _&#xD;ca:uneix les paraules _&#xD;es:unir las palabras _&#xD;fr:fusionne les mots _&#xD;pt:uma frase com as palavras _&#xD;pl:połącz słowa _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="words"/></block><script><block s="doReport"><l></l></block></script><list></list></block><block s="doDeclareVariables"><list><l>first</l><l>bf</l></list></block><block s="doSetVar"><l>first</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><custom-block s="join words %mult%txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block><block s="reportListItem"><l>1</l><block var="words"/></block></block></block><block s="doSetVar"><l>bf</l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block><block s="doIf"><custom-block s="empty sentence? %txt"><block var="bf"/></custom-block><script><block s="doReport"><block var="first"/></block></script><list></list></block><block s="doIf"><custom-block s="empty sentence? %txt"><block var="first"/></custom-block><script><block s="doReport"><block var="bf"/></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><list><block var="first"/><l> </l><block var="bf"/></list></block></block></script></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><comment x="0" y="0" w="165.33333333333334" collapsed="false">Takes a sentence in list form and reports the sentence as a text string.</comment><header></header><code></code><translations>de:Liste $arrowRight Satz _&#xD;ca:llista $arrowRight frase _&#xD;es:lista $arrowRight frase _&#xD;fr:liste $arrowRight phrase _&#xD;pt:uma frase com as palavras em _&#xD;pl:lista $arrowRight zdanie _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="146.42857142857144" collapsed="false">report a list in which each item is one letter from the input word</comment><header></header><code></code><translations>de:Wort $arrowRight Liste _&#xD;ca:paraula $arrowRight llista _&#xD;es:palabra $arrowRight lista _&#xD;fr:mot $arrowRight liste _&#xD;pt:uma lista com os caracteres da palavra _&#xD;pl:słowo $arrowRight lista _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="word $arrowRight list %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script><list></list></block><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><comment x="0" y="0" w="158.57142857142858" collapsed="false">join all the items of the input list&#xD;into a single word, and report it</comment><header></header><code></code><translations>de:Liste $arrowRight Wort _&#xD;ca:llista $arrowRight paraula _&#xD;es:lista $arrowRight palabra _&#xD;fr:liste $arrowRight mot _&#xD;pt:uma palavra com os caracteres em _&#xD;pl:lista $arrowRight słowo _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="list"/></block><script><block s="doReport"><block var="list"/></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>list</option></l></block></autolambda><list></list></block><block var="list"/></block><l></l></list></block><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script><list></list></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><block s="reportNewList"><list><custom-block s="list $arrowRight word %l"><l/></custom-block></list></block><l></l></block></autolambda><list></list></block><block var="list"/></block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><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="require nonempty %&apos;text&apos; %&apos;message&apos;" type="reporter" category="operators" helper="true"><comment x="0" y="0" w="220" collapsed="false">Helper function for word/sentence library.&#xD;Reports its first input, unless that input is empty, in which case it gives its second input as an error message.</comment><header></header><code></code><translations>es:requerir no vacío _ _&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportIfElse"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block><block s="reportListIsEmpty"><block var="text"/></block><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="text"/></block><l>0</l></list></block></block><script><custom-block s="error %txt"><block var="message"/></custom-block></script><script><block s="doReport"><block var="text"/></block></script></block></script></block-definition><block-definition s="first letter of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="260" collapsed="false">Takes a text string as input, and reports the first character in the string.</comment><header></header><code></code><translations>pt:a primeira palavra de _&#xD;ca:primera lletra de _&#xD;es:primera letra de _&#xD;pl:pierwsza litera _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="first letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script><script><block s="doReport"><block s="reportLetter"><l>1</l><custom-block s="require nonempty %s %s"><block var="word"/><l>First of empty word.</l></custom-block></block></block></script></block></script></block-definition><block-definition s="moveToOtherCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Other</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="Fruits"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="Vegetables"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="Grains"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="Meat"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="Fish and Seafood"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="Eggs"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="Nuts, Seeds, and Soy Products"/><block var="item"/></block></block><block s="reportNot"><block s="reportListContainsItem"><block var="Dairy"/><block var="item"/></block></block></list></block></list></block></list></block></list></block></list></block></list></block></list></block><script><block s="doAddToList"><block var="item"/><block var="Other"/></block></script><list></list></block></script></block></script></block-definition><block-definition s="moveToFruitsCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Fruits</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="fruitsList"/><block var="item"/></block><script><block s="doAddToList"><block var="item"/><block var="Fruits"/></block></script><list></list></block></script></block></script></block-definition><block-definition s="moveToVegetablesCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Vegetables</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="vegetablesList"/><block var="item"/></block><script><block s="doAddToList"><block var="item"/><block var="Vegetables"/></block></script><list></list></block></script></block></script></block-definition><block-definition s="moveToGrainsCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Grains</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="grainsList"/><block var="item"/></block><script><block s="doAddToList"><block var="item"/><block var="Grains"/></block></script><list></list></block></script></block></script></block-definition><block-definition s="moveToMeatsCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Meat</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="grainsList"/><block var="item"/></block><script><block s="doAddToList"><block var="item"/><block var="Meat"/></block></script><list></list></block></script></block></script></block-definition><block-definition s="moveToFishAndSeafoodCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Fish and Seafood</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="fishAndSeafoodList"/><block var="item"/></block><script><block s="doAddToList"><block var="item"/><block var="Fish and Seafood"/></block></script><list></list></block></script></block></script></block-definition><block-definition s="moveToEggsCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Eggs</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="eggsList"/><block var="item"/></block><script><block s="doAddToList"><block var="item"/><block var="Eggs"/></block></script><list></list></block></script></block></script></block-definition><block-definition s="moveToNuts,Seeds,andSoyProductsCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Nuts, Seeds, and Soy Products</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="nuts,seeds, and soy products List"/><block var="item"/></block><script><block s="doAddToList"><block var="item"/><block var="Nuts, Seeds, and Soy Products"/></block></script><list></list></block></script></block></script></block-definition><block-definition s="moveToDairyCategory" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Dairy</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="dairyList"/><block var="item"/></block><script><block s="doAddToList"><block var="item"/><block var="Dairy"/></block></script><list></list></block></script></block></script></block-definition></blocks><primitives><block-definition s="%&apos;data&apos; contains %&apos;value&apos;" type="predicate" category="lists" selector="reportListContainsItem" primitive="reportListContainsItem"><header></header><code></code><translations></translations><inputs><input type="%l" readonly="true"></input><input type="%s">thing</input></inputs><script><block s="doPrimitive"><l><bool>true</bool></l><l>reportListContainsItem</l></block><block s="doWarp"><script><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><block var="data"/></block><block var="value"/></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></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="1373"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="1374"></list></costumes><sounds><list struct="atomic" id="1375"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="-16" y="-55" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="1380"><costumes><list struct="atomic" id="1381"></list></costumes><sounds><list struct="atomic" id="1382"></list></sounds><blocks></blocks><variables></variables><scripts><script x="30.000000000000057" y="30"><block s="receiveGo"></block><block s="doAsk"><l>Enter the list of items you plan to buy. (Enter all items in lowercase and sperated by a comma without spaces.)</l></block><block s="doSetVar"><l>Grocery List</l><block s="reportTextSplit"><block s="getLastAnswer"></block><l><option>csv</option></l></block></block><block s="doSetVar"><l>fruitsList</l><block s="reportTextSplit"><l>acai berries&#xD;blackberries&#xD;blueberries&#xD;boysenberries&#xD;cranberries&#xD;currants&#xD;dewberries&#xD;goji berries&#xD;gooseberries&#xD;huckleberries&#xD;kiwifruit&#xD;Lingonberries&#xD;cowberries&#xD;loganberries&#xD;mulberries&#xD;raspberries&#xD;strawberries&#xD;casaba&#xD;honeydew&#xD;horned melon&#xD;kiwano&#xD;watermelon &#xD;apples&#xD;apricots&#xD;Asian pears&#xD;atemoya&#xD;bananas&#xD;Buddha’s hand&#xD;cactus pears&#xD;calamondin&#xD;cherimoya&#xD;cherries&#xD;dates&#xD;dragon fruit&#xD;durian&#xD;feijoas&#xD;figs&#xD;fruit cocktail&#xD;grapefruit&#xD;grapes&#xD;guava&#xD;jackfruit&#xD;kumquats&#xD;lemons&#xD;limes&#xD;loquats&#xD;lychee&#xD;mangoes&#xD;mangosteen&#xD;nectarines&#xD;oranges&#xD;papaya&#xD;passion fruit&#xD;pawpaws&#xD;peaches&#xD;pears&#xD;persimmons&#xD;pineapple&#xD;plums&#xD;pluots&#xD;pomegranate&#xD;pomelos&#xD;prickly pears&#xD;prunes&#xD;quince&#xD;raisins&#xD;rambutan&#xD;rhubarb&#xD;sapote&#xD;satsuma&#xD;soursop&#xD;star fruit&#xD;tamarind&#xD;tangerines&#xD;tangelos&#xD;tejocote&#xD;cantaloupe</l><l><option>line</option></l></block></block><block s="doSetVar"><l>vegetablesList</l><block s="reportTextSplit"><l>amaranth leaves&#xD;arugula &#xD;basil&#xD;beet greens&#xD;bitter melon leaves&#xD;bok choy&#xD;broccoli&#xD;broccoli rabe&#xD;broccolini&#xD;chamnamul&#xD;chard&#xD;chrysanthemum leaves&#xD;cilantro&#xD;collard greens&#xD;cress&#xD;dandelion greens&#xD;dark-green leafy lettuce&#xD;endive&#xD;escarole&#xD;kale&#xD;lambsquarters&#xD;mesclun&#xD;mixed greens&#xD;mustard greens&#xD;nettles&#xD;poke greens&#xD;romaine lettuce&#xD;spinach&#xD;Swiss chard&#xD;taro leaves&#xD;turnip greens&#xD;watercress&#xD;acorn squash&#xD;butternut squash&#xD;calabaza&#xD;carrots&#xD;hubbard squash&#xD;kabocha squash&#xD;pimento/pimiento&#xD;pumpkin&#xD;red bell peppers&#xD;orange bell peppers&#xD;red chili peppers&#xD;red peppers, sweet&#xD;sweet potatoes&#xD;tomatoes&#xD;winter squash&#xD;bayo beans&#xD;bean burger&#xD;black beans&#xD;black-eyed peas (mature, dry)&#xD;brown beans&#xD;chickpeas (garbanzo beans)&#xD;cow peas&#xD;edamame (young soybeans)&#xD;falafel (spiced, mashed chickpeas)&#xD;fava beans &#xD;hummus &#xD;kidney beans&#xD;lentils&#xD;lima beans &#xD;mung beans&#xD;navy beans&#xD;pigeon peas&#xD;pink beans&#xD;pinto beans&#xD;soy beans&#xD;split peas&#xD;white beans&#xD;breadfruit&#xD;burdock root&#xD;cassava&#xD;corn&#xD;fufu&#xD;green bananas&#xD;green lima beans&#xD;green peas&#xD;hominy&#xD;jicama&#xD;lotus root&#xD;parsnips&#xD;plantains&#xD;potatoes, white&#xD;salsify&#xD;tapioca&#xD;taro root &#xD;water chestnuts&#xD;yams&#xD;yuca&#xD;alfalfa sprouts&#xD;arrowroot&#xD;artichokes&#xD;asparagus&#xD;avocado&#xD;bamboo shoots&#xD;bean sprouts&#xD;beets&#xD;bitter melon &#xD;bitter gourd&#xD;balsam pear&#xD;broccoflower&#xD;Brussels sprouts&#xD;cabbage&#xD;cactus pads &#xD;cauliflower&#xD;celeriac&#xD;celery&#xD;chayote &#xD;chives&#xD;cucumbers&#xD;daikon&#xD;drumstick pods &#xD;eggplant&#xD;fennel bulb&#xD;fiddlehead ferns&#xD;garlic&#xD;ginger root&#xD;green peppers&#xD;green beans&#xD;hearts of palm&#xD;Jerusalem artichokes &#xD;jute&#xD;kohlrabi&#xD;leeks&#xD;lettuce&#xD;iceberg&#xD;luffa &#xD;Chinese okra&#xD;mushrooms&#xD;okra&#xD;onions&#xD;pattypan squash&#xD;purslane&#xD;radicchio&#xD;radishes&#xD;red cabbage&#xD;rutabaga&#xD;seaweed&#xD;scallions&#xD;snow peas&#xD;sorrel&#xD;spaghetti squash&#xD;tomatillos&#xD;turnips&#xD;wax beans&#xD;yellow squash&#xD;zucchini</l><l><option>line</option></l></block></block><block s="doSetVar"><l>grainsList</l><block s="reportTextSplit"><l>amaranth&#xD;barley &#xD;brown rice&#xD;rice&#xD;buckwheat&#xD;bulgur &#xD;dark rye&#xD;injera&#xD;kamut&#xD;millet&#xD;muesli&#xD;oatmeal&#xD;oats&#xD;popcorn&#xD;quinoa&#xD;rolled oats&#xD;sorghum&#xD;spelt&#xD;teff&#xD;triticale&#xD;whole grain barley&#xD;whole grain cornmeal&#xD;whole grain sorghum&#xD;whole rye&#xD;whole wheat bread&#xD;whole wheat cereal flakes&#xD;whole wheat chapati&#xD;whole wheat crackers&#xD;whole wheat pasta&#xD;whole wheat sandwich buns and rolls&#xD;whole wheat tortillas&#xD;wild rice&#xD;bagels&#xD;biscuits&#xD;breadcrumbs&#xD;cakes&#xD;challah bread&#xD;cookies&#xD;corn flakes&#xD;corn tortillas&#xD;cornbread&#xD;couscous&#xD;crackers, saltine&#xD;cream of rice&#xD;cream of wheat&#xD;English muffins&#xD;flour tortilla&#xD;French bread&#xD;grits&#xD;masa&#xD;matzo&#xD;naan&#xD;noodles&#xD;pancakes&#xD;pasta (spaghetti, macaroni)&#xD;pie/pastry crusts&#xD;pita bread&#xD;pizza crust&#xD;polenta&#xD;pretzels&#xD;ramen noodles&#xD;refined-grain cereals&#xD;refined-grain crackers&#xD;rice cakes&#xD;rice paper (spring roll wrappers)&#xD;rice vermicelli&#xD;waffles&#xD;white bread&#xD;white rice&#xD;white sandwich &#xD;buns&#xD;rolls</l><l><option>line</option></l></block></block><block s="doSetVar"><l>meatsList</l><block s="reportTextSplit"><l>beef&#xD;goat&#xD;ham&#xD;lamb&#xD;pork&#xD;chicken&#xD;ham&#xD;turkey bear&#xD;bison&#xD;deer&#xD;elk&#xD;moose&#xD;opossum&#xD;rabbit&#xD;raccoon&#xD;squirrel&#xD;venison brain&#xD;chitterlings&#xD;giblets&#xD;gizzard&#xD;heart&#xD;kidney&#xD;liver&#xD;stomach&#xD;sweetbreads&#xD;tongue&#xD;tripe chicken&#xD;Cornish hen&#xD;dove&#xD;duck&#xD;goose&#xD;ostrich&#xD;pheasant&#xD;quail&#xD;turkey</l><l><option>line</option></l></block></block><block s="doSetVar"><l>fishAndSeafoodList</l><block s="reportTextSplit"><l>black sea bass&#xD;catfish&#xD;cod&#xD;flounder&#xD;freshwater trout&#xD;haddock&#xD;hake&#xD;halibut&#xD;herring&#xD;light tuna&#xD;mackerel&#xD;mullet&#xD;perch&#xD;pollock&#xD;salmon&#xD;sea bass&#xD;snapper&#xD;sole&#xD;sushi&#xD;tilapia&#xD;whiting clams&#xD;crab&#xD;crayfish&#xD;lobster&#xD;mussels&#xD;octopus&#xD;oysters&#xD;scallops&#xD;shrimp&#xD;squid anchovies&#xD;anchovies&#xD;freshwater trout&#xD;herring&#xD;light tuna&#xD;salmon&#xD;sardines</l><l><option>line</option></l></block></block><block s="doSetVar"><l>eggsList</l><block s="reportTextSplit"><l>chicken eggs,&#xD;duck eggs,&#xD;eggs</l><l><option>line</option></l></block></block><block s="doSetVar"><l>nuts,seeds, and soy products List</l><block s="reportTextSplit"><l>almonds&#xD;almond butter&#xD;Brazil nuts&#xD;cashew butter&#xD;cashews&#xD;chestnuts&#xD;chia seeds&#xD;flax seeds&#xD;hazelnuts &#xD;macadamia nuts&#xD;mixed nuts&#xD;peanut butter&#xD;peanuts&#xD;pecans&#xD;pine nuts&#xD;pistachios&#xD;pumpkin seeds&#xD;sesame butter &#xD;sesame paste &#xD;sesame seeds&#xD;sunflower butter&#xD;sunflower seeds&#xD;tempeh&#xD;texturized vegetable protein &#xD;tofu &#xD;veggie burgers &#xD;walnuts</l><l><option>line</option></l></block></block><block s="doSetVar"><l>dairyList</l><block s="reportTextSplit"><l>buttermilk&#xD;fat-free milk&#xD;skim milk&#xD;flavored milks&#xD;lactose-free milks&#xD;low fat (1%) milk&#xD;reduced fat (2%) milk&#xD;whole milk&#xD; frozen yogurt&#xD;ice milk&#xD;ice cream&#xD;lassi&#xD;puddings&#xD;sherbet  &#xD;smoothies  &#xD;soy milk  &#xD;kefir  &#xD;cheddar&#xD;Gouda&#xD;mozzarella&#xD;muenster&#xD;parmesan&#xD;provolone&#xD;Romano&#xD;Swiss brie&#xD;camembert&#xD;cottage cheese&#xD;feta&#xD;ricotta  &#xD;American&#xD;American cheese&#xD;queso blanco&#xD;queso fresco  &#xD;milk&#xD;yogurt</l><l><option>line</option></l></block></block><block s="doSetVar"><l>Other</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="fruitsList"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="vegetablesList"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="grainsList"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="meatsList"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="fishAndSeafoodList"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="eggsList"/><block var="item"/></block></block><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportListContainsItem"><block var="nuts,seeds, and soy products List"/><block var="item"/></block></block><block s="reportNot"><block s="reportListContainsItem"><block var="dairyList"/><block var="item"/></block></block></list></block></list></block></list></block></list></block></list></block></list></block></list></block><script><block s="doAddToList"><block var="item"/><block var="Other"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Fruits</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="fruitsList"/><block s="reportTextAttribute"><l><option>lower case</option></l><block var="item"/></block></block><script><block s="doAddToList"><block var="item"/><block var="Fruits"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Vegetables</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="vegetablesList"/><block s="reportTextAttribute"><l><option>lower case</option></l><block var="item"/></block></block><script><block s="doAddToList"><block var="item"/><block var="Vegetables"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Grains</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="grainsList"/><block s="reportTextAttribute"><l><option>lower case</option></l><block var="item"/></block></block><script><block s="doAddToList"><block var="item"/><block var="Grains"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Meat</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="grainsList"/><block s="reportTextAttribute"><l><option>lower case</option></l><block var="item"/></block></block><script><block s="doAddToList"><block var="item"/><block var="Meat"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Fish and Seafood</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="fishAndSeafoodList"/><block s="reportTextAttribute"><l><option>lower case</option></l><block var="item"/></block></block><script><block s="doAddToList"><block var="item"/><block var="Fish and Seafood"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Eggs</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="eggsList"/><block s="reportTextAttribute"><l><option>lower case</option></l><block var="item"/></block></block><script><block s="doAddToList"><block var="item"/><block var="Eggs"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Nuts, Seeds, and Soy Products</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="nuts,seeds, and soy products List"/><block s="reportTextAttribute"><l><option>lower case</option></l><block var="item"/></block></block><script><block s="doAddToList"><block var="item"/><block var="Nuts, Seeds, and Soy Products"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Dairy</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="Grocery List"/><script><block s="doIf"><block s="reportListContainsItem"><block var="dairyList"/><block s="reportTextAttribute"><l><option>lower case</option></l><block var="item"/></block></block><script><block s="doAddToList"><block var="item"/><block var="Dairy"/></block></script><list></list></block></script></block><block s="doSetVar"><l>Categorized Grocery List</l><block s="reportNewList"><list><block s="reportNewList"><list><block var="Fruits"/></list></block><block s="reportNewList"><list><block var="Vegetables"/></list></block><block s="reportNewList"><list><block var="Grains"/></list></block><block s="reportNewList"><list><block var="Meat"/></list></block><block s="reportNewList"><list><block var="Fish and Seafood"/></list></block><block s="reportNewList"><list><block var="Eggs"/></list></block><block s="reportNewList"><list><block var="Nuts, Seeds, and Soy Products"/></list></block><block s="reportNewList"><list><block var="Dairy"/></list></block><block s="reportNewList"><list><block var="Other"/></list></block></list></block></block><block s="bubble"><block var="Categorized Grocery List"/></block></script></scripts></sprite><watcher var="Deli" style="normal" x="9.999999999999773" y="230.00000799999998" color="243,118,29" hidden="true"/><watcher var="Frozen Foods" style="normal" x="9.999999999999773" y="338.9999979999999" color="243,118,29" hidden="true"/><watcher var="Household and Cleaning Supplies" style="normal" x="9.999999999999773" y="338.9999979999999" color="243,118,29" hidden="true"/><watcher var="Vegetables" style="normal" x="116" y="3" color="243,118,29" hidden="true"/><watcher var="fruitsList" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="vegetablesList" style="normal" x="10" y="31.000001999999995" color="243,118,29" hidden="true"/><watcher var="grainsList" style="normal" x="10" y="52.00000399999999" color="243,118,29" hidden="true"/><watcher var="meatsList" style="normal" x="10" y="73.00000599999998" color="243,118,29" hidden="true"/><watcher var="fishAndSeafoodList" style="normal" x="10" y="94.00000799999998" color="243,118,29" hidden="true"/><watcher var="eggsList" style="normal" x="10" y="115.00000999999997" color="243,118,29" hidden="true"/><watcher var="nuts,seeds, and soy products List" style="normal" x="10" y="136.00001199999997" color="243,118,29" hidden="true"/><watcher var="dairyList" style="normal" x="228" y="199.00001399999996" color="243,118,29" hidden="true"/><watcher var="Grains" style="normal" x="221.99999999999955" y="3.999998000000005" color="243,118,29" hidden="true"/><watcher var="Nuts, Seeds, and Soy Products" style="normal" x="330" y="4.999998000000012" color="243,118,29" hidden="true"/><watcher var="Dairy" style="normal" x="227.99999999999955" y="104.00000399999993" color="243,118,29" hidden="true"/><watcher var="Eggs" style="normal" x="337.99999999999955" y="102.99999799999995" color="243,118,29" hidden="true"/><watcher var="Fish and Seafood" style="normal" x="114.99999999999977" y="103.00000599999987" color="243,118,29" hidden="true"/><watcher var="Meat" style="normal" x="117.00000000000023" y="199.99999799999992" color="243,118,29" hidden="true"/><watcher var="Other" style="normal" x="8.999999999999773" y="210.999998" color="243,118,29" hidden="true"/><watcher var="Fruits" style="normal" x="8.999999999999773" y="107" color="243,118,29" hidden="true"/><watcher var="Grocery List" style="normal" x="17.999999999999773" y="16" color="243,118,29" extX="80" extY="70"/><watcher var="Categorized Grocery List" style="normal" x="17" y="103.999998" color="243,118,29" extX="80" extY="70"/></sprites></stage><variables><variable name="Meat"><list struct="atomic" id="1823"></list></variable><variable name="Grocery List"><list struct="atomic" id="1824">apples, grapes</list></variable><variable name="Dairy"><list struct="atomic" id="1825"></list></variable><variable name="Fish and Seafood"><list struct="atomic" id="1826"></list></variable><variable name="Deli"><l>0</l></variable><variable name="Frozen Foods"><l>0</l></variable><variable name="Household and Cleaning Supplies"><l>0</l></variable><variable name="Fruits"><list struct="atomic" id="1827">apples</list></variable><variable name="Categorized Grocery List"><list id="1828"><item><list id="1829"><item><ref id="1827"></ref></item></list></item><item><list id="1830"><item><list struct="atomic" id="1831"></list></item></list></item><item><list id="1832"><item><list struct="atomic" id="1833"></list></item></list></item><item><list id="1834"><item><ref id="1823"></ref></item></list></item><item><list id="1835"><item><ref id="1826"></ref></item></list></item><item><list id="1836"><item><list struct="atomic" id="1837"></list></item></list></item><item><list id="1838"><item><list struct="atomic" id="1839"></list></item></list></item><item><list id="1840"><item><ref id="1825"></ref></item></list></item><item><list id="1841"><item><list struct="atomic" id="1842"> grapes</list></item></list></item></list></variable><variable name="Vegetables"><ref id="1831"></ref></variable><variable name="Grains"><ref id="1833"></ref></variable><variable name="Eggs"><ref id="1837"></ref></variable><variable name="Nuts, Seeds, and Soy Products"><ref id="1839"></ref></variable><variable name="Other"><ref id="1842"></ref></variable><variable name="fruitsList"><list struct="atomic" id="1843">acai berries,blackberries,blueberries,boysenberries,cranberries,currants,dewberries,goji berries,gooseberries,huckleberries,kiwifruit,Lingonberries,cowberries,loganberries,mulberries,raspberries,strawberries,casaba,honeydew,horned melon,kiwano,watermelon ,apples,apricots,Asian pears,atemoya,bananas,Buddha’s hand,cactus pears,calamondin,cherimoya,cherries,dates,dragon fruit,durian,feijoas,figs,fruit cocktail,grapefruit,grapes,guava,jackfruit,kumquats,lemons,limes,loquats,lychee,mangoes,mangosteen,nectarines,oranges,papaya,passion fruit,pawpaws,peaches,pears,persimmons,pineapple,plums,pluots,pomegranate,pomelos,prickly pears,prunes,quince,raisins,rambutan,rhubarb,sapote,satsuma,soursop,star fruit,tamarind,tangerines,tangelos,tejocote,cantaloupe</list></variable><variable name="vegetablesList"><list struct="atomic" id="1844">amaranth leaves,arugula ,basil,beet greens,bitter melon leaves,bok choy,broccoli,broccoli rabe,broccolini,chamnamul,chard,chrysanthemum leaves,cilantro,collard greens,cress,dandelion greens,dark-green leafy lettuce,endive,escarole,kale,lambsquarters,mesclun,mixed greens,mustard greens,nettles,poke greens,romaine lettuce,spinach,Swiss chard,taro leaves,turnip greens,watercress,acorn squash,butternut squash,calabaza,carrots,hubbard squash,kabocha squash,pimento/pimiento,pumpkin,red bell peppers,orange bell peppers,red chili peppers,&quot;red peppers, sweet&quot;,sweet potatoes,tomatoes,winter squash,bayo beans,bean burger,black beans,&quot;black-eyed peas (mature, dry)&quot;,brown beans,chickpeas (garbanzo beans),cow peas,edamame (young soybeans),&quot;falafel (spiced, mashed chickpeas)&quot;,fava beans ,hummus ,kidney beans,lentils,lima beans ,mung beans,navy beans,pigeon peas,pink beans,pinto beans,soy beans,split peas,white beans,breadfruit,burdock root,cassava,corn,fufu,green bananas,green lima beans,green peas,hominy,jicama,lotus root,parsnips,plantains,&quot;potatoes, white&quot;,salsify,tapioca,taro root ,water chestnuts,yams,yuca,alfalfa sprouts,arrowroot,artichokes,asparagus,avocado,bamboo shoots,bean sprouts,beets,bitter melon ,bitter gourd,balsam pear,broccoflower,Brussels sprouts,cabbage,cactus pads ,cauliflower,celeriac,celery,chayote ,chives,cucumbers,daikon,drumstick pods ,eggplant,fennel bulb,fiddlehead ferns,garlic,ginger root,green peppers,green beans,hearts of palm,Jerusalem artichokes ,jute,kohlrabi,leeks,lettuce,iceberg,luffa ,Chinese okra,mushrooms,okra,onions,pattypan squash,purslane,radicchio,radishes,red cabbage,rutabaga,seaweed,scallions,snow peas,sorrel,spaghetti squash,tomatillos,turnips,wax beans,yellow squash,zucchini</list></variable><variable name="grainsList"><list struct="atomic" id="1845">amaranth,barley ,brown rice,rice,buckwheat,bulgur ,dark rye,injera,kamut,millet,muesli,oatmeal,oats,popcorn,quinoa,rolled oats,sorghum,spelt,teff,triticale,whole grain barley,whole grain cornmeal,whole grain sorghum,whole rye,whole wheat bread,whole wheat cereal flakes,whole wheat chapati,whole wheat crackers,whole wheat pasta,whole wheat sandwich buns and rolls,whole wheat tortillas,wild rice,bagels,biscuits,breadcrumbs,cakes,challah bread,cookies,corn flakes,corn tortillas,cornbread,couscous,&quot;crackers, saltine&quot;,cream of rice,cream of wheat,English muffins,flour tortilla,French bread,grits,masa,matzo,naan,noodles,pancakes,&quot;pasta (spaghetti, macaroni)&quot;,pie/pastry crusts,pita bread,pizza crust,polenta,pretzels,ramen noodles,refined-grain cereals,refined-grain crackers,rice cakes,rice paper (spring roll wrappers),rice vermicelli,waffles,white bread,white rice,white sandwich ,buns,rolls</list></variable><variable name="meatsList"><list struct="atomic" id="1846">beef,goat,ham,lamb,pork,chicken,ham,turkey bear,bison,deer,elk,moose,opossum,rabbit,raccoon,squirrel,venison brain,chitterlings,giblets,gizzard,heart,kidney,liver,stomach,sweetbreads,tongue,tripe chicken,Cornish hen,dove,duck,goose,ostrich,pheasant,quail,turkey</list></variable><variable name="fishAndSeafoodList"><list struct="atomic" id="1847">black sea bass,catfish,cod,flounder,freshwater trout,haddock,hake,halibut,herring,light tuna,mackerel,mullet,perch,pollock,salmon,sea bass,snapper,sole,sushi,tilapia,whiting clams,crab,crayfish,lobster,mussels,octopus,oysters,scallops,shrimp,squid anchovies,anchovies,freshwater trout,herring,light tuna,salmon,sardines</list></variable><variable name="eggsList"><list struct="atomic" id="1848">&quot;chicken eggs,&quot;,&quot;duck eggs,&quot;,eggs</list></variable><variable name="nuts,seeds, and soy products List"><list struct="atomic" id="1849">almonds,almond butter,Brazil nuts,cashew butter,cashews,chestnuts,chia seeds,flax seeds,hazelnuts ,macadamia nuts,mixed nuts,peanut butter,peanuts,pecans,pine nuts,pistachios,pumpkin seeds,sesame butter ,sesame paste ,sesame seeds,sunflower butter,sunflower seeds,tempeh,texturized vegetable protein ,tofu ,veggie burgers ,walnuts</list></variable><variable name="dairyList"><list struct="atomic" id="1850">buttermilk,fat-free milk,skim milk,flavored milks,lactose-free milks,low fat (1%) milk,reduced fat (2%) milk,whole milk, frozen yogurt,ice milk,ice cream,lassi,puddings,sherbet  ,smoothies  ,soy milk  ,kefir  ,cheddar,Gouda,mozzarella,muenster,parmesan,provolone,Romano,Swiss brie,camembert,cottage cheese,feta,ricotta  ,American,American cheese,queso blanco,queso fresco  ,milk,yogurt</list></variable></variables></scene></scenes></project><media name="App Challenge" app="Snap! 10.3.6, https://snap.berkeley.edu" version="2"></media></snapdata>