<snapdata remixID="9797070"><project name="!Hyper Blocks Pack!" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes>Please give credits when using, and also credits to all.&#xD;&#xD;525 kb, see inside. (see code)&#xD;&#xD;My scratch username: Danidanijr_2</notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAKDElEQVR4Xu2bDZSUVRnHn9nZnf0Ydped3c04RhKRKeDxWGCkZQoooRTWZhKrcULUzlKQFh9xIo9x0kUrk6PmwbRE0CWFICUTCKM1A/WEFYIUBzxZWO0y+8F+zuzMdJ+73Ld3xndmdgfrcu/833M8rjPvvc/z/P+/e+97fJ/xJcRFuKCAJgV8AFCT8ggrFQCAAEGrAgBQq/wIDgDBgFYFAKBW+REcAIIBrQoAQK3yIzgABANaFQCAWuVHcAAIBrQqAAC1yo/gABAMaFUAAGqVH8EBIBjQqgAA1Co/ggNAMKBVAQCoVX4EB4BgQKsCAFCr/AgOAMGAVgUAoFb5ERwAggGtCgBArfIjOAAEA1oVAIBa5UdwAAgGtCoAALXKj+AAEAxoVQAAapUfwQEgGNCqAADUKj+CA0AwoFUBAKhVfgQHgGBAqwIAUKv8CA4AwYBWBQCgVvkRHACCAa0KAECt8iM4AAQDWhUAgFrlR3AACAa0KgAAtcqP4AAQDGhVAABqlR/BASAY0KoAANQqP4IDQDCgVQEAqFV+BAeAYECrAgBQq/wIDgDBgFYFAKBW+RFcC4Cd9bdRxYbbpfoDe/bLfxdOmZjXbkR376PCCe8jX81IR4fjYz5L1W9stlqXnAHsmPE1imx/SYpTm3hxWCK5AUwd2PfIM1Qyf9aQ50u0tlNr7ZXO/aEDj5P/3DFZx3MO/Y/vGMy/exdRWUnWMf/LGwb2vkb+958JAIciciLcKeDbS8VzLnduZ0Pj/2ih6O5XKXTwCfKfcxa1+C6S34f2ryf/hLGUCi2v+vZLF9LI39xPRZ+4gNxQKLBjrx2h8MTrsoLOsdRCSPy7jVrPuEqOqfnXNvK9q+ptZaUughM33EHlD6+Q96m5VL6+qnKqCT8nattHscN/pxML7qTg7QuouH6GvJ/B6bh6GVVuWU1di++h3jVPOvnymJ57miiytZlGrLmFSr96jaODmpdvjh18g/xnvTtpIbRNWUBVe348FEuMvSenHVDuUnOmJ4nlNpT/9o89k4KrbkoytPfejVS6+FoJmjqCqaePoi8flADylboD9jSuo8LzP0CBmR/NKLIbQPffrRXTqaZzpyeAzg7IO3giQf2bnqfiz02l/qYdcnH1PbSVSm6cLcHj/OQxef448o0sdyBVx2Tb5PlU9fIj5IB8cr6C2ioqnHQO+YKlpO5NnZeT48VbIEB378QKQLXL8wLJdDrwfe4j/FSo7F7+APWsXi9Ph7apX/FcCF0Nd9OIB5Ykhcl0unnlkxOA8aPHaODQ3yjwySlJO6ADlfiUCwg2NiTF7HvsWSq5fiZ1fGoJVT599+B3WQBUE3TM+gZVbr6TKFDkqWtaAMVOyLtg6uUlFM8R/O7NVLZinudikCBOPjcJEgaOF1pBdQVRcYBO3NRI5WuXS6Ajv3yRfCPKnDEOgMN8zOBkVL5yR71rvVgEIygwbXISkG4A+T4pr7i3ctv35d8cnzcOty88Jt4i/hGnRv/GnQ5Q7F9f0075DOrWiuftXbtFbiAMYOEkoYe41MLwgjLTQsgJQFnMqFkU/2dYzs1HXzpD+fvCj4yXK0gdyeUPLqWSm6+WkPIq46t47uWDu6IAsiU41ZmXd4GBvQec/05XjBvA2IGjFJ5QPzgm2iwS8HsCmPoMGPnVHnmEhg5tlPeHP3gtxf7yphPbC0AGraXgYuf493rMUNAqAFPn5QCsBe/y6iTgz9w1uQHsWnof+ce9h/yjz0iCSR7jJ59/FYB8b9Xeh2UNDAc/AvDlPu55XPT3+5Ng5nxK5l0p58sEoK8iKHNQsYf72JAzgJmozqfvEh1d0jz3aWBi/cM9Ot+pGgHgKSjJphWJI6j0ljmnMEt+DwWA+e2/9uoBoHYL8jsBAJjf/muvHgBqtyC/EwCA+e2/9uoBoHYL8jsBAJjf/muvHgBqtyC/EwCA+e2/9uq1A8jvHPlKbVzIpAy/d2yfeevbmjWzvU4aSoNn920PUXDlfM/3x/8Pt7yaODjuwB//Sj7xTpvb2my6cgNQvICXL53FS+7uZfdTcPXC00KTbACqlqm0yXJnjnivWzRtkrylJfBxqu3/LUV+0UyB2ZfkVuNAjFrKp1Ftz/PU+6PNVNpQl3GedADyoGz15Zag3lG5AShEPT56NlW/9YyTfcdnllPFT78lmzFLFw12XMi/F9ZRp2hZqvx5o3elKe1YsgMk9gK1+D8mO0y6vr5GNn/Gj7WS/+z3OnO4zVBjOsSuWPncDymy7XeiPapStkTFRfNs4KqL5bhsnRrh8V+g0IEnnBjubhT+0GteuaseecrJN7VI1ajq/lyCHWmm1tAM2eja/+Qu8lUGqejC8dTT+Jg8DdLN271yrdNnqReddyZ6bgCejM3HVd/arRJE1WrFX3HjJLcD9a171skybdt+mn5AdVwmunqotXy60zWtJkxqEfr1K3LXUp+xwRSNyVtVK9hQAEwFTkHXMWuJXAyp81as+7Zo2fpvI4JXjW0XzKOqfY86OiTaT1D8reOyzYl78fjinxSosbINSvwkId284XHXUOjwYMe1DdcpAShNPSlwqnn9T+2i4rrLiHy+zDplAVAN5tb8glE15AuJxk9xuQHsWvQD0e5+q9M/137FYhq5/d5h++MFIE8iO7kXfZ7axe9gkuaNRCn6yutUdNF5aWPx7lYgclbHOt/YveJBCt7xZbHbraOyZdeL3sW5cueNioUU2fESBb9zY9p5O+espIqmVcOu7XQdkBuA8Ti1XXgDxY4co+o3t8h2c76Oj62TYnNrOoPHQvd8bwOFXm+SLfqpl1dDqmrJVztgbL/4Tch511HwroVUtqReNj6Gx891puKdg3fa3jU/k89XqjOXG0MH/nRYHI+biEqL5f3hifXi9ykb0nrBDamByz4kO5sl5HXfpP7Nuyn0Z/GblomDD/+p80abX6X2Sxqo/NGVVPLFmZ5zR55+gTo+vVT8ZqRRPksO/OEQtX34S1R9dBMVjBklx/DuWtO2nXpW/UQewV7z8jj/2aNll7UtV24A2lK9Rx3q+ex0LLH90gbxKDL4fw1suQCgLU4aWgcANNQ4W9IGgLY4aWgdANBQ42xJGwDa4qShdQBAQ42zJW0AaIuThtYBAA01zpa0AaAtThpaBwA01Dhb0gaAtjhpaB0A0FDjbEkbANripKF1AEBDjbMlbQBoi5OG1gEADTXOlrQBoC1OGloHADTUOFvSBoC2OGloHQDQUONsSRsA2uKkoXUAQEONsyVtAGiLk4bWAQANNc6WtAGgLU4aWgcANNQ4W9IGgLY4aWgdANBQ42xJGwDa4qShdQBAQ42zJW0AaIuThtYBAA01zpa0AaAtThpaBwA01Dhb0gaAtjhpaB0A0FDjbEkbANripKF1AEBDjbMlbQBoi5OG1gEADTXOlrQBoC1OGloHADTUOFvS/g8wa6jkqZNZuAAAAABJRU5ErkJggg==</thumbnail><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" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAgAElEQVR4Xu3dC5gkZX3v8X/37OxNWGB3ZpaQk0MIhEfBcDTA3shRVODhsoLyuFw8LCDXREQQeES5ebgoIaACCkFALmJEIMcjN/ESEKPsDVYMRsIhIlETcGcGFhbd2+x0nd/b1TVd3dM9Xd3TM/+Z5TvPs+zS01XvW596u371vvVWdc74QQABBBBAAIFxF8iNe4kUiAACCCCAAAJGANMIEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIDHED2yvWf2WuctOct9WND7d9vyH9Uq7hWbv2DQcneF33VYtHSOrVwxhtVi1QhMCoE+W/juyOzxyKKVM2xg8Sxb3d+o4v224G36LD1S+iwd0mUr/q3RMvweAS8BAngM5bMGcK8t+Fuz3PlxVaKremzFp0aq1qu26O1brHCODky/nWsrPzOGm8CqEXATIIDd6Cl4nAQmVQBHttu0fus6KLLcGfKZpz87KLB+p/D6Tt5yN82xZau1QYVxsmtYTNYAbrYH3GsLT1LhX80S1g0r2YY3rLO9uzZY50Pq6c9vtDr1aH6tXv6490zS+6JeHXVC840eGzg1Z6vXN9oOfj/2AgTw2BtTgq/ApAngV2zfPxm0KbeK66BaZF4H9pF2X9YAbrYJEMDNiulUJXU5gABu3s9jCQ0nzy9Y7gc6MXo26xD0azZvl82Wf1gn6TM9TvQ8nChz8gpMigB+wxb1rLfoblX2vTqU/jJnhbO7bPCHoacS2R5Te23bt+Ysf0zOBu/otlXPT5Td8WYJ4FreE+0kYaz2xURpa1tjPZLruTmLVhRs/ck72jN/aLSdqdGYjhmWO2xbW9bbaBl+j4CXwKQI4DU2/6MK2BsUvk902OCxc+zJ3zYCSw64et+u4ex5vQ1syNuMMzVcfZZem6O/FeCFC7pt5erqdam8uWZ5DXNHx2lYdZd4mNvu1Rn11Zog9Z+1e+BheLz7SI1/n6kDxj5af6eW08lArlvv36F6ElYyvFa9rlqTtbL03pL11BtGrd4mjRhsVD0f1oj9dTppeaLdQ/fNBHB8aSFtF3qsuadUv5u7LXdPzpZvaLS/G/2+2QCW115qc5rME70+1QqHbW+rXqwuQ9v4Tjl+V6//63SzJdvZ8leT9/zO9npLh808Te3hRLWhvfT62vDeKVa4Qm3o2ep1pdrDyZqsd/srtmifgkVXqPz36L2v6M+1srg+sUg+E9rft/TYuo/l7NnNw+s3X209f63WcVG3rfic9rGqUPxPvtfmH6DtO1f/fpden671PKO2+vWptuGWHexnr6XXVVk3u1szoU7X+/9G7989buN2Zbf16wT5l5uq69CsQ3r58oSq6ImslwaSAA7rydprbtR2+D0CYyUw4QP4dVs4e6PZfaH3q8A8VoH5zSwYqQPu/MgKf6OD4IU6YLy7ctnoeV07PqLLlj+XvK7rsXtssfy9Km/P4eVEz+sE4EidAPyi8gC19x9FNvUOvVZzeDy81zOANXy/56B1fCs+YFYJjNE12awBXBrduFk+R9TarwqI+2da7rTR9mSaDeBwUtBn3TeqTrreXljSYyv/MWvA9dmI7WFtXmGtNvdonZC7Uq+/oGD7+/gkrvwjo8902TQF6eNb1tiiXfV5+E4cqPlD59oyLVP+6bP9ti1Y4S4ts6/a/yGarKeANeu1PbYxm/VZrfvjtb2jVXnbcny3PfX/kt+nrsV+XcttW3tfRR9XyH85CfmwbCsO6ToRwFmOdLxnMgtM+ABOehmq6Es6cC3Wgeu/soCXD7i2RAfxAS2/TgePC9UdvftVK3RusdwNCuXjdPi6ULOOPxfW+artvd2AglQ9r8P0u8s7bPP1s2316+EkQN2LM3TWf7F6Zg932uYTw+vxwW+3ab3WfZ3Wr16BhWHyS9SD+VV8sFu0i9YVDuIHjXQbUrPhkDXc4vrtP6XXNl6l8tX7t3PFcHuPPfv78Hq/rf8zHbyX6EB+X7uH7rPUMdShzzZdpnp9Wn8eztnAuV321L/rjq38q7Z+X50IXav9oMl2hU/rxCtsQ7EH18pPs8bx/pv/IXUW76vVy6wXcKVtukaLn6Xlbspbx+Xd9sRLcfBtd7Rev1p//qPDthyRHslJhdx6bWdnaGfaL5/Udr8gywP12t1hJCbpjcflbPyC2rRGXIafmKaunz6Y9B6Fl1M5YQLfrarbKvXGz55tM5/UnT6FftvnzyPr/Lx+d5je95Ue6zsr6dFWjtZEA6qH2nj+OkVsQScpp+j/v6jlVk2z3OHJKECrDgRwK62bZSarwIQP4PKHP7on63WgOHjK9+CGA5d6uselex3xeqMf6Jh0d7dNO129io060B2s9z6g127Ua+eFnkayY0sHPB10ckvzFh2o+wtXht8lBzr9c/k0s2PTw5BZD/pZ35fUJUu4lesdO6jeB3RYTicwy3TAHfufLHUsD/PamupACjXsswV/qSB6UP98ScOlR4Qga7Xm2YbxK28BU8jupN7j/WoTb6kehi4PP0f/lB4eTbZJIbYqfaIWt0nLqb2crW1ScFb2qqtCTjPc150dTpQq27It0Vreq974T+IThLi9ar33pesQB+2CC/TXFelwLm+P7aQTw/erx/rTtGdpoqO21+ame82pz2AI39N1UqCT1Phk6A17Z/d6mx6W2Sk96alVBwK41RbOcpNRYMIHcHIgb/YWkfQBN2+FD3TZynCQGPqpNbyl+3Ev10HrIvW0D6geIiwd8Eq3/9jJPbb8tlJInKoD6s06oOqAuVIBXf7JGqxZ39daAIeD8XzdY5wPQ5s/03FT173XPVrrmmE7G3DGAF6qYP1a9TXKpB7h+mHeZiqMcoemT3paqWcrAVzqMWq4NvTQKwNTvePi9dXq3qeCp7hNCrjTFHA68an8SYVZxf3eqQB+qNM2LK2+DpvcK54eSUkuz6iEXdPhl7psMyt94qI6/5UsH9Ofu7qtT/MqKq/Zhu3Vfvs7lXFeentHOgkuz7XI7VcVwC05VH5GF/6xrqE/FGZBZ70GnIxMqE3tWOsa8Ai3zA19pltpX/WWKZV3nepyVpYHibSz7PFeV+XzDMqX3dKfvWYeqlKv/uHYrbZ6ZpcNqJPU3C2DoS1rbsVpWdvTWBtO+ADus3kaEut4SB+olnvAIw3/JsDq4U7XcOhX9P/HZ0Af+rAmja5WaGcN1qzvayWA4xOHYdf91srz2xrevVPXFDUBq9zTz7Dtmd6SJYBlF3ppIeDqHvxqBU+mClS9qVnjZPE1tnCR2s93deD4ZjLZaa29Y/vNNl3zBHKaXFfZM09O4hrXsbq3PfTUp6buRU5OBNRjPUPXecPlDkvqrH18VXryVTKkHl6v97CX8n5Ln2TWr1u9AG7VIe2WmlD1QtYDZvXky3qhl7xPI2Oa6Ff7CXWN92Hjd7zZAlifiUeCZwhJnTxdM90GTkj2QbssCODG7a5t70idtf9LM7cVNHvAzdZDGtqsYQHcaPay1zXg8gmG5dbaoj0HrHCS6nKsgm/H8DudST42zQZPqTXLdzQ7MWMAF0ccJnIAl05e7lQd35YMQ6cuO3xZB5sL09emq3sB9Q3bE8Cp2dp6fOm6E7rt2T/oLD+c1JyQHkaOgznunY9TAKee7jZSS6p/MlDurdrjjZ4OV27nySUXs5FCu14AV/eQ05/b1MmJPjeNH9pSuy3E21vjeDN0TBmpDrUk49E8u0h13V6f5zn6O1xG+2xS93Q90j3QeHuibTSCd47eu3PSLqrDM+vJSignHcDVvdRaATySQ9x5SB46FI5Vsfkr1rlzsu43zGbGDwGK20iNEY6Kk/vRhPdojof1lp3wPeDkxnptwG5qVIdr6Dfc9tHwp9kAjnd2/EjILD3mpALJmb4OdserB1J8nnPyE3pKAzYjvLbYO4DT9YpvQ5n3FznrCAfqw9S0dc173SfaOSydLYCHnug1NBEuXc9kCFoHiPfI72Dt+6cb7vg6b2ilPSSrSm75SYabSz13HUTt4Lm2fFm6yFo9yCx1Tk3CaqoHnMzWVl1CGztYAbsmvm5tz1QPM6fKqHnrUnoIWvfUL9bEPN2mFq7Ft9IDHjpwjsnQbhbTkd5TK1SqXwsH843WeadGt85TG+xJD12Wwmv3RicG9Xp9pWPN8+FSVrrcLtv8ZJizkfTM03Wo91zr8v3ShY+qnv9L7UC3aeaKz0NILpUlFqW5L4eEeodtUKidFobqw++TbQ3lNArTWraVQT/8iXe1LOo5hF50veHiJESn2cAlCl9NgM09mmxn6fM3bLuT+hLATX5y0rOMFRQ/0kxZ3Yq0+uVGq2nlgJsaoqu4b3KkslLLfKnbputMMh7OjWcfb7hYB8RLwv+3M4BTPZmKMhuZVP++dHtSeHD9b9IzWJtdT+0PY+PHZZZ7ktEzOhk4qnqSVfyIzvx3FAxPV99n22wdW2kP5QCOb/lRPX6kPXtxuIaq/amT73UnJBOlUh/w4tOb9P+aWT78Omu9ercawHFADl2m0WhCpJOU3Lf194erb51KPyWqUxPyZtuyf03XJ9zapOXu1/VrzcIu39rUSgCnRgmacmh2v7b6/loBXC8gQq9O+1425UDLeiCv1+vrt85r1Ia+lIRqEhzTbfMDIVTS14zTYVhre9OBtMk6LwvrVRtcmNQ33YuMl4974emwCh7pOlUHtdb5QqOh+urQbjQEXV1mqFm6TvW2u3zCEXrtlZev6s2xSH0+w9D4B5M7X1ptP+1absL3gMOGhi8fGLAoDDME8B/rjPTSOfb6j0OPLTwJq99mvV2ox2my1U3J7TStHHDLs0Cjt+vM8MopZrfMtpWagWuF+LrftH31YVyssLo0me1cvh8z162ex6k9NuP+fhvo0b8v0Do+EuqvZWa2M4BTBzeFfUGTfd54oF7vNUzI2WTRZ1SXh6ZbfvUsW742DJmWhlZD/T6vg8sd9R7m0GpDy9YDLl6b1vBu7kiVU3Eb0iu2cX99q40mOUW766z+FPU0NXTa+k8r7SEprXzLjx2gusrSviz3S5NrrulalW9lsw+E25fUJq/pspm/CidmcR2mvkP8H0q31ThEW7sGHC8bz9ZWeZqIn+vV/t2u1qzx8i1pufBFHlW3IS14hw7aV2tZ3W9fvt+4Ud3qXQNu1SFtWX5Gek5+m0/McuKtdqeRMlOv0mbrNqujaj30pBhBpbsk0teAt8YA1uTF5RqevqNDD4QJYV8drMEi6YWnAzj49FnnJVNs4MYt1vmBbhu4tdGEp3Rg1grXat/RBHAYgo73o62rNQrRKIhbP5K0d8lJEcBhk/tt4fs0BBQeBFC8dln9ox1R8ZD/Vg+4cTl2n9avL3qoVU7lV6PFM2WHZhmnFoh073FOTzIyDQnaTdUBnOVaYb3rTKUPh54MljtxuEPltanGX5RQ++Eio21mWQI4lNHgwSdFw+ThE6OpU5Zr/CNd1yvfomarVA+dbA1/+EVSv5EefFI6aAz7QorRBHD6tqO4DpVPvkq7NXg4Rli24haosGwrPeB439Z/AEw9h3Rd05+RrJeFqnp7dYe/swxBl66tFsNr+BB0uFwVwmvkby6rN4ScHnpNPqM6GTi/egg6XYeRhqBDIIUh2eoecAjgpCe6rdn6+OtR7beNesBh25JrxDrOvKyQDsfEEX+a7QHHZRQv+xWH4tMOobddGiJ/X/W1/PToQzhJqLcfao1SlIa1r5ooT0mbNAEckOMdNPUj6hWFBxro8X45DZVFL+pvDfkN3thjq34eeqvxhzvbd/HWalFrbcGfDujpS1q3ni9dfBSl7n80DZPag4M2eNdce/LF0ItMlo17Fpv0nb9ReNpWeDxfeLzlxZqB+j3t8BP176+2M4BDuTUe8VesTnWIhINzefJV7hC95a2l9xUfPTjDNt8+FrdHZA3gUJfxeEzmaAM4/UQ2KTcc+k/aqt4bHmcaHkUZfp7T/tGQf+HOdFsNvxhNAMcHsvixmGpnM2pdm0638+Ftp9i+f6Jlv9hl/d+vvj2p1QBOf2azOqTrOd494FB21fBmxaWjqslMma/VV54UxMO/I00WGqkOtY5XjYeg47ktoZOiY5TuQbedsgRwlvBP16feNeBanYDkOFWeRDX0TWoVJ021zNOTsOK2H55zEE+6iwM5+WrX4Zf+COBaLYjXEEBgVAKpW490Mjr82vSoVs7Cb0qB9HD1mxJgHDZ6UvWAx8GDIhCYdALpR6g2c6fApNtQKjwuAqMdjRmXSm4lhRDAW8mOZDPefALh8sIa23eXvE0J1yPDM88rnuH85hNhixGYXAIE8OTaX9QWgarnnA+B6NpttpnCECKAwMQQIIAnxn6gFghkFkhPKAvf46vb8u4YtPU3Z/nC+syF8EYEEBhzAQJ4zIkpAAEEEEAAgeECBDCtAgEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgF5d5Cs2f8Gg5e4Kr3dYtHSOrVwxAapVrEJke8/stc7L9c+/1p+bemzg4pytXt9M/UrruCVnuQ+rwe3fbct/1MzyI7233xa8TXaPlOwO6bIV/9audddbT2T7T+mzjZ/MW25lly1/dKzLY/2xQK8tPEl/fVWt8qoeW/Gp0br02h7bRDbrvA6zR9RuVo52fSyPQLMCBHCzYmPw/l5b8LdmufPjVbfn4NKuaiYBp4ayc2T2a50gNB1yW1MAh/DttQ06CclfElnhsh6bcXnOHt/SLm/WU1+g3QG8xub9D+3He+OTt8Ej59iTv8AfgfEUmDQBHNlu0/pszvsiy52intT+QtpBYfU7Bdd3zAbv6LZVT2hjCuOJ166y6AG3LjmePWCdgOT6bP6J+usr+nO32etn9Nizv69V+7W24E+VyieoQR6p9rqX2uqA2u5TOYu+Od0GvjHLVve3vtU+S4btX2uL9hyw6Extz4Harl302kZ97v45Z4Xbuyx/f86Wbxir2rU7gEM9+23h+7SP7tP2PJOzgWO7bfXLY1V/1otAtcCkCOA3bFHPeotuVmWPqLcL2z20SVNpn8BY9oBfs3m7bLb8wwq3ma30zpvZyj5b8Jcq50EdrP+93sE6hFS/zT86svyN8Uni8J/Iom9oKP/UZofym6lru98bToD7retT2r4LtYmdddZ/co8tv63dZSfrG4sATp9Uad/e1mN9Z+Xsl5vGahtYLwJpgQkfwPEHZMEF+usKHbhW6e9P9Njr6kk8uzkMB/bb+j8zy5+s3z3YYyt/wu6deAJjGcDrbO+uDdb5kHpjHTMsd9i2tqx3LARS2/D+vNkH6137XWOLdlVvUKMytovqdPl023jTNvZ0vz5o0Vp7x/aDNu3dBcst7LaByyZLAMefs00X6LN4adzjjS6fYZtuCdul7cy9avN3Um//cG1vv67NFod0x+JnLAI41LO8b22J9t0HNZr28FjUn3UiUC0w4QP4dVs4e5NFD+hzvp8OfAc0O+lljc2fq4A+Qx+z48KQWTxsbfeqt3S1Jjv9Z60m0coyzTatPlv4bh3MHq+xQ+pOUgrXinWWfkzo6XVYfv1mK1yobfqQtmkb+fxQk4IummPLdHKiY0rVT/U2lQ6kOtAUrqsevk8HZno1WXpucU+p+0gN652pA/U+cW8pel5/d2tdO9QaqVBd8r02/wBdjztX/36XlusIw7UdVrhqjs14eKRrrEkAh3rOsIHFYzW0q4P/wdqOBxr1kuS8VNvxNb33noKtP3lHe+YPWdtGKw5xj3vBO/W35hDkDgzG2k/P5C26QUPCd7VjSFjbtJe2KUx021bbdXS3rfhurTaW7bNka7WOH6i+1yusl9VaT61tCp9bvb6h9BkeNglrtA7xZaC8TpyiH5qtO6HepYWs+5L3IZBFYJIFcOEDXbby/iwbFt6jD9UeWzTJQhu55/BloudrTbxoZZms9Um/r9UA1jrO0Z+rFAQ60NvOVWW/pPB6vw6QP02//ortu+egdXxLB+jdq+taa2JVqwHcZ3v/UWRT71AZB9UzqQ7gcu8quqjW0GajiU7jEcCR7TG112Z9WQf/Y+R18Fxbvqze9pUD2B7qtA1Ld7CfvZalfbTiEEJHJwZLtf6vyHV6jXJ0IlD/OnW2epVHoPT+27qt76NZh2h7bd7/jAbSyC0AABEWSURBVKxDJwHD2qlWVbwmfkGPTbs2fYLVyCGuc+VExXY4xHNMusNlgyWN9nEWN96DQBaBCR/A6eGv+Cw491F9aB9sNPP0Vdt7uwGFgQLpsDAU2GGbr59tq18PPerNZmeol3Cx1vVwp20+MbwesFpZJgtyo/dkHaJNz5aOg3PwpDm26nH1Hru1jdfqeHyMjK5Qz+LipMx41u7Gq7SjNXHGztXZ/e3h7D4Zvte1yjDsdp96weql1v5JThZG6gGHA1ivdV+nck5X3e7W35fodqNfhTX22iINx0bh4HZQdQD32bzDVIf/q2WenmLRWbNtpS4z7J9/1dbvq5MnHZztnSMNC45HAKeuM7+slFuynS1/tZ6VJvW8tWCRThKLJztfU8/x0932xEuN2kArDsk1adkN5G3wjC6b+T0NqhT6bZ8/j6zz8yrzMLWHj+uETCcPw0dFGtUp/L7P9tu2YIUQokfkbHBx1uFZLbdTZINhOHpe+PxNNbshuIVbf8y2O1qvXx3Wr1GOQ9O33emEYomq+g/6bKo9Fs7psTceD5ebwvD9Fptxprb1suoAbpeDJtjpBCuvyXWVn6EsTrwHgVYEJnwAxwfw8KGdFQLm5PD/CoKfq+K3avbzvT32ZBhSHvaTDBlqmRu7bdp51WfZuo/zOv1uqYbqDkzuAWxlmVbQq5dpPoCH997jkCwO7d2XnuCTrFvbekCH5RZ32bInm61zlgDWMOh8Xdv8gda9fJrZsemQqrd9pf16p+q2oFbPvd8W7Tto0UPa4/f32LqPhQNxdd3HI4B1gvNXquNjKvumbpt+TqOTv3hmbfR1LbNjaaj/HoWQZglP00z94bcsteKQPrGqdYKiUY8/2WId4Vrm76baxqOy9sTr+erztpNO+A7JequORgLUU87foPXpEkf156/Yq/6YfK5Xm/1Cj00/P7iEkN1s0zVildunOpjj48Dw+4Db6aD1h6F8Da9HP2z28kGznynej0AQmBQBHIeu5XWQf5cO8roH094b775oQP/5h4INXr6jPVnsbSU/6i3q4RG5i+pdNy5/mG1o5mYry7SjGTUbwDpAnKZezS3pssu340RPVAZw8dYZXR/MX6n3/0xmF3TbukdrhVm9bckSwDqgnqpey83qtZytyXA6uSn/1Ns+9fp21xBluO72VK0DXpZwTXpoWseOY3UNOGkrtdzrmYW6b7ROPbwkFy4ZlGZDR79UuFzSZX3fSg/jtuKQmhsxrdbks9SJ136jmR3eym1eCsXpfbZJt2rZB+sN55Yuizyi3z+XnCCUX8v9NG/5pRo5eKPyMz08gNvpEO622GCRZtRHg2PVltpxvGAdW4/ApAnghDxc71lj+2pIM3+CDmanhV5GGJrWBKTjkglaqQPA8Rl2VTGAW1kmw7ozvaXZANZKh93uUS+AQwVKPazPyurjpQqFiTDflt+d9Xpl6YpnCeBkeLzWCU/9HnDSs6x7W0t8mmXRynoHxHLQ2K5jddAsn1wMd2+0gyNbOKPfBt+rE41gX7o2HulpTut0ohLfQ1zuYWd3KIe27TpSHWpd429U58oTu4V/rAl1YRRiTtYecNKTDcPw9cK/1slVuZ3ZNfpMfrJ62LxWD7idDqkZ9V0abj90pMsyzRjyXgTqCUy6AE5viCZMzdJjCEOwaDjL/tlsy9FhSLreJKI6CKUALj5ysfi4xAzNpa33O451AMchljxEoXCSdvqx8YlL8fXHptngKdvbqhfrbXczAVx7lnPZNv37ehPRquuRMYBtrO6tVUCepREEXQJpPoCTbYln6S7UCI7dWZqUNNSGWnFIP6FsLAO4lbsQkmU0IvLfWgng6mu8yfbVCuB2OhDAGY58vKWtApM6gIOEDmqlM3TbtfJ6bvx4x1qBUE8w6cU1s0w79sZ4BHC6nvHtLvP+ImcdOnkpTtTRdfJ1n6g3LJ0xgItD/pq1fPxcW1l8rnXyE3pEAzYjvLY4bTtSr70dru1aRytD0PXbWBzmOqm4Jbmu3YpDluH5dmx/aga4LjGUr9eOHPpDJ1y6Z7o8xyK9TK3h5tRIwN26bny6rgtvrDyBWXC2Qv0L6YBup0M719UOe9ax9QtsRQFcOUSmD7Puj82HR8xdpOuln8syC7SVZdrRRMY7gJM6JwdB/f9vplnu8Hqze7MF8JD3l9ITldLPTg7lpgO4POkmPGc6f+hcW/ZCOzzbvY7S4wr/SW2pYttaKSfpTeskaGiYtRWHZm6NaqWe6WWSmcnae7/XJYYlWe7F18lseHhOOMG7UmF6SeUkyPS8hPLnM5ltruU2qRxNGFz+X0k9yo+MLD6Cdug+4HY6pD4Py5iENdpWw/JZBCZ8AIdrPAXLh8ks/6iJGT9PJmYkt9EUrON/x0Oqke5zLd9AH2aBDtoU3Q4SvV1n7ldOMbtFt7joPlkrxAe8aftquHmxgufSJHhaWSYLcqP3jGUAl4YDPyODh6ZbfvUsW742nIyUrgt/RHX7vMLgjnqzjEPdswRw+QlQuW71gk/VlxTc328DPfq3nqAUhXIUvrmZ6QAOw7Kp2bCrNEv7gjm2eXl4QlQc3Jt31rU43ZaS+1W9JywpHHbTqnUN32ZPscJRuqXl2Ubezf4+dRvSazNt4xHb2tN99dahCW+61Sv3um4L+t5se8vLSfDEt9FMO1g9uC9q2Tl6z+G6zvndsJ5WHcq3LuV0m1Ph3Km26dEw2zmMcISnU2nCYnh4yHbdtjLcktTyT6mtaNJf8Ta38ECMy6Zb7p7wuUnK0i1jx2qS2q+T/VR+eEcUbpEbug0p3Oo3aFM/oqH4K/X+32juxhEK2udih6F7cU8KJyi6RfCKHWzqZmGHz3e41PQWvS08DKTiQRztckidgF+o7fhcy2AsiEBGgQkfwFmu8ejD+otaB9/Ks+bhIrWuLbayTEbrirdVfgNS7TVU33ebWibzJKzUda35dUoZ9kCSLOZxoJa/WjAOkaHZ1qmiogEdgK/QC2v0npuqh/dL94WG21VGmjBX95p7ajZ7KLOt1+aTjSgHQ6SHXpSDs5Zn4/0ae2jym0ZlyrckteJQPbpQZ/+25av7sjxkJe3f+OEYlRMnk7qXn0g17Dna39dw9tWa83Fr+EKL9NcRtsOBB3G0chRjmdEKTPgATl2vDGff4VF7+maZ4mxRzeS1Vfr9NyL7w/+p98i/8K00A5otrTA7pvQYu3Drkr75xB4ctMG75tqTL1YPT7eyTLM7ovGBujj7t+Kh/a0EcOXkq9whqudbQ13D4wrl+PUZtvn26sc3thLA8TpDr3WTvvM3Cg/s14MootV6+WJdAvieetEn6t9frT1Jq/ig/4PUO/yY6qtHUYanOhUfGapHFRZu67KOx+o9UnE8esBh21L3iN810tOg4h5e52Jtx5FabFEy2U3/fk7mj3Ra/rYdbNkval0SKX3hQVMO4fOhHuB++ivcV1t8FGX6s6Fe5P3Jg2aabaPV70/VT492tXnpsvJW+Ps5lv9+ej/FE88qH5MZ79fc7Z36cpUdbMV/1KqTTuT21iUJ9UCj9+j3r+jv6wq24UtTbOZ/D9/9XB3AcdsbnUPqizb0Xdw8inK0bYXlswlM+ADOthm8C4GxFSg/Jc30lZi2RI+j1FOn+NkaBFJPcfvwSF+0sTVsK9swsQQI4Im1P6jNBBZIPbD/Wc0gPyrLIyYn8OZQtbjnnP6O52FPzQMJgbEUIIDHUpd1b1UCVQdrPTN4dF90sFXhTNKNKc/5iHRZauDYblv98iTdFKo9CQUI4Em406iyn0B6wk/pvlh9JWT5flW/mlFyswLlL84IXwoxeGTW51w3Ww7vR6CeAAFM20CgSYHweMlei87XbVM/znJPbJOr5+3jJFCaeX6FbpW7TQ+P0aREfhAYXwECeHy9KQ0BBBBAAIGiAAFMQ0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAv8fRGu2pDRY0nQAAAAASUVORK5CYII=</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="90.296875" y="-49.99999999999994" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="234,0,51.05879999999074,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="16" y="90"><block s="receiveGo"></block><block s="doForever"><script><block s="setHeading"><l>90</l></block><block s="gotoXY"><l>-200</l><l>0</l></block><block s="clear"></block><block s="write"><l>Credits To Everyone!!</l><l>24</l></block><block s="write"><l>Too too many Blocks!</l><l>12</l></block><block s="gotoXY"><l>-200</l><l>-50</l></block><block s="write"><l>See inside! (See Code)</l><l>24</l></block><block s="changePenHSVA"><l><option>hue</option></l><l>0.4</l></block></script></block></script></scripts></sprite><watcher var="test haha" style="normal" x="9.687499999999886" y="9.687499999999993" color="243,118,29" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="COMPLEX %&apos;Z1&apos; * %&apos;Z2&apos;" type="reporter" category="other"><comment x="0" y="0" w="253" collapsed="false">(a+bi) * (c+di) = ac + bci + adi + bdii = ac-bd + (bc+ad)i</comment><variables><list struct="atomic" id="42">a,b,c,d</list></variables><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block var="COMPLEX?"/><script><block s="doSetVar"><l>a</l><block s="reportListItem"><l>1</l><block var="Z1"/></block></block><block s="doSetVar"><l>b</l><block s="reportListItem"><l>2</l><block var="Z1"/></block></block><block s="doSetVar"><l>c</l><block s="reportListItem"><l>1</l><block var="Z2"/></block></block><block s="doSetVar"><l>d</l><block s="reportListItem"><l>2</l><block var="Z2"/></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportDifference"><block s="reportProduct"><block var="a"/><block var="c"/></block><block s="reportProduct"><block var="b"/><block var="d"/></block></block><block s="reportSum"><block s="reportProduct"><block var="b"/><block var="c"/></block><block s="reportProduct"><block var="a"/><block var="d"/></block></block></list></block></block></script><script><block s="doReport"><block s="reportProduct"><block var="Z1"/><block var="Z2"/></block></block></script></block></script></block-definition><block-definition s="crPosition %&apos;column&apos; %&apos;row&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">calculate the ordinal position from the graphcs row and column.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportSum"><block var="column"/><block s="reportProduct"><block var="row"/><block var="gridWidth"/></block></block></block></script></block-definition><block-definition s="crVector %&apos;number&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Calculate the graphics x and (column, row) from the ordinal position.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportModulus"><block var="number"/><block var="gridWidth"/></block><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="number"/><block var="gridWidth"/></block></block></list></block></block></script></block-definition><block-definition s="%&apos;type&apos; passes %&apos;num&apos;" type="predicate" category="control"><comment x="0" y="0" w="121" collapsed="false">use with |when&lt;&gt;} to make scratch&apos;s&#xD;|when [timer v] &gt; (10)} block</comment><variables><list struct="atomic" id="133">old result</list></variables><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">loudness<options>loudness&#xD;timer</options></input><input type="%n">10</input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><block s="doIfElse"><block s="reportEquals"><block var="type"/><l>loudness</l></block><script><block s="doSetVar"><l>value</l><custom-block s="loudness"></custom-block></block></script><script><block s="doSetVar"><l>value</l><block s="getTimer"></block></block></script></block><block s="doIf"><block s="reportNot"><block var="old result"/></block><script><block s="doSetVar"><l>old result</l><block s="reportGreaterThan"><block var="value"/><block var="num"/></block></block><block s="doReport"><block var="old result"/></block></script></block><block s="doSetVar"><l>old result</l><block s="reportGreaterThan"><block var="value"/><block var="num"/></block></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="tree angle %&apos;angle&apos; length %&apos;length&apos; depth %&apos;depth&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"><options>§_directionDialMenu</options></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block var="depth"/><l>0</l></block><script><block s="forward"><block var="length"/></block><block s="turnLeft"><block var="angle"/></block><custom-block s="tree angle %n length %n depth %n"><block var="angle"/><block s="reportProduct"><block var="length"/><l>0.5</l></block><block s="reportDifference"><block var="depth"/><l>1</l></block></custom-block><block s="turn"><block s="reportProduct"><block var="angle"/><l>2</l></block></block><custom-block s="tree angle %n length %n depth %n"><block var="angle"/><block s="reportProduct"><block var="length"/><l>0.5</l></block><block s="reportDifference"><block var="depth"/><l>1</l></block></custom-block><block s="turnLeft"><block var="angle"/></block><block s="forward"><block s="reportDifference"><l></l><block var="length"/></block></block></script></block></script></block-definition><block-definition s="fractal up to %&apos;end&apos; %&apos;script&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%cmdRing"></input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block var="end"/><l>0</l></block><script><custom-block s="fractal up to %n %cmdRing"><block s="reportDifference"><block var="end"/><l>1</l></block><block var="script"/></custom-block><block s="doRun"><block var="script"/><list><block var="end"/></list></block><custom-block s="fractal up to %n %cmdRing"><block s="reportDifference"><block var="end"/><l>1</l></block><block var="script"/></custom-block></script></block></script></block-definition><block-definition s="wikipedia title of %&apos;text&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportJoinWords"><list><l>https://en.wikipedia.org/wiki/</l><block var="text"/></list></block></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><custom-block s="anywhere url %s"><block var="a"/></custom-block><l><option>line</option></l></block></block><block s="doIfElse"><block s="reportEquals"><block s="reportListLength"><block var="a"/></block><l>270</l></block><script><block s="doReport"><l>Error - Theres no wiki of that</l></block></script><script><block s="doSetVar"><l>a</l><block s="reportListItem"><l>5</l><block var="a"/></block></block><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reportJoinWords"><list><block s="reportTextSplit"><block var="a"/><l>&lt;title&gt;</l></block></list></block><l>&lt;/title&gt;</l></block></block></block></script></block></script></block-definition><block-definition s="draw cup" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="hide"></block><block s="gotoXY"><l>100</l><l>-90</l></block><block s="doSwitchToCostume"><l>cup</l></block><block s="show"></block><block s="doStamp"></block></script></block-definition><block-definition s="draw cup scoops" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="hide"></block><block s="gotoXY"><l>100</l><l>-60</l></block><block s="doSwitchToCostume"><block var="flavor"/></block><block s="show"></block><block s="doStamp"></block><block s="hide"></block><custom-block s="draw noback"></custom-block><block s="hide"></block><block s="doSwitchToCostume"><block var="flavor"/></block><block s="gotoXY"><l>100</l><l>-20</l></block><block s="doRepeat"><block s="reportDifference"><block var="size"/><l>1</l></block><script><block s="show"></block><block s="doStamp"></block><block s="hide"></block><block s="changeYPosition"><l>40</l></block></script></block></script></block-definition><block-definition s="draw noback" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="hide"></block><block s="gotoXY"><l>100</l><l>-90</l></block><block s="doSwitchToCostume"><l>noback</l></block><block s="show"></block><block s="doStamp"></block></script></block-definition><block-definition s="list-&gt;sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="combine with %repRing items of %l"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><list><l></l><l></l></list></custom-block></autolambda><list></list></block><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="sentence-&gt;list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l><l>thisword</l><l>emptyword</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>thisword</l><l></l></block><block s="doSetVar"><l>emptyword</l><l></l></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block s="reportStringSize"><block var="text"/></block><script><block s="doIfElse"><block s="reportEquals"><block s="reportLetter"><block var="i"/><block var="text"/></block><l> </l></block><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="thisword"/><block var="emptyword"/></block></block><script><block s="doAddToList"><block var="thisword"/><block var="result"/></block><block s="doSetVar"><l>thisword</l><block var="emptyword"/></block></script></block></script><script><block s="doSetVar"><l>thisword</l><block s="reportJoinWords"><list><block var="thisword"/><block s="reportLetter"><block var="i"/><block var="text"/></block></list></block></block></script></block></script></custom-block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="thisword"/><block var="emptyword"/></block></block><script><block s="doAddToList"><block var="thisword"/><block var="result"/></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="serve %&apos;choice&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="clear"></block><custom-block s="for each %upvar of %l %cs"><l>item</l><block var="choice"/><script><block s="doRun"><block s="evaluate"><block var="item"/><list><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><list></list></block></script></custom-block><block s="doBroadcast"><custom-block s="combine with %repRing items of %l"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><list><l></l><l></l></list></custom-block></autolambda><list></list></block><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="menu item"/><list><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></autolambda><list><l>menu item</l></list></block><list><block var="choice"/></list></custom-block></custom-block></block></script></block-definition><block-definition s="index of %&apos;item&apos; in %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block s="reportListLength"><block var="data"/></block><script><block s="doIf"><block s="reportEquals"><block var="item"/><block s="reportListItem"><block var="i"/><block var="data"/></block></block><script><block s="doReport"><block var="i"/></block></script></block></script></custom-block><block s="doReport"><l>-1</l></block></script></block-definition><block-definition s="draw cone" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="hide"></block><block s="gotoXY"><l>100</l><l>-90</l></block><block s="doSwitchToCostume"><l>cone</l></block><block s="show"></block><block s="doStamp"></block></script></block-definition><block-definition s="cup %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>cup</l><block s="reifyScript"><script><custom-block s="draw cup"></custom-block><custom-block s="draw cup scoops"></custom-block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="cone %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>cone</l><block s="reifyScript"><script><custom-block s="draw cone"></custom-block><custom-block s="draw cone scoops"></custom-block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="draw cone scoops" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="hide"></block><block s="doSwitchToCostume"><block var="flavor"/></block><block s="gotoXY"><l>100</l><l>-10</l></block><block s="doRepeat"><block var="size"/><script><block s="show"></block><block s="doStamp"></block><block s="hide"></block><block s="changeYPosition"><l>40</l></block></script></block></script></block-definition><block-definition s="serve all options %&apos;menu&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="clear"></block><block s="setScale"><l>50</l></block><block s="hide"></block><block s="doBroadcast"><l>UNSAY</l></block><block s="doWait"><l>.001</l></block><custom-block s="for each %upvar of %l %cs"><l>item</l><custom-block s="crossproduct %l"><block var="menu"/></custom-block><script><custom-block s="serve %l"><block var="item"/></custom-block><block s="doWait"><l>1</l></block></script></custom-block></script></block-definition><block-definition s="crossproduct %&apos;lol&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>spread</l><l>rest</l></list></block><block s="doSetVar"><l>spread</l><block s="reifyScript"><script><block s="doReport"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCONS"><block var="new first"/><block var="tail"/></block></autolambda><list><l>tail</l></list></block><list><block var="rest"/></list></custom-block></block></script><list><l>new first</l></list></block></block><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="lol"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list></list></block></list></block></block></script></block><block s="doSetVar"><l>rest</l><custom-block s="crossproduct %l"><block s="reportCDR"><block var="lol"/></block></custom-block></block><block s="doReport"><custom-block s="append %mult%l"><custom-block s="map %repRing over %mult%l"><block var="spread"/><list><block s="reportListItem"><l>1</l><block var="lol"/></block></list></custom-block></custom-block></block></script></block></script></block-definition><block-definition s="small %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>small</l><block s="reifyScript"><script><block s="doSetVar"><l>size</l><l>1</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="medium %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>medium</l><block s="reifyScript"><script><block s="doSetVar"><l>size</l><l>2</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="large %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>large</l><block s="reifyScript"><script><block s="doSetVar"><l>size</l><l>3</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="vanilla %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>vanilla</l><block s="reifyScript"><script><block s="doSetVar"><l>flavor</l><l>1</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="chocolate pudding %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>chocolate pudding</l><block s="reifyScript"><script><block s="doSetVar"><l>flavor</l><l>2</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="pumpkin %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>pumpkin</l><block s="reifyScript"><script><block s="doSetVar"><l>flavor</l><l>3</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="root beer ripple %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>root beer ripple</l><block s="reifyScript"><script><block s="doSetVar"><l>flavor</l><l>4</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="pizza with %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>pizza with</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>pizza</l></block><block s="setScale"><block s="reportProduct"><block var="size"/><l>50</l></block></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="show"></block><block s="doStamp"></block><block s="hide"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="basil %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>basil and</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>basil</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="mushroom %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>mushroom and</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>mushroom</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="pepperoni %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>pepperoni</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>pepperoni</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="sausage %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>sausage</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>sausage</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="pineapple %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>pineapple</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>pineapple</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="list %&apos;n&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>list</l></list></block><block s="doSetVar"><l>b</l><l></l></block><block s="doSetVar"><l>a</l><block var="n"/></block><block s="doSetVar"><l>list</l><block s="reportNewList"><list><block var="n"/></list></block></block><block s="doUntil"><block s="reportEquals"><block var="a"/><block var="b"/></block><script><block s="doSetVar"><l>b</l><block var="a"/></block><block s="doSetVar"><l>a</l><block s="reportCombine"><block s="reportTextSplit"><block var="a"/><l><option>letter</option></l></block><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block></block></block><block s="doAddToList"><block var="a"/><block var="list"/></block></script></block><block s="doDeleteFromList"><l><option>last</option></l><block var="list"/></block><block s="doReport"><block var="list"/></block></script></block></script></block-definition><block-definition s="setting %&apos;which&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>Project notes&#xD;Project name&#xD;User&#xD;Presentation mode&#xD;Language&#xD;Zoom blocks&#xD;Stage size&#xD;Stage scale&#xD;Retina display support&#xD;Long form input dialog&#xD;Plain prototype labels&#xD;Input sliders&#xD;Execute on slider change&#xD;Clicking sound&#xD;Turbo mode&#xD;Flat design&#xD;Keyboard editing&#xD;Visible stepping&#xD;Thread safe scripts&#xD;Prefer smooth animations&#xD;Flat line ends&#xD;Codification support&#xD;Inheritance support&#xD;Visible palette</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>which</l></list><l>var stage = this.parentThatIsA(StageMorph),    ide = stage.parentThatIsA(IDE_Morph),    world = stage.parentThatIsA(WorldMorph);switch (which) {    case &apos;Project notes&apos;:        return ide.projectNotes;    case &apos;Project name&apos;:        return ide.projectName;    case &apos;User&apos;:        return ide.cloud.username;    case &apos;Presentation mode&apos;:        return ide.isAppMode;    case &apos;Language&apos;:        return SnapTranslator.language;    case &apos;Zoom blocks&apos;:        return SyntaxElementMorph.prototype.scale;    case &apos;Stage size&apos;:        return new List([StageMorph.prototype.dimensions.x,                                   StageMorph.prototype.dimensions.y]);    case &apos;Stage scale&apos;:       return stage.scale;    case &apos;Retina display support&apos;:        return isRetinaEnabled();    case &apos;Long form input dialog&apos;:        return InputSlotDialogMorph.prototype.isLaunchingExpanded;    case &apos;Plain prototype labels&apos;:        return BlockLabelPlaceHolderMorph.prototype.plainLabel;    case &apos;Input sliders&apos;:        return MorphicPreferences.useSliderForInput;    case &apos;Execute on slider change&apos;:        return ArgMorph.prototype.executeOnSliderEdit;    case &apos;Clicking sound&apos;:        return !!BlockMorph.prototype.snapSound;    case &apos;Turbo mode&apos;:        return stage.isFastTracked;    case &apos;Flat design&apos;:        return MorphicPreferences.isFlat;    case &apos;Keyboard editing&apos;:        return world.keyboardReceiver instanceof ScriptFocusMorph;    case &apos;Visible stepping&apos;:        return Process.prototype.enableSingleStepping;    case &apos;Thread safe scripts&apos;:        return stage.isThreadSafe;    case &apos;Prefer smooth animations&apos;:        return StageMorph.prototype.frameRate &gt; 0;    case &apos;Flat line ends&apos;:        return SpriteMorph.prototype.useFlatLineEnds;    case &apos;Codification support&apos;:        return StageMorph.prototype.enableCodeMapping;    case &apos;Inheritance support&apos;:        return StageMorph.prototype.enableInheritance;    default: return which;    case &apos;Visible palette&apos;:        return ide.currentCategory;}</l></block><list><block var="which"/></list></block></block></script></block-definition><block-definition s="set flag %&apos;which&apos; to %&apos;tf&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>Presentation mode&#xD;Retina display support&#xD;Long form input dialog&#xD;Plain prototype labels&#xD;Input sliders&#xD;Execute on slider change&#xD;Clicking sound&#xD;Turbo mode&#xD;Flat design&#xD;Keyboard editing&#xD;Visible stepping&#xD;Thread safe scripts&#xD;Prefer smooth animations&#xD;Flat line ends&#xD;Codification support&#xD;Inheritance support</options></input><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>tf</l></list><l>var   stage = this.parentThatIsA(StageMorph),        ide = stage.parentThatIsA(IDE_Morph),        world = stage.parentThatIsA(WorldMorph),        thisObj = this;if (tf != !!tf) return;try{ide.savingPreferences = false;switch (which) {    case &apos;Presentation mode&apos;:        if (tf != ide.isAppMode) ide.toggleAppMode();        break;    case &apos;Retina display support&apos;:        if (tf != isRetinaEnabled()) ide.toggleRetina();        break;    case &apos;Long form input dialog&apos;:        if (tf != InputSlotDialogMorph.prototype.isLaunchingExpanded)            ide.toggleLongFormInputDialog();        break;    case &apos;Plain prototype labels&apos;:        if (tf != BlockLabelPlaceHolderMorph.prototype.plainLabel)            ide.togglePlainPrototypeLabels();        break;    case &apos;Input sliders&apos;:        MorphicPreferences.useSliderForInput = tf;        break;    case &apos;Execute on slider change&apos;:        ArgMorph.prototype.executeOnSliderEdit = tf;        break;    case &apos;Clicking sound&apos;:        if (tf != !!BlockMorph.prototype.snapSound)            BlockMorph.prototype.toggleSnapSound();        break;    case &apos;Turbo mode&apos;:        if (tf != stage.isFastTracked)            ide.toggleFastTracking();        break;    case &apos;Flat design&apos;:        if (tf == MorphicPreferences.isFlat) break;        if (tf)            ide.flatDesign();        else            ide.defaultDesign();        break;    case &apos;Keyboard editing&apos;:        if (tf != (world.keyboardReceiver instanceof ScriptFocusMorph)) {            thisObj.scripts.toggleKeyboardEntry();        };        break;    case &apos;Visible stepping&apos;:        if (tf != Process.prototype.enableSingleStepping)            ide.toggleSingleStepping();        break;    case &apos;Thread safe scripts&apos;:        stage.isThreadSafe = tf;        break;    case &apos;Prefer smooth animations&apos;:        if (tf != (StageMorph.prototype.frameRate &gt; 0))            ide.toggleVariableFrameRate();        break;    case &apos;Flat line ends&apos;:        SpriteMorph.prototype.useFlatLineEnds = tf;        break;    case &apos;Codification support&apos;:        if (tf != StageMorph.prototype.enableCodeMapping) {            StageMorph.prototype.enableCodeMapping = tf;            ide.currentSprite.blocksCache.variables = null;            ide.currentSprite.paletteCache.variables = null;            ide.refreshPalette();        }        break;    case &apos;Inheritance support&apos;:        if (tf != StageMorph.prototype.enableInheritance) {            StageMorph.prototype.enableInheritance = tf;            ide.currentSprite.blocksCache.variables = null;            ide.currentSprite.paletteCache.variables = null;            ide.refreshPalette();        }        break;};}finally {ide.savingPreferences = false;};</l></block><list><block var="which"/><block var="tf"/></list></block></script></block-definition><block-definition s="set value %&apos;which&apos; to %&apos;value&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>Project notes&#xD;Project name&#xD;Language&#xD;Zoom blocks&#xD;Stage size&#xD;Stage scale&#xD;Visible palette</options></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>value</l></list><l>var   stage = this.parentThatIsA(StageMorph),        ide = stage.parentThatIsA(IDE_Morph),        world = stage.parentThatIsA(WorldMorph);try {ide.savingPreferences = false;switch (which) {    case &apos;Project notes&apos;:        ide.projectNotes = value;        break;    case &apos;Project name&apos;:        ide.setProjectName(value);        break;    case &apos;Language&apos;:        ide.setLanguage(value);        break;    case &apos;Zoom blocks&apos;:        if (!isNaN(value)) ide.setBlocksScale(Math.min(value, 12));        break;    case &apos;Stage size&apos;:        if ((value instanceof List) &amp;&amp; value.length()==2                       &amp;&amp; !isNaN(value.at(1)) &amp;&amp; !isNaN(value.at(2)))            ide.setStageExtent(new Point(value.at(1), value.at(2)));        break;    case &apos;Stage scale&apos;:        ide.toggleStageSize(value != 1, Math.max(0.1, value));        break;    case &apos;Visible palette&apos;:        ide.currentCategory = value.toLowerCase();        ide.categories.children.forEach(function (each) {                each.refresh();        });        ide.refreshPalette(true);        break;};}finally {ide.savingPreferences = true;};</l></block><list><block var="which"/><block var="value"/></list></block></script></block-definition><block-definition s="Draw line from %&apos;P0&apos; to %&apos;P1&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="up"></block><block s="doGotoObject"><block var="P0"/></block><block s="down"></block><block s="doGotoObject"><block var="P1"/></block><block s="up"></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; by %&apos;step&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:für _ = _ bis _ _ca:per _ = _ fins _ _es:para _ = _ hasta _ _fr:pour _ allant de _ à _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%n">1</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="pixel $rectangleSolid or $rectangle %&apos;fill&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doIf"><block var="fill"/><script><block s="doDeclareVariables"><list><l>old position</l></list></block><block s="doSetVar"><l>old position</l><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block></block><block s="up"></block><block s="changeXPosition"><block s="reportQuotient"><block var="PIXEL"/><l>-2</l></block></block><block s="down"></block><block s="changeXPosition"><block var="PIXEL"/></block><block s="up"></block><block s="doGotoObject"><block var="old position"/></block></script></block></script></block-definition><block-definition s="Filled?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportTouchingColor"><color>255,255,255,1</color></block></block></script></block-definition><block-definition s="%&apos;A&apos; xor %&apos;B&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportEquals"><block var="A"/><block var="B"/></block></block></block></script></block-definition><block-definition s="xor of N and NW" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>N</l><l>NW</l></list></block><block s="changeYPosition"><block var="PIXEL"/></block><block s="doSetVar"><l>N</l><custom-block s="Filled?"></custom-block></block><block s="changeXPosition"><block s="reportDifference"><l>0</l><block var="PIXEL"/></block></block><block s="doSetVar"><l>NW</l><custom-block s="Filled?"></custom-block></block><block s="changeXPosition"><block var="PIXEL"/></block><block s="changeYPosition"><block s="reportDifference"><l>0</l><block var="PIXEL"/></block></block><block s="doReport"><custom-block s="%b xor %b"><block var="N"/><block var="NW"/></custom-block></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:für _ = _ bis _ _ca:per _ = _ fins _ _es:para _ = _ hasta _ _fr:pour _ allant de _ à _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="numbers from %&apos;from&apos; to %&apos;to&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:Zahlen von _ bis _ca:nombres des de _ a _es:números de _ a _fr:nombres de _ à _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block var="from"/><block var="to"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block var="from"/><custom-block s="numbers from %n to %n"><block s="reportSum"><block var="from"/><l>1</l></block><block var="to"/></custom-block></block></block></script></block-definition><block-definition s="map %&apos;func&apos; over %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:wende _ an auf _ca:mapeja _ sobre _es:mapear _ sobre _fr:appliquer _ à _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="func"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><custom-block s="map %repRing over %l"><block var="func"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block-definition><block-definition s="append %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="287" collapsed="false">Take any number of input lists, and create a new list containing the items of the input lists.  So              APPEND [A B] [C D]where the [,,,] are lists reports the list              [A B C D]not [[A B] [C D]].</comment><header></header><code></code><translations></translations><inputs><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="lists"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListLength"><block var="lists"/></block><l>1</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="lists"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="lists"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><custom-block s="append %mult%l"><block s="reportCDR"><block var="lists"/></block></custom-block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="lists"/></block></block><custom-block s="append %mult%l"><block s="reportCONS"><block s="reportCDR"><block s="reportListItem"><l>1</l><block var="lists"/></block></block><block s="reportCDR"><block var="lists"/></block></block></custom-block></block></block></script></block></script></block-definition><block-definition s="reverse %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="223" collapsed="false">Reports a new list containing the items of the input list, but in the opposite order.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>helper</l></list></block><block s="doSetVar"><l>helper</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="input"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="result"/></block></script></block><block s="doReport"><block s="evaluate"><block var="helper"/><list><block s="reportCDR"><block var="input"/></block><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="input"/></block><block var="result"/></block></list></block></block></script><list><l>input</l><l>result</l></list></block></block><block s="doWarp"><script><block s="doReport"><block s="evaluate"><block var="helper"/><list><block var="data"/><block s="reportNewList"><list></list></block></list></block></block></script></block></script></block-definition><block-definition s="remove duplicates from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="209" collapsed="false">Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportCDR"><block var="data"/></block><block s="reportListItem"><l>1</l><block var="data"/></block></block><script><block s="doReport"><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block></script></block></script></block-definition><block-definition s="sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="204" 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></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doDeclareVariables"><list><l>even items</l><l>odd items</l><l>merge</l></list></block><block s="doSetVar"><l>odd items</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><l></l><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><l/></block><block s="evaluate"><block var="even items"/><list><block s="reportCDR"><l/></block></list></block></block></block></script><list></list></block></block><block s="doSetVar"><l>even items</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><l></l><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="evaluate"><block var="odd items"/><list><block s="reportCDR"><l/></block></list></block></block></script><list></list></block></block><block s="doSetVar"><l>merge</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="#1"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#2"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="#2"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#1"/></block></script></block><block s="doIfElse"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="reportListItem"><l>1</l><block var="#2"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="evaluate"><block var="merge"/><list><block s="reportCDR"><block var="#1"/></block><block var="#2"/></list></block></block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#2"/></block><block s="evaluate"><block var="merge"/><list><block var="#1"/><block s="reportCDR"><block var="#2"/></block></list></block></block></block></script></block></script><list><l>#1</l><l>#2</l></list></block></block><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportCDR"><block var="data"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><block s="evaluate"><block var="merge"/><list><custom-block s="sort %l ordering with %predRing"><block s="evaluate"><block var="odd items"/><list><block var="data"/></list></block><block var="function"/></custom-block><custom-block s="sort %l ordering with %predRing"><block s="evaluate"><block var="even items"/><list><block var="data"/></list></block><block var="function"/></custom-block></list></block></block></script></block-definition><block-definition s="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></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="a-list"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="key"/><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="a-list"/></block></block></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="a-list"/></block></block></script></block><block s="doReport"><custom-block s="assoc %s %l"><block var="key"/><block s="reportCDR"><block var="a-list"/></block></custom-block></block></script></block-definition><block-definition s="%&apos;#&apos; map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>#</l><block var="count"/></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block><block s="reportSum"><block var="count"/><l>1</l></block></list></block></block></block></script><list><l>data</l><l>count</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>#</l><block var="count"/></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="%upvar map %repRing over %mult%l"><l>#</l><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="%upvar map %repRing over %mult%l"><l>#</l><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block><block s="reportSum"><block var="count"/><l>1</l></block></list></block></block></block></script><list><l>data lists</l><l>count</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block><l>1</l></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/><l>1</l></list></block></block></script></block></script></block></script></block-definition><block-definition s="%&apos;#&apos; keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>keep-helper</l></list></block><block s="doSetVar"><l>keep-helper</l><block s="reifyScript"><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>#</l><block var="count"/></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><block s="evaluate"><block var="keep-helper"/><list><block s="reportCDR"><block var="data"/></block><block s="reportSum"><block var="count"/><l>1</l></block></list></block></block></block></script><script><block s="doReport"><block s="evaluate"><block var="keep-helper"/><list><block s="reportCDR"><block var="data"/></block><block s="reportSum"><block var="count"/><l>1</l></block></list></block></block></script></block></script></block></script><list><l>data</l><l>count</l></list></block></block><block s="doReport"><block s="evaluate"><block var="keep-helper"/><list><block var="data"/><l>1</l></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"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>#</l><l>1</l></block><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block><block s="doChangeVar"><l>#</l><l>1</l></block></script></block></script></block-definition><block-definition s="Go to top left corner" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="gotoXY"><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block s="reportQuotient"><block s="reportListItem"><l>1</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><block var="PIXEL"/></block><l>1</l></block><l>-2</l></block><block var="PIXEL"/></block><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><block var="PIXEL"/></block><l>1</l></block><l>2</l></block><block var="PIXEL"/></block></block></script></block-definition><block-definition s="odd? %&apos;X&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportEquals"><block s="reportModulus"><block var="X"/><l>2</l></block><l>1</l></block></block></script></block-definition><block-definition s="Go to top center" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="gotoXY"><l>0</l><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><block var="PIXEL"/></block><l>1</l></block><l>2</l></block><block var="PIXEL"/></block></block></script></block-definition><block-definition s="Center Line %&apos;length&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="forward"><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block var="length"/><l>1</l></block><l>2</l></block><block var="PIXEL"/></block></block><block s="turnLeft"><l>180</l></block><block s="doRepeat"><block s="reportDifference"><block var="length"/><l>1</l></block><script><custom-block s="pixel $rectangleSolid or $rectangle %b"><l><bool>true</bool></l></custom-block><block s="forward"><block var="PIXEL"/></block></script></block><custom-block s="pixel $rectangleSolid or $rectangle %b"><l><bool>true</bool></l></custom-block><block s="turnLeft"><l>180</l></block><block s="forward"><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block var="length"/><l>1</l></block><l>2</l></block><block var="PIXEL"/></block></block></script><scripts><script x="161.5" y="274.1"><custom-block s="Center Line %s"><l>2</l></custom-block></script><script x="203.5" y="143.10000000000002"><block s="forward"><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><l>3</l><l>1</l></block><l>2</l></block><block var="PIXEL"/></block></block></script></scripts></block-definition><block-definition s="PIXEL move %&apos;steps&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doRepeat"><block var="steps"/><script><custom-block s="pixel $rectangleSolid or $rectangle %b"><l><bool>true</bool></l></custom-block><block s="forward"><block var="PIXEL"/></block></script></block><custom-block s="pixel $rectangleSolid or $rectangle %b"><l><bool>true</bool></l></custom-block></script></block-definition><block-definition s="Turn pixel ( %&apos;x&apos; , %&apos;y&apos; ) on" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="gotoXY"><block s="reportProduct"><block var="x"/><block var="PIXEL"/></block><block s="reportProduct"><block var="y"/><block var="PIXEL"/></block></block><custom-block s="pixel $rectangleSolid or $rectangle %b"><l><bool>true</bool></l></custom-block></script></block-definition><block-definition s="Checker %&apos;N&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="for %upvar = %n to %n %cs"><l>y</l><l>0</l><block s="reportDifference"><block var="N"/><l>1</l></block><script><custom-block s="for %upvar = %n to %n %cs"><l>x</l><l>0</l><block s="reportDifference"><block var="N"/><l>1</l></block><script><block s="doIf"><block s="reportEquals"><block s="reportModulus"><block s="reportSum"><block var="x"/><block var="y"/></block><l>2</l></block><l>0</l></block><script><custom-block s="Turn pixel ( %n , %n ) on"><block var="x"/><block var="y"/></custom-block></script></block></script></custom-block></script></custom-block></script><scripts><script x="30" y="226.93333333333337"><block s="reportOr"><block s="reportEquals"><block s="reportModulus"><block var="x"/><l>2</l></block><l>1</l></block><block s="reportEquals"><block s="reportModulus"><block var="y"/><l>2</l></block><l>1</l></block></block></script><script x="46.000001" y="257.9333393333334"><block s="reportSum"><l></l><l></l></block></script><script x="196.2958994375" y="263.9333393333334"><block var="x"/></script></scripts></block-definition><block-definition s="Mandelbrot %&apos;max iteration&apos; Iterations %&apos;x0&apos; %&apos;y0&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">100</input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>x</l><l>y</l><l>iteration</l><l>xtemp</l></list></block><block s="doSetVar"><l>x</l><l>0</l></block><block s="doSetVar"><l>y</l><l>0</l></block><block s="doSetVar"><l>iteration</l><l>0</l></block><block s="doUntil"><block s="reportNot"><block s="reportAnd"><block s="reportLessThan"><block s="reportSum"><block s="reportProduct"><block var="x"/><block var="x"/></block><block s="reportProduct"><block var="y"/><block var="y"/></block></block><l>4</l></block><block s="reportLessThan"><block var="iteration"/><block var="max iteration"/></block></block></block><script><block s="doSetVar"><l>xtemp</l><block s="reportSum"><block s="reportDifference"><block s="reportProduct"><block var="x"/><block var="x"/></block><block s="reportProduct"><block var="y"/><block var="y"/></block></block><block var="x0"/></block></block><block s="doSetVar"><l>y</l><block s="reportSum"><block s="reportProduct"><l>2</l><block s="reportProduct"><block var="x"/><block var="y"/></block></block><block var="y0"/></block></block><block s="doSetVar"><l>x</l><block var="xtemp"/></block><block s="doChangeVar"><l>iteration</l><l>1</l></block></script></block></script></block><block s="doReport"><block var="iteration"/></block></script></block-definition><block-definition s="$flash Mandelbrot %&apos;maxiters&apos; Iterations %&apos;x0&apos; %&apos;y0&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>maxiters</l><l>x0</l><l>y0</l></list><l>var x,y,iteration,xtemp;x=0;y=0;iteration=0;while ((x*x+y*y &lt; 4) &amp;&amp; (iteration &lt; +maxiters)) {  xtemp = ((x*x) - (y*y)) + +x0;  y = (2*x*y) + +y0;  x = xtemp;  iteration = iteration + 1;}return iteration;</l></block><list><block var="maxiters"/><block var="x0"/><block var="y0"/></list></block></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; by %&apos;step&apos; loop? %&apos;loop?&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:für _ = _ bis _ _ca:per _ = _ fins _ _es:para _ = _ hasta _ _fr:pour _ allant de _ à _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%n">1</input><input type="%b"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>tester</l><l>reverse tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block><block s="doSetVar"><l>reverse tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block s="reportDifference"><block var="i"/><block var="step"/></block><block var="start"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block><block s="doSetVar"><l>reverse tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block s="reportDifference"><block var="i"/><block var="step"/></block><block var="start"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block><block s="doIf"><block var="loop?"/><script><block s="doChangeVar"><l>i</l><block s="reportDifference"><l>0</l><block var="step"/></block></block><block s="doChangeVar"><l>i</l><block s="reportDifference"><l>0</l><block var="step"/></block></block><block s="doUntil"><block s="evaluate"><block var="reverse tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block s="reportDifference"><l>0</l><block var="step"/></block></block></script></block></script></block></script></block-definition><block-definition s="pic... %&apos;filename&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>filename</l></list><l>var stage = this.parentThatIsA(StageMorph);var ide = this.parentThatIsA(IDE_Morph);ide.saveCanvasAs(stage.fullImageClassic(), filename);</l></block><list><block var="filename"/></list></block></script></block-definition><block-definition s="Mandelbrot!!" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>PIXEL</l><block s="reportListItem"><l>2</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block></block><block s="doUntil"><block s="reportLessThan"><block var="PIXEL"/><l>1</l></block><script><block s="doWarp"><script><block s="setSize"><block var="PIXEL"/></block><block s="doDeclareVariables"><list><l>iterations</l><l>rows</l><l>cols</l><l>zoomscale</l></list></block><block s="doSetVar"><l>cols</l><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><block var="PIXEL"/></block></block><block s="doSetVar"><l>rows</l><block s="reportQuotient"><block s="reportListItem"><l>1</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><block var="PIXEL"/></block></block><block s="doSetVar"><l>zoomscale</l><block s="reportQuotient"><block var="cols"/><l>3</l></block></block><block s="setHeading"><l>90</l></block><custom-block s="for %upvar = %n to %n by %n %cs"><l>y</l><block s="reportQuotient"><block s="reportDifference"><block var="rows"/><l>1</l></block><l>-2</l></block><block s="reportQuotient"><block s="reportDifference"><block var="rows"/><l>1</l></block><l>2</l></block><l>1</l><script><custom-block s="for %upvar = %n to %n by %n %cs"><l>x</l><block s="reportQuotient"><block s="reportDifference"><block var="cols"/><l>1</l></block><l>-2</l></block><block s="reportQuotient"><block s="reportDifference"><block var="cols"/><l>1</l></block><l>2</l></block><l>1</l><script><block s="gotoXY"><block s="reportProduct"><block var="x"/><block var="PIXEL"/></block><block s="reportProduct"><block var="y"/><block var="PIXEL"/></block></block><block s="doSetVar"><l>iterations</l><custom-block s="$flash Mandelbrot %n Iterations %n %n"><block var="MAX ITERATIONS"/><block s="reportSum"><block s="reportQuotient"><block s="reportQuotient"><block var="x"/><block var="zoomscale"/></block><block var="ZOOM"/></block><block s="reportListItem"><l>1</l><block var="CENTER"/></block></block><block s="reportSum"><block s="reportQuotient"><block s="reportQuotient"><block var="y"/><block var="zoomscale"/></block><block var="ZOOM"/></block><block s="reportListItem"><l>2</l><block var="CENTER"/></block></block></custom-block></block><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportQuotient"><block s="reportModulus"><block s="reportSum"><block var="iterations"/><block s="reportProduct"><l>68</l><block s="reportQuotient"><block var="MAX ITERATIONS"/><l>100</l></block></block></block><block var="MAX ITERATIONS"/></block><block var="MAX ITERATIONS"/></block><l>1</l><custom-block s="if %b then %anyUE else %anyUE"><block s="reportEquals"><block var="iterations"/><block var="MAX ITERATIONS"/></block><l>0</l><l>1</l></custom-block></custom-block><custom-block s="pixel $rectangleSolid or $rectangle %b"><l><bool>true</bool></l></custom-block></script></custom-block></script></custom-block></script></block><block s="doSetVar"><l>PIXEL</l><block s="reportQuotient"><block var="PIXEL"/><l>3</l></block></block></script></block><block s="doSetVar"><l>PIXEL</l><l>1</l></block></script></block-definition><block-definition s="Draw Grid" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="clear"></block><custom-block s="set pen color to r: %n g: %n b: %n"><l>255</l><l>255</l><l>255</l></custom-block><block s="doIf"><block s="reportGreaterThan"><block var="PIXEL"/><l>1</l></block><script><block s="setSize"><l>.333</l></block><custom-block s="set flag %s to %b"><l>Flat line ends</l><l><bool>true</bool></l></custom-block><block s="doDeclareVariables"><list><l>X min</l><l>X max</l><l>Y min</l><l>Y max</l></list></block><block s="doSetVar"><l>X min</l><block s="reportQuotient"><block s="reportListItem"><l>1</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><l>-2</l></block></block><block s="doSetVar"><l>X max</l><block s="reportQuotient"><block s="reportListItem"><l>1</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><l>2</l></block></block><block s="doSetVar"><l>Y min</l><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><l>-2</l></block></block><block s="doSetVar"><l>Y max</l><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="setting %s"><l>Stage size</l></custom-block></block><l>2</l></block></block><block s="doWarp"><script><custom-block s="for %upvar = %n to %n by %n %cs"><l>x</l><block var="X min"/><block var="X max"/><block var="PIXEL"/><script><custom-block s="Draw line from %l to %l"><block s="reportNewList"><list><block var="x"/><block var="Y min"/></list></block><block s="reportNewList"><list><block var="x"/><block var="Y max"/></list></block></custom-block></script></custom-block><custom-block s="for %upvar = %n to %n by %n %cs"><l>y</l><block var="Y min"/><block var="Y max"/><block var="PIXEL"/><script><custom-block s="Draw line from %l to %l"><block s="reportNewList"><list><block var="X min"/><block var="y"/></list></block><block s="reportNewList"><list><block var="X max"/><block var="y"/></list></block></custom-block></script></custom-block></script></block></script></block><block s="setSize"><block var="PIXEL"/></block><block s="gotoXY"><l>0</l><l>0</l></block><custom-block s="pixel $rectangleSolid or $rectangle %b"><l><bool>false</bool></l></custom-block></script></block-definition><block-definition s="Mandelbrot iterations at C= %&apos;C&apos; capped at %&apos;max iterations&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">f(z,c) = z^2 + c</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>iterations so far</l><l>Z</l></list></block><block s="doSetVar"><l>Z</l><custom-block s="COMPLEX 0"></custom-block></block><block s="doSetVar"><l>iterations so far</l><l>0</l></block><block s="doWarp"><script><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="iterations so far"/><block var="max iterations"/></block><custom-block s="COMPLEX %s &gt; 2 from origin"><block var="Z"/></custom-block></block><script><block s="doSetVar"><l>Z</l><custom-block s="COMPLEX f( z= %s , c= %s )"><block var="Z"/><block var="C"/></custom-block></block><block s="doChangeVar"><l>iterations so far</l><l>1</l></block></script></block></script></block><block s="doReport"><block var="iterations so far"/></block></script></block-definition><block-definition s="COMPLEX f( z= %&apos;z&apos; , c= %&apos;c&apos; )" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="COMPLEX %s + %s"><custom-block s="COMPLEX %s * %s complex? %b"><block var="z"/><block var="z"/><l/><variables><variable name="a"><l>0</l></variable><variable name="b"><l>0</l></variable><variable name="c"><l>0</l></variable><variable name="d"><l>0</l></variable></variables></custom-block><block var="c"/></custom-block></block></script></block-definition><block-definition s="COMPLEX %&apos;Z1&apos; * %&apos;Z2&apos; complex? %&apos;COMPLEX?&apos;" type="reporter" category="other"><comment x="0" y="0" w="253" collapsed="false">(a+bi) * (c+di) = ac + bci + adi + bdii = ac-bd + (bc+ad)i</comment><variables><list struct="atomic" id="2770">a,b,c,d</list></variables><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%b"></input></inputs><script><block s="doIfElse"><block var="COMPLEX?"/><script><block s="doSetVar"><l>a</l><block s="reportListItem"><l>1</l><block var="Z1"/></block></block><block s="doSetVar"><l>b</l><block s="reportListItem"><l>2</l><block var="Z1"/></block></block><block s="doSetVar"><l>c</l><block s="reportListItem"><l>1</l><block var="Z2"/></block></block><block s="doSetVar"><l>d</l><block s="reportListItem"><l>2</l><block var="Z2"/></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportDifference"><block s="reportProduct"><block var="a"/><block var="c"/></block><block s="reportProduct"><block var="b"/><block var="d"/></block></block><block s="reportSum"><block s="reportProduct"><block var="b"/><block var="c"/></block><block s="reportProduct"><block var="a"/><block var="d"/></block></block></list></block></block></script><script><block s="doReport"><block s="reportProduct"><block var="Z1"/><block var="Z2"/></block></block></script></block></script></block-definition><block-definition s="COMPLEX 0" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportIfElse"><block var="COMPLEX?"/><block s="reportNewList"><list><l>0</l><l>0</l></list></block><l>0</l></block></block></script><scripts><script x="56.5" y="79.1"><block s="doReport"><l>0</l></block></script></scripts></block-definition><block-definition s="COMPLEX %&apos;Z1&apos; + %&apos;Z2&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="COMPLEX?"/><custom-block s="%upvar map %repRing over %mult%l"><l>#</l><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block><list><block var="Z1"/><block var="Z2"/></list></custom-block><block s="reportSum"><block var="Z1"/><block var="Z2"/></block></custom-block></block></script></block-definition><block-definition s="COMPLEX %&apos;C&apos; &gt; 2 from origin" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportGreaterThan"><custom-block s="if %b then %anyUE else %anyUE"><block var="COMPLEX?"/><block s="reportSum"><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="C"/></block><block s="reportListItem"><l>1</l><block var="C"/></block></block><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="C"/></block><block s="reportListItem"><l>2</l><block var="C"/></block></block></block><block s="reportProduct"><block var="C"/><block var="C"/></block></custom-block><l>4</l></block></block></script></block-definition><block-definition s="label pixel %&apos;text&apos; aligned %&apos;alignment&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%s">center&#xD;        <options>left=1center=2right=3</options></input></inputs><script><block s="doSetVar"><l>DEBUG</l><block var="alignment"/></block><block s="doDeclareVariables"><list><l>old direction</l><l>old position</l><l>size</l></list></block><block s="doSetVar"><l>size</l><block s="reportProduct"><block var="PIXEL"/><block s="reportQuotient"><l>1.2</l><block s="reportStringSize"><block var="text"/></block></block></block></block><block s="doSetVar"><l>old direction</l><block s="direction"></block></block><block s="doSetVar"><l>old position</l><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block></block><block s="setHeading"><l>90</l></block><block s="changeXPosition"><block s="reportProduct"><block s="reportListItem"><block var="alignment"/><block s="reportNewList"><list><l>0</l><l>-0.3</l><l>-0.6</l></list></block></block><block s="reportProduct"><block var="size"/><block s="reportStringSize"><block var="text"/></block></block></block></block><block s="changeYPosition"><block s="reportQuotient"><block var="size"/><l>-3</l></block></block><custom-block s="label %txt of size %n"><block var="text"/><block var="size"/></custom-block><block s="setHeading"><block var="old direction"/></block><block s="doGotoObject"><block var="old position"/></block></script><scripts><script x="227.5" y="263.09999999999997"><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block></custom-block><custom-block s="label pixel %txt aligned %s"><l>1</l><l>2</l></custom-block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block></custom-block><custom-block s="label pixel %txt aligned %s"><l>22</l><l>2</l></custom-block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block></custom-block><custom-block s="label pixel %txt aligned %s"><l>333</l><l>2</l></custom-block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block></custom-block><custom-block s="label pixel %txt aligned %s"><l>4444</l><l>2</l></custom-block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block></custom-block><custom-block s="label pixel %txt aligned %s"><l>55555</l><l>2</l></custom-block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block></custom-block><custom-block s="label pixel %txt aligned %s"><l>666666</l><l>2</l></custom-block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block><block s="reportRandom"><l>0</l><l>255</l></block></custom-block><custom-block s="label pixel %txt aligned %s"><l>7777777</l><l>2</l></custom-block></script><script x="323.000002" y="105.50000299999999"><block s="reportListItem"><l>1</l><block s="reportNewList"><list><l>1.2</l><l>0.7</l><l>0.45</l><l>0.32</l><l>0.25</l><l>0.2</l><l>0.17</l></list></block></block></script></scripts></block-definition><block-definition s="round to tenths %&apos;x&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportRound"><block s="reportProduct"><block var="x"/><l>10</l></block></block><l>10</l></block></block></script></block-definition><block-definition s="return %&apos;function&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>f</l></list><l>return eval(f)</l></block><list><block var="function"/></list></block></block></script></block-definition><block-definition s="keys pressing" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>list</l><l>num</l><l>join</l></list></block><block s="doSetVar"><l>list</l><l>abcdefghijklmnopqrstuvwxyz0123456789-+&gt;&lt;%&amp;^"&apos;&#126;[]{}´`;.,:?/*_=!@#$¨()</l></block><block s="doSetVar"><l>num</l><l>1</l></block><block s="doSetVar"><l>join</l><l></l></block><block s="doRepeat"><block s="reportStringSize"><block var="list"/></block><script><block s="doIf"><block s="reportKeyPressed"><block s="reportLetter"><block var="num"/><block var="list"/></block></block><script><block s="doSetVar"><l>join</l><block s="reportJoinWords"><list><block var="join"/><block s="reportLetter"><block var="num"/><block var="list"/></block></list></block></block></script></block><block s="doChangeVar"><l>num</l><l>1</l></block></script></block><block s="doReport"><block var="join"/></block></script></block></script></block-definition><block-definition s="any key pressing?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>list</l><l>num</l><l>join</l></list></block><block s="doSetVar"><l>list</l><l>abcdefghijklmnopqrstuvwxyz0123456789-+&gt;&lt;%&amp;^"&apos;&#126;[]{}´`;.,:?/*_=!@#$¨()</l></block><block s="doSetVar"><l>num</l><l>1</l></block><block s="doSetVar"><l>join</l><l></l></block><block s="doRepeat"><block s="reportStringSize"><block var="list"/></block><script><block s="doIf"><block s="reportKeyPressed"><block s="reportLetter"><block var="num"/><block var="list"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doChangeVar"><l>num</l><l>1</l></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>space</option></l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>up arrow</option></l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>down arrow</option></l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>left arrow</option></l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>right arrow</option></l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doChangeVar"><l>num</l><l>1</l></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="delete last letter of %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>t</l></list></block><block s="doSetVar"><l>t</l><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block></block><block s="doDeleteFromList"><block s="reportListLength"><block var="t"/></block><block var="t"/></block><block s="doReport"><block s="reportJoinWords"><list><block var="t"/></list></block></block></script></block></script></block-definition><block-definition s="write %&apos;t&apos; with wrapping at %&apos;x&apos; %&apos;y&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="doDeclareVariables"><list><l>num</l></list></block><block s="doSetVar"><l>num</l><l>1</l></block><block s="doRepeat"><block s="reportStringSize"><block var="t"/></block><script><block s="write"><block s="reportLetter"><block var="num"/><block var="t"/></block><l>16</l></block><block s="doChangeVar"><l>num</l><l>1</l></block><block s="doIf"><block s="reportGreaterThan"><block s="xPosition"></block><l>180</l></block><script><block s="setXPosition"><l>-190</l></block><block s="changeYPosition"><l>-19</l></block></script></block></script></block></script></block></script></block-definition><block-definition s="command" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><custom-block s="safely try %cs then if %upvar %cs"><script></script><l>error</l><script><block s="setPenHSVA"><l><option>brightness</option></l><l>0</l></block></script></custom-block></script></block></script></block-definition><block-definition s="$brush set pen to crayon %&apos;which&apos;" type="command" category="pen"><comment x="0" y="0" w="297.3333333333333" collapsed="false">Reports one of 100 preselected colors, like a box of 100 crayons.&#xD;The colors have names that are meant to be evocative.&#xD;They are organized in families, more or less corresponding&#xD;to spectral (rainbow) colors; the input slot has a two-level menu&#xD;in which you can hover over a family name to see the colors&#xD;of that family, each including a crayon number and an RGB value. &#xD;See Appendix A of the Snap! Reference Manual for more details.</comment><header></header><code></code><translations></translations><inputs><input type="%n"><options>grays={&#xD;0 black #000000=0&#xD;1 gray7 #121212=1&#xD;2 gray14 #242424=2&#xD;3 gray21 #363636=3&#xD;4 gray28 #484848=4&#xD;5 gray36 #5c5c5c=5&#xD;6 gray43 #6d6d6d=6&#xD;7 gray50 #7f7f7f=7&#xD;8 gray57 #919191=8&#xD;9 gray64 #a3a3a3=9&#xD;10 gray71 #b5b5b5=10&#xD;11 gray78 #c8c8c8=11&#xD;12 gray85 #dadada=12&#xD;13 gray92 #ececec=13&#xD;14 white #ffffff=14&#xD;}&#xD;pinks={&#xD;15 deep pink #ff1493=15&#xD;16 hot pink #ff69b4=16&#xD;17 bright pink #ff007f=17&#xD;18 raspberry #e30b5d=18&#xD;19 amaranth #e52b50=19&#xD;}&#xD;reds={&#xD;20 red #ff0000=20&#xD;21 burgundy #900020=21&#xD;22 cherry #990000=22&#xD;23 dark candy apple red #a40000=23&#xD;24 sanguine #c00000=24&#xD;25 maroon #800000=25&#xD;26 crimson #c90016=26&#xD;27 Lists #d94d11=27&#xD;28 candy apple red #ff0800=28&#xD;29 coquelicot #ff3800=29&#xD;}&#xD;browns={&#xD;30 saddle brown #8b4513=30&#xD;31 chocolate #7b3f00=31&#xD;32 kobicha #6b4423=32&#xD;33 sepia #704214=33&#xD;34 chestnut #954535=34&#xD;35 dark brown #654321=35&#xD;36 brown #964b00=36&#xD;37 golden brown #996515=37&#xD;38 cinnamon #b87333=38&#xD;39 copper #d2691e=39&#xD;}&#xD;oranges={&#xD;40 orange #ff7f00=40&#xD;41 Pantone orange #ff5800=41&#xD;42 pumpkin #ff7518=42&#xD;43 Variables #f3761d=43&#xD;44 Spanish orange #e86100=44&#xD;45 burnt orange #cc5500=45&#xD;46 sinopia #cb410b=46&#xD;47 ochre #cc7722=47&#xD;48 carrot #ed9121=48&#xD;49 tangerine #f28500=49&#xD;}&#xD;yellows={&#xD;50 yellow #ffff00=50&#xD;51 Control #e6a822=51&#xD;52 dark goldenrod #b8860b=52&#xD;53 goldenrod #daa520=53&#xD;54 saffron #f4c430=54&#xD;55 sandstorm #ecd540=55&#xD;56 mustard #ffdb58=56&#xD;57 gold #ffd700=57&#xD;58 egg yolk #fee33e=58&#xD;59 rubber duck #fbe108=59&#xD;}&#xD;greens={&#xD;60 lime #00ff00=60&#xD;61 apple green #8db600=61&#xD;62 Operators #62c213=62&#xD;63 forest green #228b22=63&#xD;64 green #008000=64&#xD;65 dark green #006400=65&#xD;66 dark pastel green #03c03c=66&#xD;67 emerald #50c878=67&#xD;68 mint #3eb489=68&#xD;69 Pen #00a178=69&#xD;}&#xD;cyans={&#xD;70 aqua (cyan) #00ffff=70&#xD;71 dark cyan #008b8b=71&#xD;72 cerulean #007ba7=72&#xD;73 iceberg #71a6d2=73&#xD;74 Sensing #0494dc=74&#xD;75 teal #008080=75&#xD;76 light sky blue #87cefa=76&#xD;77 deep sky blue #00bfff=77&#xD;78 dodger blue #1e90ff=78&#xD;79 azure #007fff=79&#xD;}&#xD;blues={&#xD;80 blue #0000ff=80&#xD;81 midnight blue #191970=81&#xD;82 dark powder blue #003399=82&#xD;83 cobalt #0047ab=83&#xD;84 denim #1560bd=84&#xD;85 navy blue #000080=85&#xD;86 steel blue #4682b4=86&#xD;87 Motion #4a6cd4=87&#xD;88 cornflower #6495ed=88&#xD;89 slate blue #6a5acd=89&#xD;}&#xD;purples={&#xD;90 violet #8000ff=90&#xD;91 Looks #8f56e3=91&#xD;92 grape #6f2da8=92&#xD;93 indigo #4b0082=93&#xD;94 x11 purple #a020f0=94&#xD;95 magenta (fuchia) #ff00ff=95&#xD;96 dark orchid #9932cc=96&#xD;97 Sound #cf4ad9=97&#xD;98 purple #7f007f=98&#xD;99 dark magenta #8b008b=99&#xD;}</options></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doSetVar"><l>✐ last crayon</l><block var="which"/></block><block s="doSetVar"><l>✐ last set as</l><l>crayon</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doIf"><block s="reportNot"><custom-block s="does var %s exist?"><l>✐ crayon colors</l></custom-block></block><script><custom-block s="create %s var %mult%txt"><l>global</l><list><l>✐ crayon colors</l></list></custom-block><block s="doSetVar"><l>✐ crayon colors</l><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>18</l><l>18</l><l>18</l></list></block><block s="reportNewList"><list><l>36</l><l>36</l><l>36</l></list></block><block s="reportNewList"><list><l>54</l><l>54</l><l>54</l></list></block><block s="reportNewList"><list><l>72</l><l>72</l><l>72</l></list></block><block s="reportNewList"><list><l>92</l><l>92</l><l>92</l></list></block><block s="reportNewList"><list><l>109</l><l>109</l><l>109</l></list></block><block s="reportNewList"><list><l>127</l><l>127</l><l>127</l></list></block><block s="reportNewList"><list><l>145</l><l>145</l><l>145</l></list></block><block s="reportNewList"><list><l>163</l><l>163</l><l>163</l></list></block><block s="reportNewList"><list><l>181</l><l>181</l><l>181</l></list></block><block s="reportNewList"><list><l>200</l><l>200</l><l>200</l></list></block><block s="reportNewList"><list><l>218</l><l>218</l><l>218</l></list></block><block s="reportNewList"><list><l>236</l><l>236</l><l>236</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>20</l><l>147</l></list></block><block s="reportNewList"><list><l>255</l><l>105</l><l>180</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>127</l></list></block><block s="reportNewList"><list><l>227</l><l>11</l><l>93</l></list></block><block s="reportNewList"><list><l>229</l><l>43</l><l>80</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>144</l><l>0</l><l>32</l></list></block><block s="reportNewList"><list><l>153</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>164</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>192</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>128</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>201</l><l>0</l><l>22</l></list></block><block s="reportNewList"><list><l>217</l><l>77</l><l>17</l></list></block><block s="reportNewList"><list><l>255</l><l>8</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>56</l><l>0</l></list></block><block s="reportNewList"><list><l>139</l><l>69</l><l>19</l></list></block><block s="reportNewList"><list><l>123</l><l>63</l><l>0</l></list></block><block s="reportNewList"><list><l>107</l><l>68</l><l>35</l></list></block><block s="reportNewList"><list><l>112</l><l>66</l><l>20</l></list></block><block s="reportNewList"><list><l>149</l><l>69</l><l>53</l></list></block><block s="reportNewList"><list><l>101</l><l>67</l><l>33</l></list></block><block s="reportNewList"><list><l>150</l><l>75</l><l>0</l></list></block><block s="reportNewList"><list><l>153</l><l>101</l><l>21</l></list></block><block s="reportNewList"><list><l>184</l><l>115</l><l>51</l></list></block><block s="reportNewList"><list><l>210</l><l>105</l><l>30</l></list></block><block s="reportNewList"><list><l>255</l><l>127</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>88</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>117</l><l>24</l></list></block><block s="reportNewList"><list><l>243</l><l>118</l><l>29</l></list></block><block s="reportNewList"><list><l>232</l><l>97</l><l>0</l></list></block><block s="reportNewList"><list><l>204</l><l>85</l><l>0</l></list></block><block s="reportNewList"><list><l>203</l><l>65</l><l>11</l></list></block><block s="reportNewList"><list><l>204</l><l>119</l><l>34</l></list></block><block s="reportNewList"><list><l>237</l><l>145</l><l>33</l></list></block><block s="reportNewList"><list><l>242</l><l>133</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>230</l><l>168</l><l>34</l></list></block><block s="reportNewList"><list><l>184</l><l>134</l><l>11</l></list></block><block s="reportNewList"><list><l>218</l><l>165</l><l>32</l></list></block><block s="reportNewList"><list><l>244</l><l>196</l><l>48</l></list></block><block s="reportNewList"><list><l>236</l><l>213</l><l>64</l></list></block><block s="reportNewList"><list><l>255</l><l>219</l><l>88</l></list></block><block s="reportNewList"><list><l>255</l><l>215</l><l>0</l></list></block><block s="reportNewList"><list><l>254</l><l>227</l><l>62</l></list></block><block s="reportNewList"><list><l>251</l><l>225</l><l>8</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>141</l><l>182</l><l>0</l></list></block><block s="reportNewList"><list><l>98</l><l>194</l><l>19</l></list></block><block s="reportNewList"><list><l>34</l><l>139</l><l>34</l></list></block><block s="reportNewList"><list><l>0</l><l>128</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>100</l><l>0</l></list></block><block s="reportNewList"><list><l>3</l><l>192</l><l>60</l></list></block><block s="reportNewList"><list><l>80</l><l>200</l><l>120</l></list></block><block s="reportNewList"><list><l>62</l><l>180</l><l>137</l></list></block><block s="reportNewList"><list><l>0</l><l>161</l><l>120</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>139</l><l>139</l></list></block><block s="reportNewList"><list><l>0</l><l>123</l><l>167</l></list></block><block s="reportNewList"><list><l>113</l><l>166</l><l>210</l></list></block><block s="reportNewList"><list><l>4</l><l>148</l><l>220</l></list></block><block s="reportNewList"><list><l>0</l><l>128</l><l>128</l></list></block><block s="reportNewList"><list><l>135</l><l>206</l><l>250</l></list></block><block s="reportNewList"><list><l>0</l><l>191</l><l>255</l></list></block><block s="reportNewList"><list><l>30</l><l>144</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>127</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>25</l><l>25</l><l>112</l></list></block><block s="reportNewList"><list><l>0</l><l>51</l><l>153</l></list></block><block s="reportNewList"><list><l>0</l><l>71</l><l>171</l></list></block><block s="reportNewList"><list><l>21</l><l>96</l><l>189</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>128</l></list></block><block s="reportNewList"><list><l>70</l><l>130</l><l>180</l></list></block><block s="reportNewList"><list><l>74</l><l>108</l><l>212</l></list></block><block s="reportNewList"><list><l>100</l><l>149</l><l>237</l></list></block><block s="reportNewList"><list><l>106</l><l>90</l><l>205</l></list></block><block s="reportNewList"><list><l>128</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>143</l><l>86</l><l>227</l></list></block><block s="reportNewList"><list><l>111</l><l>45</l><l>168</l></list></block><block s="reportNewList"><list><l>75</l><l>0</l><l>130</l></list></block><block s="reportNewList"><list><l>160</l><l>32</l><l>240</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>153</l><l>50</l><l>204</l></list></block><block s="reportNewList"><list><l>207</l><l>74</l><l>217</l></list></block><block s="reportNewList"><list><l>127</l><l>0</l><l>127</l></list></block><block s="reportNewList"><list><l>139</l><l>0</l><l>139</l></list></block></list></block></block></script></block><block s="doDeclareVariables"><list><l>color</l></list></block><block s="doSetVar"><l>color</l><block s="reportListItem"><block s="reportSum"><block s="reportModulus"><block var="which"/><l>100</l></block><l>1</l></block><block var="✐ crayon colors"/></block></block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportListItem"><l>1</l><block var="color"/></block><block s="reportListItem"><l>2</l><block var="color"/></block><block s="reportListItem"><l>3</l><block var="color"/></block></custom-block></script></block-definition><block-definition s="set pen color to h: %&apos;h&apos; s: %&apos;s&apos; v: %&apos;v&apos;" type="command" category="pen"><comment x="0" y="0" w="283.3333333333333" collapsed="false">Takes three inputs for hue, saturation, and value (&quot;brightness&quot;)&#xD;values, each between 0 and 1.  0,0,0 is black; 0,0,1 is white.  0.15,1,1 is yellow, and so on.&#xD;&#xD;The SET PEN block in this library lets you set individual hue, saturation, or value without changing the others, lets you provide a list of three HSV color components, and lets you&#xD;use the very much superior HSL (hue, saturation, lightness)&#xD;color space.&#xD;&#xD;See Appendix A of the Snap! Reference Manual for details.</comment><header></header><code></code><translations>pt:altera a cor da caneta para matiz _ , saturação _ e brilho _ (0 a 1)&#xD;</translations><inputs><input type="%n">0.3</input><input type="%n">0.7</input><input type="%n">0.6</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>h</l><l>s</l><l>v</l></list><l>var col = new Color();&#xD;col.set_hsv(h, s, v);&#xD;this.setColor(col);</l></block><list><block var="h"/><block var="s"/><block var="v"/></list></block></script></block-definition><block-definition s="HSV color" type="reporter" category="pen"><comment x="0" y="0" w="312" collapsed="false">Reports the current pen color as a list of three HSV values&#xD;in the range 0-1.&#xD;&#xD;See Appendix A in the Snap! Reference Manual for details.</comment><header></header><code></code><translations>pt:a cor da caneta em HSV (matiz, saturação e brilho, 0 a 1)&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return new List(this.color.hsv());</l></block><list></list></block></block></script></block-definition><block-definition s="$brush set pen %&apos;dimension&apos; to %&apos;value&apos;" type="command" category="pen"><comment x="0" y="0" w="265.3333333333333" collapsed="false">This block allows you to set the pen&apos;s color, transparency (on a scale from 0=opaque to 100=invisible), or size (in pixels).  The color can be set in many ways, including RGB values, HSV values, HSL values, fair HSV or HSL (based on a modified spectrum that gives each spectral color equal space and promotes brown to a color), or X11/W3C color name.&#xD;&#xD;See Appendix A in the Snap! Reference Manual for details.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>size&#xD;color&#xD;fair hue&#xD;transparency&#xD;X11/W3C name&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB vector&#xD;RGB hex&#xD;}&#xD;}</options></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>colors</l><l>brights</l><l>index</l><l>scale</l><l>oldHSV</l><l>newHSV</l><l>color</l><l>pivots</l></list></block><block s="doSetVar"><l>colors</l><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>128</l><l>128</l><l>128</l></list></block><block s="reportNewList"><list><l>192</l><l>192</l><l>192</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>85</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>139</l><l>69</l><l>19</l></list></block><block s="reportNewList"><list><l>70</l><l>5</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>127</l><l>0</l></list></block><block s="reportNewList"><list><l>140</l><l>60</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>114</l><l>93</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>30</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>50</l><l>50</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>64</l></list></block><block s="reportNewList"><list><l>80</l><l>0</l><l>90</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block></list></block></block><block s="doSetVar"><l>brights</l><block s="reportNewList"><list><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>170</l><l>20</l><l>0</l></list></block><block s="reportNewList"><list><l>139</l><l>69</l><l>19</l></list></block><block s="reportNewList"><list><l>170</l><l>90</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>127</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>160</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>190</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>240</l><l>200</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>127</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>60</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>128</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>64</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block></list></block></block><block s="doSetVar"><l>pivots</l><block s="reportNewList"><list><l>0</l><l>5.8</l><l>12.5</l><l>18</l><l>25</l><l>30.5</l><l>37.5</l><l>44.5</l><l>50</l><l>59</l><l>62.5</l><l>69</l><l>75</l><l>79.25</l><l>87.5</l><l>93.75</l><l>97</l><l>100</l></list></block></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportNewList"><list><l>color</l><l>hue</l><l>fair hue</l></list></block><block var="dimension"/></block><script><block s="doSetVar"><l>value</l><block s="reportModulus"><block var="value"/><l>100</l></block></block></script><script><block s="doIfElse"><block s="reportListContainsItem"><block s="reportNewList"><list><l>red</l><l>green</l><l>blue</l></list></block><block var="dimension"/></block><script><block s="doIf"><block s="reportLessThan"><block var="value"/><l>0</l></block><script><block s="doSetVar"><l>value</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="value"/><l>255</l></block><script><block s="doSetVar"><l>value</l><l>255</l></block></script></block></script><script><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><l>saturation (HSV)</l><l>saturation (HSL)</l><l>value (brightness)</l><l>lightness</l><l>fair saturation (HSV)</l><l>fair saturation (HSL)</l><l>fair value (brightness)</l><l>fair lightness</l><l>transparency</l></list></block><block var="dimension"/></block><script><block s="doIf"><block s="reportLessThan"><block var="value"/><l>0</l></block><script><block s="doSetVar"><l>value</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="value"/><l>100</l></block><script><block s="doSetVar"><l>value</l><l>100</l></block></script></block></script><comment w="164.66666666666666" collapsed="false">We have to do this last test to rule out the vector options, which aren&apos;t numbers; their code makes three recursive calls and we catch range issues then.</comment></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>size</l></block><script><block s="setSize"><block var="value"/></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>hue</l></block><script><block s="setPenHSVA"><l><option>hue</option></l><block var="value"/></block><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><block s="doReplaceInList"><l>1</l><block var="✐ HSL"/><block var="value"/></block><custom-block s="✐ update HSV"></custom-block></script></block><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block s="reportNewList"><list><l>HSL</l><l>HSV</l></list></block><block var="✐ last set as"/></block></block><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block></script></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSV)</l></block><script><block s="setPenHSVA"><l><option>saturation</option></l><block var="value"/></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>value (brightness)</l></block><script><block s="setPenHSVA"><l><option>brightness</option></l><block var="value"/></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>transparency</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block var="value"/></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>red</l></block><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><custom-block s="min %s %s"><block s="reportRound"><block s="reportListItem"><l>1</l><block s="reportNewList"><list><block var="value"/><l></l></list></block></block></block><l>255</l></custom-block><l></l><l></l></custom-block></script><list></list></block><custom-block s="RGB color"></custom-block></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>green</l></block><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><custom-block s="min %s %s"><block s="reportRound"><block s="reportListItem"><l>1</l><block s="reportNewList"><list><block var="value"/><l></l></list></block></block></block><l>255</l></custom-block><l></l></custom-block></script><list></list></block><custom-block s="RGB color"></custom-block></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>blue</l></block><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><custom-block s="min %s %s"><block s="reportRound"><block s="reportListItem"><l>1</l><block s="reportNewList"><list><block var="value"/><l></l></list></block></block></block><l>255</l></custom-block></custom-block></script><list></list></block><custom-block s="RGB color"></custom-block></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair hue</l></block><script><block s="doSetVar"><l>oldHSV</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l>100</l><l></l></block></autolambda><list></list></block><custom-block s="HSV color"></custom-block></block></block><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block s="reportNewList"><list><l>HSL</l><l>HSV</l></list></block><block var="✐ last set as"/></block></block><script><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block><block s="doSetVar"><l>oldHSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block></script></block><block s="doSetVar"><l>value</l><block s="reportModulus"><block var="value"/><l>100</l></block></block><block s="doSetVar"><l>color</l><block s="reportProduct"><block var="value"/><l>3.6</l></block></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doUntil"><block s="reportGreaterThan"><block s="reportListItem"><block var="index"/><block var="pivots"/></block><block var="value"/></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doChangeVar"><l>index</l><l>-1</l></block><block s="doSetVar"><l>scale</l><block s="reportQuotient"><block s="reportDifference"><block var="value"/><block s="reportListItem"><block var="index"/><block var="pivots"/></block></block><block s="reportDifference"><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="pivots"/></block><block s="reportListItem"><block var="index"/><block var="pivots"/></block></block></block></block><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><custom-block s="min %s %s"><block s="reportRound"><block s="reportSum"><block var="from"/><block s="reportProduct"><block s="reportDifference"><block var="to"/><block var="from"/></block><block var="scale"/></block></block></block><l>255</l></custom-block></autolambda><list><l>from</l><l>to</l></list></block><list><block s="reportListItem"><block var="index"/><block var="brights"/></block><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="brights"/></block></list></custom-block></block><block s="doSetVar"><l>newHSV</l><custom-block s="HSV color"></custom-block></block><block s="doIfElse"><block var="✐ fair?"/><script><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportListItem"><l>1</l><block var="newHSV"/></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="newHSV"/></block><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block></block><l>100</l></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="newHSV"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></block><l>100</l></block></custom-block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></list></block></block></script><script><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportListItem"><l>1</l><block var="newHSV"/></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="newHSV"/></block><block s="reportListItem"><l>2</l><block var="oldHSV"/></block></block><l>100</l></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="newHSV"/></block><block s="reportListItem"><l>3</l><block var="oldHSV"/></block></block><l>100</l></block></custom-block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>2</l><block var="oldHSV"/></block><block s="reportListItem"><l>3</l><block var="oldHSV"/></block></list></block></block></script></block><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><custom-block s="✐ update HSL"></custom-block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block></script><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block></script></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script><comment w="90" collapsed="true">fair hue</comment></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>color</l><comment w="53.333333333333336" collapsed="true">Color</comment></block><script><block s="doSetVar"><l>✐ color scale</l><block var="value"/></block><block s="doSetVar"><l>color</l><block s="reportProduct"><block var="value"/><l>3</l></block></block><block s="doIfElse"><block s="reportNot"><block s="reportGreaterThan"><block var="color"/><l>42</l></block></block><script><block s="doSetVar"><l>color</l><block s="reportModulus"><block s="reportProduct"><block var="color"/><block s="reportQuotient"><l>15</l><l>14</l></block></block><l>300</l></block></block><block s="doSetVar"><l>index</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="color"/><l>15</l></block></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block var="color"/><block s="reportProduct"><block var="index"/><l>15</l></block></block></block></script><script><block s="doIf"><block s="reportLessThan"><block var="color"/><l>60</l><comment w="96.66666666666667" collapsed="true">spread out pink</comment></block><script><block s="doSetVar"><l>color</l><block s="reportSum"><l>45</l><block s="reportProduct"><block s="reportDifference"><block var="color"/><l>42</l></block><block s="reportQuotient"><l>15</l><l>18</l></block></block></block></block></script></block><block s="doSetVar"><l>color</l><block s="reportModulus"><block var="color"/><l>300</l></block></block><block s="doSetVar"><l>index</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="color"/><l>15</l></block></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block var="color"/><block s="reportProduct"><block var="index"/><l>15</l></block></block></block></script><comment w="77.33333333333333" collapsed="true">grayscale</comment></block><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><custom-block s="min %s %s"><block s="reportRound"><block s="reportSum"><block var="from"/><block s="reportProduct"><block s="reportDifference"><block var="to"/><block var="from"/></block><block s="reportQuotient"><block var="scale"/><l>15</l></block></block></block></block><l>255</l></custom-block></autolambda><list><l>from</l><l>to</l></list></block><list><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="colors"/></block><block s="reportListItem"><block s="reportSum"><block var="index"/><l>2</l></block><block var="colors"/></block></list></custom-block></block><block s="doSetVar"><l>✐ last set as</l><l>color</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSL)</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>2</l><block var="✐ HSL"/><block var="value"/></block><custom-block s="✐ update HSV"></custom-block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>lightness</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>3</l><block var="✐ HSL"/><block var="value"/></block><custom-block s="✐ update HSV"></custom-block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSV)</l></block><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="setPenHSVA"><l><option>saturation</option></l><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="getPenAttribute"><l><option>saturation</option></l></block><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block></block></block><block var="value"/></block></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair value (brightness)</l></block><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="setPenHSVA"><l><option>brightness</option></l><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="getPenAttribute"><l><option>brightness</option></l></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></block></block><block var="value"/></block></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSL)</l></block><script><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSV</l></block><script><custom-block s="✐ update HSL"></custom-block></script><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><block s="doReplaceInList"><l>2</l><block var="✐ HSL"/><l>100</l></block></script></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSL"/><block var="value"/></block><block s="doReplaceInList"><l>2</l><block var="✐ HSL"/><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="reportListItem"><l>2</l><block var="✐ HSL"/></block><block s="reportListItem"><l>2</l><block var="✐ raw HSL"/></block></block></block><block var="value"/></block></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ update HSV"></custom-block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair lightness</l></block><script><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSV</l></block><script><custom-block s="✐ update HSL"></custom-block></script><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><block s="doReplaceInList"><l>3</l><block var="✐ HSL"/><l>50</l></block></script></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSL"/><block var="value"/></block><block s="doReplaceInList"><l>3</l><block var="✐ HSL"/><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="reportListItem"><l>3</l><block var="✐ HSL"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSL"/></block></block></block><block var="value"/></block></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ update HSV"></custom-block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair HSL vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>fair saturation (HSL)</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>fair lightness</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>fair hue</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair HSV vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>fair saturation (HSV)</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>fair value (brightness)</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>fair hue</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>HSL vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>saturation (HSL)</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>lightness</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>hue</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>HSV vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>saturation (HSV)</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>value (brightness)</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>hue</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>red</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>green</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>blue</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB hex</l></block><script><block s="doSetVar"><l>value</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>number</option></l></block><l></l><block s="reportSum"><l>10</l><block s="reportDifference"><block s="reportUnicode"><l></l></block><block s="reportIfElse"><block s="reportLessThan"><l></l><l>a</l></block><block s="reportUnicode"><l>A</l></block><block s="reportUnicode"><l>a</l></block></block></block></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="value"/><l><option>letter</option></l></block></block></block><block s="doIf"><block s="reportEquals"><block s="reportListLength"><block var="value"/></block><l>3</l></block><script><block s="doSetVar"><l>value</l><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><l></l></list></block></autolambda><list></list></block><block var="value"/></block></block></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportOr"><block s="reportLessThan"><l></l><l>0</l></block><block s="reportGreaterThan"><l></l><l>15</l></block></block></autolambda><list></list></block><block var="value"/></block><l><option>number</option></l></block><script><custom-block s="error %txt"><l>Badly formed hex color.</l></custom-block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="value"/></block><l>6</l></block><script><custom-block s="error %txt"><l>More than six hex digits.</l></custom-block></script></block><block s="doRepeat"><block s="reportDifference"><l>6</l><block s="reportListLength"><block var="value"/></block></block><script><block s="doSetVar"><l>value</l><block s="reportCONS"><l>0</l><block var="value"/></block></block></script></block><custom-block s="$brush set pen %s to %s"><l>red</l><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>1</l><block var="value"/></block></block><block s="reportListItem"><l>2</l><block var="value"/></block></block></custom-block><custom-block s="$brush set pen %s to %s"><l>green</l><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>3</l><block var="value"/></block></block><block s="reportListItem"><l>4</l><block var="value"/></block></block></custom-block><custom-block s="$brush set pen %s to %s"><l>blue</l><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>5</l><block var="value"/></block></block><block s="reportListItem"><l>6</l><block var="value"/></block></block></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>X11/W3C name</l><comment w="90" collapsed="true">X11/W3C name</comment></block><script><block s="doIf"><block s="reportNot"><custom-block s="does var %s exist?"><l>✐ X11</l></custom-block></block><script><custom-block s="create %s var %mult%txt"><l>global</l><list><l>✐ X11</l></list></custom-block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ X11"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ X11</l><block s="reportNewList"><list><block s="reportNewList"><list><l>255</l><l>250</l><l>250</l><l>snow</l></list></block><block s="reportNewList"><list><l>248</l><l>248</l><l>255</l><l>ghostwhite</l></list></block><block s="reportNewList"><list><l>245</l><l>245</l><l>245</l><l>whitesmoke</l></list></block><block s="reportNewList"><list><l>220</l><l>220</l><l>220</l><l>gainsboro</l></list></block><block s="reportNewList"><list><l>255</l><l>250</l><l>240</l><l>floralwhite</l></list></block><block s="reportNewList"><list><l>253</l><l>245</l><l>230</l><l>oldlace</l></list></block><block s="reportNewList"><list><l>250</l><l>240</l><l>230</l><l>linen</l></list></block><block s="reportNewList"><list><l>250</l><l>235</l><l>215</l><l>antiquewhite</l></list></block><block s="reportNewList"><list><l>255</l><l>239</l><l>213</l><l>papayawhip</l></list></block><block s="reportNewList"><list><l>255</l><l>235</l><l>205</l><l>blanchedalmond</l></list></block><block s="reportNewList"><list><l>255</l><l>228</l><l>196</l><l>bisque</l></list></block><block s="reportNewList"><list><l>255</l><l>218</l><l>185</l><l>peachpuff</l></list></block><block s="reportNewList"><list><l>255</l><l>222</l><l>173</l><l>navajowhite</l></list></block><block s="reportNewList"><list><l>255</l><l>228</l><l>181</l><l>moccasin</l></list></block><block s="reportNewList"><list><l>255</l><l>248</l><l>220</l><l>cornsilk</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>240</l><l>ivory</l></list></block><block s="reportNewList"><list><l>255</l><l>250</l><l>205</l><l>lemonchiffon</l></list></block><block s="reportNewList"><list><l>255</l><l>245</l><l>238</l><l>seashell</l></list></block><block s="reportNewList"><list><l>240</l><l>255</l><l>240</l><l>honeydew</l></list></block><block s="reportNewList"><list><l>245</l><l>255</l><l>250</l><l>mintcream</l></list></block><block s="reportNewList"><list><l>240</l><l>255</l><l>255</l><l>azure</l></list></block><block s="reportNewList"><list><l>240</l><l>248</l><l>255</l><l>aliceblue</l></list></block><block s="reportNewList"><list><l>230</l><l>230</l><l>250</l><l>lavender</l></list></block><block s="reportNewList"><list><l>255</l><l>240</l><l>245</l><l>lavenderblush</l></list></block><block s="reportNewList"><list><l>255</l><l>228</l><l>225</l><l>mistyrose</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>255</l><l>white</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>black</l></list></block><block s="reportNewList"><list><l>47</l><l>79</l><l>79</l><l>darkslategray</l></list></block><block s="reportNewList"><list><l>47</l><l>79</l><l>79</l><l>darkslategrey</l></list></block><block s="reportNewList"><list><l>105</l><l>105</l><l>105</l><l>dimgray</l></list></block><block s="reportNewList"><list><l>105</l><l>105</l><l>105</l><l>dimgrey</l></list></block><block s="reportNewList"><list><l>112</l><l>128</l><l>144</l><l>slategray</l></list></block><block s="reportNewList"><list><l>112</l><l>128</l><l>144</l><l>slategrey</l></list></block><block s="reportNewList"><list><l>119</l><l>136</l><l>153</l><l>lightslategray</l></list></block><block s="reportNewList"><list><l>119</l><l>136</l><l>153</l><l>lightslategrey</l></list></block><block s="reportNewList"><list><l>190</l><l>190</l><l>190</l><l>gray(X11)</l></list></block><block s="reportNewList"><list><l>190</l><l>190</l><l>190</l><l>grey(X11)</l></list></block><block s="reportNewList"><list><l>128</l><l>128</l><l>128</l><l>gray(W3C)</l></list></block><block s="reportNewList"><list><l>128</l><l>128</l><l>128</l><l>grey(W3C)</l></list></block><block s="reportNewList"><list><l>211</l><l>211</l><l>211</l><l>lightgrey</l></list></block><block s="reportNewList"><list><l>211</l><l>211</l><l>211</l><l>lightgray</l></list></block><block s="reportNewList"><list><l>25</l><l>25</l><l>112</l><l>midnightblue</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>128</l><l>navy</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>128</l><l>navyblue</l></list></block><block s="reportNewList"><list><l>100</l><l>149</l><l>237</l><l>cornflowerblue</l></list></block><block s="reportNewList"><list><l>72</l><l>61</l><l>139</l><l>darkslateblue</l></list></block><block s="reportNewList"><list><l>106</l><l>90</l><l>205</l><l>slateblue</l></list></block><block s="reportNewList"><list><l>123</l><l>104</l><l>238</l><l>mediumslateblue</l></list></block><block s="reportNewList"><list><l>132</l><l>112</l><l>255</l><l>lightslateblue</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>205</l><l>mediumblue</l></list></block><block s="reportNewList"><list><l>65</l><l>105</l><l>225</l><l>royalblue</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l><l>blue</l></list></block><block s="reportNewList"><list><l>30</l><l>144</l><l>255</l><l>dodgerblue</l></list></block><block s="reportNewList"><list><l>0</l><l>191</l><l>255</l><l>deepskyblue</l></list></block><block s="reportNewList"><list><l>135</l><l>206</l><l>235</l><l>skyblue</l></list></block><block s="reportNewList"><list><l>135</l><l>206</l><l>250</l><l>lightskyblue</l></list></block><block s="reportNewList"><list><l>70</l><l>130</l><l>180</l><l>steelblue</l></list></block><block s="reportNewList"><list><l>176</l><l>196</l><l>222</l><l>lightsteelblue</l></list></block><block s="reportNewList"><list><l>173</l><l>216</l><l>230</l><l>lightblue</l></list></block><block s="reportNewList"><list><l>176</l><l>224</l><l>230</l><l>powderblue</l></list></block><block s="reportNewList"><list><l>175</l><l>238</l><l>238</l><l>paleturquoise</l></list></block><block s="reportNewList"><list><l>0</l><l>206</l><l>209</l><l>darkturquoise</l></list></block><block s="reportNewList"><list><l>72</l><l>209</l><l>204</l><l>mediumturquoise</l></list></block><block s="reportNewList"><list><l>64</l><l>224</l><l>208</l><l>turquoise</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l><l>cyan</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l><l>aqua</l></list></block><block s="reportNewList"><list><l>224</l><l>255</l><l>255</l><l>lightcyan</l></list></block><block s="reportNewList"><list><l>95</l><l>158</l><l>160</l><l>cadetblue</l></list></block><block s="reportNewList"><list><l>102</l><l>205</l><l>170</l><l>mediumaquamarine</l></list></block><block s="reportNewList"><list><l>127</l><l>255</l><l>212</l><l>aquamarine</l></list></block><block s="reportNewList"><list><l>0</l><l>100</l><l>0</l><l>darkgreen</l></list></block><block s="reportNewList"><list><l>85</l><l>107</l><l>47</l><l>darkolivegreen</l></list></block><block s="reportNewList"><list><l>143</l><l>188</l><l>143</l><l>darkseagreen</l></list></block><block s="reportNewList"><list><l>46</l><l>139</l><l>87</l><l>seagreen</l></list></block><block s="reportNewList"><list><l>60</l><l>179</l><l>113</l><l>mediumseagreen</l></list></block><block s="reportNewList"><list><l>32</l><l>178</l><l>170</l><l>lightseagreen</l></list></block><block s="reportNewList"><list><l>152</l><l>251</l><l>152</l><l>palegreen</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>127</l><l>springgreen</l></list></block><block s="reportNewList"><list><l>124</l><l>252</l><l>0</l><l>lawngreen</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l><l>green(X11)</l></list></block><block s="reportNewList"><list><l>0</l><l>128</l><l>0</l><l>green(W3C)</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l><l>lime</l></list></block><block s="reportNewList"><list><l>127</l><l>255</l><l>0</l><l>chartreuse</l></list></block><block s="reportNewList"><list><l>0</l><l>250</l><l>154</l><l>mediumspringgreen</l></list></block><block s="reportNewList"><list><l>173</l><l>255</l><l>47</l><l>greenyellow</l></list></block><block s="reportNewList"><list><l>50</l><l>205</l><l>50</l><l>limegreen</l></list></block><block s="reportNewList"><list><l>154</l><l>205</l><l>50</l><l>yellowgreen</l></list></block><block s="reportNewList"><list><l>34</l><l>139</l><l>34</l><l>forestgreen</l></list></block><block s="reportNewList"><list><l>107</l><l>142</l><l>35</l><l>olivedrab</l></list></block><block s="reportNewList"><list><l>189</l><l>183</l><l>107</l><l>darkkhaki</l></list></block><block s="reportNewList"><list><l>240</l><l>230</l><l>140</l><l>khaki</l></list></block><block s="reportNewList"><list><l>238</l><l>232</l><l>170</l><l>palegoldenrod</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l><l>210</l><l>lightgoldenrodyellow</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>224</l><l>lightyellow</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l><l>yellow</l></list></block><block s="reportNewList"><list><l>255</l><l>215</l><l>0</l><l>gold</l></list></block><block s="reportNewList"><list><l>238</l><l>221</l><l>130</l><l>lightgoldenrod</l></list></block><block s="reportNewList"><list><l>218</l><l>165</l><l>32</l><l>goldenrod</l></list></block><block s="reportNewList"><list><l>184</l><l>134</l><l>11</l><l>darkgoldenrod</l></list></block><block s="reportNewList"><list><l>188</l><l>143</l><l>143</l><l>rosybrown</l></list></block></list></block></block></script></block><block s="doSetVar"><l>value</l><custom-block s="✐ no spaces %s"><block var="value"/></custom-block></block><custom-block s="use case-independent comparisons %b"><l><bool>true</bool></l></custom-block><custom-block s="catch %upvar %cs"><l>x11w3c</l><script><block s="doIf"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="value"/><block s="reportListItem"><l>4</l><l/></block></block></autolambda><list></list></block><block var="✐ X11"/><block var="x11w3c"/><l>exact matches</l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>?? multiple exact matches for </l><block var="value"/></list></block></custom-block></script></block><block s="doIf"><block s="reportNot"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><l>4</l><l/></block><custom-block s="substring of %txt before %txt"><block s="reportListItem"><l>4</l><l/></block><block var="value"/></custom-block></block></block></autolambda><list></list></block><block var="✐ X11"/><block var="x11w3c"/><l>partial matches</l></custom-block></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Color name </l><block var="value"/><l> not found.</l></list></block></custom-block></script></block><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportEquals"><custom-block s="substring of %txt before %txt"><block s="reportListItem"><l>4</l><block var="match"/></block><block var="value"/></custom-block><l></l></block></autolambda><list><l>match</l></list></block><block var="partial matches"/><block var="x11w3c"/><l>head matches</l></custom-block><script><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportIsA"><block s="reportLetter"><l><option>last</option></l><block s="reportListItem"><l>4</l><l/></block></block><l><option>number</option></l></block></block></autolambda><list></list></block><block var="head matches"/><block var="x11w3c"/><l>non-numbered matches</l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="non-numbered matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="head matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script></block></script><script><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportIsA"><block s="reportLetter"><l><option>last</option></l><block s="reportListItem"><l>4</l><l/></block></block><l><option>number</option></l></block></block></autolambda><list></list></block><block var="partial matches"/><block var="x11w3c"/><l>non-numbered matches</l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="non-numbered matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="partial matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script></block></script></block></script><comment w="294.6666666666667" collapsed="true">SUBSET throws here if it handles a unique match</comment></custom-block></script></block><custom-block s="✐ initialize variables"></custom-block></script></block-definition><block-definition s="mmap %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportListItem"><l>1</l><block var="lists"/></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="lists"/></block></block><custom-block s="mmap %repRing over %mult%l"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><block var="lists"/></block></custom-block></block></block></script></block-definition><block-definition s="✐ update HSL" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>L</l></list></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><block s="doSetVar"><l>✐ HSL</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><block s="evaluate"><block s="reifyReporter"><script><block s="doSetVar"><l>L</l><block s="reportDifference"><block var="V"/><block s="reportQuotient"><block s="reportProduct"><block var="V"/><block var="S"/></block><l>2</l></block></block></block><block s="doReport"><block s="reportNewList"><list><block var="H"/><block s="reportIfElse"><block s="reportOr"><block s="reportEquals"><block var="L"/><l>0</l></block><block s="reportEquals"><block var="L"/><l>1</l></block></block><l>0</l><block s="reportQuotient"><block s="reportDifference"><block var="V"/><block var="L"/></block><custom-block s="min %s %s"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></custom-block></block></block><block var="L"/></list></block></block></script><list><l>H</l><l>S</l><l>V</l></list></block><custom-block s="HSV color"></custom-block></block></block></block><block s="doIf"><block var="✐ fair?"/><script><block s="doSetVar"><l>✐ raw HSL</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><block s="evaluate"><block s="reifyReporter"><script><block s="doSetVar"><l>L</l><block s="reportDifference"><block var="V"/><block s="reportQuotient"><block s="reportProduct"><block var="V"/><block var="S"/></block><l>2</l></block></block></block><block s="doReport"><block s="reportNewList"><list><block var="H"/><block s="reportIfElse"><block s="reportOr"><block s="reportEquals"><block var="L"/><l>0</l></block><block s="reportEquals"><block var="L"/><l>1</l></block></block><l>0</l><block s="reportQuotient"><block s="reportDifference"><block var="V"/><block var="L"/></block><custom-block s="min %s %s"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></custom-block></block></block><block var="L"/></list></block></block></script><list><l>H</l><l>S</l><l>V</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><l></l><l>100</l></block></autolambda><list></list></block><block var="✐ raw HSV"/></block></block></block></block></script></block></script></block></script></block-definition><block-definition s="min %&apos;a&apos; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportLessThan"><block var="a"/><block var="b"/></block><block var="a"/><block var="b"/></block></block></script></block-definition><block-definition s="✐ update HSV" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>V</l><l>L</l><l>HSL 0-1</l><l>raw HSL 0-1</l></list></block><block s="doSetVar"><l>HSL 0-1</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><l></l><l>100</l></block></autolambda><list></list></block><block var="✐ HSL"/></block></block><block s="doSetVar"><l>L</l><block s="reportListItem"><l>3</l><block var="HSL 0-1"/></block></block><block s="doSetVar"><l>V</l><block s="reportSum"><block var="L"/><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="HSL 0-1"/></block><custom-block s="min %s %s"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></custom-block></block></block></block><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportListItem"><l>1</l><block var="HSL 0-1"/></block><block s="reportIfElse"><block s="reportEquals"><block var="V"/><l>0</l></block><l>0</l><block s="reportDifference"><l>2</l><block s="reportProduct"><l>2</l><block s="reportQuotient"><block var="L"/><block var="V"/></block></block></block></block><block var="V"/></custom-block><block s="doIf"><block var="✐ fair?"/><script><block s="doSetVar"><l>raw HSL 0-1</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><l></l><l>100</l></block></autolambda><list></list></block><block var="✐ raw HSL"/></block></block><block s="doSetVar"><l>L</l><block s="reportListItem"><l>3</l><block var="raw HSL 0-1"/></block></block><block s="doSetVar"><l>V</l><block s="reportSum"><block var="L"/><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="raw HSL 0-1"/></block><custom-block s="min %s %s"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></custom-block></block></block></block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="raw HSL 0-1"/></block><block s="reportIfElse"><block s="reportEquals"><block var="V"/><l>0</l></block><l>0</l><block s="reportDifference"><l>2</l><block s="reportProduct"><l>2</l><block s="reportQuotient"><block var="L"/><block var="V"/></block></block></block></block><block var="V"/></list></block></block></block></script></block></script></block-definition><block-definition s="$brush pen %&apos;dimension&apos;" type="reporter" category="pen"><comment x="0" y="0" w="380.6666666666667" collapsed="false">This block reports the pen size, color, or transparency, in all the same ways that the SET PEN block allows you to set those pen properties. (It will also report the current crayon number, if the pen color was most recently set with SET PEN TO CRAYON.)&#xD;&#xD;See Appendix A of the Snap! Reference Manual for details. </comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>size&#xD;crayon&#xD;color&#xD;fair hue&#xD;transparency&#xD;X11/W3C name&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB vector&#xD;RGB hex&#xD;}&#xD;}</options></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>size</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>size</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>hue</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>hue</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSV)</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>saturation</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>value (brightness)</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>brightness</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>transparency</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>transparency</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB vector</l></block><script><block s="doReport"><custom-block s="RGB color"></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>red</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><custom-block s="RGB color"></custom-block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>green</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><custom-block s="RGB color"></custom-block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>blue</l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><custom-block s="RGB color"></custom-block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB hex</l></block><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><custom-block s="✐ hexchar %s"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><l></l><l>16</l></block></block></custom-block><custom-block s="✐ hexchar %s"><block s="reportModulus"><l></l><l>16</l></block></custom-block></list></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRound"><l></l></block></autolambda><list></list></block><custom-block s="RGB color"></custom-block></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l></list></block></autolambda><list></list></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>HSV vector</l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l>100</l><l></l></block></autolambda><list></list></block><custom-block s="HSV color"></custom-block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>HSL vector</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block var="✐ HSL"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSL)</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block s="reportListItem"><l>2</l><block var="✐ HSL"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>lightness</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block s="reportListItem"><l>3</l><block var="✐ HSL"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>color</l></block><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>color</l></block><block var="✐ color scale"/><l>not set</l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair hue</l></block><script><block s="doIf"><block var="✐ fair?"/><script><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="✐ raw HSL"/></block></block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="✐ raw HSV"/></block></block></script></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSL)</l></block><script><block s="doIf"><block var="✐ fair?"/><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block s="reportListItem"><l>2</l><block var="✐ raw HSL"/></block></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair lightness</l></block><script><block s="doIf"><block var="✐ fair?"/><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block s="reportListItem"><l>3</l><block var="✐ raw HSL"/></block></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair HSL vector</l></block><script><block s="doIf"><block var="✐ fair?"/><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block var="✐ raw HSL"/></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSV)</l></block><script><block s="doIf"><block var="✐ fair?"/><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="doReport"><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair value (brightness)</l></block><script><block s="doIf"><block var="✐ fair?"/><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="doReport"><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair HSV vector</l></block><script><block s="doIf"><block var="✐ fair?"/><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="doReport"><block var="✐ raw HSV"/></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>crayon</l></block><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>crayon</l></block><script><block s="doReport"><block var="✐ last crayon"/></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>X11/W3C name</l></block><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>X11</l></block><script><block s="doReport"><block var="✐ last x11"/></block></script></block><block s="doReport"><l>not set</l></block></script></block></script></block-definition><block-definition s="✐ hexchar %&apos;nybble&apos;" type="reporter" category="pen"><comment x="0" y="0" w="245.33333333333334" collapsed="false">Takes a value from 0 to 15 and reports&#xD;the corresponding hexadecimal digit.&#xD;&#xD;For internal use of the color library.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportLessThan"><block var="nybble"/><l>10</l></block><block var="nybble"/><block s="reportUnicodeAsLetter"><block s="reportSum"><block s="reportUnicode"><l>a</l></block><block s="reportDifference"><block var="nybble"/><l>10</l></block></block></block></block></block></script></block-definition><block-definition s="$brush change pen %&apos;dimension&apos; by %&apos;amount&apos;" type="command" category="pen"><comment x="0" y="0" w="334" collapsed="false">Changes any pen property by the specified amount.  Some color scales can&apos;t be adjusted this way unless the color was first SET using that scale.&#xD;Vectors (e.g., RGB color as a list of three numbers) can be incremented&#xD;by a vector as the amount. X11/W3C names can&apos;t be incremented.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>size&#xD;crayon&#xD;color&#xD;fair hue&#xD;transparency&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB vector&#xD;RGB hex&#xD;}&#xD;}</options></input><input type="%s"></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doDeclareVariables"><list><l>old</l></list></block><block s="doSetVar"><l>old</l><custom-block s="$brush pen %s"><block var="dimension"/></custom-block></block><block s="doIf"><block s="reportEquals"><block var="old"/><l>not set</l></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Dimension </l><block var="dimension"/><l> not set.</l></list></block></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>crayon</l></block><script><custom-block s="$brush set pen to crayon %n"><block s="reportSum"><block var="old"/><block var="amount"/></block></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB hex</l></block><script><custom-block s="error %txt"><l>Sorry, I don&apos;t know how to add in hexadecimal.</l></custom-block></script></block><block s="doIf"><block s="reportIsA"><block var="amount"/><l><option>number</option></l></block><script><custom-block s="$brush set pen %s to %s"><block var="dimension"/><block s="reportSum"><block var="old"/><block var="amount"/></block></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportIsA"><block var="amount"/><l><option>list</option></l></block><script><custom-block s="$brush set pen %s to %s"><block var="dimension"/><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block><list><block var="old"/><block var="amount"/></list></custom-block></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><custom-block s="error %txt"><block s="reportJoinWords"><list><l>I don&apos;t know how to handle </l><block var="amount"/></list></block></custom-block></script></block-definition><block-definition s="✐ make integer RGB" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRound"><l></l></block></autolambda><list></list></block><custom-block s="RGB color"></custom-block></block></block></script></block-definition><block-definition s="✐ subset %&apos;pred&apos; %&apos;data&apos; %&apos;catchtag&apos; %&apos;result&apos;" type="predicate" category="pen"><comment x="0" y="0" w="228" collapsed="false">Don&apos;t ask.&#xD;Only for internal use by the SET PEN block.</comment><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input><input type="%cmdRing"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>best match</l></list></block><block s="doSetVar"><l>result</l><block s="reportKeep"><block var="pred"/><block var="data"/></block></block><block s="doIf"><block s="reportListIsEmpty"><block var="result"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="result"/></block></block><script><block s="doSetVar"><l>best match</l><block s="reportListItem"><l>1</l><block var="result"/></block></block><custom-block s="$brush set pen %s to %s"><l>red</l><block s="reportListItem"><l>1</l><block var="best match"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>green</l><block s="reportListItem"><l>2</l><block var="best match"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>blue</l><block s="reportListItem"><l>3</l><block var="best match"/></block></custom-block><block s="doSetVar"><l>✐ last X11</l><block s="reportListItem"><l>4</l><block var="best match"/></block></block><block s="doSetVar"><l>✐ last set as</l><l>X11</l></block><custom-block s="throw %s"><block var="catchtag"/></custom-block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="✐ no spaces %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportTextSplit"><block var="text"/><l> </l></block></block></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;</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="doIfElse"><block s="reportEquals"><block var="scope"/><l>script</l></block><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (!proc.homeContext.variables.vars[varName]) proc.homeContext.variables.addVar(varName);</l></block><list><block var="each item"/></list></block></script></block></script><script><block s="doDeclareVariables"><list><l>global</l></list></block><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>sprite</l></block><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>global</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (global &amp;&amp; !proc.homeContext.variables.parentFrame.parentFrame.vars[varName]) this.addVariable(varName, true);&#xD;if (!global &amp;&amp; !proc.homeContext.variables.parentFrame.vars[varName]) this.addVariable(varName, false);</l></block><list><block var="each item"/><block var="global"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritance&#xD;ide.refreshPalette();</l></block><list></list></block></script></block></script></block-definition><block-definition s="does var %&apos;name&apos; exist?" type="predicate" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block reports &quot;true&quot; if there is a variable with this given name (input slot) in that context.&#xD;&#xD;It can be a global, sprite or script variable.&#xD;&#xD;Otherwise it reports &quot;false&quot;.</comment><header></header><code></code><translations>pt:a variável _ existe&#xD;ca:existeix la variable _ ?&#xD;es:existe la variable _ ?&#xD;de:existiert var _ ?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;return proc.homeContext.variables.silentFind(varName)? true:false;</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="✐ initialize variables" type="command" category="pen"><comment x="0" y="0" w="180" collapsed="false">Creates a bunch of global variables.&#xD;For internal use by Color library.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><l>✐ last set as</l></custom-block><script><block s="doStopThis"><l><option>this block</option></l></block></script></block><custom-block s="create %s var %mult%txt"><l>global</l><list><l>✐ last set as</l><l>✐ fair?</l><l>✐ color scale</l><l>✐ HSL</l><l>✐ last crayon</l><l>✐ last X11</l><l>✐ raw HSL</l><l>✐ raw HSV</l></list></custom-block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block></script></block-definition><block-definition s="send %&apos;thing&apos; to clipboard" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>thing</l></list><l>if("clipboard" in navigator) {  navigator.clipboard.writeText(thing)} else {alert("I can&apos;t send thing to clipboard.")}</l></block><list><block var="thing"/></list></block></script></block-definition><block-definition s="is %&apos;letter&apos; a vowel?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">a</input></inputs><script><block s="doIfElse"><block s="reportGreaterThan"><block s="reportStringSize"><block var="letter"/></block><l>1</l></block><script><block s="doReport"><l>Error: There can only be 1 letter at a time</l></block></script><script><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="letter"/><l>a</l></block><block s="reportOr"><block s="reportEquals"><block var="letter"/><l>e</l></block><block s="reportOr"><block s="reportEquals"><block var="letter"/><l>i</l></block><block s="reportOr"><block s="reportEquals"><block var="letter"/><l>o</l></block><block s="reportEquals"><block var="letter"/><l>u</l></block></block></block></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="letter"/><l>y</l></block><script><block s="doReport"><l>maybe</l></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script></block></script></block-definition><block-definition s="$flag was clicked %&apos;number&apos; times" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><block s="doIfElse"><block s="reportEquals"><custom-block s="flag counter"></custom-block><block var="number"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="%&apos;number&apos; squared" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">5</input></inputs><script><block s="doReport"><block s="reportProduct"><block var="number"/><block var="number"/></block></block></script></block-definition><block-definition s="reset flag counter" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>flag</l><l>0</l></block></script></block-definition><block-definition s="flag counter" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>flags</l></list></block><block s="doReport"><block var="flags"/></block></script></block-definition><block-definition s="forever if %&apos;thing&apos; then %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%cs"></input></inputs><script><block s="doForever"><script><block s="doIf"><block var="thing"/><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block></script></block-definition><block-definition s="previous costume" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><block s="reportDifference"><block s="getCostumeIdx"></block><l>1</l></block></block></script></block-definition><block-definition s="change costume by %&apos;input&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doSwitchToCostume"><block s="reportSum"><block s="getCostumeIdx"></block><block var="input"/></block></block></script><scripts><script x="157" y="127.19999999999999"><block s="reportDifference"><l></l><l></l></block></script></scripts></block-definition><block-definition s="forever if %&apos;thing&apos; then %&apos;action&apos; else %&apos;action2&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%cs"></input><input type="%cs"></input></inputs><script><block s="doForever"><script><block s="doIfElse"><block var="thing"/><script><block s="doRun"><block var="action"/><list></list></block></script><script><block s="doRun"><block var="action2"/><list></list></block></script></block></script></block></script></block-definition><block-definition s="beep" type="command" category="sound"><header></header><code></code><translations></translations><inputs></inputs><script><block s="playFreq"><l>1000</l></block><block s="doWait"><l>1</l></block><block s="stopFreq"></block></script></block-definition><block-definition s="custom beep at %&apos;number&apos; Hz for %&apos;wait&apos; seconds" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%n">1000</input><input type="%n">1</input></inputs><script><block s="playFreq"><block var="number"/></block><block s="doWait"><block var="wait"/></block><block s="stopFreq"></block></script></block-definition><block-definition s="alarm" type="command" category="sound"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRepeat"><l>10</l><script><custom-block s="custom beep at %n Hz for %n seconds"><l>1200</l><l>0.5</l></custom-block><block s="doWait"><l>0.5</l></block></script></block></script></block-definition><block-definition s="smooth glide to x: %&apos;x&apos; y: %&apos;y&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs></block-definition><block-definition s="while %&apos;thing&apos; do %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doUntil"><block s="reportNot"><block var="thing"/></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="%&apos;number&apos; cubed" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">5</input></inputs><script><block s="doReport"><block s="reportProduct"><block var="number"/><block s="reportProduct"><block var="number"/><block var="number"/></block></block></block></script></block-definition><block-definition s="%&apos;value&apos; nand %&apos;value2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportAnd"><block var="value"/><block var="value2"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="%&apos;value&apos; nor %&apos;value2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportOr"><block var="value"/><block var="value2"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="sprite clicked?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportAnd"><block s="reportMouseDown"></block><block s="reportTouchingObject"><l><option>mouse-pointer</option></l></block></block><script><block s="doWaitUntil"><custom-block s="mouse up?"></custom-block></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="mouse up?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportMouseDown"></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block-definition><block-definition s="typewriter %&apos;text&apos; for %&apos;seconds&apos; secs" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">2</input></inputs><script><block s="doDeclareVariables"><list><l>number</l><l>say</l></list></block><block s="doSetVar"><l>number</l><l>0</l></block><block s="doSetVar"><l>say</l><l></l></block><block s="doRepeat"><block s="reportStringSize"><block var="text"/></block><script><block s="doChangeVar"><l>number</l><l>1</l></block><block s="doSetVar"><l>say</l><block s="reportJoinWords"><list><block var="say"/><block s="reportLetter"><block var="number"/><block var="text"/></block></list></block></block><block s="bubble"><block var="say"/></block><block s="doWait"><l>0</l></block></script></block><block s="doWait"><block var="seconds"/></block><block s="bubble"><l></l></block></script></block-definition><block-definition s="typewriter %&apos;text&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input></inputs><script><block s="doDeclareVariables"><list><l>number</l><l>say</l></list></block><block s="doSetVar"><l>number</l><l>0</l></block><block s="doSetVar"><l>say</l><l></l></block><block s="doRepeat"><block s="reportStringSize"><block var="text"/></block><script><block s="doChangeVar"><l>number</l><l>1</l></block><block s="doSetVar"><l>say</l><block s="reportJoinWords"><list><block var="say"/><block s="reportLetter"><block var="number"/><block var="text"/></block></list></block></block><block s="bubble"><block var="say"/></block><block s="doWait"><l>0</l></block></script></block><block s="bubble"><block var="say"/></block></script></block-definition><block-definition s="while mouse down %&apos;action&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%cs"></input></inputs><script><block s="doIf"><block s="reportMouseDown"></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="if %&apos;var&apos; reached %&apos;number&apos; then do %&apos;action&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_getVarNamesDict</options></input><input type="%n">1</input><input type="%cs"></input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block var="var"/><block s="reportDifference"><block var="number"/><l>1</l></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="for each %&apos;var&apos; in %&apos;number&apos; %&apos;action&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_getVarNamesDict</options></input><input type="%n">1</input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>var</l><l>0</l></block><block s="doRepeat"><block var="number"/><script><block s="doWait"><l>0.1</l></block><block s="doChangeVar"><l>var</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script><scripts><script x="160.4794931875" y="97.000001"><block var="var"/></script></scripts></block-definition><block-definition s="speak %&apos;msg&apos; $nl with language %&apos;accent&apos; accent $nl with pitch %&apos;pitch&apos; $nl with rate %&apos;rate&apos;" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s">Hello World!</input><input type="%s" readonly="true">en<options>English=en&#xD;Spanish=es&#xD;German=de&#xD;French=fr&#xD;Polish=pl&#xD;Chinese=zh&#xD;Japanese=ja</options></input><input type="%n">1</input><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l><l>accent</l><l>pitch</l><l>rate</l></list><l>var utter = new SpeechSynthesisUtterance (msg); utter.lang = accent; utter.pitch = pitch; utter.rate = rate; window.speechSynthesis.speak(utter);</l></block><list><block var="msg"/><block var="accent"/><block var="pitch"/><block var="rate"/></list></block></script></block-definition><block-definition s="// %&apos;trext&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s">Comment</input></inputs></block-definition><block-definition s="typewriter %&apos;text&apos; size %&apos;number2&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>say</l><l>number</l></list></block><block s="doSetVar"><l>number</l><l>0</l></block><block s="doSetVar"><l>say</l><l></l></block><block s="doRepeat"><block s="reportStringSize"><block var="text"/></block><script><block s="doChangeVar"><l>number</l><l>1</l></block><block s="doSetVar"><l>say</l><block s="reportLetter"><block var="number"/><block var="text"/></block></block><block s="write"><block var="say"/><block var="number2"/></block><block s="doWait"><l>0</l></block></script></block></script><scripts><script x="198.5498066875" y="98.00000200000005"><block s="reportJoinWords"><list><block var="say"/><l></l></list></block></script></scripts></block-definition><block-definition s="crash" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>crasher</l></list></block><block s="doSetVar"><l>crasher</l><l>76417285467124612</l></block><block s="doForever"><script><custom-block s="crash"></custom-block><block s="doSetVar"><l>crasher</l><block s="reportJoinWords"><list><block var="crasher"/><block var="crasher"/></list></block></block></script></block></script></block-definition><block-definition s="pi" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275900994657640789512694683983525957098258226205224894077267194782684826014769909026401363944374553050682034962524517493996514314298091906592509372216964615157098583874105978859597729754989301617539284681382686838689427741559918559252459539594310499725246808459872736446958486538367362226260991246080512438843904512441365497627807977156914359977001296160894416948685558484063534220722258284886481584560285060168427394522674676788952521385225499546667278239864565961163548862305774564980355936345681743241125150760694794510965960940252288797108931456691368672287489405601015033086179286809208747609178249385890097149096759852613655497818931297848216829989487226588048575640142704775551323796414515237462343645428584447952658678210511413547357395231134271661021359695362314429524849371871101457654035902799344037420073105785390621983874478084784896833214457138687519435064302184531910484810053706146806749192781911979399520614196634287544406437451237181921799983910159195618146751426912397489409071864942319615679452080951465502252316038819301420937621378559566389377870830390697920773467221825625996615014215030680384477345492026054146659252014974428507325186660021324340881907104863317346496514539057962685610055081066587969981635747363840525714591028970641401109712062804390397595156771577004203378699360072305587631763594218731251471205329281918261861258673215791984148488291644706095752706957220917567116722910981690915280173506712748583222871835209353965725121083579151369882091444210067510334671103141267111369908658516398315019701651511685171437657618351556508849099898599823873455283316355076479185358932261854896321329330898570642046752590709154814165498594616371802709819943099244889575712828905923233260972997120844335732654893823911932597463667305836041428138830320382490375898524374417029132765618093773444030707469211201913020330380197621101100449293215160842444859637669838952286847831235526582131449576857262433441893039686426243410773226978028073189154411010446823252716201052652272111660396665573092547110557853763466820653109896526918620564769312570586356620185581007293606598764861179104533488503461136576867532494416680396265797877185560845529654126654085306143444318586769751456614068007002378776591344017127494704205622305389945613140711270004078547332699390814546646458807972708266</l></block></script></block-definition><block-definition s="infinity" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>Infinity</l></block></script></block-definition><block-definition s="factorial %&apos;n&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">5</input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="n"/><l>0</l></block><l>0</l><block s="reportProduct"><block var="n"/><custom-block s="factorial %n"><block s="reportDifference"><block var="n"/><l>1</l></block></custom-block></block></block></block></script><scripts><script x="230.7177764375001" y="13.833338333333302"><block var="n"/></script></scripts></block-definition><block-definition s="if %&apos;thing?&apos; then %&apos;action&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%s"></input></inputs><script><block s="doIf"><block var="thing?"/><script><block s="doReport"><block var="action"/></block></script></block></script></block-definition><block-definition s="run function ( %&apos;params&apos; ) { %&apos;body&apos; } with %&apos;inputs&apos;" type="command" category="control"><header></header><code></code><translations>es:ejecutar función ( _ ) { _ } con _&#xD;</translations><inputs><input type="%mult%s"></input><input type="%code"></input><input type="%mult%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><block var="params"/><block var="body"/></block><block var="inputs"/></block></script></block-definition><block-definition s="call function ( %&apos;params&apos; ) { %&apos;body&apos; } with %&apos;inputs&apos;" type="reporter" category="control"><header></header><code></code><translations>es:llamar función ( _ ) { _ } con _&#xD;</translations><inputs><input type="%mult%s"></input><input type="%code">return 0;</input><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><block var="params"/><block var="body"/></block><block var="inputs"/></block></block></script></block-definition><block-definition s="switch to dev mode" type="command" category="other"><header></header><code></code><translations>es:cambiar a modo des&#xD;</translations><inputs></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>ide</l></list><l>ide.switchToDevMode();</l><list><custom-block s="ide"></custom-block></list></custom-block></script></block-definition><block-definition s="switch to user mode" type="command" category="other"><header></header><code></code><translations>es:cambiar a modo usuario&#xD;</translations><inputs></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>ide</l></list><l>ide.switchToUserMode();</l><list><custom-block s="ide"></custom-block></list></custom-block></script></block-definition><block-definition s="ide" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l></l></list><l>return this.parentThatIsA(IDE_Morph);</l><list><l></l></list></custom-block></block></script></block-definition><block-definition s="in dev mode?" type="predicate" category="other"><header></header><code></code><translations>es:¿en modo des?&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>world</l></list><l>return world.isDevMode;</l><list><custom-block s="world"></custom-block></list></custom-block></block></script></block-definition><block-definition s="inspect %&apos;obj&apos;" type="command" category="other"><header></header><code></code><translations>es:inspeccionar _&#xD;</translations><inputs><input type="%obj"></input></inputs><script><block s="doIf"><block s="reportNot"><custom-block s="in dev mode?"></custom-block></block><script><custom-block s="switch to dev mode"></custom-block></script></block><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list></list><l>this.inspect(obj);</l><list></list></custom-block></script></block-definition><block-definition s="save project" type="command" category="other"><header></header><code></code><translations>es:guadar projeto&#xD;</translations><inputs></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>ide</l></list><l>ide.save();</l><list><custom-block s="ide"></custom-block></list></custom-block></script></block-definition><block-definition s="world" type="reporter" category="sensing"><header></header><code></code><translations>es:mundo&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>ide</l></list><l>return ide.world();</l><list><custom-block s="ide"></custom-block></list></custom-block></block></script></block-definition><block-definition s="this process" type="reporter" category="sensing"><header></header><code></code><translations>es:este proceso&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>proc</l></list><l>proc.toString = function() {return "a SnapProcess";};&#xD;return proc;</l><list></list></custom-block></block></script></block-definition><block-definition s="this script is clicked?" type="predicate" category="control"><header></header><code></code><translations>es:¿esta secuencia tiene clic?&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>proc</l></list><l>return proc.isClicked;</l><list><custom-block s="this process"></custom-block></list></custom-block></block></script></block-definition><block-definition s="warped?" type="predicate" category="control"><header></header><code></code><translations>es:¿atómica?&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>proc</l></list><l>return proc.isAtomic;</l><list><custom-block s="this process"></custom-block></list></custom-block></block></script></block-definition><block-definition s="%&apos;thing&apos; assert type(s) %&apos;typeString&apos;" type="command" category="operators"><comment x="0" y="0" w="306" collapsed="false">make sure &quot;thing&quot; is a particular type or any of a number of types&#xD;and raise an error if not&#xD;use responsibly wrt performance implications</comment><header></header><code></code><translations>es:_ aseverar tipo(s) _&#xD;</translations><inputs><input type="%s"></input><input type="%mult%txt"></input></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>proc</l><l>thing</l><l>typeString</l></list><l>proc.assertType(thing, typeString.asArray());</l><list><custom-block s="this process"></custom-block><block var="thing"/><block var="typeString"/></list></custom-block></script></block-definition><block-definition s="WiP: create/recolor category %&apos;name&apos; color %&apos;r&apos; %&apos;g&apos; %&apos;b&apos;" type="command" category="other"><comment x="0" y="0" w="201" collapsed="false">Blocks in custom categories are saved in their categories, but the categories themselves are not; running create category with the same name gets the block back in the palette, but it seems that blocks in the editor are obsolete.</comment><header></header><code></code><translations>es:TeP: crear/recolorear categoría _ color _ _ _&#xD;</translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>SpMoPr</l><l>name</l><l>r</l><l>g</l><l>b</l><l>ide</l></list><l>if(name != "") {&#xD;const cats = SpMoPr.categories;&#xD;if(!cats.includes(name)) {cats.push(name);};&#xD;SpMoPr.blockColor[name] = new Color(r, g, b, 1);&#xD;ide.createCategories();&#xD;ide.reactToWorldResize(world.bounds.copy());&#xD;ide.flushBlocksCache();&#xD;ide.refreshPalette();&#xD;}</l><list><custom-block s="SpriteMorph.prototype"></custom-block><block var="name"/><block var="r"/><block var="g"/><block var="b"/><custom-block s="ide"></custom-block></list></custom-block></script></block-definition><block-definition s="%&apos;property&apos; of %&apos;object&apos;" type="reporter" category="operators"><header></header><code></code><translations>es:_ de _&#xD;</translations><inputs><input type="%s"></input><input type="%obj"></input></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>property</l><l>object</l></list><l>return object[property];</l><list><block var="property"/><block var="object"/></list></custom-block></block></script></block-definition><block-definition s="SpriteMorph.prototype" type="reporter" category="sensing"><header></header><code></code><translations>es:SpriteMorph.prototipo&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list></list><l>return SpriteMorph.prototype;</l><list></list></custom-block></block></script></block-definition><block-definition s="hello" type="command" category="test"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="that obsolete block should be this" type="command" category="New Category"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="test" type="command" category="invisible"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="testest %&apos;theInvisibleZebra&apos;" type="command" category="invisible"><header></header><code></code><translations></translations><inputs><input type="%cs"></input></inputs></block-definition><block-definition s="scroll text %&apos;txt&apos; $nl setter %&apos;set&apos; $nl limit number of characters %&apos;lim&apos; $nl scroll speed %&apos;spd&apos; characters per second $nl delay %&apos;dly&apos; seconds $nl" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">A really long text string to scroll in a variable, object property, or whatever thing can be assigned a text string.</input><input type="%cmdRing"></input><input type="%n">8</input><input type="%n">5</input><input type="%n">3</input></inputs><script><block s="fork"><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>characters</l></list></block><block s="doSetVar"><l>characters</l><block s="reportTextSplit"><block var="txt"/><l><option>letter</option></l></block></block><block s="doForever"><script><block s="doRun"><block var="set"/><list><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="characters"/></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block var="lim"/></block></block></block></list></block><block s="doWait"><block var="dly"/></block><block s="doRepeat"><block s="reportListLength"><block var="characters"/></block><script><block s="doWarp"><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="characters"/></block><block var="characters"/></block><block s="doDeleteFromList"><l>1</l><block var="characters"/></block></script></block><block s="doRun"><block var="set"/><list><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="characters"/></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block var="lim"/></block></block></block></list></block><block s="doWait"><block s="reportQuotient"><l>1</l><block var="spd"/></block></block></script></block></script></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="default mouse" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l></l></list><l>document.body.style.cursor = &apos;&apos;;</l></block><list></list></block></script></block-definition><block-definition s="arrow large mouse" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l></l></list><l>document.getElementsByTagName("body")[0].style.cursor = "url(&apos;http://wiki-devel.sugarlabs.org/images/e/e2/Arrow.cur&apos;), auto";</l></block><list></list></block></script></block-definition><block-definition s="global variables %&apos;names&apos;" type="command" category="variables"><header></header><code></code><translations>pt:cria as variáveis globais _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>name</l></list><l>if ((typeof name) != "string") {    throw new Error("name isn&apos;t a string: " + name);}if (name != "") this.addVariable(name, true);</l></block><list><block var="each item"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritanceide.refreshPalette();</l></block><list></list></block></script></block-definition><block-definition s="sprite-local variables %&apos;names&apos;" type="command" category="variables"><header></header><code></code><translations>pt:cria as variáveis de objecto _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>name</l></list><l>if ((typeof name) != "string") {    throw new Error("name isn&apos;t a string: " + name);}if (name != "") this.addVariable(name, false);</l></block><list><block var="each item"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritanceide.refreshPalette();</l></block><list></list></block></script></block-definition><block-definition s="does variable %&apos;var&apos; exist?" type="predicate" category="variables"><header></header><code></code><translations>pt:a variável _ existe&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varname</l></list><l>if ((typeof varname) != "string") {    throw new Error("name isn&apos;t a string: " + varname);}return this.isVariableNameInUse(varname, true);</l></block><list><block var="var"/></list></block></block></script></block-definition><block-definition s="variable %&apos;var&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>v</l></list><l>return this.variables.getVar(v)</l></block><list><block var="var"/></list></block></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>v</l></list><l>throw new ReferenceError(`Variable ${v} does not exist.`)</l></block><list><block var="var"/></list></block></script></block-definition><block-definition s="show all globals" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doForEach"><l>var</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return new List(Object.getOwnPropertyNames(this.globalVariables().vars))</l></block><list></list></block><script><block s="doShowVar"><l></l></block></script></block></script></block-definition><block-definition s="hide all globals" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doForEach"><l>var</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return new List(Object.getOwnPropertyNames(this.globalVariables().vars))</l></block><list></list></block><script><block s="doHideVar"><l></l></block></script></block></script></block-definition><block-definition s="delete variable %&apos;var&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>v</l></list><l>this.deleteVariable(v)</l></block><list><block var="var"/></list></block></script></block></script></block-definition><block-definition s="set variable %&apos;var&apos; watcher %&apos;type&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%s" readonly="true">normal        &#xD;        <options>normallargeslider</options></input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>v,t</l></list><l>var watcher = this.findVariableWatcher(v)switch(t) {case "normal": watcher.styleNormal(); break;case "large": watcher.styleLarge(); break;case "slider": watcher.styleSlider(); break;}</l></block><list><block var="var"/><block var="type"/></list></block></script></block></script></block-definition><block-definition s="variable %&apos;var&apos; slider min" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>v</l></list><l>return this.findVariableWatcher(v).sliderMorph.start</l></block><list><block var="var"/></list></block></block></script></block><block s="doReport"><l>NaN</l></block></script></block-definition><block-definition s="variable %&apos;var&apos; slider max" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>v</l></list><l>return this.findVariableWatcher(v).sliderMorph.stop</l></block><list><block var="var"/></list></block></block></script></block><block s="doReport"><l>NaN</l></block></script></block-definition><block-definition s="set variable %&apos;var&apos; slider min %&apos;val&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%n"></input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>v,u</l></list><l>this.findVariableWatcher(v).sliderMorph.setStart(u)</l></block><list><block var="var"/><block var="val"/></list></block></script></block></script></block-definition><block-definition s="set variable %&apos;var&apos; slider max %&apos;val&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%n"></input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>v,u</l></list><l>this.findVariableWatcher(v).sliderMorph.setStop(u)</l></block><list><block var="var"/><block var="val"/></list></block></script></block></script></block-definition><block-definition s="move variable %&apos;var&apos; watcher to x: %&apos;x&apos; y: %&apos;y&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>v,x,y</l></list><l>var watcher = this.findVariableWatcher(v)//Copied from SpriteMorph&apos;s gotoXY methodvar stage = this.parentThatIsA(StageMorph),  newX,  newY,  dest;if(!stage) {return;}x = !isFinite(+x) ? 0 : +x;y = !isFinite(+y) ? 0 : +y;newX = stage.center().x + x * stage.scale;newY = stage.center().y - y * stage.scale;dest = new Point(newX, newY).subtract(watcher.extent().divideBy(2));watcher.setPosition(dest)</l></block><list><block var="var"/><block var="x"/><block var="y"/></list></block></script></block></script></block-definition><block-definition s="change variable %&apos;var&apos; watcher x by %&apos;delta&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%n">10</input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>alert("Work in Progress")</l></block><list></list></block></script></block></script><scripts><script x="10" y="136"><custom-block s="move variable %s watcher to x: %n y: %n"><block var="var"/><block s="reportSum"><custom-block s="variable %s watcher x"><block var="var"/></custom-block><block var="delta"/></block><custom-block s="variable %s watcher y"><block var="var"/></custom-block></custom-block></script></scripts></block-definition><block-definition s="set variable %&apos;var&apos; watcher x to %&apos;x&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%n">0</input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>alert("Work in Progress")</l></block><list></list></block></script></block></script><scripts><script x="10" y="136"><custom-block s="move variable %s watcher to x: %n y: %n"><block var="var"/><block var="x"/><custom-block s="variable %s watcher y"><block var="var"/></custom-block></custom-block></script></scripts></block-definition><block-definition s="change variable %&apos;var&apos; watcher y by %&apos;delta&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%n">10</input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>alert("Work in Progress")</l></block><list></list></block></script></block></script><scripts><script x="10" y="136"><custom-block s="move variable %s watcher to x: %n y: %n"><block var="var"/><custom-block s="variable %s watcher x"><block var="var"/></custom-block><block s="reportSum"><custom-block s="variable %s watcher y"><block var="var"/></custom-block><block var="delta"/></block></custom-block></script></scripts></block-definition><block-definition s="set variable %&apos;var&apos; watcher y to %&apos;y&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%n">0</input></inputs><script><block s="doIf"><custom-block s="does variable %s exist?"><block var="var"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>alert("Work in Progress")</l></block><list></list></block></script></block></script><scripts><script x="10" y="136.00000000000003"><custom-block s="move variable %s watcher to x: %n y: %n"><block var="var"/><custom-block s="variable %s watcher x"><block var="var"/></custom-block><block var="y"/></custom-block></script></scripts></block-definition><block-definition s="variable %&apos;var&apos; watcher x" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><l>Work in Progress</l></block></script></block-definition><block-definition s="variable %&apos;var&apos; watcher y" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><l>Work in Progress</l></block></script></block-definition><block-definition s="swap %&apos;a&apos; ⇄ %&apos;b&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input><input type="%s">&#xD;          &#xD;        <options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><block s="reportAnd"><custom-block s="does variable %s exist?"><block var="a"/></custom-block><custom-block s="does variable %s exist?"><block var="b"/></custom-block></block><script><block s="doRun"><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>temp</l></list></block><block s="doSetVar"><l>temp</l><custom-block s="variable %s"><block var="a"/></custom-block></block><block s="doSetVar"><l></l><custom-block s="variable %s"><block var="b"/></custom-block></block><block s="doSetVar"><l></l><block var="temp"/></block></script><list></list></block><list><block var="a"/><block var="b"/></list></block></script></block></script></block-definition><block-definition s="%&apos;message&apos; received?" type="predicate" category="control"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportEquals"><block s="getLastMessage"></block><block var="message"/></block></block></script></block-definition><block-definition s="%&apos;Text&apos; contains %&apos;value&apos; in %&apos;Caps?&apos; ?" type="predicate" category="operators"><comment x="0" y="0" w="196" collapsed="false">This block is like Scratch&apos;s &lt;(text) contains (text)&gt; predicate. The only thing different is that you can choose to have caps sensitive on or off, which is a feature Scratch doesn&apos;t have.&#xD;&#xD;HELP:&#xD;If the text you put in the first input contains the text you put in the second input, it will say true. The drop down menu on the right allows you to choose between caps sensitive or no caps sensitive. </comment><header></header><code></code><translations></translations><inputs><input type="%s">Hello World</input><input type="%s">World</input><input type="%n">0<options>Cap Senstive=1&#xD;No Cap Sensitive=0</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="Caps?"/><l>1</l></block><script><block s="doReport"><block s="reportGreaterThan"><block s="reportListLength"><block s="reportTextSplit"><block var="Text"/><block var="value"/></block></block><l>1</l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="Caps?"/><l>0</l></block><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>value</l><block s="reportTextSplit"><block var="value"/><l><option>letter</option></l></block></block><block s="doSetVar"><l>Text</l><block s="reportTextSplit"><block var="Text"/><l><option>letter</option></l></block></block><block s="doForEach"><l>variable</l><block s="reportNewList"><list><block var="Text"/><block var="value"/></list></block><script><block s="doSetVar"><l>a</l><l>0</l></block><block s="doForEach"><l>item</l><block var="variable"/><script><block s="doChangeVar"><l>a</l><l>1</l></block><block s="doIf"><block s="reportAnd"><block s="reportLessThan"><block s="reportUnicode"><block var="item"/></block><block s="reportUnicode"><l>Z</l></block></block><block s="reportGreaterThan"><block s="reportUnicode"><block var="item"/></block><l>64</l></block></block><script><block s="doReplaceInList"><block var="a"/><block var="variable"/><block s="reportUnicodeAsLetter"><block s="reportSum"><block s="reportUnicode"><block var="item"/></block><l>32</l></block></block></block></script></block></script></block></script></block><block s="doReport"><block s="reportGreaterThan"><block s="reportListLength"><block s="reportTextSplit"><block s="reportJoinWords"><block var="Text"/></block><block s="reportJoinWords"><block var="value"/></block></block></block><l>1</l></block></block></script></block></script><script><block s="doReport"><l></l></block></script></block></script></block></script></block-definition><block-definition s="%&apos;t1&apos; == %&apos;t2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="%s contains %s in %n ?"><block var="t1"/><block var="t2"/><l>1</l></custom-block></block></script></block-definition><block-definition s="label %&apos;text&apos; of size %&apos;size&apos;" type="command" category="pen"><comment x="0" y="0" w="90" collapsed="false">LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + &apos;px monospace&apos;;&#xD;context.textAlign = &apos;left&apos;;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/></list></block></script></block-definition><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; with %&apos;step&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%s"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>next</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>next</l><block s="reportDifference"><l></l><custom-block s="if %b then %anyUE else %anyUE"><block s="reportGreaterThan"><block var="step"/><l>0</l></block><block var="step"/><l>1</l></custom-block></block></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>next</l><custom-block s="if %b then %anyUE else %anyUE"><block s="reportGreaterThan"><block var="step"/><l>0</l></block><block var="step"/><l>1</l></custom-block></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="next"/></block></script></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script></block></script></block-definition><block-definition s="tell %&apos;sprite&apos; to %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportAttributeOf"><block var="action"/><block var="sprite"/></block><list></list></block></script></block-definition><block-definition s="ask %&apos;sprite&apos; for %&apos;expression&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportAttributeOf"><block var="expression"/><block var="sprite"/></block><list></list></block></block></script></block-definition><block-definition s="dessine diam %&apos;petit&apos; / %&apos;grand&apos; %&apos;nb&apos; tours" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>tours</l></list></block><block s="doSetVar"><l>tours</l><custom-block s="if %b then %anyUE else %anyUE"><block s="reportEquals"><block var="nb"/><l>0</l></block><block s="reportQuotient"><block var="petit"/><custom-block s="PGCD de %s et %s"><block var="grand"/><block var="petit"/></custom-block></block><block var="nb"/></custom-block></block><custom-block s="for %upvar = %n to %n with %s %cs"><l>i</l><l>0</l><block s="reportSum"><block s="reportProduct"><block var="tours"/><l>360</l></block><l>0</l></block><block var="step"/><script><block s="turn"><block var="step"/></block><custom-block s="tell %s to %cs"><l>Pt Roue</l><script><block s="turnLeft"><block s="reportProduct"><block s="reportQuotient"><block s="reportAttributeOf"><l><option>size</option></l><l>Gd Roue</l></block><block s="reportAttributeOf"><l><option>size</option></l><l>Pt Roue</l></block></block><block var="step"/></block></block></script></custom-block><custom-block s="tell %s to %cs"><l>Stylo</l><script><block s="doStamp"></block></script></custom-block></script></custom-block></script></block-definition><block-definition s="PGCD de %&apos;a&apos; et %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block s="reportModulus"><block var="a"/><block var="b"/></block><l>0</l></block><script><block s="doReport"><block var="b"/></block></script><script><block s="doReport"><custom-block s="PGCD de %s et %s"><block var="b"/><block s="reportModulus"><block var="a"/><block var="b"/></block></custom-block></block></script></block></script></block-definition><block-definition s="PPCM de %&apos;a&apos; et %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportMonadic"><l><option>abs</option></l><block s="reportProduct"><block var="a"/><block var="b"/></block></block><custom-block s="PGCD de %s et %s"><block var="a"/><block var="b"/></custom-block></block></block></script></block-definition><block-definition s="spiro_init petit %&apos;petit&apos; / grand %&apos;grand&apos; position %&apos;pos&apos; direction %&apos;dir&apos; couleur %&apos;couleur&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="tell %s to %cs"><l>Pt Roue</l><script><block s="doSetVar"><l>Size</l><block s="reportProduct"><block s="reportAttributeOf"><l><option>size</option></l><l>Gd Roue</l></block><block s="reportQuotient"><block var="petit"/><block var="grand"/></block></block></block><block s="setScale"><block var="Size"/></block><block s="doSetVar"><l>Direction</l><block s="reportProduct"><block var="dir"/><block s="reportQuotient"><l>360</l><block var="petit"/></block></block></block><block s="gotoXY"><block s="reportProduct"><block s="reportDifference"><block s="reportAttributeOf"><l><option>size</option></l><l>Gd Roue</l></block><block s="getScale"></block></block><l>1.65</l></block><l>0</l></block><block s="setHeading"><l>90</l></block></script></custom-block><custom-block s="tell %s to %cs"><l>Stylo</l><script><block s="setScale"><l>30</l></block><block s="setEffect"><l><option>color</option></l><block var="couleur"/></block><block s="gotoXY"><block s="reportDifference"><block s="reportProduct"><block s="reportAttributeOf"><l><option>size</option></l><l>Gd Roue</l></block><l>1.65</l></block><block s="reportProduct"><block var="pos"/><l>2</l></block></block><l>0</l></block></script></custom-block><custom-block s="tell %s to %cs"><l>Pt Roue</l><script><block s="turn"><block var="Direction"/></block></script></custom-block></script></block-definition><block-definition s="# %&apos;comment&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%code">your comment here</input></inputs></block-definition><block-definition s="Root" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>members</l><l>primitives</l><l>self</l></list></block><block s="doSetVar"><l>members</l><block s="reportNewList"><list></list></block></block><custom-block s="# %code"><l>primitives:&#xD;_add    : add member&#xD;_search : search member&#xD;_remove : remove member&#xD;_list   : list members&#xD;_nil    : nil object</l></custom-block><block s="doDeclareVariables"><list><l>_add</l><l>_remove</l><l>_search</l><l>_list</l><l>_nil</l></list></block><block s="doSetVar"><l>_remove</l><block s="reifyScript"><script><block s="doSetVar"><l>members</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><l>1</l><l/></block><block var="member"/></block></block></autolambda><list></list></block><block var="members"/></block></block></script><list><l>member</l></list></block></block><block s="doSetVar"><l>_add</l><block s="reifyScript"><script><block s="doRun"><block var="_remove"/><list><block var="member"/></list></block><block s="doAddToList"><block s="reportNewList"><list><block var="member"/><block var="value"/></list></block><block var="members"/></block></script><list><l>member</l><l>value</l></list></block></block><block s="doSetVar"><l>_search</l><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>filter</l></list></block><block s="doSetVar"><l>filter</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>1</l><l/></block><block var="member"/></block></autolambda><list></list></block><block var="members"/></block></block><block s="doIfElse"><block s="reportNot"><block var="filter"/></block><script><block s="doReport"><block s="reportNewList"><list><l>_nil</l><l>nil</l></list></block></block></script><script><block s="doReport"><block var="filter"/></block></script></block></script><list><l>member</l></list></block></block><block s="doSetVar"><l>_list</l><block var="members"/></block><block s="doSetVar"><l>_nil</l><l>nil</l></block><block s="doSetVar"><l>primitives</l><block s="reportNewList"><list><block s="reportNewList"><list><l>_add</l><block var="_add"/></list></block><block s="reportNewList"><list><l>_search</l><block var="_search"/></list></block><block s="reportNewList"><list><l>_remove</l><block var="_remove"/></list></block><block s="reportNewList"><list><l>_list</l><block var="_list"/></list></block><block s="reportNewList"><list><l>_nil</l><block var="_nil"/></list></block></list></block></block><custom-block s="# %code"><l>publish all primitives</l></custom-block><custom-block s="# %code"><l>my self</l></custom-block><block s="doSetVar"><l>self</l><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>1</l><l/></block><block var="message"/></block></autolambda><list></list></block><block var="primitives"/></block></block></autolambda><list><l>message</l></list></block></block><block s="doReport"><block var="self"/></block></script></block-definition><block-definition s="Class %&apos;name&apos; extends %&apos;parents&apos; implements %&apos;interfaces&apos; %&apos;definition&apos; %&apos;root&apos; %&apos;this&apos; %&apos;super&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%mult%s"></input><input type="%mult%s"></input><input type="%cs"></input><input type="%upvar"></input><input type="%upvar"></input><input type="%upvar"></input></inputs><script><block s="doSetVar"><l>root</l><block s="reportIfElse"><block s="reportGreaterThan"><block s="reportListLength"><block var="parents"/></block><l>0</l></block><block s="evaluate"><block s="reportListItem"><l>1</l><block var="parents"/></block><list><l>root</l></list></block><custom-block s="Root"></custom-block></block></block><custom-block s="# %code"><l>parents list&#xD;(hidden)</l></custom-block><block s="doForEach"><l>parent</l><block var="parents"/><script><block s="doForEach"><l>item</l><block s="evaluate"><block s="evaluate"><block var="parent"/><list><l>root</l></list></block><list><l>_list</l></list></block><script><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><block s="reportListItem"><l>1</l><block var="item"/></block><block s="reportListItem"><l>2</l><block var="item"/></block></list></block></script></block></script></block><block s="doSetVar"><l>this</l><block s="reifyScript"><script><block s="doReport"><block s="reportListItem"><l>2</l><block s="evaluate"><block s="evaluate"><block var="root"/><list><l>_search</l></list></block><list><block var="message"/></list></block></block></block></script><list><l>message</l></list></block></block><block s="doSetVar"><l>super</l><block var="parents"/></block><custom-block s="# %code"><l>define this</l></custom-block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><l>this</l><block var="this"/></list></block><custom-block s="# %code"><l>define super (get parents)</l></custom-block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><l>super</l><block var="super"/></list></block><custom-block s="# %code"><l>define root</l></custom-block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><l>root</l><block var="root"/></list></block><custom-block s="# %code"><l>implement class definition</l></custom-block><block s="doRun"><block var="definition"/><list></list></block><custom-block s="# %code"><l>define class&#xD;!!! IMPORTANT !!!&#xD;the following block should come after class &#xD;implementation</l></custom-block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><l>class</l><block var="name"/></list></block><block s="doDeclareVariables"><list><l>missing</l></list></block><block s="doSetVar"><l>missing</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportNot"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="evaluate"><block var="this"/><list><block var="#i"/></list></block><l>nil</l></block></autolambda><list><l>#i</l></list></block><block var="#1"/></block></block></block></autolambda><list><l>#1</l></list></block><block var="interfaces"/></block></block><block s="doIfElse"><block s="reportNot"><block var="missing"/></block><script><block s="doReport"><block var="this"/></block></script><script><block s="doReport"><block s="reportNewList"><list><l>This interface is not implemented</l><block var="missing"/></list></block></block></script></block></script></block-definition><block-definition s="%&apos;object&apos; . %&apos;member&apos; = %&apos;value&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>root</l><l>has_setter</l><l>is_member</l><l>class</l></list></block><block s="doSetVar"><l>root</l><block s="evaluate"><block var="object"/><list><l>root</l></list></block></block><block s="doSetVar"><l>class</l><block s="evaluate"><block var="object"/><list><l>class</l></list></block></block><block s="doSetVar"><l>has_setter</l><block s="reportNot"><block s="reportEquals"><block s="evaluate"><block var="object"/><list><block s="reportJoinWords"><list><l>set</l><block var="member"/></list></block></list></block><l>nil</l></block></block></block><block s="doSetVar"><l>is_member</l><block s="reportNot"><block s="reportEquals"><block s="evaluate"><block var="object"/><list><block var="member"/></list></block><l>nil</l></block></block></block><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="class"/><l>nil</l></block><block var="is_member"/></block><script><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_remove</l></list></block><list><block var="member"/></list></block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><block var="member"/><block var="value"/></list></block></script><script><block s="doIf"><block var="has_setter"/><script><block s="doRun"><block s="evaluate"><block var="object"/><list><block s="reportJoinWords"><list><l>set</l><block var="member"/></list></block></list></block><list><block var="value"/></list></block></script></block></script></block></script></block-definition><block-definition s="%&apos;object&apos; . %&apos;member&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>root</l><l>has_getter</l><l>is_member</l></list></block><block s="doSetVar"><l>root</l><block s="evaluate"><block var="object"/><list><l>root</l></list></block></block><block s="doSetVar"><l>has_getter</l><block s="reportNot"><block s="reportEquals"><block s="evaluate"><block var="object"/><list><block s="reportJoinWords"><list><l>get</l><block var="member"/></list></block></list></block><l>nil</l></block></block></block><block s="doSetVar"><l>is_member</l><block s="reportNot"><block s="reportEquals"><block s="evaluate"><block var="object"/><list><block var="member"/></list></block><l>nil</l></block></block></block><block s="doIfElse"><block var="is_member"/><script><block s="doReport"><block s="reportListItem"><l>2</l><block s="evaluate"><block s="evaluate"><block var="root"/><list><l>_search</l></list></block><list><block var="member"/></list></block></block></block></script><script><block s="doIf"><block var="has_getter"/><script><block s="doRun"><block s="evaluate"><block var="object"/><list><block s="reportJoinWords"><list><l>get</l><block var="member"/></list></block></list></block><list></list></block></script></block></script></block></script></block-definition><block-definition s="%&apos;object&apos; . %&apos;member&apos; ( %&apos;params&apos; )" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%mult%s"></input></inputs><script><block s="doRun"><custom-block s="%s . %s"><block var="object"/><block var="member"/></custom-block><block var="params"/></block></script></block-definition><block-definition s="Object" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="Class %s extends %mult%s implements %mult%s %cs %upvar %upvar %upvar"><l>Object</l><list></list><list><l>init</l></list><script><custom-block s="# %code"><l>set a member&#xD;It is recommended to use a Setter block instead "set"</l></custom-block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><l>set</l><block s="reifyScript"><script><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_remove</l></list></block><list><block var="member"/></list></block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><block var="member"/><block var="value"/></list></block></script><list><l>member</l><l>value</l></list></block></list></block><custom-block s="# %code"><l>get a member&#xD;It is recommended to use a Getter block instead "get"</l></custom-block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><l>get</l><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><block s="evaluate"><block s="evaluate"><block var="root"/><list><l>_search</l></list></block><list><block var="member"/></list></block></block></autolambda><list><l>member</l></list></block></list></block><custom-block s="# %code"><l>default constructor</l></custom-block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><block s="evaluate"><block var="this"/><list><l>class</l></list></block><block var="this"/></list></block><block s="doReport"><block var="this"/></block></script><l>root</l><l>this</l><l>super</l></custom-block></block></script></block-definition><block-definition s="Interface %&apos;attributes&apos; %&apos;methods&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%mult%s"></input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>i</l></list></block><block s="doSetVar"><l>i</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="attributes"/><script><block s="doAddToList"><block var="item"/><block var="i"/></block></script></block><block s="doForEach"><l>item</l><block var="methods"/><script><block s="doAddToList"><block var="item"/><block var="i"/></block></script></block><block s="doReport"><block var="i"/></block></script></block-definition><block-definition s="Point" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="Class %s extends %mult%s implements %mult%s %cs %upvar %upvar %upvar"><l>Point</l><list><custom-block s="Object"></custom-block></list><list></list><script><block s="doDeclareVariables"><list><l>_x</l><l>_y</l><l>_translate</l><l>_dot</l><l>_line_to</l><l>_draw_line_to</l><l>_r</l><l>_angle</l><l>_radial</l><l>_clone</l><l>_to_cartesian</l><l>_to_radial</l></list></block><custom-block s="# %code"><l>private members</l></custom-block><block s="doSetVar"><l>_x</l><l>0</l></block><block s="doSetVar"><l>_y</l><l>0</l></block><block s="doSetVar"><l>_r</l><l>0</l></block><block s="doSetVar"><l>_radial</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="# %code"><l>0 to the east&#xD;90 to the north</l></custom-block><block s="doSetVar"><l>_angle</l><l>0</l></block><custom-block s="# %code"><l>private methods</l></custom-block><block s="doSetVar"><l>_translate</l><block s="reifyScript"><script><block s="doIfElse"><block var="radial"/><script><block s="doSetVar"><l>_radial</l><block var="radial"/></block><block s="doSetVar"><l>_r</l><block var="x"/></block><block s="doSetVar"><l>_angle</l><block var="y"/></block><block s="doRun"><block var="_to_cartesian"/><list></list></block></script><script><block s="doSetVar"><l>_x</l><block var="x"/></block><block s="doSetVar"><l>_y</l><block var="y"/></block><block s="doRun"><block var="_to_radial"/><list></list></block></script></block></script><list><l>x</l><l>y</l><l>radial</l></list></block></block><block s="doSetVar"><l>_dot</l><block s="reifyScript"><script><block s="gotoXY"><block var="_x"/><block var="_y"/></block><block s="down"></block><block s="forward"><l>0</l></block><block s="up"></block></script><list></list></block></block><block s="doSetVar"><l>_line_to</l><block s="reifyScript"><script><block s="doReport"><custom-block s="new %s ( %mult%s )"><custom-block s="Line"></custom-block><list><block var="this"/><block var="aPoint"/></list></custom-block></block></script><list><l>aPoint</l></list></block></block><block s="doSetVar"><l>_draw_line_to</l><block s="reifyScript"><script><custom-block s="%s . %s ( %mult%s )"><block var="this"/><l>dot</l><list></list></custom-block><block s="down"></block><custom-block s="%s . %s ( %mult%s )"><block var="aPoint"/><l>dot</l><list></list></custom-block><block s="up"></block></script><list><l>aPoint</l></list></block></block><block s="doSetVar"><l>_clone</l><block s="reifyScript"><script><block s="doReport"><custom-block s="new %s ( %mult%s )"><custom-block s="Point"></custom-block><list><custom-block s="%s . %s"><block var="this"/><l>x</l></custom-block><custom-block s="%s . %s"><block var="this"/><l>y</l></custom-block></list></custom-block></block></script><list></list></block></block><block s="doSetVar"><l>_to_cartesian</l><block s="reifyScript"><script><block s="doSetVar"><l>_x</l><block s="reportProduct"><block var="_r"/><block s="reportMonadic"><l><option>cos</option></l><block var="_angle"/></block></block></block><block s="doSetVar"><l>_y</l><block s="reportProduct"><block var="_r"/><block s="reportMonadic"><l><option>sin</option></l><block var="_angle"/></block></block></block></script><list></list></block></block><block s="doSetVar"><l>_to_radial</l><block s="reifyScript"><script><block s="doSetVar"><l>_r</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportSum"><block s="reportPower"><block var="_x"/><l>2</l></block><block s="reportPower"><block var="_y"/><l>2</l></block></block></block></block><block s="doSetVar"><l>_angle</l><block s="reportIfElse"><block s="reportGreaterThan"><block var="_x"/><l>0</l></block><block s="reportMonadic"><l><option>atan</option></l><block s="reportQuotient"><block var="_y"/><block var="_x"/></block></block><block s="reportIfElse"><block s="reportLessThan"><block var="_x"/><l>0</l></block><block s="reportSum"><block s="reportMonadic"><l><option>atan</option></l><block s="reportQuotient"><block var="_y"/><block var="_x"/></block></block><custom-block s="PI"></custom-block></block><block s="reportIfElse"><block s="reportLessThan"><block var="_y"/><l>0</l></block><l>-90</l><l>90</l></block></block></block></block></script><list></list></block></block><custom-block s="# %code"><l>public members</l></custom-block><custom-block s="%s setter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doSetVar"><l>_x</l><block var="x"/></block></script><list><l>x</l></list></block><l>x</l></custom-block><custom-block s="%s getter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doReport"><block var="_x"/></block></script><list></list></block><l>x</l></custom-block><custom-block s="%s setter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doSetVar"><l>_y</l><block var="y"/></block></script><list><l>y</l></list></block><l>y</l></custom-block><custom-block s="%s getter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doReport"><block var="_y"/></block></script><list></list></block><l>y</l></custom-block><custom-block s="# %code"><l>read only public member</l></custom-block><custom-block s="%s getter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doReport"><block var="_radial"/></block></script><list></list></block><l>radial</l></custom-block><custom-block s="# %code"><l>constructor</l></custom-block><custom-block s="%s . %s = %s"><block var="this"/><l>Point</l><block var="_translate"/></custom-block><custom-block s="# %code"><l>public methods</l></custom-block><custom-block s="%s . %s = %s"><block var="this"/><l>translateTo</l><block var="_translate"/></custom-block><custom-block s="%s . %s = %s"><block var="this"/><l>dot</l><block var="_dot"/></custom-block><custom-block s="%s . %s = %s"><block var="this"/><l>drawLineTo</l><block var="_draw_line_to"/></custom-block><custom-block s="%s . %s = %s"><block var="this"/><l>clone</l><block var="_clone"/></custom-block></script><l>root</l><l>this</l><l>super</l></custom-block></block></script><scripts><script x="514.000004" y="129.66667166666684"><block var="_r"/></script><script x="516.000004" y="152.66667166666684"><block var="_angle"/></script><script x="588.3505869375001" y="173.20000400000004"><block var="_x"/></script><script x="515.000004" y="227.66667166666684"><block var="_radial"/></script></scripts></block-definition><block-definition s="Rectangle" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>_class</l></list></block><block s="doSetVar"><l>_class</l><l>0</l></block><block s="doReport"><custom-block s="Class %s extends %mult%s implements %mult%s %cs %upvar %upvar %upvar"><l>Rectangle</l><list><custom-block s="Object"></custom-block></list><list></list><script><block s="doDeclareVariables"><list><l>left-top</l><l>right_bottom</l></list></block><block s="doSetVar"><l>left-top</l><custom-block s="Point"></custom-block></block><block s="doSetVar"><l>right_bottom</l><l>0</l></block><custom-block s="%s . %s = %s"><block var="this"/><l>init</l><block s="reifyScript"><script></script><list><l>l</l><l>t</l><l>b</l><l>#4</l></list></block></custom-block></script><l>root</l><l>this</l><l>super</l></custom-block></block></script></block-definition><block-definition s="new %&apos;class&apos; ( %&apos;args&apos; )" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>_instance</l></list></block><block s="doSetVar"><l>_instance</l><block var="class"/></block><block s="doRun"><custom-block s="%s . %s"><block var="_instance"/><block s="evaluate"><block var="class"/><list><l>class</l></list></block></custom-block><block var="args"/></block><block s="doReport"><block var="_instance"/></block></script></block-definition><block-definition s="%&apos;object&apos; setter %&apos;setter&apos; for property %&apos;member&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%cmdRing"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>root</l><l>class</l><l>is_member</l><l>set_member</l><l>get_member</l></list></block><block s="doSetVar"><l>root</l><block s="evaluate"><block var="object"/><list><l>root</l></list></block></block><block s="doSetVar"><l>class</l><block s="evaluate"><block var="object"/><list><l>class</l></list></block></block><block s="doSetVar"><l>set_member</l><block s="reportJoinWords"><list><l>set</l><block var="member"/></list></block></block><block s="doSetVar"><l>is_member</l><block s="reportNot"><block s="reportEquals"><block s="evaluate"><block var="object"/><list><block var="set_member"/></list></block><l>nil</l></block></block></block><block s="doIf"><block s="reportOr"><block s="reportEquals"><block var="class"/><l>nil</l></block><block var="is_member"/></block><script><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_remove</l></list></block><list><block var="set_member"/></list></block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><block var="set_member"/><block var="setter"/></list></block></script></block></script></block-definition><block-definition s="%&apos;object&apos; getter %&apos;getter&apos; for property %&apos;member&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%cmdRing"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>root</l><l>class</l><l>is_member</l><l>set_member</l><l>get_member</l></list></block><block s="doSetVar"><l>root</l><block s="evaluate"><block var="object"/><list><l>root</l></list></block></block><block s="doSetVar"><l>class</l><block s="evaluate"><block var="object"/><list><l>class</l></list></block></block><block s="doSetVar"><l>get_member</l><block s="reportJoinWords"><list><l>get</l><block var="member"/></list></block></block><block s="doSetVar"><l>is_member</l><block s="reportNot"><block s="reportEquals"><block s="evaluate"><block var="object"/><list><block var="get_member"/></list></block><l>nil</l></block></block></block><block s="doIf"><block s="reportOr"><block s="reportEquals"><block var="class"/><l>nil</l></block><block var="is_member"/></block><script><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_remove</l></list></block><list><block var="get_member"/></list></block><block s="doRun"><block s="evaluate"><block var="root"/><list><l>_add</l></list></block><list><block var="get_member"/><block var="getter"/></list></block></script></block></script></block-definition><block-definition s="Line" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="Class %s extends %mult%s implements %mult%s %cs %upvar %upvar %upvar"><l>Line</l><list><custom-block s="Object"></custom-block></list><list></list><script><block s="doDeclareVariables"><list><l>_start</l><l>_stop</l><l>_draw</l><l>_init</l></list></block><custom-block s="# %code"><l>private members</l></custom-block><block s="doSetVar"><l>_start</l><custom-block s="new %s ( %mult%s )"><custom-block s="Point"></custom-block><list><l></l></list></custom-block></block><block s="doSetVar"><l>_stop</l><custom-block s="new %s ( %mult%s )"><custom-block s="Point"></custom-block><list><l></l></list></custom-block></block><custom-block s="# %code"><l>private methods</l></custom-block><block s="doSetVar"><l>_init</l><block s="reifyScript"><script><block s="doSetVar"><l>_start</l><block var="pt1"/></block><block s="doSetVar"><l>_stop</l><block var="pt2"/></block></script><list><l>pt1</l><l>pt2</l></list></block></block><block s="doSetVar"><l>_draw</l><block s="reifyScript"><script><custom-block s="%s . %s ( %mult%s )"><block var="_start"/><l>dot</l><list></list></custom-block><block s="down"></block><custom-block s="%s . %s ( %mult%s )"><block var="_stop"/><l>dot</l><list></list></custom-block><block s="up"></block></script><list></list></block></block><custom-block s="# %code"><l>public members</l></custom-block><custom-block s="%s setter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doSetVar"><l>_start</l><block var="x"/></block></script><list><l>start</l></list></block><l>start</l></custom-block><custom-block s="%s getter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doReport"><block var="_start"/></block></script><list></list></block><l>start</l></custom-block><custom-block s="%s setter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doSetVar"><l>_stop</l><block var="y"/></block></script><list><l>stop</l></list></block><l>stop</l></custom-block><custom-block s="%s getter %cmdRing for property %s"><block var="this"/><block s="reifyScript"><script><block s="doReport"><block var="_stop"/></block></script><list></list></block><l>stop</l></custom-block><custom-block s="# %code"><l>constructor</l></custom-block><custom-block s="%s . %s = %s"><block var="this"/><l>Line</l><block var="_init"/></custom-block><custom-block s="# %code"><l>public methods</l></custom-block><custom-block s="%s . %s = %s"><block var="this"/><l>draw</l><block var="_draw"/></custom-block></script><l>root</l><l>this</l><l>super</l></custom-block></block></script><scripts><script x="17.62402743749999" y="842.8333403333338"><block s="gotoXY"><custom-block s="%s . %s"><block var="_start"/><l>x</l></custom-block><custom-block s="%s . %s"><block var="_start"/><l>y</l></custom-block></block><block s="down"></block><block s="gotoXY"><custom-block s="%s . %s"><block var="_stop"/><l>x</l></custom-block><custom-block s="%s . %s"><block var="_stop"/><l>y</l></custom-block></block><block s="up"></block></script></scripts></block-definition><block-definition s="report %&apos;object&apos; . %&apos;member&apos; ( %&apos;params&apos; )" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="%s . %s"><block var="object"/><block var="member"/></custom-block><block var="params"/></block></block></script></block-definition><block-definition s="PI" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>3.14159265359</l></block></script></block-definition><block-definition s="{JS} %&apos;input&apos; $≅-2 %&apos;compare&apos; (± %&apos;tolerance&apos; )" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">10</input><input type="%n"></input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>b</l><l>t</l></list></block><block s="doSetVar"><l>b</l><block s="reportDifference"><block var="compare"/><block var="tolerance"/></block></block><block s="doSetVar"><l>t</l><block s="reportSum"><block var="compare"/><block var="tolerance"/></block></block><block s="doReport"><block s="reportIfElse"><block var="JS_block_on"/><block s="evaluate"><block s="reportJSFunction"><list><l>input</l><l>compare</l><l>tolerance</l></list><l>var inp=input+0,  comp=compare+0,  tol=tolerance+0,  bottom=comp-tol,  top=comp+tol;return (inp&gt;=bottom)&amp;&amp;(inp&lt;=top);</l></block><list><block var="input"/><block var="compare"/><block var="tolerance"/></list></block><block s="reportAnd"><block s="reportOr"><block s="reportGreaterThan"><block var="input"/><block var="b"/></block><block s="reportEquals"><block var="input"/><block var="b"/></block></block><block s="reportOr"><block s="reportLessThan"><block var="input"/><block var="t"/></block><block s="reportEquals"><block var="input"/><block var="t"/></block></block></block></block></block></script></block-definition><block-definition s="%&apos;input&apos; $≅-2 %&apos;compare&apos; (± %&apos;tolerance&apos; )" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">10</input><input type="%n"></input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>b</l><l>t</l></list></block><block s="doSetVar"><l>b</l><block s="reportDifference"><block var="compare"/><block var="tolerance"/></block></block><block s="doSetVar"><l>t</l><block s="reportSum"><block var="compare"/><block var="tolerance"/></block></block><block s="doReport"><block s="reportAnd"><block s="reportOr"><block s="reportGreaterThan"><block var="input"/><block var="b"/></block><block s="reportEquals"><block var="input"/><block var="b"/></block></block><block s="reportOr"><block s="reportLessThan"><block var="input"/><block var="t"/></block><block s="reportEquals"><block var="input"/><block var="t"/></block></block></block></block></script></block-definition><block-definition s="quasi stamp %&apos;point_size&apos; transp. %&apos;transp&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n">3.5</input><input type="%n">70</input></inputs><script><block s="doDeclareVariables"><list><l>old_size</l></list></block><block s="doSetVar"><l>old_size</l><block s="getPenAttribute"><l><option>size</option></l></block></block><block s="setPenHSVA"><l><option>transparency</option></l><block var="transp"/></block><block s="down"></block><block s="setSize"><block var="point_size"/></block><block s="forward"><l>0</l></block><block s="up"></block><block s="setSize"><block var="old_size"/></block></script></block-definition><block-definition s="draw $circle %&apos;center x&apos; %&apos;center y&apos; d1 %&apos;radius&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input><input type="%n">100</input></inputs><script><block s="doDeclareVariables"><list><l>sine length</l><l>dots per sine</l><l>amplitude</l><l>circumference</l><l>sines per circle</l><l>dots per circle</l><l>offset</l></list></block><block s="doSetVar"><l>sine length</l><block s="reportQuotient"><block var="radius"/><l>2</l><comment w="267" collapsed="true">Adjust these 3 variables to get the look you want.</comment></block></block><block s="doSetVar"><l>dots per sine</l><l>10</l></block><block s="doSetVar"><l>amplitude</l><block s="reportProduct"><l>.05</l><block var="radius"/></block></block><block s="doSetVar"><l>circumference</l><block s="reportProduct"><block s="reportProduct"><l>2</l><l>3.1415926</l></block><block var="radius"/></block><comment w="299.33333333333337" collapsed="false">I&apos;ve been, indeed, able to remix the &apos;turtle&apos; code, &#xD;based on the approach by ttocs2112, who said:&#xD;&#xD; This is the main thing you&apos;re looking for:&#xD;&#xD;  1) Get the circumference of the circle&#xD;&#xD;  2) Divide it by the sine length&#xD;&#xD;  3) Round that to get a whole number &#xD;      for the number of sines_per_circle&#xD;&#xD;  4) Divide that by the number of &#xD;      dots_per_sine to get the number of dots_per_circle.&#xD;&#xD;&#xD;   Since the number of dots divided by the number of sines &#xD;   is always a whole number, the start and end points are the same.&#xD;&#xD;   Not sure how important &apos;turtle&apos; drawing is to you, &#xD;   rather than calculating x and y each step as I&apos;ve done &#xD;   (which avoids accumulated error), but you should be &#xD;   able to easily modify this using the approach above.&#xD;</comment></block><block s="doSetVar"><l>sines per circle</l><block s="reportRound"><block s="reportQuotient"><block var="circumference"/><block var="sine length"/></block></block></block><block s="doSetVar"><l>dots per circle</l><block s="reportProduct"><block var="sines per circle"/><block var="dots per sine"/></block></block><block s="doDeclareVariables"><list><l>n</l><l>i</l><l>transparency</l><l>pen size</l></list></block><block s="doSetVar"><l>transparency</l><block s="getPenAttribute"><l><option>transparency</option></l></block></block><block s="doSetVar"><l>n</l><block var="dots per circle"/></block><block s="doSetVar"><l>i</l><l>0</l></block><block s="doWarp"><script><block s="gotoXY"><block var="center x"/><block var="center y"/></block><block s="setHeading"><l>0</l></block><block s="doUntil"><block s="reportEquals"><block var="i"/><block var="n"/></block><script><block s="doWarp"><script><block s="doSetVar"><l>pen size</l><block s="reportIfElse"><block s="reportGreaterThan"><block var="radius"/><l>100</l></block><block s="reportQuotient"><block var="radius"/><l>33</l></block><l>3</l></block></block><block s="gotoXY"><block var="center x"/><block var="center y"/></block><block s="setColor"><color>150,0,208,1</color></block><custom-block s="quasi stamp %n transp. %n"><block var="pen size"/><block var="transparency"/><comment w="115" collapsed="false">Dot at the circle center.</comment></custom-block></script></block><block s="doChangeVar"><l>i</l><l>1</l></block><block s="turn"><block s="reportQuotient"><l>360</l><block var="n"/></block></block><block s="forward"><block var="radius"/></block><block s="doSetVar"><l>offset</l><block s="reportProduct"><block var="amplitude"/><block s="reportMonadic"><l><option>cos</option></l><block s="reportProduct"><block s="reportQuotient"><block s="reportModulus"><block var="i"/><block var="dots per sine"/></block><block var="dots per sine"/></block><l>360</l></block></block></block></block><block s="doSetVar"><l>pen size</l><block s="reportIfElse"><block s="reportGreaterThan"><block var="radius"/><l>100</l></block><block s="reportQuotient"><block var="radius"/><l>50</l></block><l>2</l></block></block><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportSum"><block var="transparency"/><l>10</l></block></block><block s="doWarp"><script><block s="down"></block><block s="setColor"><color>255,166,17,1</color></block><block s="setSize"><block var="pen size"/></block><block s="forward"><block var="offset"/></block></script></block><block s="up"></block><block s="forward"><block s="reportProduct"><l>-1</l><block var="offset"/></block></block><block s="doWarp"><script><block s="setColor"><color>99,0,187,1</color></block><custom-block s="quasi stamp %n transp. %n"><block var="pen size"/><block s="reportSum"><block var="transparency"/><l>10</l></block></custom-block></script></block><block s="forward"><block var="offset"/></block><block s="doSetVar"><l>pen size</l><block s="reportIfElse"><block s="reportGreaterThan"><block var="radius"/><l>100</l></block><block s="reportQuotient"><block var="radius"/><l>33</l></block><l>3</l></block></block><block s="doWarp"><script><block s="setColor"><color>234,117,0,1</color></block><custom-block s="quasi stamp %n transp. %n"><block var="pen size"/><block var="transparency"/></custom-block></script></block><block s="gotoXY"><block var="center x"/><block var="center y"/></block></script></block></script></block></script></block-definition><block-definition s="drag to draw a circle" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>x</l><l>y</l><l>dx</l><l>dy</l><l>r</l><l>old_r</l></list></block><block s="doWaitUntil"><block s="reportMouseDown"></block></block><block s="doSetVar"><l>x</l><block s="reportMouseX"></block></block><block s="doSetVar"><l>y</l><block s="reportMouseY"></block></block><block s="doSetVar"><l>old_r</l><l>1</l></block><block s="doUntil"><block s="reportNot"><block s="reportMouseDown"></block></block><script><block s="doSetVar"><l>dx</l><block s="reportDifference"><block s="reportMouseX"></block><block var="x"/></block></block><block s="doSetVar"><l>dy</l><block s="reportDifference"><block s="reportMouseY"></block><block var="y"/></block></block><block s="doSetVar"><l>r</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportSum"><block s="reportProduct"><block var="dx"/><block var="dx"/></block><block s="reportProduct"><block var="dy"/><block var="dy"/></block></block></block></block><block s="setPenHSVA"><l><option>transparency</option></l><l>90</l></block><block s="doIf"><block s="reportGreaterThan"><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block var="r"/><block var="old_r"/></block></block><l>3</l></block><script><custom-block s="draw $circle %n %n d1 %n"><block var="x"/><block var="y"/><block var="r"/></custom-block></script></block><block s="doWait"><l>0.01</l></block><block s="doSetVar"><l>old_r</l><block var="r"/></block></script></block><block s="doBroadcastAndWait"><l>overlay</l></block><block s="setPenHSVA"><l><option>transparency</option></l><l>0</l></block><custom-block s="draw $circle %n %n d1 %n"><block var="x"/><block var="y"/><block var="r"/></custom-block></script></block-definition><block-definition s="pinwheel, branches: %&apos;number of branches&apos; size: %&apos;size&apos; backup: %&apos;backup&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRepeat"><block var="number of branches"><comment w="90" collapsed="true">Repeats by the number of branches</comment></block><script><block s="forward"><block var="size"/><comment w="90" collapsed="true">Moves By the Number inserted</comment></block><block s="forward"><block s="reportProduct"><block s="reportMonadic"><l><option>abs</option></l><block var="backup"/></block><l>-1</l></block></block><block s="turn"><block s="reportQuotient"><l>360</l><block var="number of branches"/></block><comment w="90" collapsed="true">you turn by 360 divided by the number of branches</comment></block></script></block></script></block-definition><block-definition s="Create 2 Pinwheels with different spoke %&apos;Number of Spokes&apos; %&apos;Number of Spokes Part 2&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRepeat"><block var="Number of Spokes"/><script><block s="forward"><l>100</l></block><block s="forward"><l>-70</l></block><block s="turn"><block s="reportQuotient"><l>360</l><block var="Number of Spokes"/></block></block></script></block><block s="up"></block><block s="forward"><l>200</l></block><block s="down"></block><block s="doRepeat"><block var="Number of Spokes Part 2"/><script><block s="forward"><l>100</l></block><block s="forward"><l>-70</l></block><block s="turn"><block s="reportQuotient"><l>360</l><block var="Number of Spokes Part 2"/></block></block></script></block></script></block-definition><block-definition s="asterisk, branches: %&apos;branches&apos; branch length: %&apos;length&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="pinwheel, branches: %s size: %s backup: %s"><block var="branches"/><block var="length"/><block var="length"/></custom-block></script></block-definition><block-definition s="Polygon, branches: %&apos;branches&apos; branch length: %&apos;length&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="pinwheel, branches: %s size: %s backup: %s"><block var="branches"/><block var="length"/><l>0</l></custom-block></script></block-definition><block-definition s="polygon version 2, branches: %&apos;number of branches&apos; size %&apos;size&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRepeat"><block var="number of branches"/><script><block s="forward"><block var="size"/></block><block s="turn"><block s="reportQuotient"><l>360</l><block var="number of branches"/></block></block></script></block></script></block-definition><block-definition s="nest squares, number of squares: %&apos;number of squares&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doFor"><l>number of squares</l><block var="number of squares"/><l>1</l><script><custom-block s="polygon version 2, branches: %s size %s"><l>4</l><block s="reportProduct"><l>5</l><block var="number of squares"/></block></custom-block></script></block></script></block-definition><block-definition s="setup %&apos;parameterSet&apos;" type="command" category="other"><comment x="0" y="0" w="333" collapsed="false">parameters are in order&#xD;gridWidth (number of squares in the width of the grid)&#xD;gridHeight (numer of squares in the height of the grid)&#xD;patchSize( is the measure in inches of a patch - or gird cell)&#xD;patchScale( used for display - not relevant to calculating material)&#xD;&#xD;screenWidth and screenHeight are self explanatory.&#xD;Change the screen size under the gear heading (preferences)&#xD;&#xD;sqSize is the size of a grid square&#xD;columnStart and rowStart offset the grid from the upper left corner</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doSetVar"><l>screenWidth</l><block s="reportAskFor"><l>Stage</l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>width</option></l></block></autolambda><list></list></block><list></list></block></block><block s="doSetVar"><l>screenHeight</l><block s="reportAskFor"><l>Stage</l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>height</option></l></block></autolambda><list></list></block><list></list></block></block><block s="doSetVar"><l>gridWidth</l><block s="reportListItem"><l>1</l><block var="parameterSet"/></block></block><block s="doSetVar"><l>gridHeight</l><block s="reportListItem"><l>2</l><block var="parameterSet"/></block></block><block s="doSetVar"><l>patchSize</l><block s="reportListItem"><l>3</l><block var="parameterSet"/></block></block><block s="doSetVar"><l>patchScale</l><block s="reportListItem"><l>4</l><block var="parameterSet"/></block></block><block s="doSetVar"><l>sqSize</l><block s="reportProduct"><block var="patchSize"/><block var="patchScale"/></block></block><block s="doSetVar"><l>columnstart</l><l>10</l></block><block s="doSetVar"><l>rowstart</l><l>10</l></block><block s="clear"></block><block s="up"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="setHeading"><l>90</l></block><block s="down"></block><block s="setColor"><color>26,5,0,1</color></block><block s="hide"></block></script></block-definition><block-definition s="placePatchFill %&apos;xPos&apos; %&apos;yPos&apos; %&apos;size&apos; %&apos;color&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Place a patch using cartesian coordinates of size, with set pen color.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%cmdRing"></input></inputs><script><block s="setColor"><color>31,51,0,1</color></block><custom-block s="placePatch %s %s"><block var="xPos"/><block var="yPos"/></custom-block><block s="up"></block><block s="turn"><l>45</l></block><block s="forward"><block s="reportQuotient"><block var="size"/><l>2</l></block></block><block s="doRun"><block var="color"/><list></list></block><block s="floodFill"></block><block s="gotoXY"><block var="xPos"/><block var="yPos"/></block><block s="setHeading"><l>90</l></block><block s="down"></block><block s="setColor"><color>31,51,0,1</color></block></script></block-definition><block-definition s="placePatch %&apos;xPos&apos; %&apos;yPos&apos;" type="command" category="other"><comment x="0" y="0" w="375" collapsed="false">place patch using graphics coorinates. No fill</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="up"></block><custom-block s="grGotoXY %s %s"><block s="reportSum"><block var="columnstart"/><block s="reportProduct"><block var="xPos"/><block var="sqSize"/></block></block><block s="reportSum"><block var="rowstart"/><block s="reportProduct"><block var="yPos"/><block var="sqSize"/></block></block></custom-block><block s="setHeading"><l>90</l></block><block s="down"></block><block s="doRepeat"><l>4</l><script><block s="forward"><block var="sqSize"/></block><block s="turn"><l>90</l></block></script></block></script></block-definition><block-definition s="graphicXpos %&apos;gXcor&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Set column (x) position to graphics coordinate x.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="setXPosition"><block s="reportSum"><block var="gXcor"/><block s="reportDifference"><l>0</l><block s="reportQuotient"><block s="reportAskFor"><l>Stage</l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>width</option></l></block></autolambda><list></list></block><list></list></block><l>2</l></block></block></block></block></script></block-definition><block-definition s="graphicYpos %&apos;gYcor&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Set y position to graphics coordinate y.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="setYPosition"><block s="reportProduct"><l>-1</l><block s="reportSum"><block var="gYcor"/><block s="reportDifference"><l>0</l><block s="reportQuotient"><block s="reportAskFor"><l>Stage</l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>height</option></l></block></autolambda><list></list></block><list></list></block><l>2</l></block></block></block></block></block></script></block-definition><block-definition s="grGotoXY %&apos;gx&apos; %&apos;gy&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Place sprite at graphics coordinate gx and gy.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="gotoXY"><block s="reportSum"><block var="gx"/><block s="reportDifference"><l>0</l><block s="reportQuotient"><block var="screenWidth"/><l>2</l></block></block></block><block s="reportDifference"><block s="reportQuotient"><block var="screenHeight"/><l>2</l></block><block var="gy"/></block></block></script><scripts><script x="102.000001" y="137.00000100000005"><block s="reportProduct"><l>-1</l><block s="reportSum"><l></l><l></l></block></block></script></scripts></block-definition><block-definition s="grX" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">return the graphics x coordinate.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportSum"><block s="xPosition"></block><block s="reportQuotient"><block var="screenWidth"/><l>2</l></block></block></block></script></block-definition><block-definition s="grY" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">return the graphics y coorindate.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportDifference"><block s="reportQuotient"><block var="screenHeight"/><l>2</l></block><block s="yPosition"></block></block></block></script></block-definition><block-definition s="gird %&apos;numbers&apos;" type="command" category="other"><comment x="0" y="0" w="371" collapsed="false">Create a grid based on the startup values. Show text if true.</comment><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="up"></block><custom-block s="grGotoXY %s %s"><block var="columnstart"/><block var="rowstart"/></custom-block><block s="doFor"><l>row</l><l>0</l><block s="reportDifference"><block var="gridHeight"/><l>1</l></block><script><block s="doFor"><l>column</l><l>0</l><block s="reportDifference"><block var="gridWidth"/><l>1</l></block><script><custom-block s="placePatch %s %s"><block var="column"/><block var="row"/></custom-block><block s="doIf"><block var="numbers"/><script><block s="write"><block s="reportJoinWords"><list><block var="column"/><l>,</l><block var="row"/></list></block><l>10</l></block><block s="up"></block><block s="turn"><l>80</l></block><block s="forward"><block s="reportQuotient"><block var="sqSize"/><l>2</l></block></block><block s="turnLeft"><l>80</l></block></script></block></script></block></script></block></script><scripts><script x="31.000001999999995" y="333.00000199999994"><block s="write"><custom-block s="crPosition %s %s %s"><block var="column"/><block var="row"/><l></l></custom-block><l>14</l></block></script></scripts></block-definition><block-definition s="crPosition %&apos;column&apos; %&apos;row&apos; %&apos;gridWidth&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">calculate the ordinal position from the graphcs row and column.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportSum"><block var="column"/><block s="reportProduct"><block var="row"/><block var="gridWidth"/></block></block></block></script></block-definition><block-definition s="crVector %&apos;number&apos; %&apos;gridWidth&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Calculate the graphics x and (column, row) from the ordinal position.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportModulus"><block var="number"/><block var="gridWidth"/></block><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="number"/><block var="gridWidth"/></block></block></list></block></block></script></block-definition><block-definition s="colorPatchNumber %&apos;number&apos; %&apos;colorCommand&apos;" type="command" category="other"><comment x="0" y="0" w="304" collapsed="false">Place a patch at the ordinal position of the graphics coordinate</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%cmdRing"></input></inputs><script><custom-block s="placePatchFill %s %s %s %cmdRing"><block s="reportListItem"><l>1</l><custom-block s="crVector %s %s"><block var="number"/><l></l></custom-block></block><block s="reportListItem"><l>2</l><custom-block s="crVector %s %s"><block var="number"/><l></l></custom-block></block><l>50</l><block var="colorCommand"/></custom-block></script></block-definition><block-definition s="NinePatchOneColor %&apos;colStart&apos; %&apos;row start&apos; %&apos;color&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Define a ninepatch with a single color.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%cmdRing"></input></inputs><script><block s="doFor"><l>row</l><block var="row start"/><block s="reportSum"><block var="row start"/><l>2</l></block><script><block s="doFor"><l>col</l><block var="colStart"/><block s="reportSum"><block var="colStart"/><l>2</l></block><script><custom-block s="placePatchFill %s %s %s %cmdRing"><block var="col"/><block var="row"/><block var="sqSize"/><block var="color"/></custom-block></script></block></script></block></script></block-definition><block-definition s="AlternateSolidBlocks %&apos;startColumn&apos; %&apos;startRow&apos; %&apos;spacing&apos;" type="command" category="other"><comment x="0" y="0" w="243" collapsed="false">Place solid blocks spacing blocks apart starting at startColumn and startRow..</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>c</l><l>r</l></list></block><block s="doSetVar"><l>r</l><block var="startRow"/></block><block s="doUntil"><block s="reportGreaterThan"><block var="r"/><block s="reportDifference"><block var="gridHeight"/><l>1</l></block></block><script><block s="doSetVar"><l>c</l><block var="startColumn"/></block><block s="doUntil"><block s="reportGreaterThan"><block var="c"/><block s="reportDifference"><block var="gridWidth"/><l>1</l></block></block><script><custom-block s="NinePatchOneColor %s %s %cmdRing"><block var="c"/><block var="r"/><block s="reifyScript"><script><block s="setColor"><color>29,107,0,1</color></block></script><list></list></block></custom-block><block s="doChangeVar"><l>c</l><l>6</l></block></script></block><block s="doChangeVar"><l>r</l><l>6</l></block></script></block></script></block-definition><block-definition s="NinePatchAlternate %&apos;colStart&apos; %&apos;row start&apos; %&apos;color&apos; %&apos;colorB&apos;" type="command" category="other"><comment x="0" y="0" w="357" collapsed="false">Create a classic 9 square patch at the position specified using the specified colors..</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%cmdRing"></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>toggle</l></list></block><block s="doSetVar"><l>toggle</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doFor"><l>row</l><block var="row start"/><block s="reportSum"><block var="row start"/><l>2</l></block><script><block s="doFor"><l>col</l><block var="colStart"/><block s="reportSum"><block var="colStart"/><l>2</l></block><script><custom-block s="placePatchFill %s %s %s %cmdRing"><block var="col"/><block var="row"/><block var="sqSize"/><block s="reportIfElse"><block var="toggle"/><block var="color"/><block var="colorB"/></block></custom-block><block s="doSetVar"><l>toggle</l><block s="reportNot"><block var="toggle"/></block></block></script></block></script></block></script></block-definition><block-definition s="BruteForceAlternate" type="command" category="other"><comment x="0" y="0" w="513" collapsed="false">A brute force renidtion of 9 square that illustrates how it alternates.  Alternate9Blocks is the abstract.</comment><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="placePatchFill %s %s %s %cmdRing"><l>3</l><l>0</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>230,255,56,1</color></block></script><list></list></block></custom-block><custom-block s="placePatchFill %s %s %s %cmdRing"><l>4</l><l>0</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>42,153,0,1</color></block></script><list></list></block></custom-block><custom-block s="placePatchFill %s %s %s %cmdRing"><l>5</l><l>0</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>230,255,56,1</color></block></script><list></list></block></custom-block><custom-block s="placePatchFill %s %s %s %cmdRing"><l>3</l><l>1</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>42,153,0,1</color></block></script><list></list></block></custom-block><custom-block s="placePatchFill %s %s %s %cmdRing"><l>4</l><l>1</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>230,255,56,1</color></block></script><list></list></block></custom-block><custom-block s="placePatchFill %s %s %s %cmdRing"><l>5</l><l>1</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>42,153,0,1</color></block></script><list></list></block></custom-block><custom-block s="placePatchFill %s %s %s %cmdRing"><l>3</l><l>2</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>230,255,56,1</color></block></script><list></list></block></custom-block><custom-block s="placePatchFill %s %s %s %cmdRing"><l>4</l><l>2</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>42,153,0,1</color></block></script><list></list></block></custom-block><custom-block s="placePatchFill %s %s %s %cmdRing"><l>5</l><l>2</l><block var="sqSize"/><block s="reifyScript"><script><block s="setColor"><color>230,255,56,1</color></block></script><list></list></block></custom-block></script></block-definition><block-definition s="Alternate9Blocks %&apos;startCol&apos; %&apos;startRow&apos; %&apos;spacing&apos;" type="command" category="other"><comment x="0" y="0" w="442" collapsed="false">Place 9 square blocks spacing blocks apart starting at startColumn and startRow..</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>c</l><l>r</l></list></block><block s="doSetVar"><l>r</l><block var="startRow"/></block><block s="doUntil"><block s="reportGreaterThan"><block var="r"/><block s="reportDifference"><block var="gridHeight"/><l>1</l></block></block><script><block s="doSetVar"><l>c</l><block var="startCol"/></block><block s="doUntil"><block s="reportGreaterThan"><block var="c"/><block s="reportDifference"><block var="gridWidth"/><l>1</l></block></block><script><custom-block s="NinePatchAlternate %s %s %cmdRing %cmdRing"><block var="c"/><block var="r"/><block s="reifyScript"><script><block s="setColor"><color>36,255,247,1</color></block></script><list></list></block><block s="reifyScript"><script><block s="setColor"><color>0,85,179,1</color></block></script><list></list></block></custom-block><block s="doChangeVar"><l>c</l><l>6</l></block></script></block><block s="doChangeVar"><l>r</l><l>6</l></block></script></block></script></block-definition><block-definition s="findmax %&apos;value 1&apos; %&apos;value 2&apos;" type="reporter" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportLessThan"><block var="value 2"/><block var="value 1"/></block><script><block s="doSetVar"><l>answer</l><block var="value 1"/></block></script><script><block s="doSetVar"><l>answer</l><block var="value 2"/></block></script></block><block s="doReport"><block var="answer"/></block></script></block-definition><block-definition s="FindMaxNumber %&apos;list&apos;" type="reporter" category="motion"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doSetVar"><l>index</l><l>1</l></block><block s="doSetVar"><l>answer</l><block s="reportListItem"><block var="index"/><block var="list"/></block></block><block s="doRepeat"><block s="reportListLength"><block var="list"/></block><script><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListItem"><block var="index"/><block var="list"/></block><block var="answer"/></block><script><block s="doSetVar"><l>answer</l><block s="reportListItem"><block var="index"/><block var="list"/></block></block></script></block></script></block><block s="doReport"><block var="answer"/></block></script></block-definition><block-definition s="Addition %&apos;list&apos;" type="reporter" category="motion"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doSetVar"><l>index</l><l>1</l></block><block s="doSetVar"><l>answer</l><l>0</l></block><block s="doRepeat"><block s="reportListLength"><block var="list"/></block><script><block s="doChangeVar"><l>answer</l><block s="reportListItem"><block var="index"/><block var="list"/></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block var="answer"/></block></script></block-definition><block-definition s="Create drawing %&apos;drawing&apos; with width %&apos;x&apos; height %&apos;y&apos; and background %&apos;color&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n"></input><input type="%n"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doSetVar"><l>drawing</l><block s="reportNewList"><list></list></block></block><block s="doFor"><l>i</l><l>1</l><block var="y"/><script><block s="doFor"><l>i</l><l>1</l><block var="x"/><script><block s="doAddToList"><block var="color"/><block var="drawing"/></block></script></block></script></block></script></block></script></block-definition><block-definition s="color %&apos;r&apos; %&apos;g&apos; %&apos;b&apos; %&apos;a&apos; as rgba" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="r"/><block var="g"/><block var="b"/><block var="a"/></list></block></block></script></block-definition><block-definition s="insert circle at x,y %&apos;x&apos; %&apos;y&apos; with radius %&apos;r&apos; and color %&apos;l&apos; for drawing %&apos;v&apos; with dimensions %&apos;w&apos; %&apos;h&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%l"></input><input type="%l"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doWarp"><script><block s="doFor"><l>j</l><l>1</l><block var="h"/><script><block s="doFor"><l>i</l><l>1</l><block var="w"/><script><block s="doIf"><block s="reportLessThan"><block s="reportSum"><block s="reportPower"><block s="reportDifference"><block var="j"/><block var="y"/></block><l>2</l></block><block s="reportPower"><block s="reportDifference"><block var="i"/><block var="x"/></block><l>2</l></block></block><block s="reportPower"><block var="r"/><l>2</l></block></block><script><block s="doReplaceInList"><block var="a"/><block var="v"/><block var="l"/></block></script></block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block></script></block></script></block></script><scripts><script x="408.0000030000001" y="162.00000300000005"><block var="v"/></script></scripts></block-definition><block-definition s="fill area x1,y1,x2,y2 %&apos;x1&apos; %&apos;y1&apos; %&apos;x2&apos; %&apos;y2&apos; of drawing %&apos;d&apos; with color %&apos;c&apos; with dimensions %&apos;w&apos; %&apos;h&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%l"></input><input type="%l"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doWarp"><script><block s="doFor"><l>j</l><l>1</l><block var="h"/><script><block s="doFor"><l>i</l><l>1</l><block var="w"/><script><block s="doChangeVar"><l>a</l><l>1</l></block><block s="doIf"><block s="reportAnd"><block s="reportGreaterThan"><block var="j"/><block var="y1"/></block><block s="reportLessThan"><block var="j"/><block var="y2"/></block></block><script><block s="doIf"><block s="reportAnd"><block s="reportGreaterThan"><block var="i"/><block var="x1"/></block><block s="reportLessThan"><block var="i"/><block var="x2"/></block></block><script><block s="doReplaceInList"><block var="a"/><block var="d"/><block var="c"/></block></script></block></script></block></script></block></script></block></script></block></script></block-definition><block-definition s="random color" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportRandom"><l>1</l><l>255</l></block><block s="reportRandom"><l>1</l><l>255</l></block><block s="reportRandom"><l>1</l><l>255</l></block><l>255</l></list></block></block></script></block-definition><block-definition s="fill color %&apos;c&apos; with linear gradient %&apos;g1&apos; to %&apos;g2&apos; from drawing %&apos;l&apos; with dimensions %&apos;w&apos; %&apos;h&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input><input type="%l"></input><input type="%l"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doWarp"><script><block s="doFor"><l>j</l><l>1</l><block var="h"/><script><block s="doFor"><l>i</l><l>1</l><block var="w"/><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="a"/><block var="l"/></block><block var="c"/></block><script><block s="doReplaceInList"><block var="a"/><block var="l"/><custom-block s="color %n %n %n %n as rgba"><custom-block s="gradient between %n %n step %n of %n"><block s="reportListItem"><l>1</l><block var="g1"/></block><block s="reportListItem"><l>1</l><block var="g2"/></block><block var="j"/><block var="h"/></custom-block><custom-block s="gradient between %n %n step %n of %n"><block s="reportListItem"><l>2</l><block var="g1"/></block><block s="reportListItem"><l>2</l><block var="g2"/></block><block var="j"/><block var="h"/></custom-block><custom-block s="gradient between %n %n step %n of %n"><block s="reportListItem"><l>3</l><block var="g1"/></block><block s="reportListItem"><l>3</l><block var="g2"/></block><block var="j"/><block var="h"/></custom-block><custom-block s="gradient between %n %n step %n of %n"><block s="reportListItem"><l>4</l><block var="g1"/></block><block s="reportListItem"><l>4</l><block var="g2"/></block><block var="j"/><block var="h"/></custom-block></custom-block></block></script></block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block></script></block></script></block></script></block-definition><block-definition s="clear image %&apos;x&apos; with color %&apos;y&apos; with dimensions %&apos;w&apos; %&apos;h&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doFor"><l>j</l><l>1</l><block var="h"/><script><block s="doFor"><l>i</l><l>1</l><block var="w"/><script><block s="doReplaceInList"><block var="a"/><block var="x"/><block var="y"/></block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block></script></block></script></block></script></block-definition><block-definition s="replace pixel %&apos;x&apos; , %&apos;y&apos; of %&apos;img&apos; with color %&apos;c&apos; and dimensions %&apos;x2&apos; %&apos;y2&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%l"></input><input type="%l"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReplaceInList"><block s="reportSum"><block s="reportProduct"><block var="y2"/><block var="y"/></block><block var="x"/></block><block var="img"/><block var="c"/></block></script><scripts><script x="60.4208994375" y="125.00000100000005"><block s="reportProduct"><block var="x2"/><l>5</l></block></script><script x="308.5097666249999" y="118.00000100000005"><block s="reportProduct"><block var="x2"/><l>5</l></block></script><script x="194.509766625" y="144.00000100000005"><block var="x"/></script></scripts></block-definition><block-definition s="replace color %&apos;c&apos; of drawing %&apos;d&apos; with color %&apos;c2&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doFor"><l>i</l><l>1</l><block s="reportListLength"><block var="d"/></block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="i"/><block var="d"/></block><block var="c"/></block><script><block s="doReplaceInList"><block var="i"/><block var="d"/><block var="c2"/></block></script></block></script></block></script></block></script><scripts><script x="286.000001" y="66.83333433333337"><block s="doForEach"><l>item</l><block var="d"/><script></script></block></script></scripts></block-definition><block-definition s="gradient between %&apos;x&apos; %&apos;y&apos; step %&apos;q&apos; of %&apos;z&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportSum"><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block var="x"/><block var="y"/></block><block var="z"/></block><block var="q"/></block><block var="y"/></block></block></script><scripts><script x="126.6669941875" y="113.00000299999999"><block var="x"/></script></scripts></block-definition><block-definition s="fill %&apos;x&apos; inside of %&apos;l&apos; for color %&apos;c&apos; with dimensions %&apos;w&apos; %&apos;h&apos; %&apos;substitute variable&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%cs"></input><input type="%l"></input><input type="%l"></input><input type="%n"></input><input type="%n"></input><input type="%upvar"></input></inputs><script><block s="doWarp"><script><block s="doSetVar"><l>substitute variable</l><block s="reportNewList"><list></list></block></block><custom-block s="clear image %l with color %l with dimensions %n %n"><block var="substitute variable"/><custom-block s="color %n %n %n %n as rgba"><l>0</l><l>0</l><l>0</l><l>0</l></custom-block><block var="w"/><block var="h"/></custom-block><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>1</l></block><block s="doRun"><block var="x"/><list></list></block><block s="doFor"><l>j</l><l>1</l><block var="h"/><script><block s="doFor"><l>i</l><l>1</l><block var="w"/><script><block s="doIf"><block s="reportAnd"><block s="reportEquals"><block s="reportListItem"><block var="a"/><block var="l"/></block><block var="c"/></block><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><block var="a"/><block var="substitute variable"/></block><custom-block s="color %n %n %n %n as rgba"><l>0</l><l>0</l><l>0</l><l>0</l></custom-block></block></block></block><script><block s="doReplaceInList"><block var="a"/><block var="l"/><block s="reportListItem"><block var="a"/><block var="substitute variable"/></block></block></script></block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block></script></block></script></block></script><scripts><script x="424.2841806874999" y="225.2000019999989"><block var="l"/></script></scripts></block-definition><block-definition s="max %&apos;a&apos; and %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>maxNum</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="a"/><block var="b"/></block><script><block s="doSetVar"><l>maxNum</l><block var="a"/></block></script><script><block s="doSetVar"><l>maxNum</l><block var="b"/></block></script></block><block s="doReport"><block var="maxNum"/></block></script><scripts><script x="196" y="91.19999999999999"><block s="doIfElse"><block s="reportGreaterThan"><block var="a"/><block var="b"/></block><script><block s="doReport"><block var="a"/></block></script><script><block s="doReport"><block var="b"/></block></script></block></script></scripts></block-definition><block-definition s="max3 %&apos;A&apos; %&apos;B&apos; %&apos;C&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><custom-block s="max %n and %n"><block var="A"/><custom-block s="max %n and %n"><block var="B"/><block var="C"/></custom-block></custom-block></block></script></block-definition><block-definition s="%&apos;a&apos; + %&apos;b&apos; + %&apos;c&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportSum"><block var="a"/><block s="reportSum"><block var="b"/><block var="c"/></block></block></block></script></block-definition><block-definition s="convert %&apos;a&apos; degrees Celsius to Fahrenheit" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportSum"><block s="reportProduct"><block var="a"/><l>1.8</l></block><l>32</l></block></block></script></block-definition><block-definition s="convert %&apos;a&apos; percent to P or NP" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="a"/><l>80</l></block><block s="reportGreaterThan"><block var="a"/><l>80</l></block></block><script><block s="doReport"><l>P</l></block></script><script><block s="doReport"><l>NP</l></block></script></block></script></block-definition><block-definition s="DrawSides" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="down"></block><block s="doRepeat"><block var="Sides"/><script><block s="forward"><l>50</l></block><block s="turn"><block s="reportQuotient"><l>360</l><block var="Sides"/></block></block></script></block><block s="up"></block></script></block-definition><block-definition s="Sides" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="gotoXY"><l>-120</l><l>90</l></block><block s="doAsk"><l>How many sides does your polygon have?</l></block><block s="doSetVar"><l>Sides</l><block s="getLastAnswer"></block></block><custom-block s="DrawSides"></custom-block><block s="doWait"><l>1</l></block><custom-block s="Sides"></custom-block></script></block-definition><block-definition s="switch backdrop to %&apos;backdrop&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s">Empty<options>Empty&#xD;next backdrop&#xD;previous backdrop&#xD;random backdrop</options></input></inputs><script><block s="doTellTo"><l>Stage</l><block s="reifyScript"><script><block s="doSwitchToCostume"><block var="backdrop"/></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="backdrop"/><custom-block s="backdrop %s"><l></l></custom-block></block></block><script><block s="doIfElse"><block s="reportEquals"><block var="backdrop"/><l>next backdrop</l></block><script><block s="doWearNextCostume"></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="backdrop"/><l>previous backdrop</l></block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>this.doWearPreviousCostume();</l></block><list></list></block></script><script><block s="doIf"><block s="reportEquals"><block var="backdrop"/><l>random backdrop</l></block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>this.wearCostume(this.costumes.at(Math.floor(Math.random() * (this.costumes.length())) + 1;));</l></block><list></list></block></script></block></script></block></script></block></script></block><block s="doBroadcast"><block s="reportJoinWords"><list><l>backdrop switches to </l><custom-block s="backdrop %s"><l></l></custom-block></list></block></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="backdrop %&apos;type&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">number<options>number&#xD;name</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="type"/><l>number</l></block><script><block s="doReport"><block s="reportAttributeOf"><l><option>costume #</option></l><l>Stage</l></block></block></script><script><block s="doReport"><block s="reportAttributeOf"><l><option>costume name</option></l><l>Stage</l></block></block></script></block></script></block-definition><block-definition s="%&apos;type&apos; &gt; %&apos;num&apos;" type="predicate" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">loudness<options>loudness&#xD;timer</options></input><input type="%n">10</input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="type"/><l>loudness</l></block><script><block s="doIfElse"><block s="reportGreaterThan"><block s="reportAudio"><l><option>volume</option></l></block><block var="num"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script><script><block s="doIfElse"><block s="reportGreaterThan"><block s="getTimer"></block><block var="num"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script></block-definition><block-definition s="active %&apos;in1&apos; and %&apos;in2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportAnd"><block var="in1"/><block var="in2"/></block></block></script></block-definition><block-definition s="active %&apos;in1&apos; or %&apos;in2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportOr"><block var="in1"/><block var="in2"/></block></block></script></block-definition><block-definition s="set rotation style %&apos;style&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">left-right<options>left-right&#xD;don&apos;t rotate&#xD;all around</options></input></inputs><script><block s="doDeclareVariables"><list><l>#</l></list></block><block s="doIfElse"><block s="reportEquals"><block var="style"/><l>left-right</l></block><script><block s="doSetVar"><l>#</l><l>2</l></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="style"/><l>don&apos;t rotate</l></block><script><block s="doSetVar"><l>#</l><l>0</l></block></script><script><block s="doSetVar"><l>#</l><l>1</l></block></script></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>x</l></list><l>this.rotationStyle = Number(x);&#xD;this.changed();&#xD;this.drawNew();&#xD;this.changed();</l></block><list><block var="#"/></list></block></script></block-definition><block-definition s="string of %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>counter</l></list></block><block s="doSetVar"><l>counter</l><l>0</l></block><block s="doRepeat"><block s="reportListLength"><block var="list"/></block><script><block s="doChangeVar"><l>counter</l><l>1</l></block><block s="doIf"><block s="reportOr"><block s="reportNot"><block s="reportEquals"><block s="reportStringSize"><block s="reportListItem"><block var="counter"/><block var="list"/></block></block><l>1</l></block></block><block s="reportEquals"><block s="evaluate"><block s="reportJSFunction"><list><l>item</l></list><l>return typeof(item);</l></block><list><block s="reportListItem"><block var="counter"/><block var="list"/></block></list></block><l>number</l></block></block><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>counter</l><l>0</l></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doRepeat"><block s="reportListLength"><block var="list"/></block><script><block s="doChangeVar"><l>counter</l><l>1</l></block><block s="doAddToList"><l> </l><block var="result"/></block><block s="doAddToList"><block s="reportListItem"><block var="counter"/><block var="list"/></block><block var="result"/></block></script></block><block s="doReport"><block s="reportJoinWords"><block s="reportCDR"><block var="result"/></block></block></block></script></block></script></block><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block></script></block-definition><block-definition s="for each %&apos;variable&apos; in %&apos;bound&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_getVarNamesDict</options></input><input type="%s"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>counter</l></list></block><block s="doSetVar"><l>counter</l><l>0</l></block><block s="doRepeat"><block var="bound"/><script><block s="doChangeVar"><l>counter</l><l>1</l></block><block s="doRun"><block s="reportJSFunction"><list><l>variable</l><l>value</l><l>proc</l></list><l>proc.context.parentContext.variables.setVar(variable, value);</l></block><list><block var="variable"/><block var="counter"/></list></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="while %&apos;cond&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="cond"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="clear counter" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>this.parentThatIsA(StageMorph).counter=0;</l></block><list></list></block></script></block-definition><block-definition s="increment counter" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>if (this.parentThatIsA(StageMorph).counter === undefined){&#xD; this.parentThatIsA(StageMorph).counter=1;&#xD;}else{&#xD; this.parentThatIsA(StageMorph).counter++;&#xD;}</l></block><list></list></block></script></block-definition><block-definition s="counter" type="reporter" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>if (this.parentThatIsA(StageMorph).counter === undefined){&#xD; this.parentThatIsA(StageMorph).counter=0;&#xD; return 0;&#xD;}else{&#xD; return this.parentThatIsA(StageMorph).counter;&#xD;}</l></block><list></list></block></block></script></block-definition><block-definition s="username" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>this.parentThatIsA(IDE_Morph).cloud.username;</l></block><list></list></block></block></script></block-definition><block-definition s="costume %&apos;type&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">number<options>number&#xD;name</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="type"/><l>number</l></block><script><block s="doReport"><block s="getCostumeIdx"></block></block></script><script><block s="doReport"><block s="reportAttributeOf"><l><option>costume name</option></l><block s="reportGet"><l><option>self</option></l></block></block></block></script></block></script></block-definition><block-definition s="%&apos;base&apos; contains %&apos;sub&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">apple</input><input type="%s">a</input></inputs><script><block s="doDeclareVariables"><list><l>counter</l><l>list</l></list></block><block s="doSetVar"><l>list</l><block s="reportTextSplit"><block var="base"/><l><option>letter</option></l></block></block><block s="doSetVar"><l>counter</l><l>1</l></block><block s="doRepeat"><block s="reportSum"><block s="reportDifference"><block s="reportStringSize"><block var="base"/></block><block s="reportStringSize"><block var="sub"/></block></block><l>1</l></block><script><block s="doIf"><block s="evaluate"><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>region</l></list></block><block s="doSetVar"><l>region</l><l>0</l></block><block s="doRepeat"><block s="reportStringSize"><block var="sub"/></block><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block s="reportSum"><block var="region"/><l>1</l></block><block var="sub"/></block><block s="reportLetter"><block s="reportSum"><block var="region"/><block var="counter"/></block><block var="base"/></block></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doChangeVar"><l>region</l><l>1</l></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><list></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doChangeVar"><l>counter</l><l>1</l></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="item # of %&apos;item&apos; in %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s">thing</input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>counter</l></list></block><block s="doSetVar"><l>counter</l><l>1</l></block><block s="doRepeat"><block s="reportListLength"><block var="list"/></block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="counter"/><block var="list"/></block><block var="item"/></block><script><block s="doReport"><block var="counter"/></block></script></block><block s="doChangeVar"><l>counter</l><l>1</l></block></script></block><block s="doReport"><l>0</l></block></script></block-definition><block-definition s="loudness" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter == "undefined";</l></block><list></list></block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>navigator.getUserMedia = ( navigator.getUserMedia ||&#xD;                       navigator.webkitGetUserMedia ||&#xD;                       navigator.mozGetUserMedia ||&#xD;                       navigator.msGetUserMedia);&#xD;&#xD;var audioContext = new AudioContext();&#xD;&#xD;/*&#xD;The MIT License (MIT)&#xD;&#xD;Copyright (c) 2014 Chris Wilson&#xD;&#xD;Permission is hereby granted, free of charge, to any person obtaining a copy&#xD;of this software and associated documentation files (the "Software"), to deal&#xD;in the Software without restriction, including without limitation the rights&#xD;to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&#xD;copies of the Software, and to permit persons to whom the Software is&#xD;furnished to do so, subject to the following conditions:&#xD;&#xD;The above copyright notice and this permission notice shall be included in all&#xD;copies or substantial portions of the Software.&#xD;&#xD;THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&#xD;IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&#xD;FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&#xD;AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&#xD;LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&#xD;OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&#xD;SOFTWARE.&#xD;*/&#xD;&#xD;function createAudioMeter (audioContext,clipLevel,averaging,clipLag) {&#xD;	 var processor = audioContext.createScriptProcessor(512);&#xD;	 processor.onaudioprocess = volumeAudioProcess;&#xD;	 processor.clipping = false;&#xD;	 processor.lastClip = 0;&#xD;	 processor.volume = 0;&#xD;	 processor.clipLevel = clipLevel || 0.98;&#xD;	 processor.averaging = averaging || 0.95;&#xD;	 processor.clipLag = clipLag || 750;&#xD; 	processor.connect(audioContext.destination);&#xD; 	return processor;&#xD;};&#xD;&#xD;function volumeAudioProcess (event) {&#xD;  var buf = event.inputBuffer.getChannelData(0),&#xD;      bufLength = buf.length,&#xD; 	    sum = 0,&#xD;      x;&#xD;  for (var i=0; i&lt;bufLength; i++) {&#xD;   	x = buf[i];&#xD;   	if (Math.abs(x)&gt;=this.clipLevel) {&#xD;    		this.clipping = true;&#xD;    		this.lastClip = window.performance.now();&#xD;   	}&#xD;   	sum += x * x;&#xD;  }&#xD;  var rms =  Math.sqrt(sum / bufLength);&#xD;  this.volume = Math.max(rms, this.volume*this.averaging);&#xD;};&#xD;&#xD;function gotStream (stream) {&#xD;  mediaStreamSource = audioContext.createMediaStreamSource(stream);&#xD;  window.meter = createAudioMeter(audioContext);&#xD;  mediaStreamSource.connect(meter);&#xD;};&#xD;&#xD;navigator.getUserMedia(&#xD;  {&#xD;    "audio": {&#xD;      "mandatory": {&#xD;        "googEchoCancellation": "false",&#xD;        "googAutoGainControl": "false",&#xD;        "googNoiseSuppression": "false",&#xD;        "googHighpassFilter": "false"&#xD;      },&#xD;      "optional": []&#xD;    },&#xD;  }, gotStream, nop);</l></block><list></list></block></script></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter != undefined;</l></block><list></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return Math.floor(meter.volume * 100);</l></block><list></list></block></block></script></block-definition><block-definition s="do Javascript %&apos;script&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><block var="script"/></block><list></list></block></script></block-definition><block-definition s="switch costume to text %&apos;txt&apos; of color %&apos;clr&apos; size %&apos;sz&apos; and font %&apos;fnt&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello, world!</input><input type="%txt">#000000</input><input type="%n">20</input><input type="%txt">Arial</input></inputs><script><block s="doDeclareVariables"><list><l>errr</l></list></block><block s="doSetVar"><l>errr</l><l>InvalidStateError: Failed to execute &apos;drawImage&apos; on &apos;CanvasRenderingContext2D&apos;: The image argument is a canvas element with a width or height of 0.</l></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doRun"><block s="reportJSFunction"><list><l>txt</l><l>s</l><l>f</l></list><l>var text = document.createElement("canvas");var ctx = text.getContext("2d");text.height = f.split("px")[0] * 3;ctx.font = f;text.width = ctx.measureText(txt).width;ctx.fillStyle = s;ctx.font = f; //Had to do this twice, or it wouldn&apos;t allow custom fontsctx.fillText(txt, 0, text.height * 0.6);this.costume = new Costume(text, txt + "TextMorph", new Point(text.width / 2, text.height / 2));this.drawNew();</l></block><list><block var="txt"/><block var="clr"/><block s="reportJoinWords"><list><block var="sz"/><l>px </l><block var="fnt"/></list></block></list></block></script><l>error</l><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var cnvs = document.createElement("canvas");cnvs.width = 1;cnvs.height = 1;this.costume = new Costume(cnvs, "Error", new Point(cnvs.width / 2, cnvs.height / 2));this.drawNew();</l></block><list></list></block></script></custom-block></script></block-definition><block-definition s="switch costume to button with text %&apos;txt&apos; status %&apos;pr&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%s" readonly="true">regular&#xD;        <options>regular=regularhighlighted=highlightedselected=selected</options></input></inputs><script><block s="doSwitchToCostume"><block s="evaluate"><block s="reportJSFunction"><list><l>txt</l><l>tc</l><l>bc</l><l>pr</l><l>rbi</l></list><l>this.class = "button";this.status = pr;var wb = new PushButtonMorph(null, null, txt);wb.fixLayout();wb.color = bc;var img;if (pr == "selected") {    img = wb.pressImage;} else if (pr == "regular") {    img = wb.image;} else {    img = wb.highlightImage;}img.getContext("2d").font = rbi + "10px sans-serif"img.getContext("2d").fillStyle = "rgb(" + tc.r + ", " + tc.g + ", " + tc.b + ")"img.getContext("2d").font = rbi + "10px sans-serif"img.getContext("2d").fillText(txt, (img.width - img.getContext("2d").measureText(txt).width) / 2, img.height * 0.60);return new Costume(img, "button", new Point(img.width / 2, img.height / 2));</l></block><list><block var="txt"/><custom-block s="color r %n g %n b %n"><l></l><l></l><l></l></custom-block><custom-block s="color r %n g %n b %n"><l></l><l></l><l></l></custom-block><block var="pr"/><l>normal</l></list></block></block></script><scripts><script x="117.45703325" y="396.6666696666668"><block var="tc"/></script><script x="145.45703325" y="404.66666966666656"><block var="bc"/></script><script x="434.45703324999977" y="383.6666696666667"><block var="rbi"/></script></scripts></block-definition><block-definition s="color r %&apos;r&apos; g %&apos;g&apos; b %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>r</l><l>g</l><l>b</l></list><l>return new Color(r, g, b);</l></block><list><block var="r"/><block var="g"/><block var="b"/></list></block></block></script></block-definition><block-definition s="draw checkbox checked? %&apos;c&apos; size %&apos;s&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%b">false</input><input type="%n">20</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>isChecked</l><l>size</l></list><l>var canvas = document.createElement("canvas");canvas.width = size;canvas.height = canvas.width;ctx = canvas.getContext("2d");ctx.beginPath();ctx.lineWidth = 5;ctx.strokeStyle = "black";ctx.rect(0, 0, canvas.width, canvas.height);ctx.fillStyle = "white";ctx.fillRect(ctx.lineWidth / 2, ctx.lineWidth / 2, canvas.width - ctx.lineWidth, canvas.height - ctx.lineWidth);if (isChecked) {ctx.moveTo(canvas.width * 0.2, canvas.height * 0.6);ctx.lineTo(canvas.width * 0.5, canvas.height * 0.9);ctx.moveTo(canvas.width * 0.5, canvas.height * 0.9);ctx.lineTo(canvas.width * 0.8, canvas.height * 0.1);}ctx.stroke();this.costume = new Costume(canvas, "unknown", new Point(0, 0));this.drawNew();</l></block><list><block var="c"/><block var="s"/></list></block></script></block-definition><block-definition s="move with speed %&apos;distance&apos; with ease “out”" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><block var="distance"/></block><block s="doSetVar"><l>b</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="a"/><l>0</l></block><block s="reportLessThan"><block var="a"/><l>0</l></block></block><script><block s="doChangeVar"><l>a</l><l>-1</l></block><block s="doAddToList"><block var="a"/><block var="b"/></block></script></block></script></block><block s="doForEach"><l>number of steps</l><block var="b"/><script><block s="forward"><block var="number of steps"/></block><block s="bounceOffEdge"></block></script></block></script></block-definition><block-definition s="move with speed %&apos;speed&apos; with ease “in”" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><l>0</l></block><block s="doSetVar"><l>b</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="a"/><block var="speed"/></block><block s="reportGreaterThan"><block var="a"/><block var="speed"/></block></block><script><block s="doChangeVar"><l>a</l><l>1</l></block><block s="doAddToList"><block var="a"/><block var="b"/></block></script></block></script></block><block s="doForEach"><l>number of steps</l><block var="b"/><script><block s="forward"><block var="number of steps"/></block><block s="bounceOffEdge"></block></script></block></script></block-definition><block-definition s="move with speed %&apos;speed&apos; with ease “in-out”" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><custom-block s="move with speed %n with ease “in”"><block s="reportQuotient"><block var="speed"/><l>1.5</l></block></custom-block><custom-block s="move with speed %n with ease “out”"><block s="reportQuotient"><block var="speed"/><l>1.5</l></block></custom-block></script></block-definition><block-definition s="move with speed %&apos;speed&apos; with ease “out-in”" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><custom-block s="move with speed %n with ease “out”"><block s="reportQuotient"><block var="speed"/><l>1.5</l></block></custom-block><custom-block s="move with speed %n with ease “in”"><block s="reportQuotient"><block var="speed"/><l>1.5</l></block></custom-block></script></block-definition><block-definition s="parseInt( %&apos;n1&apos; , %&apos;n2&apos; )" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>num1</l><l>num2</l></list><l>return parseInt(num1, num2)</l></block><list><block var="n1"/><block var="n2"/></list></block></block></script></block-definition><block-definition s="base %&apos;n&apos; of %&apos;n2&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><block s="evaluate"><block s="reportJSFunction"><list><l>num1</l><l>num2</l></list><l>return ((num1).toString(num2));</l></block><list><block var="n"/><block var="n2"/></list></block></list></block></block></script></block-definition><block-definition s="encrypt %&apos;text&apos; with password %&apos;p&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block var="p"/></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportUnicodeAsLetter"><l></l></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><block var="p"/></block></autolambda><list></list></block><block s="reportUnicode"><block var="text"/></block></block></block></list></block></block></script></block-definition><block-definition s="%&apos;type&apos; notation of %&apos;number&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true"><options>scientific&#xD;infinity&#xD;percentage to infinity&#xD;log percentage to infinity</options></input><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="type"/><l>scientific</l></block><script><block s="doDeclareVariables"><list><l>num</l></list></block><block s="doSetVar"><l>num</l><block s="reportMonadic"><l><option>abs</option></l><block var="number"/></block></block><block s="doIfElse"><block s="reportOr"><block s="reportGreaterThan"><block var="num"/><block s="reportMonadic"><l><option>10^</option></l><l>6</l></block></block><block s="reportLessThan"><block var="num"/><block s="reportMonadic"><l><option>10^</option></l><l>-2</l></block></block></block><script><block s="doReport"><block s="reportJoinWords"><list><block s="reportIfElse"><block s="reportLessThan"><block var="number"/><l>0</l></block><l>-</l><l></l></block><block s="reportJoinWords"><list><block s="reportQuotient"><block s="reportMonadic"><l><option>floor</option></l><block s="reportProduct"><block s="reportQuotient"><block var="num"/><block s="reportMonadic"><l><option>10^</option></l><block s="reportMonadic"><l><option>floor</option></l><block s="reportMonadic"><l><option>log</option></l><block var="num"/></block></block></block></block><l>1000</l></block></block><l>1000</l></block><l>e</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportMonadic"><l><option>log</option></l><block var="num"/></block></block></list></block></list></block></block></script><script><block s="doReport"><block s="reportJoinWords"><list><block s="reportIfElse"><block s="reportLessThan"><block var="number"/><l>0</l></block><l>-</l><l></l></block><block s="reportQuotient"><block s="reportMonadic"><l><option>floor</option></l><block s="reportProduct"><block var="num"/><l>1000</l></block></block><l>1000</l></block></list></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>infinity</l></block><script><block s="doReport"><custom-block s="%txt notation of %txt"><l>scientific</l><block s="reportQuotient"><block var="number"/><block s="reportJoinWords"><list><l>1.7976931348623157e308</l></list></block></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>percentage to infinity</l></block><script><block s="doReport"><custom-block s="%txt notation of %txt"><l>scientific</l><block s="reportProduct"><block s="reportQuotient"><block var="number"/><block s="reportJoinWords"><list><l>1.7976931348623157e308</l></list></block></block><l>100</l></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>log percentage to infinity</l></block><script><block s="doReport"><custom-block s="%txt notation of %txt"><l>scientific</l><block s="reportProduct"><block s="reportQuotient"><block s="reportMonadic"><l><option>log</option></l><block s="reportSum"><block var="number"/><l>1</l></block></block><block s="reportMonadic"><l><option>log</option></l><block s="reportSum"><block s="reportJoinWords"><list><l>1.7976931348623157e308</l></list></block><l>1</l></block></block></block><l>100</l></block></custom-block></block></script></block></script></block-definition><block-definition s="hahaha" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="factorial %&apos;n&apos; test" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">5</input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportLessThan"><block var="n"/><l>0</l></block><l>0</l><block s="reportSum"><block var="n"/><custom-block s="factorial %n test"><block s="reportDifference"><block var="n"/><l>1</l></block></custom-block></block></block></block></script></block-definition><block-definition s="1.7e308 full number" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368</l></block></script></block-definition><block-definition s="test tad" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos; (2)" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="%&apos;id&apos; tell my clones to %&apos;cmd&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doWarp"><script><block s="doSetVar"><l>item</l><l>1</l></block><block s="doForEach"><l>item</l><block s="reportGet"><l><option>clones</option></l></block><script><block s="doTellTo"><block var="item"/><block var="cmd"/><list></list></block><block s="doChangeVar"><l>item</l><l>1</l></block></script></block></script></block></script></block-definition><block-definition s="make graph %&apos;r&apos; %&apos;z&apos; %&apos;t&apos; %&apos;c&apos; %&apos;list&apos;" type="command" category="control"><comment x="0" y="0" w="90" collapsed="false">make graph [repeats] [zoom] [t] [function] [list]&#xD;&#xD;example:&#xD;make graph 240 0.5 [t] [(t mod 10)] [list]</comment><header></header><code></code><translations></translations><inputs><input type="%n">15</input><input type="%n">2</input><input type="%upvar"></input><input type="%repRing"></input><input type="%upvar"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>call</l></list></block><block s="up"></block><block s="gotoXY"><block s="reportDifference"><l></l><block s="reportQuotient"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><l>2</l></block></block><l>-180</l></block><block s="doSetVar"><l>list</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>t</l><l>0</l></block><block s="doRepeat"><block var="r"/><script><block s="doSetVar"><l>call</l><block s="evaluate"><block var="c"/><list></list></block></block><block s="doAddToList"><block var="call"/><block var="list"/></block><block s="setYPosition"><block s="reportQuotient"><block var="call"/><block var="z"/></block></block><block s="down"></block><block s="changeXPosition"><block s="reportQuotient"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><block var="r"/></block></block><block s="doChangeVar"><l>t</l><l>1</l></block></script></block><block s="up"></block></script></block></script></block-definition><block-definition s="add %&apos;n&apos; to %&apos;n2&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportSum"><block var="n"/><block var="n2"/></block></block></script></block-definition><block-definition s="random %&apos;text&apos; separator %&apos;sep&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">1,2,3,4,5</input><input type="%txt">,</input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block var="text"/><block var="sep"/></block></block><block s="doReport"><block s="reportListItem"><l><option>any</option></l><block var="a"/></block></block></script></block-definition><block-definition s="text %&apos;text&apos; find for %&apos;find&apos; replace with %&apos;replace&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello World!</input><input type="%txt">Hello</input><input type="%txt">Hi</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l><l>d</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block var="text"/><l> </l></block></block><block s="doSetVar"><l>b</l><l>1</l></block><block s="doSetVar"><l>c</l><l></l></block><block s="doRepeat"><block s="reportDifference"><block s="reportListLength"><block var="a"/></block><l>1</l></block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="b"/><block var="a"/></block><block var="find"/></block><script><block s="doReplaceInList"><block var="b"/><block var="a"/><block var="replace"/></block></script></block><block s="doSetVar"><l>c</l><block s="reportJoinWords"><list><block var="c"/><block s="reportJoinWords"><list><block s="reportListItem"><block var="b"/><block var="a"/></block><l> </l></list></block></list></block></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="b"/><block var="a"/></block><block var="find"/></block><script><block s="doReplaceInList"><block var="b"/><block var="a"/><block var="replace"/></block></script></block><block s="doSetVar"><l>c</l><block s="reportJoinWords"><list><block var="c"/><block s="reportListItem"><block var="b"/><block var="a"/></block></list></block></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block><block s="doReport"><block var="c"/></block></script></block-definition><block-definition s="substr %&apos;s&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>answer</l></list><l> return answer.substring(0, answer.length - 1);</l></block><list><block var="s"/></list></block></block></script></block-definition><block-definition s="set cloud var %&apos;cloud&apos; to %&apos;value&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="ignore %s"><block s="reportURL"><block s="reportJoinWords"><list><l>snapextensions.uni-goettingen.de/handleTextfile.php?type=write&amp;content=</l><block var="value"/><l>&amp;filename=./textfiles/</l><block s="reportJoinWords"><list><block var="cloud"/><l>_id_</l><custom-block s="cloud ID"></custom-block></list></block><l>.txt</l></list></block></block></custom-block></script></block-definition><block-definition s="ignore %&apos;s&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="cloud var %&apos;s&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="substr %s"><block s="reportURL"><block s="reportJoinWords"><list><l>snapextensions.uni-goettingen.de/handleTextfile.php?type=read&amp;filename=./textfiles/</l><block s="reportJoinWords"><list><block var="s"/><l>_id_</l><custom-block s="cloud ID"></custom-block></list></block><l>.txt</l></list></block></block></custom-block></block></script></block-definition><block-definition s="cloud ID %&apos;s&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>a</l></list><l>cloudid = a</l></block><list><block var="s"/></list></block></script></block-definition><block-definition s="cloud ID" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return cloudid;</l></block><list></list></block></block></script></block-definition><block-definition s="play frequency %&apos;freq&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="199" collapsed="false">Plays a specific note and waits for it to finish</comment><header></header><code></code><translations></translations><inputs><input type="%n">440</input><input type="%n">0.5</input></inputs><script><custom-block s="play frequency %n Hz for %n beats without waiting"><block var="freq"/><block var="b"/></custom-block><block s="doRest"><block var="b"/></block></script></block-definition><block-definition s="play frequencies %&apos;freqs&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="180" collapsed="false">Plays a chord and waits for it to finish</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><custom-block s="play frequencies %mult%n Hz for %n beats without waiting"><block var="freqs"/><block var="b"/></custom-block><block s="doRest"><block var="b"/></block></script></block-definition><block-definition s="frequency %&apos;note&apos;" type="reporter" category="sound"><comment x="0" y="0" w="183" collapsed="false">Returns the frequency for a piano note</comment><header></header><code></code><translations></translations><inputs><input type="%n">60&#xD;        <options>§_pianoKeyboardMenu</options></input></inputs><script><block s="doReport"><block s="reportProduct"><l>440</l><block s="reportPower"><l>2</l><block s="reportQuotient"><block s="reportDifference"><block var="note"/><l>69</l></block><l>12</l></block></block></block></block></script></block-definition><block-definition s="play arpeggio %&apos;freqs&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="257" collapsed="false">Plays all of the notes in order and waits for them to finish</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="doForEach"><l>item</l><block var="freqs"/><script><custom-block s="play frequency %n Hz for %n beats"><block var="item"/><block var="b"/></custom-block></script></block></script></block-definition><block-definition s="play frequency %&apos;freq&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="80" collapsed="false">Plays a note</comment><header></header><code></code><translations></translations><inputs><input type="%n">440</input><input type="%n">0.5</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>freq</l><l>b</l></list><l>const stage = this.parentThatIsA(StageMorph);let context = stage.audioContext();let gain = context.createGain();gain.connect(context.destination);gain.gain.value = stage.volume/800; const oscillator = context.createOscillator();oscillator.connect(gain);let inst;switch (this.instrument) {    default:        inst = "sine";        break;    case 2:        inst = "square";        break;    case 3:        inst = "sawtooth";        break;    case 4:        inst = "triangle";        break;}oscillator.type = inst;oscillator.frequency.value = freq;oscillator.start();oscillator.stop(context.currentTime + b * 60 / stage.tempo);</l></block><list><block var="freq"/><block var="b"/></list></block></script></block-definition><block-definition s="octave %&apos;note&apos; %&apos;oct&apos;" type="reporter" category="sound"><comment x="0" y="0" w="291" collapsed="false">Outputs the note after it has been shifted by the octave</comment><header></header><code></code><translations></translations><inputs><input type="%n">60&#xD;        <options>§_pianoKeyboardMenu</options></input><input type="%n">0</input></inputs><script><block s="doReport"><block s="reportSum"><block var="note"/><block s="reportProduct"><block var="oct"/><l>12</l></block></block></block></script></block-definition><block-definition s="do %&apos;blocks&apos; in order %&apos;order&apos;" type="command" category="control"><comment x="0" y="0" w="167" collapsed="false">Do each block in the order specified</comment><header></header><code></code><translations></translations><inputs><input type="%mult%cmdRing"></input><input type="%mult%n"></input></inputs><script><block s="doForEach"><l>index</l><block var="order"/><script><block s="doRun"><block s="reportListItem"><block var="index"/><block var="blocks"/></block><list></list></block></script></block></script></block-definition><block-definition s="play frequencies %&apos;freqs&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="90" collapsed="false">Plays a chord</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>freqs</l><l>b</l></list><l>const stage = this.parentThatIsA(StageMorph);let context = stage.audioContext();let gain = context.createGain();gain.connect(context.destination);gain.gain.value = stage.volume/800;let inst;switch (this.instrument) {    default:        inst = "sine";        break;    case 2:        inst = "square";        break;    case 3:        inst = "sawtooth";        break;    case 4:        inst = "triangle";        break;} for (freq of freqs.asArray()) {  let oscillator = context.createOscillator();  oscillator.connect(gain);  oscillator.type = inst;  oscillator.frequency.value = freq;  oscillator.start(context.currentTime);  oscillator.stop(context.currentTime + b * 60 / stage.tempo);}</l></block><list><block var="freqs"/><block var="b"/></list></block></script></block-definition><block-definition s="play arpeggio %&apos;freqs&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="137" collapsed="false">Plays all of the notes in order</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="fork"><block s="reifyScript"><script><custom-block s="play arpeggio %mult%n Hz for %n beats"><block var="freqs"/><block var="b"/></custom-block></script><list></list></block><list></list></block></script></block-definition><block-definition s="Open website %&apos;website&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Opens a website in a new tab or window. Make sure it starts with https:// or http://</comment><header></header><code></code><translations></translations><inputs><input type="%s">https://www.google.com</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>openWebAddress</l></list><l>window.open(openWebAddress);</l></block><list><block var="website"/></list></block></script></block-definition><block-definition s="Alert %&apos;alert text&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Popup with text.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>alertNameText</l></list><l>alert(alertNameText);</l></block><list><block var="alert text"/></list></block></script></block-definition><block-definition s="Notification title %&apos;title&apos; text %&apos;text&apos; icon link %&apos;icon&apos; image link %&apos;image&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Creates a desktop notification. Any or all of the inputs can be filled.NB: Will ask user for permission first.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%txt"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>notificationTitle</l><l>notificationText</l><l>iconLink</l><l>imageLink</l></list><l>// Check if the browser supports notifications  if (!("Notification" in window)) {}  else if (Notification.permission === "granted") {    var notification = new Notification(notificationTitle, {body:notificationText, icon:iconLink, image:imageLink});  }  else if (Notification.permission !== "denied") {    Notification.requestPermission().then(function (permission) {    if (permission === "granted") {        var notification = new Notification(notificationText);      }    });  }</l></block><list><block var="title"/><block var="text"/><block var="icon"/><block var="image"/></list></block></script></block-definition><block-definition s="Confirm popup %&apos;text&apos;" type="predicate" category="other"><comment x="0" y="0" w="90" collapsed="false">Popup with &apos;Ok&apos; or &apos;Cancel&apos;</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>confirmText</l></list><l>return(confirm(confirmText));</l></block><list><block var="text"/></list></block></block></script></block-definition><block-definition s="Prompt %&apos;text&apos; default %&apos;default text&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">Popup with an input.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>promptText</l><l>promptDefault</l></list><l>return(prompt(promptText, promptDefault));</l></block><list><block var="text"/><block var="default text"/></list></block></block></script></block-definition><block-definition s="popup %&apos;text&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Creates a new window with text in.</comment><header></header><code></code><translations></translations><inputs><input type="%s">Text</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>javaText</l></list><l>let newWindow = window.open("about:blank", "", "_blank"); let textBlock = javaTextif (newWindow) {	newWindow.document.write(textBlock);}</l></block><list><block var="text"/></list></block></script></block-definition><block-definition s="set cookie var %&apos;cname&apos; to %&apos;cvalue&apos; will expire in %&apos;exdays&apos; days" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Creates a browser cookie with the value, title, and expire date.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%n"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>cname</l><l>exdays</l><l>cvalue</l></list><l>var d = new Date();  d.setTime(d.getTime() + (exdays*24*60*60*1000));  var expires = "expires="+ d.toUTCString();  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";</l></block><list><block var="cname"/><block var="exdays"/><block var="cvalue"/></list></block></script></block-definition><block-definition s="get cookie var %&apos;cname&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">Returns the value of the specified cookie.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>cname</l></list><l>var name = cname + "=";  var decodedCookie = decodeURIComponent(document.cookie);  var ca = decodedCookie.split(&apos;;&apos;);  for(var i = 0; i &lt;ca.length; i++) {    var c = ca[i];    while (c.charAt(0) == &apos; &apos;) {      c = c.substring(1);    }    if (c.indexOf(name) == 0) {      return c.substring(name.length, c.length);    }  }return ca;</l></block><list><block var="cname"/></list></block></block></script></block-definition><block-definition s="File save prompt . name: %&apos;file name&apos; text %&apos;file text&apos; extension: %&apos;file extension&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>textContents</l><l>textName</l><l>fileExtension</l></list><l>var ide=this.parentThatIsA(IDE_Morph);&#xD;ide.saveFileAs(textContents,&apos;text/&apos; + fileExtension + &apos;;charset=utf-8&apos;, textName);</l></block><list><block var="file text"/><block var="file name"/><block var="file extension"/></list></block></script></block-definition><block-definition s="set cursor %&apos;cursor name&apos;" type="command" category="other"><comment x="0" y="0" w="261" collapsed="false">Sets cursor to a specific image. See https://www.w3schools.com/CSSref/playit.asp?filename=playcss_cursor&amp;preval=alias for a list of keywords</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>cursorName</l></list><l>document.body.style.cursor = cursorName;</l></block><list><block var="cursor name"/></list></block></script></block-definition><block-definition s="return cursor" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">&quot;Help! I don&apos;t know how to change the cursor back!&quot;</comment><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="set cursor %txt"><l>default</l></custom-block></script></block-definition><block-definition s="website popup %&apos;website&apos;" type="command" category="other"><comment x="0" y="0" w="114" collapsed="false">Opens a new window with a website.</comment><header></header><code></code><translations></translations><inputs><input type="%s">https://www.google.com</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>javaWebsite</l></list><l>let newWindow = window.open(javaWebsite, "", "_blank");</l></block><list><block var="website"/></list></block></script></block-definition><block-definition s="anywhere url %&apos;url&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">Get html contents from anywhere on the internet.</comment><header></header><code></code><translations></translations><inputs><input type="%s">https://en.wikipedia.org/wiki/Main_page</input></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>https://cors-anywhere.herokuapp.com/</l><block var="url"/></list></block></block></block></script></block-definition><block-definition s="pen %&apos;state&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doIfElse"><block var="state"/><script><block s="down"></block></script><script><block s="up"></block></script></block></script></block-definition><block-definition s="wait for click" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWaitUntil"><block s="reportMouseDown"></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportMouseDown"></block></block></block></script></block-definition><block-definition s="get hex at mouse-pointer" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportJoinWords"><list><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>1</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>mouse-pointer</option></l></block></block></custom-block><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>2</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>mouse-pointer</option></l></block></block></custom-block><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>3</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>mouse-pointer</option></l></block></block></custom-block></list></block></block></script></block-definition><block-definition s="set pen color to r: %&apos;r&apos; g: %&apos;g&apos; b: %&apos;b&apos;" type="command" category="pen"><header></header><code></code><translations>pt:altera a cor da tua caneta para vermelho _ , verde _ e azul _ (0 a 255)&#xD;</translations><inputs><input type="%n">255</input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>r</l><l>g</l><l>b</l></list><l>this.setColor(new Color(r, g, b));</l></block><list><block var="r"/><block var="g"/><block var="b"/></list></block></script></block-definition><block-definition s="convert hex %&apos;hex&apos; to decimal" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>hex</l></list><l>return parseInt(hex, 16)</l></block><list><block var="hex"/></list></block></block></script></block-definition><block-definition s="convert hex %&apos;hex&apos; to rgb" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Returns list [r,g,b]</comment><header></header><code></code><translations></translations><inputs><input type="%s">ff00ff</input></inputs><script><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="hex"/></block><l>6</l></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="convert hex %s to decimal"><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="hex"/><l>1</l><l>2</l></custom-block></custom-block><custom-block s="convert hex %s to decimal"><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="hex"/><l>3</l><l>4</l></custom-block></custom-block><custom-block s="convert hex %s to decimal"><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="hex"/><l>5</l><l>6</l></custom-block></custom-block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="hex"/></block><l>3</l></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="hex"/></block><block s="reportLetter"><l>1</l><block var="hex"/></block></list></block></custom-block><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>2</l><block var="hex"/></block><block s="reportLetter"><l>2</l><block var="hex"/></block></list></block></custom-block><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>3</l><block var="hex"/></block><block s="reportLetter"><l>3</l><block var="hex"/></block></list></block></custom-block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="hex"/></block><l>1</l></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="hex"/></block><block s="reportLetter"><l>1</l><block var="hex"/></block></list></block></custom-block><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="hex"/></block><block s="reportLetter"><l>1</l><block var="hex"/></block></list></block></custom-block><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="hex"/></block><block s="reportLetter"><l>1</l><block var="hex"/></block></list></block></custom-block></list></block></block></script></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;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>string</l><l>marker</l></list><l>var world=this.parentThatIsA(IDE_Morph);if (!("stringLibCaseIndependentComparison" in world)) {    world["stringLibCaseIndependentComparison"] = true;};if (world["stringLibCaseIndependentComparison"]) {    var index=string.toLocaleLowerCase().indexOf(marker.toLocaleLowerCase());    if (index&lt;0) {return string};    return string.slice(0,index);} else {    var index=string.indexOf(marker);    if (index&lt;0) {return string};    return string.slice(0,index);}</l></block><list><block var="string"/><block var="marker"/></list></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;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>string</l><l>marker</l><l>markerlength</l></list><l>var world=this.parentThatIsA(IDE_Morph);if (!("stringLibCaseIndependentComparison" in world)) {    world["stringLibCaseIndependentComparison"] = true;};if (world["stringLibCaseIndependentComparison"]) {    var index=string.toLocaleLowerCase().indexOf(marker.toLocaleLowerCase());    if (index&lt;0) {return ""};    return string.slice(index+markerlength);} else {    var index=string.indexOf(marker);    if (index&lt;0) {return ""};    return string.slice(index+markerlength);}</l></block><list><block var="string"/><block var="marker"/><block s="reportStringSize"><block var="marker"/></block></list></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.If it&apos;s not found, reports 0.</comment><header></header><code></code><translations>pt:a posição de _ em _&#xD;</translations><inputs><input type="%s"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sub</l><l>sup</l></list><l>var world=this.parentThatIsA(IDE_Morph);if (!("stringLibCaseIndependentComparison" in world)) {    world["stringLibCaseIndependentComparison"] = true;};if (world["stringLibCaseIndependentComparison"]) {    return 1+sup.toLocaleLowerCase().indexOf(sub.toLocaleLowerCase());} else {    return 1+sup.indexOf(sub);}</l></block><list><block var="small"/><block var="large"/></list></block></block></script></block-definition><block-definition s="use case-independent comparisons %&apos;tf&apos;" type="command" category="operators"><comment x="0" y="0" w="225.33333333333334" collapsed="false">If input is TRUE, comparisons made by functions in the string library will be case-independent (so &quot;FOO&quot; = &quot;foo&quot;).  This is the default.If input is FALSE, comparisons will be exact.</comment><header></header><code></code><translations>pt:altera comparações ignorando distinção minúsculas/maiúsculas para _&#xD;</translations><inputs><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>flag</l></list><l>var world=this.parentThatIsA(IDE_Morph);world[&apos;stringLibCaseIndependentComparison&apos;] = flag;</l></block><list><block var="tf"/></list></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.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;</translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>str</l><l>start</l><l>end</l></list><l>if (end != "") {    return str.slice(start-1,end);} else {    return str.slice(start-1);}</l></block><list><block var="str"/><block var="start"/><block var="end"/></list></block></block></script></block-definition><block-definition s="set pen colour to hex: %&apos;hex&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s">123456</input></inputs><script><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportListItem"><l>1</l><custom-block s="convert hex %s to rgb"><block var="hex"/></custom-block></block><block s="reportListItem"><l>2</l><custom-block s="convert hex %s to rgb"><block var="hex"/></custom-block></block><block s="reportListItem"><l>3</l><custom-block s="convert hex %s to rgb"><block var="hex"/></custom-block></block></custom-block></script></block-definition><block-definition s="RGB color" type="reporter" category="pen"><header></header><code></code><translations>pt:a cor da caneta em RGB (vermelho, verde e azul; 0 a 255)&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return new List([this.color.r, this.color.g, this.color.b]);</l></block><list></list></block></block></script></block-definition><block-definition s="convert decimal %&apos;dec&apos; to 2-digit-padded hex" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>hex</l></list></block><block s="doSetVar"><l>hex</l><block s="evaluate"><block s="reportJSFunction"><list><l>dec</l></list><l>return dec.toString(16)</l></block><list><block var="dec"/></list></block></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="hex"/></block><l>1</l></block><script><block s="doSetVar"><l>hex</l><block s="reportJoinWords"><list><l>0</l><block var="hex"/></list></block></block></script></block><block s="doReport"><block var="hex"/></block></script></block-definition><block-definition s="hexmap-style hex at this sprite" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>output-temp</l></list></block><block s="doSetVar"><l>output-temp</l><custom-block s="get hex at this sprite"></custom-block></block><block s="doIf"><block s="reportAnd"><block s="reportEquals"><block s="reportLetter"><l>1</l><block var="output-temp"/></block><block s="reportLetter"><l>2</l><block var="output-temp"/></block></block><block s="reportAnd"><block s="reportEquals"><block s="reportLetter"><l>3</l><block var="output-temp"/></block><block s="reportLetter"><l>4</l><block var="output-temp"/></block></block><block s="reportEquals"><block s="reportLetter"><l>5</l><block var="output-temp"/></block><block s="reportLetter"><l>6</l><block var="output-temp"/></block></block></block></block><script><block s="doIfElse"><block s="reportAnd"><block s="reportEquals"><block s="reportLetter"><l>2</l><block var="output-temp"/></block><block s="reportLetter"><l>3</l><block var="output-temp"/></block></block><block s="reportEquals"><block s="reportLetter"><l>4</l><block var="output-temp"/></block><block s="reportLetter"><l>5</l><block var="output-temp"/></block></block></block><script><block s="doSetVar"><l>output-temp</l><block s="reportJoinWords"><list><l>m</l><block s="reportLetter"><l>1</l><block var="output-temp"/></block></list></block></block></script><script><block s="doSetVar"><l>output-temp</l><block s="reportJoinWords"><list><l>s</l><block s="reportLetter"><l>1</l><block var="output-temp"/></block><block s="reportLetter"><l>3</l><block var="output-temp"/></block><block s="reportLetter"><l>5</l><block var="output-temp"/></block></list></block></block></script></block></script></block><block s="doReport"><block var="output-temp"/></block></script></block-definition><block-definition s="get hex at this sprite" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportJoinWords"><list><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>1</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>myself</option></l></block></block></custom-block><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>2</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>myself</option></l></block></block></custom-block><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>3</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>myself</option></l></block></block></custom-block></list></block></block></script></block-definition><block-definition s="create hexmap from x: %&apos;x1&apos; y: %&apos;y1&apos; to x: %&apos;x2&apos; y: %&apos;y2&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">-220</input><input type="%n">160</input><input type="%n">220</input><input type="%n">-160</input></inputs><script><block s="doDeclareVariables"><list><l>hexmap-out</l><l>oldX</l><l>oldY</l><l>oldDIR</l></list></block><block s="doSetVar"><l>oldX</l><block s="xPosition"></block></block><block s="doSetVar"><l>oldY</l><block s="yPosition"></block></block><block s="doSetVar"><l>oldDIR</l><block s="direction"></block></block><block s="gotoXY"><block var="x1"/><block var="y1"/></block><block s="doWarp"><script><block s="doFor"><l>y</l><block var="y1"/><block var="y2"/><script><block s="doFor"><l>x</l><block var="x1"/><block var="x2"/><script><block s="doSetVar"><l>hexmap-out</l><block s="reportJoinWords"><list><block var="hexmap-out"/><custom-block s="hexmap-style hex at this sprite"></custom-block></list></block></block><block s="setXPosition"><block s="reportSum"><block var="x"/><l>1</l></block></block></script></block><block s="doSetVar"><l>hexmap-out</l><block s="reportJoinWords"><list><block var="hexmap-out"/><l>\</l></list></block></block><block s="setYPosition"><block s="reportDifference"><block var="y"/><l>1</l></block></block><block s="setXPosition"><block var="x1"/></block></script><comment w="117" collapsed="true">using for just in case I need the loop count, even though I don&apos;t think I will</comment></block></script></block><block s="setXPosition"><block var="oldX"/></block><block s="setYPosition"><block var="oldY"/></block><block s="setHeading"><block var="oldDIR"/></block><block s="doReport"><block var="hexmap-out"/></block></script></block-definition><block-definition s="Seconds %&apos;sec&apos; To Minutes" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block var="sec"/><l>60</l></block></block></script></block-definition><block-definition s="write %&apos;text&apos; size %&apos;size&apos; direction %&apos;direction&apos; at x: %&apos;x&apos; y: %&apos;y&apos; color %&apos;color1&apos; %&apos;color2&apos; %&apos;color3&apos; %&apos;color4&apos; clear? %&apos;clear?&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input><input type="%n">90</input><input type="%n">0</input><input type="%n">0</input><input type="%n">0</input><input type="%n">100</input><input type="%n">0</input><input type="%n">0</input><input type="%b">true</input></inputs><script><block s="doDeclareVariables"><list><l>code</l></list></block><block s="doSetVar"><l>code</l><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>X</l><l>Y</l><l>Direction</l></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>Direction</l><block s="direction"></block></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="direction"/></block><block s="setPenHSVA"><l><option>hue</option></l><block var="color1"/></block><block s="setPenHSVA"><l><option>saturation</option></l><block var="color2"/></block><block s="setPenHSVA"><l><option>brightness</option></l><block var="color3"/></block><block s="setPenHSVA"><l><option>transparency</option></l><block var="color4"/></block><block s="write"><block var="text"/><block var="size"/></block><block s="gotoXY"><block var="X"/><block var="Y"/></block><block s="setHeading"><block var="Direction"/></block></script><list></list></block></block><block s="doIfElse"><block var="clear?"/><script><block s="clear"></block><block s="doRun"><block var="code"/><list></list></block></script><script><block s="doRun"><block var="code"/><list></list></block></script></block></script></block-definition><block-definition s="$cloudGradient Highscore" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>Snap! Didn&apos;t Added Cloud Variable :(</l></block></script></block-definition><block-definition s="Convert %&apos;boolean&apos; To Text" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b">true</input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="boolean"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="doReport"><l>true</l></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="boolean"/><block s="reportBoolean"><l><bool>false</bool></l></block></block><script><block s="doReport"><l>false</l></block></script><script><block s="doReport"><l>error</l></block></script></block></script></block></script></block-definition><block-definition s="play note %&apos;note&apos; for %&apos;seconds&apos; seconds" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%n">60<options>§_pianoKeyboardMenu</options></input><input type="%n">0.5</input></inputs><script><block s="doPlayNote"><block var="note"/><block s="reportProduct"><block s="reportQuotient"><block s="getTempo"></block><l>60</l></block><l>0.5</l></block></block></script></block-definition><block-definition s="forever if %&apos;boolean&apos; %&apos;command&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%cs"></input></inputs><script><block s="doForever"><script><block s="doIf"><block s="reportEquals"><block var="boolean"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="fork"><block var="command"/><list></list></block></script></block></script></block></script></block-definition><block-definition s="Reverse %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l></list></block><block s="doSetVar"><l>a</l><block s="reportStringSize"><block var="text"/></block></block><block s="doSetVar"><l>b</l><l></l></block><block s="doWarp"><script><block s="doRepeat"><block s="reportStringSize"><block var="text"/></block><script><block s="doSetVar"><l>b</l><block s="reportJoinWords"><list><block var="b"/><block s="reportLetter"><block var="a"/><block var="text"/></block></list></block></block><block s="doChangeVar"><l>a</l><l>-1</l></block></script></block></script></block><block s="doReport"><block var="b"/></block></script></block-definition><block-definition s="%&apos;number1&apos; e %&apos;number2&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">1.3</input><input type="%s">2</input></inputs><script><block s="doReport"><block s="reportProduct"><block var="number1"/><block s="reportMonadic"><l><option>10^</option></l><block var="number2"/></block></block></block></script></block-definition><block-definition s="number %&apos;numbr&apos; dot cut %&apos;dc&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">123.4567890</input><input type="%n">2</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><l>1</l></block><block s="doSetVar"><l>b</l><l></l></block><block s="doIfElse"><block s="reportEquals"><block var="dc"/><l>0</l></block><script><block s="doReport"><block var="numbr"/></block></script><script><block s="doRepeat"><block var="dc"/><script><block s="doSetVar"><l>b</l><block s="reportJoinWords"><list><block var="b"/><block s="reportLetter"><block var="a"/><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block var="numbr"/><l>.</l></block></block></block></list></block></block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="numbr"/><l>.</l></block></block><block s="reportJoinWords"><list><l>.</l><block var="b"/></list></block></list></block></block></script></block></script><scripts><comment x="300" y="75.2" w="200" collapsed="false">theres another way how to do it?&#xD;answer: yes&#xD;floor ( number * 1000 ) / 1000&#xD;and this reporter is useless</comment></scripts></block-definition><block-definition s="Mix %&apos;texts&apos; Division %&apos;division&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input><input type="%n">2</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l></list></block><block s="doSetVar"><l>a</l><l>1</l></block><block s="doSetVar"><l>b</l><l></l></block><block s="doSetVar"><l>c</l><l>1</l></block><block s="doWarp"><script><block s="doRepeat"><block s="reportSum"><block s="reportListLength"><block var="texts"/></block><l>0</l></block><script><block s="doRepeat"><block s="reportSum"><block s="reportQuotient"><block s="reportStringSize"><block s="reportListItem"><block var="c"/><block var="texts"/></block></block><block var="division"/></block><l>1</l></block><script><block s="doSetVar"><l>b</l><block s="reportJoinWords"><list><block var="b"/><block s="reportLetter"><block var="a"/><block s="reportListItem"><block var="c"/><block var="texts"/></block></block></list></block></block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block><block s="doChangeVar"><l>c</l><l>1</l></block><block s="doSetVar"><l>a</l><block s="reportRound"><block s="reportQuotient"><block s="reportStringSize"><block s="reportListItem"><block var="c"/><block var="texts"/></block></block><block var="division"/></block></block></block></script></block><block s="doReport"><block var="b"/></block></script></block></script><scripts><script x="725.5205108125001" y="371.0000049999995"><block var="division"/></script><script x="117.47949618749999" y="123.00000499999999"><block s="reportMonadic"><l><option>ceiling</option></l><l>10</l></block></script><script x="217.5498076875" y="386.00000300000016"><block s="reportMonadic"><l><option>ceiling</option></l><l>10</l></block></script></scripts></block-definition><block-definition s="Mix %&apos;separator&apos; %&apos;division number&apos; %&apos;h&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">,</input><input type="%n">2</input><input type="%txt">Hello,There</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l><l>d</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block var="h"/><l>,</l></block></block><block s="doSetVar"><l>b</l><l>1</l></block><block s="doSetVar"><l>c</l><l></l></block><block s="doSetVar"><l>d</l><l>1</l></block><block s="doWarp"><script><block s="doRepeat"><block s="reportListLength"><block var="a"/></block><script><block s="doRepeat"><block s="reportSum"><block s="reportQuotient"><block s="reportStringSize"><block s="reportListItem"><block var="d"/><block var="a"/></block></block><block var="division number"/></block><block s="reportDifference"><block var="division number"/><l>1</l></block></block><script><block s="doSetVar"><l>c</l><block s="reportJoinWords"><list><block var="c"/><block s="reportLetter"><block var="b"/><block s="reportListItem"><block var="d"/><block var="a"/></block></block></list></block></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block><block s="doChangeVar"><l>d</l><l>1</l></block><block s="doSetVar"><l>b</l><block s="reportRound"><block s="reportQuotient"><block s="reportStringSize"><block s="reportListItem"><block var="d"/><block var="a"/></block></block><block var="division number"/></block></block></block></script></block><block s="doReport"><block var="c"/></block></script></block></script><scripts><script x="217.4794941875" y="106.000002"><block s="reportListLength"><l/></block></script><script x="227.4228545625" y="132.000004"><block var="a"/></script></scripts></block-definition><block-definition s="copy %&apos;list&apos; from %&apos;start&apos; to %&apos;end&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l><l>start</l><l>end</l></list><l>return new List(list.asArray().slice(+start - 1, +end))</l></block><list><block var="list"/><block var="start"/><block var="end"/></list></block></block></script></block-definition><block-definition s="text %&apos;text&apos; size %&apos;size&apos; text align %&apos;textA&apos; font %&apos;textFONT&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input><input type="%txt">left</input><input type="%txt">px monospace</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l><l>textA</l><l>textFONT</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + "px " + textFONT;&#xD;context.textAlign = textA;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/><block var="textA"/><block var="textFONT"/></list></block></script></block-definition><block-definition s="JS map %&apos;reporter&apos; over %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>reporter</l><l>list</l><l>process</l></list><l>// process.context.inputs:&#xD;// [0] - reporter&#xD;// [1] - list (original source)&#xD;// ---------------------------------&#xD;// [2..n] - result values (target)&#xD;&#xD;if (process.context.inputs.length - 2 === list.length()) {&#xD;  process.returnValueToParentContext(&#xD;    new List(process.context.inputs.slice(2))&#xD;  );&#xD;  return;&#xD;}&#xD;var next = list.at(process.context.inputs.length - 1);&#xD;process.pushContext();&#xD;process.evaluate(reporter, new List([next]));</l></block><list><block var="reporter"/><block var="list"/></list></block></block></script></block-definition><block-definition s="speak %&apos;text&apos; at volume %&apos;v&apos; rate %&apos;r&apos; pitch %&apos;p&apos; voice type %&apos;vt&apos;" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s">Hello, World!</input><input type="%n">1</input><input type="%n">1</input><input type="%n">0.8</input><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l><l>v</l><l>r</l><l>p</l><l>vt</l></list><l>function say(m) {&#xD;  var msg = new SpeechSynthesisUtterance();&#xD;  var voices = window.speechSynthesis.getVoices();&#xD;  msg.voice = voices[vt];&#xD;  msg.voiceURI = "native";&#xD;  msg.volume = v;&#xD;  msg.rate = r;&#xD;  msg.pitch = p;&#xD;  msg.text = m;&#xD;  msg.lang = &apos;en-US&apos;;&#xD;  speechSynthesis.speak(msg); &#xD;};&#xD;say(msg)</l></block><list><block var="text"/><block var="v"/><block var="r"/><block var="p"/><block var="vt"/></list></block></script></block-definition><block-definition s="MS test %&apos;repeat&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">5000</input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doResetTimer"></block><block s="doWarp"><script><block s="doRepeat"><block var="repeat"/><script><block s="doSetVar"><l>test</l><l>0</l></block></script></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportProduct"><block s="getTimer"></block><l>1000</l></block><l> MS</l></list></block></block></script></block-definition><block-definition s="text %&apos;text&apos; size %&apos;size&apos; text align %&apos;textA&apos; font %&apos;textFONT&apos; at x: %&apos;x&apos; y: %&apos;y&apos; clear? %&apos;boolean&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input><input type="%txt">left</input><input type="%txt">px monospace</input><input type="%n">0</input><input type="%n">0</input><input type="%b">true</input></inputs><script><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="doIf"><block var="boolean"/><script><block s="clear"></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l><l>textA</l><l>textFONT</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + "px " + textFONT;&#xD;context.textAlign = textA;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/><block var="textA"/><block var="textFONT"/></list></block><block s="gotoXY"><block var="x"/><block var="y"/></block></script></block-definition><block-definition s="go to center" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="gotoXY"><l>0</l><l>0</l></block></script></block-definition><block-definition s="Print %&apos;txt&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">testinput</input></inputs><script><block s="gotoXY"><l>-230</l><l>150</l></block><block s="clear"></block><block s="doDeclareVariables"><list><l>#</l><l>Σ</l><l>LS</l></list></block><block s="doSetVar"><l>LS</l><l>No</l></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doSetVar"><l>Σ</l><l></l></block><block s="doRepeat"><block s="reportStringSize"><block var="txt"/></block><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doIfElse"><block s="reportEquals"><block s="reportLetter"><block var="#"/><block var="txt"/></block><l> </l></block><script><block s="doSetVar"><l>Σ</l><l> </l></block></script><script><block s="doSetVar"><l>Σ</l><block s="reportLetter"><block var="#"/><block var="txt"/></block></block></script></block><block s="doIf"><block s="reportOr"><block s="reportAnd"><block s="reportGreaterThan"><block s="xPosition"></block><l>200</l></block><block s="reportEquals"><block var="Σ"/><l> </l></block></block><block s="reportEquals"><block s="reportLetter"><block var="#"/><block var="txt"/></block><l>@</l></block></block><script><block s="changeYPosition"><l>-25</l></block><block s="setXPosition"><l>-230</l></block><block s="doSetVar"><l>LS</l><l>Yes</l></block></script></block><block s="doIfElse"><block s="reportAnd"><block s="reportEquals"><block var="LS"/><l>Yes</l></block><block s="reportOr"><block s="reportEquals"><block var="Σ"/><l> </l></block><block s="reportListContainsItem"><block s="reportTextSplit"><block var="Σ"/><l><option>letter</option></l></block><l>@</l></block></block></block><script></script><script><custom-block s="text %txt size %n text align %txt font %txt"><block s="reportLetter"><block var="#"/><block var="txt"/></block><l>24</l><l>left</l><l>px monospace</l></custom-block><block s="forward"><l>-0.25</l></block></script></block><block s="doSetVar"><l>LS</l><l>No</l></block></script></block></script></block-definition><block-definition s="run script %&apos;This&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">testinput</input></inputs><script><block s="doDeclareVariables"><list><l>number</l></list></block><block s="doSetVar"><l>number</l><l>0</l></block><block s="doIfElse"><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>list</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>Boolean</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>sprite</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>costume</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>sound</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>command</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>predicate</option></l></block><block s="reportIsA"><block var="This"/><l><option>reporter</option></l></block></block></block></block></block></block></block></block><script><custom-block s="Print %txt"><l>invalid data</l></custom-block><block s="doWaitUntil"><block s="reportKeyPressed"><l><option>z</option></l></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportKeyPressed"><l><option>z</option></l></block></block></block><block s="clear"></block></script><script><block s="doRepeat"><block s="reportListLength"><block s="reportTextSplit"><block var="This"/><l>#</l></block></block><script><block s="doChangeVar"><l>number</l><l>1</l></block><custom-block s="Print %txt"><block s="reportListItem"><block var="number"/><block s="reportTextSplit"><block var="This"/><l>#</l></block></block></custom-block><block s="doWaitUntil"><block s="reportKeyPressed"><l><option>z</option></l></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportKeyPressed"><l><option>z</option></l></block></block></block></script></block><block s="clear"></block></script></block></script></block-definition><block-definition s="run random %&apos;txt&apos; %&apos;boolean&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">test#input</input><input type="%b">false</input></inputs><script><custom-block s="Print %txt"><block s="reportListItem"><block s="reportRandom"><l>1</l><block s="reportListLength"><block s="reportTextSplit"><block var="txt"/><l>#</l></block></block></block><block s="reportTextSplit"><block var="txt"/><l>#</l></block></block></custom-block><block s="doIf"><block var="boolean"/><script><block s="doWaitUntil"><block s="reportKeyPressed"><l><option>z</option></l></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportKeyPressed"><l><option>z</option></l></block></block></block><block s="clear"></block></script></block></script></block-definition><block-definition s="add commas to %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">1234567890</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><block s="reportSum"><block s="reportStringSize"><block var="num"/></block><l>1</l></block></block><block s="doSetVar"><l>b</l><block s="reportTextSplit"><block var="num"/><l><option>letter</option></l></block></block><block s="doRepeat"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block s="reportDifference"><block var="a"/><l>1</l></block><l>3.00001</l></block></block><script><block s="doChangeVar"><l>a</l><l>-3</l></block><block s="doInsertInList"><l>,</l><block var="a"/><block var="b"/></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block var="b"/></list></block></block></script></block-definition><block-definition s="improved: number %&apos;n&apos; dot cut %&apos;d&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">12.3456789</input><input type="%txt">3</input></inputs><script><block s="doIfElse"><custom-block s="%txt contains %txt ?"><block var="n"/><l>e</l></custom-block><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block var="n"/><l>e</l></block></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportQuotient"><block s="reportMonadic"><l><option>floor</option></l><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="a"/></block><block s="reportPower"><l>10</l><block var="d"/></block></block></block><block s="reportPower"><l>10</l><block var="d"/></block></block><l>e</l><block s="reportListItem"><l>2</l><block var="a"/></block></list></block></block></script><script><block s="doReport"><block s="reportQuotient"><block s="reportMonadic"><l><option>floor</option></l><block s="reportProduct"><block var="n"/><block s="reportPower"><l>10</l><block var="d"/></block></block></block><block s="reportPower"><l>10</l><block var="d"/></block></block></block></script></block></script></block-definition><block-definition s="%&apos;text1&apos; contains %&apos;text2&apos; ?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">hello world</input><input type="%txt">e</input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block var="text1"/><block var="text2"/></block></block><block s="doIfElse"><block s="reportEquals"><block s="reportListLength"><block var="a"/></block><l>1</l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block-definition><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control"><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;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><custom-block s="let %upvar be %s"><l>reset</l><block s="evaluate"><block s="reportJSFunction"><list><l>proc</l></list><l>var oldHandleError = proc.handleError,&#xD;    oldCatchingErrors = proc.isCatchingErrors;&#xD;&#xD;return function(){&#xD; proc.handleError = oldHandleError;&#xD; proc.isCatchingErrors = oldCatchingErrors;&#xD;}</l></block><list></list></block></custom-block><block s="doCallCC"><block s="reifyScript"><script><block s="doRun"><block s="reportJSFunction"><list><l>reset</l><l>action</l><l>handler</l><l>proc</l></list><l>proc.isCatchingErrors = true;&#xD;proc.handleError = function(error, element){&#xD; reset();&#xD; proc.context = handler;&#xD; proc.context.variables.setVar("error", error);&#xD;}&#xD;&#xD;try{&#xD; proc.evaluate(action, new List(), true);&#xD;}&#xD;catch(e){&#xD; proc.handleError(e, null);&#xD;} </l></block><list><block var="reset"/><block var="action"/><block s="reifyScript"><script><block s="doRun"><block s="reifyScript"><script><block s="doRun"><block var="handler"/><list></list></block><block s="doRun"><block var="return"/><list></list></block></script><list></list></block><list></list></block></script><list></list></block></list></block></script><list><l>return</l></list></block></block><block s="doRun"><block var="reset"/><list></list></block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;val&apos;" type="command" category="other"><comment x="0" y="0" w="183.33333333333334" collapsed="false">LET (FOO) BE (5)&#xD;is equivalent to&#xD;SCRIPT VARIABLES (FOO)&#xD;SET (FOO) TO (5)</comment><header></header><code></code><translations>pt:cria a variável de guião _ com valor _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></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></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="USE BIGNUMS %&apos;bool&apos;" type="command" category="operators"><comment x="0" y="0" w="303.3333333333333" collapsed="false">call with True to turn on the entire Scheme numeric tower, including infinite-precision integers, exact rationals, and complex numbers; call with False to restore native JavaScript arithmetic.</comment><header></header><code></code><translations>pt:altera utilização de aritmética do Scheme para _&#xD;</translations><inputs><input type="%b"></input></inputs><script><block s="doDeclareVariables"><list><l>isDone</l></list></block><block s="doSetVar"><l>isDone</l><block s="evaluate"><block s="reportJSFunction"><list><l>useBigNums</l></list><l>var done = false;&#xD;&#xD;function initialize (callback) {&#xD;    var bigScript = document.createElement(&apos;script&apos;);&#xD;    bigScript.src = &apos;//snap.berkeley.edu/snap/libraries/biginteger.js&apos;;&#xD;    bigScript.onload = loadScheme;&#xD;    document.head.appendChild(bigScript);&#xD;&#xD;    function loadScheme () {&#xD;        var schemeScript = document.createElement(&apos;script&apos;);&#xD;        schemeScript.src = &apos;//snap.berkeley.edu/snap/libraries/schemeNumber.js&apos;;&#xD;        schemeScript.onload = finish;&#xD;        document.head.appendChild(schemeScript);&#xD;    }&#xD;&#xD;    function finish () {&#xD;        makeGlobalObject();&#xD;        callback();&#xD;    }&#xD;}&#xD;&#xD;function makeGlobalObject () {&#xD;    window.bigNumbers = {&#xD;        originalEvaluate: InputSlotMorph.prototype.evaluate,&#xD;        originalChangeVar: VariableFrame.prototype.changeVar,&#xD;        originalPrims: {&#xD;            reportBasicSum: Process.prototype.reportBasicSum,&#xD;            reportBasicDifference: Process.prototype.reportBasicDifference,&#xD;            reportBasicProduct: Process.prototype.reportBasicProduct,&#xD;            reportBasicQuotient: Process.prototype.reportBasicQuotient,&#xD;            reportBasicPower: Process.prototype.reportBasicPower,&#xD;            reportBasicModulus: Process.prototype.reportBasicModulus,&#xD;            reportBasicRandom: Process.prototype.reportBasicRandom,&#xD;            reportBasicLessThan: Process.prototype.reportBasicLessThan,&#xD;            reportBasicGreaterThan: Process.prototype.reportBasicGreaterThan,&#xD;            reportEquals: Process.prototype.reportEquals,&#xD;            reportIsIdentical: Process.prototype.reportIsIdentical,&#xD;            reportMonadic: Process.prototype.reportMonadic&#xD;        }&#xD;    };&#xD;}&#xD;&#xD;function loadBlocks () {&#xD;    var fn = SchemeNumber.fn;&#xD;    var originalPrims = window.bigNumbers.originalPrims;&#xD;    if (useBigNums) {&#xD;        InputSlotMorph.prototype.evaluate = function () {&#xD;            var contents = this.contents();&#xD;            if (this.constant) {&#xD;                return this.constant;&#xD;            }&#xD;            if (this.isNumeric) {&#xD;                return parseNumber(contents.text || &apos;0&apos;);&#xD;            }&#xD;            return contents.text;&#xD;        };&#xD;        VariableFrame.prototype.changeVar = function (name, delta, sender) {&#xD;            var frame = this.find(name),&#xD;                value,&#xD;                newValue;&#xD;            if (frame) {&#xD;                value = parseNumber(frame.vars[name].value);&#xD;                newValue = Number.isNaN(value) ? delta : fn[&apos;+&apos;](value, parseNumber(delta));&#xD;                if (sender instanceof SpriteMorph &amp;&amp;&#xD;                        (frame.owner instanceof SpriteMorph) &amp;&amp;&#xD;                        (sender !== frame.owner)) {&#xD;                    sender.shadowVar(name, newValue);&#xD;                } else {&#xD;                    frame.vars[name].value = newValue;&#xD;                }&#xD;&#xD;            }&#xD;        };&#xD;        Object.assign(Process.prototype, {&#xD;            reportBasicSum: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;+&apos;](a, b);&#xD;            },&#xD;            reportBasicDifference: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;-&apos;](a, b);&#xD;            },&#xD;            reportBasicProduct: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;*&apos;](a, b);&#xD;            },&#xD;            reportBasicQuotient: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (fn[&apos;=&apos;](b, &apos;0&apos;) &amp;&amp; !fn[&apos;=&apos;](a, &apos;0&apos;)) {&#xD;                      return (fn[&apos;&lt;&apos;](a, &apos;0&apos;) ? SchemeNumber(&apos;-inf.0&apos;) : SchemeNumber(&apos;+inf.0&apos;))&#xD;                };&#xD;                if (Number.isNaN(a) || Number.isNaN(b) || fn[&apos;=&apos;](b, &apos;0&apos;)) return NaN;&#xD;                return fn[&apos;/&apos;](a, b);&#xD;            },&#xD;            reportBasicPower: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;expt&apos;](a, b);&#xD;            },&#xD;            reportBasicModulus: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                var result = fn.mod(a, b);&#xD;                if (fn[&apos;&lt;&apos;](b, &apos;0&apos;) &amp;&amp; fn[&apos;&gt;&apos;](result, &apos;0&apos;)) {&#xD;                    result = fn[&apos;+&apos;](result, b);&#xD;                }&#xD;                return result;&#xD;            },&#xD;            reportBasicRandom: function (min, max) {&#xD;                var floor = parseNumber(min),&#xD;                    ceil = parseNumber(max);&#xD;                if (Number.isNaN(floor) || Number.isNaN(ceil)) return NaN;&#xD;                if (!fn[&apos;=&apos;](fn.mod(floor, &apos;1&apos;), &apos;0&apos;) || !fn[&apos;=&apos;](fn.mod(ceil, &apos;1&apos;), &apos;0&apos;)) {&#xD;                    // One of the numbers isn&apos;t whole. Include the decimal.&#xD;                    return fn[&apos;+&apos;](&#xD;                        fn[&apos;*&apos;](&#xD;                            Math.random(),&#xD;                            fn[&apos;-&apos;](ceil, floor)&#xD;                        ),&#xD;                        floor&#xD;                    );&#xD;                }&#xD;                return fn.floor(&#xD;                    fn[&apos;+&apos;](&#xD;                        fn[&apos;*&apos;](&#xD;                            Math.random(),&#xD;                            fn[&apos;+&apos;](&#xD;                                fn[&apos;-&apos;](ceil, floor),&#xD;                                &apos;1&apos;&#xD;                            )&#xD;                        ),&#xD;                        floor&#xD;                    )&#xD;                );&#xD;            },&#xD;            reportBasicLessThan: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;&lt;&apos;](a, b);&#xD;            },&#xD;            reportBasicGreaterThan: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;&gt;&apos;](a, b);&#xD;            },&#xD;            reportEqual: function (a, b) {&#xD;                x = parseNumber(a);&#xD;                y = parseNumber(b);&#xD;                if (Number.isNaN(x) || Number.isNaN(y)) return snapEquals(a, b);&#xD;                return fn[&apos;=&apos;](x, y);&#xD;            },&#xD;            reportIsIdentical: function (a, b) {&#xD;                x = parseNumber(a);&#xD;                y = parseNumber(b);&#xD;                if (Number.isNaN(x) || Number.isNaN(y)) return originalPrims.reportIsIdentical(a, b);&#xD;                return fn[&apos;=&apos;](x, y);&#xD;            },&#xD;            reportMonadic: function (fname, n) {&#xD;                if (this.enableHyperOps) {&#xD;                    if (n instanceof List) {&#xD;                        return n.map(each =&gt; this.reportMonadic(fname, each));&#xD;                    }&#xD;                }&#xD;&#xD;                n = parseNumber(n);&#xD;                if (Number.isNaN(n)) return NaN;&#xD;&#xD;                switch (Process.prototype.inputOption(fname)) {&#xD;                case &apos;abs&apos;:&#xD;                    return fn.abs(n);&#xD;                case &apos;neg&apos;:&#xD;                    return fn[&apos;-&apos;](n);&#xD;                case &apos;ceiling&apos;:&#xD;                    return fn.ceiling(n);&#xD;                case &apos;floor&apos;:&#xD;                    return fn.floor(n);&#xD;                case &apos;sqrt&apos;:&#xD;                    return sqrt(n);&#xD;                case &apos;sin&apos;:&#xD;                    return fn.sin(radians(n));&#xD;                case &apos;cos&apos;:&#xD;                    return fn.cos(radians(n));&#xD;                case &apos;tan&apos;:&#xD;                    return fn.tan(radians(n));&#xD;                case &apos;asin&apos;:&#xD;                    return degrees(fn.asin(n));&#xD;                case &apos;acos&apos;:&#xD;                    return degrees(fn.acos(n));&#xD;                case &apos;atan&apos;:&#xD;                    return degrees(fn.atan(n));&#xD;                case &apos;ln&apos;:&#xD;                    return fn.log(n);&#xD;                case &apos;log&apos;:&#xD;                    return fn.log(n, &apos;10&apos;);&#xD;                case &apos;lg&apos;:&#xD;                    return fn.log(n, &apos;2&apos;);&#xD;                case &apos;e^&apos;:&#xD;                    return fn.exp(n);&#xD;                case &apos;10^&apos;:&#xD;                    return fn.expt(&apos;10&apos;, n);&#xD;                case &apos;2^&apos;:&#xD;                    return fn.expt(&apos;2&apos;, n);&#xD;                default:&#xD;                    return SchemeNumber(&apos;0&apos;);&#xD;                }&#xD;            }&#xD;        });&#xD;    } else {&#xD;        InputSlotMorph.prototype.evaluate = window.bigNumbers.originalEvaluate;&#xD;        VariableFrame.prototype.changeVar = window.bigNumbers.originalChangeVar;&#xD;        Object.assign(Process.prototype, originalPrims);&#xD;    }&#xD;    done = true;&#xD;}&#xD;&#xD;function parseNumber (n) {&#xD;    var fn = SchemeNumber.fn;&#xD;    if (!fn[&apos;number?&apos;](n)) {&#xD;        n = &apos;&apos; + n;&#xD;        try {&#xD;            return parseENotation(n) || SchemeNumber(n);&#xD;        } catch (err) {&#xD;            return NaN;&#xD;        }&#xD;    }&#xD;    return n;&#xD;}&#xD;&#xD;function parseENotation (n) {&#xD;    var fn = SchemeNumber.fn;&#xD;&#xD;    var numbers = n.match(/^(-?\d+\.?\d*|-?\.\d+)e(-?\d+)$/i);&#xD;    if (!numbers) return null;&#xD;&#xD;    var coefficient = numbers[1];&#xD;    var exponent = numbers[2];&#xD;    return fn[&apos;*&apos;](&#xD;        coefficient,&#xD;        fn.expt(&apos;10&apos;, exponent)&#xD;    );&#xD;}&#xD;&#xD;function sqrt (n) {&#xD;    var fn = SchemeNumber.fn;&#xD;&#xD;    if (!fn[&apos;exact?&apos;](n) || !fn[&apos;rational?&apos;](n) || fn[&apos;&lt;&apos;](n,&apos;0&apos;)) return fn.sqrt(n);&#xD;&#xD;    var rootNumerator = fn[&apos;exact-integer-sqrt&apos;](fn.numerator(n));&#xD;    if (!fn[&apos;=&apos;](rootNumerator[1], &apos;0&apos;)) return fn.sqrt(n);&#xD;&#xD;    var rootDenominator = fn[&apos;exact-integer-sqrt&apos;](fn.denominator(n));&#xD;    if (!fn[&apos;=&apos;](rootDenominator[1], &apos;0&apos;)) return fn.sqrt(n);&#xD;&#xD;    return fn[&apos;/&apos;](rootNumerator[0], rootDenominator[0]);&#xD;}&#xD;&#xD;function isDone () {&#xD;    return done;&#xD;}&#xD;&#xD;if (window.bigNumbers) {&#xD;    loadBlocks();&#xD;} else {&#xD;    initialize(loadBlocks);&#xD;}&#xD;&#xD;return isDone;</l></block><list><block var="bool"/></list></block></block><block s="doWaitUntil"><block s="evaluate"><block var="isDone"/><list></list></block></block></script></block-definition><block-definition s="%&apos;n&apos; !" type="reporter" category="operators"><comment x="0" y="0" w="190.66666666666666" collapsed="false">The factorial function, to make very large numbers, to demo bignums.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="n"/><l>0</l></block><l>1</l><block s="reportProduct"><block var="n"/><custom-block s="%n !"><block s="reportDifference"><block var="n"/><l>1</l></block></custom-block></block></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="operators"><comment x="0" y="0" w="234.66666666666666" collapsed="false">The identity function: reports its input.&#xD;It&apos;s useful to get things like 3/4 or 5-2i into&#xD;numeric input slots.</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="Scheme number %&apos;function&apos; of %&apos;number&apos;" type="reporter" category="operators"><comment x="0" y="0" w="300" collapsed="true">Provides Scheme arithmetic functions not in JavaScript</comment><header></header><code></code><translations>pt:_ de _&#xD;</translations><inputs><input type="%s" readonly="true"><options>number?&#xD;complex?&#xD;real?&#xD;rational?&#xD;integer?&#xD;exact?&#xD;inexact?&#xD;exact&#xD;inexact&#xD;finite?&#xD;infinite?&#xD;nan?&#xD;numerator&#xD;denominator&#xD;real-part&#xD;imag-part&#xD;magnitude&#xD;angle</options></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>which</l><l>num</l></list><l>function parseNumber (n) {&#xD;    var fn = SchemeNumber.fn;&#xD;    if (!fn[&apos;number?&apos;](n)) {&#xD;        n = &apos;&apos; + n;&#xD;        try {&#xD;            return parseENotation(n) || SchemeNumber(n);&#xD;        } catch (err) {&#xD;            return NaN;&#xD;        }&#xD;    }&#xD;    return n;&#xD;}&#xD;&#xD;function parseENotation (n) {&#xD;    var fn = SchemeNumber.fn;&#xD;&#xD;    var numbers = n.match(/^(-?\d+\.?\d*|-?\.\d+)e(-?\d+)$/i);&#xD;    if (!numbers) return null;&#xD;&#xD;    var coefficient = numbers[1];&#xD;    var exponent = numbers[2];&#xD;    return fn[&apos;*&apos;](&#xD;        coefficient,&#xD;        fn.expt(&apos;10&apos;, exponent)&#xD;    );&#xD;}&#xD;var fn=SchemeNumber.fn,&#xD;      number=parseNumber(num);&#xD;&#xD;switch (which) {&#xD;  case &apos;number?&apos;:&#xD;  case &apos;complex?&apos;:&#xD;    return (fn[&apos;number?&apos;](number));&#xD;  case &apos;real?&apos;:&#xD;    return (fn[&apos;real?&apos;](number) || fn[&apos;real-valued?&apos;](number));&#xD;  case &apos;rational?&apos;:&#xD;    return (fn[&apos;rational?&apos;](number) || (fn[&apos;=&apos;](number, fn.rationalize(number, parseNumber(&apos;1.0e-5&apos;)))));&#xD;  case &apos;integer?&apos;:&#xD;    return (fn[&apos;integer?&apos;](number) || fn[&apos;integer-valued?&apos;](number));&#xD;  case &apos;exact?&apos;:&#xD;  case &apos;inexact?&apos;:&#xD;  case &apos;finite?&apos;:&#xD;  case &apos;infinite?&apos;:&#xD;  case &apos;nan?&apos;:&#xD;  case &apos;real-part&apos;:&#xD;  case &apos;imag-part&apos;:&#xD;    return (fn[which](number));&#xD;  case &apos;magnitude&apos;:&#xD;    return (fn.magnitude(number));&#xD;  case &apos;angle&apos;:&#xD;    return (fn.angle(number));&#xD;  case &apos;numerator&apos;:&#xD;    return (fn.numerator(number));&#xD;  case &apos;denominator&apos;:&#xD;    return (fn.denominator(number));&#xD;  case &apos;exact&apos;:&#xD;    return (fn.exact(number));&#xD;case &apos;inexact&apos;:&#xD;    return (fn.inexact(number));&#xD;}</l></block><list><block var="function"/><block var="number"/></list></block></block></script></block-definition><block-definition s="convert %&apos;num&apos; to scientific notation" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>b</l><l>1</l></block><block s="doSetVar"><l>a</l><l></l></block><block s="doRepeat"><l>1</l><script><block s="doSetVar"><l>a</l><block s="reportJoinWords"><list><block var="a"/><block s="reportLetter"><block var="b"/><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block><l>.</l></list></block></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block><block s="doRepeat"><l>3</l><script><block s="doSetVar"><l>a</l><block s="reportJoinWords"><list><block var="a"/><block s="reportLetter"><block var="b"/><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block></list></block></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block><block s="doIfElse"><block s="reportEquals"><block s="reportStringSize"><block var="num"/></block><l>1</l></block><script><block s="doReport"><block var="num"/></block></script><script><block s="doIfElse"><custom-block s="%txt contains %txt ?"><block var="num"/><l>-</l></custom-block><script><block s="doReport"><block s="reportJoinWords"><list><l>-</l><block var="a"/><l>e+</l><block s="reportDifference"><block s="reportStringSize"><block var="num"/></block><l>1</l></block></list></block></block></script><script><block s="doReport"><block s="reportJoinWords"><list><block var="a"/><l>e+</l><block s="reportDifference"><block s="reportStringSize"><block var="num"/></block><l>1</l></block></list></block></block></script></block></script></block></script><scripts><script x="434.85546875" y="263.99999999999994"><block var="num"/></script></scripts></block-definition><block-definition s="better %&apos;num&apos; scientific notation, numb cut %&apos;n&apos;" type="reporter" category="operators"><comment x="0" y="0" w="155" collapsed="true">1234567890 &gt;&gt;&gt; 1.234e9</comment><header></header><code></code><translations></translations><inputs><input type="%n">1234567890</input><input type="%n">3</input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="num"/><l>0</l></block><script><block s="doReport"><l>0</l></block></script></block><block s="doIfElse"><block s="reportOr"><block s="reportGreaterThan"><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block><l>1000000</l></block><block s="reportAnd"><block s="reportLessThan"><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block><l>0.000001</l></block><block s="reportNot"><block s="reportEquals"><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block><l>0</l></block></block></block></block><script><block s="doReport"><block s="reportJoinWords"><list><block s="reportQuotient"><block s="reportMonadic"><l><option>floor</option></l><block s="reportProduct"><block s="reportQuotient"><block var="num"/><block s="reportPower"><l>10</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportMonadic"><l><option>log</option></l><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block></block></block></block><block s="reportPower"><l>10</l><block var="n"/></block></block></block><block s="reportPower"><l>10</l><block var="n"/></block></block><l>e</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportMonadic"><l><option>log</option></l><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block></block></list></block></block></script><script><block s="doReport"><block s="reportQuotient"><block s="reportMonadic"><l><option>floor</option></l><block s="reportProduct"><block var="num"/><block s="reportPower"><l>10</l><block var="n"/></block></block></block><block s="reportPower"><l>10</l><block var="n"/></block></block></block></script></block></script></block></script></block-definition><block-definition s="logarithm %&apos;num&apos; number cut dot %&apos;ncd&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="num"/><l>0</l></block><script><block s="doReport"><l>0</l></block></script><script><block s="doIfElse"><block s="reportLessThan"><block var="num"/><l>0</l></block><script><block s="doReport"><block s="reportJoinWords"><list><l>-</l><block s="reportQuotient"><block s="reportMonadic"><l><option>floor</option></l><block s="reportProduct"><block s="reportMonadic"><l><option>log</option></l><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block><block s="reportPower"><l>10</l><block var="ncd"/></block></block></block><block s="reportPower"><l>10</l><block var="ncd"/></block></block></list></block></block></script><script><block s="doReport"><block s="reportQuotient"><block s="reportMonadic"><l><option>floor</option></l><block s="reportProduct"><block s="reportMonadic"><l><option>log</option></l><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block><block s="reportPower"><l>10</l><block var="ncd"/></block></block></block><block s="reportPower"><l>10</l><block var="ncd"/></block></block></block></script></block></script></block></script></block-definition><block-definition s="new BN %&apos;number&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportLessThan"><block var="number"/><l>0</l></block><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><custom-block s="new BN %txt"><custom-block s="all but first letter of %txt"><block var="number"/></custom-block></custom-block></block><block s="doReplaceInList"><l>1</l><block var="a"/><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="a"/></block><l>-1</l></block></block><block s="doReport"><block var="a"/></block></script></block><block s="doIfElse"><block s="reportGreaterThan"><block s="reportListLength"><block s="reportTextSplit"><block var="number"/><l>e</l></block></block><l>1</l></block><script><block s="doDeclareVariables"><list><l>m</l><l>e</l><l>a</l></list></block><block s="doIfElse"><block s="reportEquals"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="number"/><l>e</l></block></block><l></l></block><script><block s="doSetVar"><l>m</l><l>1</l></block></script><script><block s="doSetVar"><l>m</l><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="number"/><l>e</l></block></block></block></script></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportNewList"><list><l></l><l>-</l></list></block><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block var="number"/><l>e</l></block></block></block><script><block s="doSetVar"><l>e</l><block s="reportJoinWords"><list><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block var="number"/><l>e</l></block></block><block s="reportMonadic"><l><option>10^</option></l><block s="reportListItem"><l>3</l><block s="reportTextSplit"><block var="number"/><l>e</l></block></block></block></list></block></block></script><script><block s="doSetVar"><l>e</l><block s="reportProduct"><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block var="number"/><l>e</l></block></block><block s="reportMonadic"><l><option>10^</option></l><block s="reportListItem"><l>3</l><block s="reportTextSplit"><block var="number"/><l>e</l></block></block></block></block></block></script></block><block s="doReport"><custom-block s="normalise BN %l"><block s="reportNewList"><list><block var="m"/><block var="e"/></list></block></custom-block></block></script><script><block s="doIf"><block s="reportIsA"><block var="number"/><l><option>number</option></l></block><script><block s="doIfElse"><block s="reportEquals"><block var="number"/><l>0</l></block><script><block s="doReport"><block s="reportNewList"><list><l>0</l><l>0</l></list></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block s="reportQuotient"><block var="number"/><block s="reportMonadic"><l><option>10^</option></l><block s="reportMonadic"><l><option>floor</option></l><block s="reportMonadic"><l><option>log</option></l><block var="number"/></block></block></block></block><block s="reportMonadic"><l><option>floor</option></l><block s="reportMonadic"><l><option>log</option></l><block var="number"/></block></block></list></block></block></script></block></script></block></script></block><block s="doReport"><l>null</l></block></script><scripts><script x="357" y="785.1666666666674"><block s="doSetVar"><l>a</l><l>0</l></block></script></scripts></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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><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></block><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="string"/></block><l>0</l></block><script><custom-block s="error %txt"><l>All but first of empty word.</l></custom-block></script></block><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>2</l></block><block s="doUntil"><block s="reportGreaterThan"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></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-&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 primeira palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>bf</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bf</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><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></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportGreaterThan"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doSetVar"><l>bf</l><block s="reportJoinWords"><list><block var="bf"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block var="bf"/></block></script></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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><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></block><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="string"/></block><l>0</l></block><script><custom-block s="error %txt"><l>All but last of empty word.</l></custom-block></script></block><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>bl</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bl</l><l></l></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><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="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="index"/><block s="reportListLength"><block var="sentence"/></block></block></autolambda><list><l>value</l><l>index</l></list></block><block var="sentence"/></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><l>1</l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportLessThan"><block var="index"/><l>1</l></block><script><block s="doSetVar"><l>bl</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="bl"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doReport"><block var="bl"/></block></script></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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>first</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>first</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block></script></block><block s="doReport"><block var="first"/></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;</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></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></block><script><custom-block s="error %txt"><l>Last of empty word.</l></custom-block></script></block><block s="doReport"><block s="reportLetter"><block s="reportStringSize"><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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>last</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>last</l><l></l></block><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></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block></script></block><block s="doReport"><block var="last"/></block></script></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;</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></block><block s="doReport"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><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></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></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;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="words"/></block></block><script><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block></block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script><script><block s="doReport"><block s="reportJoinWords"><list><custom-block s="join words %mult%txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><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;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportStringSize"><l></l></block><l>0</l></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="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;</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></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;</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></block><block s="doIf"><block s="reportEquals"><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></block><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></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="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></translations><inputs><input type="%mult%s"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="phrase"/></block><script><block s="doReport"><block s="reportNewList"><list></list><comment w="224.66666666666666" collapsed="true">Workaround for stupid append misfeature.</comment></block></block></script></block><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="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg);</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="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></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></block><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><l>()</l></block></script></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="normalise BN %&apos;number&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="number"/><custom-block s="new BN %txt"><l>0</l></custom-block></block><script><block s="doReport"><custom-block s="new BN %txt"><l>0</l></custom-block></block></script></block><block s="doDeclareVariables"><list><l>m</l><l>e</l></list></block><block s="doSetVar"><l>m</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportListItem"><l>1</l><block var="number"/></block></block></block><block s="doSetVar"><l>e</l><block s="reportListItem"><l>2</l><block var="number"/></block></block><block s="doUntil"><block s="reportAnd"><block s="reportGreaterThan"><block var="m"/><l>0.999999999999999</l></block><block s="reportLessThan"><block var="m"/><l>10</l></block></block><script><block s="doIfElse"><block s="reportOr"><block s="reportGreaterThan"><block var="m"/><l>10</l></block><block s="reportEquals"><block var="m"/><l>10</l></block></block><script><block s="doSetVar"><l>m</l><block s="reportQuotient"><block var="m"/><l>10</l></block></block><block s="doChangeVar"><l>e</l><l>1</l></block></script><script><block s="doIf"><block s="reportLessThan"><block var="m"/><l>1</l></block><script><block s="doSetVar"><l>m</l><block s="reportProduct"><block var="m"/><l>10</l></block></block><block s="doChangeVar"><l>e</l><l>-1</l></block></script></block></script></block></script></block><block s="doReport"><block s="reportNewList"><list><block var="m"/><block var="e"/></list></block></block></script><scripts><script x="340" y="340.16666666666663"><block s="reportMonadic"><l><option>abs</option></l><l></l></block></script><script x="297.9306640625" y="278.3333333333333"><block s="reportMonadic"><l><option>abs</option></l><l></l></block></script></scripts></block-definition><block-definition s="BN %&apos;x&apos; &gt; %&apos;y&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="x"/></block><l>0</l></block><script><block s="doReplaceInList"><l>2</l><block var="x"/><l>-Infinity</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="y"/></block><l>0</l></block><script><block s="doReplaceInList"><l>2</l><block var="y"/><l>-Infinity</l></block></script></block><block s="doIfElse"><block s="reportGreaterThan"><block s="reportListItem"><l>2</l><block var="x"/></block><block s="reportListItem"><l>2</l><block var="y"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportGreaterThan"><block s="reportListItem"><l>1</l><block var="x"/></block><block s="reportListItem"><l>1</l><block var="y"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="BN %&apos;x&apos; + %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="BN %&apos;x&apos; x %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><block var="x"/><block var="y"/></list></block><custom-block s="new BN %txt"><l>0</l></custom-block></block><script><block s="doReport"><custom-block s="new BN %txt"><l>0</l></custom-block></block></script></block><block s="doDeclareVariables"><list><l>a</l><l>neg</l></list></block><block s="doSetVar"><l>neg</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doIf"><custom-block s="BN %l &lt; %l"><block var="x"/><custom-block s="new BN %txt"><l>0</l></custom-block></custom-block><script><block s="doSetVar"><l>neg</l><block s="reportNot"><block var="neg"/></block></block></script></block><block s="doIf"><custom-block s="BN %l &lt; %l"><block var="y"/><custom-block s="new BN %txt"><l>0</l></custom-block></custom-block><script><block s="doSetVar"><l>neg</l><block s="reportNot"><block var="neg"/></block></block></script></block><block s="doSetVar"><l>a</l><custom-block s="normalise BN %l"><block s="reportNewList"><list><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="x"/></block><block s="reportListItem"><l>1</l><block var="y"/></block></block><block s="reportSum"><block s="reportListItem"><l>2</l><block var="x"/></block><block s="reportListItem"><l>2</l><block var="y"/></block></block></list></block></custom-block></block><block s="doIf"><block var="neg"/><script><block s="doReplaceInList"><l>1</l><block var="a"/><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="a"/></block><l>-1</l></block></block></script></block><block s="doReport"><block var="a"/></block></script></block-definition><block-definition s="BN log %&apos;base&apos; ( %&apos;x&apos; )" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">10</input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="new BN %txt"><block s="reportQuotient"><block s="reportSum"><block s="reportListItem"><l>2</l><block var="x"/></block><block s="reportMonadic"><l><option>log</option></l><block s="reportListItem"><l>1</l><block var="x"/></block></block></block><block s="reportMonadic"><l><option>log</option></l><block var="base"/></block></block></custom-block></block></script></block-definition><block-definition s="BN %&apos;x&apos; to normal number" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="x"/></block><block s="reportMonadic"><l><option>10^</option></l><block s="reportListItem"><l>2</l><block var="x"/></block></block></block></block></script></block-definition><block-definition s="BN %&apos;x&apos; &lt; %&apos;y&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="x"/></block><l>0</l></block><script><block s="doReplaceInList"><l>2</l><block var="x"/><l>-Infinity</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="y"/></block><l>0</l></block><script><block s="doReplaceInList"><l>2</l><block var="y"/><l>-Infinity</l></block></script></block><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>2</l><block var="x"/></block><block s="reportListItem"><l>2</l><block var="y"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="x"/></block><block s="reportListItem"><l>1</l><block var="y"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="BN %&apos;x&apos; / %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="BN %l x %l"><block var="x"/><custom-block s="BN %l ^ %l"><block var="y"/><custom-block s="new BN %txt"><l>-1</l></custom-block></custom-block></custom-block></block></script></block-definition><block-definition s="BN %&apos;x&apos; ^ %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="y"/><custom-block s="new BN %txt"><l>0</l></custom-block></block><script><block s="doReport"><custom-block s="new BN %txt"><l>1</l></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="x"/><custom-block s="new BN %txt"><l>0</l></custom-block></block><script><block s="doReport"><custom-block s="new BN %txt"><l>0</l></custom-block></block></script></block><block s="doDeclareVariables"><list><l>a</l><l>neg</l><l>c</l></list></block><block s="doSetVar"><l>neg</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doIf"><custom-block s="BN %l &lt; %l"><block var="x"/><custom-block s="new BN %txt"><l>0</l></custom-block></custom-block><script><block s="doSetVar"><l>neg</l><block s="reportNot"><block var="neg"/></block></block></script></block><block s="doIf"><custom-block s="BN %l &lt; %l"><block var="y"/><custom-block s="new BN %txt"><l>0</l></custom-block></custom-block><script><block s="doSetVar"><l>neg</l><block s="reportNot"><block var="neg"/></block></block></script></block><block s="doSetVar"><l>a</l><custom-block s="BN %l to normal number"><custom-block s="BN %l x %l"><block var="y"/><custom-block s="BN log %n ( %l )"><l>10</l><block var="x"/></custom-block></custom-block></custom-block></block><block s="doSetVar"><l>c</l><block s="reportNewList"><list><block s="reportMonadic"><l><option>10^</option></l><block s="reportModulus"><block var="a"/><l>1</l></block></block><block s="reportMonadic"><l><option>floor</option></l><block var="a"/></block></list></block></block><block s="doReport"><block var="c"/></block></script><scripts><script x="290" y="93.19999999999999"><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><block var="x"/><block var="y"/></list></block><custom-block s="new BN %txt"><l>0</l></custom-block></block><script></script></block></script><script x="310" y="195.33333333333337"><block s="doReport"><l></l></block></script><script x="263.0380859375" y="293.53333333333325"><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="x"/></block><block s="reportListItem"><l>1</l><block var="y"/></block></block></script><script x="70" y="492.3666666666665"><block s="doIf"><block var="neg"/><script><block s="doReplaceInList"><l>1</l><block var="a"/><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="a"/></block><l>-1</l></block></block></script></block></script><script x="152.07356770833348" y="449.3333333333333"><block var="x"/></script><script x="90.9951171875" y="462.03333333333325"><block s="reportProduct"><l></l><l></l></block></script><script x="343" y="238.53333333333325"><block s="reportMonadic"><l><option>log</option></l><l>10</l></block></script><script x="469.353515625" y="487.1666666666667"><block s="reportSum"><l></l><l>1</l></block></script><script x="518.8955078125" y="536.1666666666667"><block s="reportMonadic"><l><option>log</option></l><l>10</l></block></script><script x="91" y="576.3666666666668"><custom-block s="BN %l to normal number"><l/></custom-block></script><script x="214.46712239583326" y="458.3333333333333"><custom-block s="new BN %txt"><l>10</l></custom-block></script><script x="435.07356770833326" y="361.3333333333333"><custom-block s="new BN %txt"><l>10</l></custom-block></script><script x="322.9951171875" y="434.99999999999994"><custom-block s="normalise BN %l"><l/></custom-block></script><script x="31.467122395833485" y="476.3333333333333"><block var="y"/></script></scripts></block-definition><block-definition s="BN %&apos;root&apos; rt( %&apos;x&apos; )" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">2</input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="BN %l ^ %l"><block var="x"/><custom-block s="new BN %txt"><block s="reportPower"><block var="root"/><l>-1</l></block></custom-block></custom-block></block></script></block-definition><block-definition s="BN %&apos;x&apos; - %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="BN %l + %l"><block var="x"/><custom-block s="BN %l x %l"><block var="y"/><custom-block s="new BN %txt"><l>-1</l></custom-block></custom-block></custom-block></block></script></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2)" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2) (3)" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2) (3) (4)" type="command" category="sound"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2) (3) (4) (5)" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2) (3) (4) (5) (6)" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2) (3) (4) (5) (6) (7)" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2) (3) (4) (5) (6) (7) (8)" type="command" category="operators"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2) (3) (4) (5) (6) (7) (8) (9)" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Hyper Blocks Pack By Danidanijr (2) (3) (4) (5) (6) (7) (8) (9) (10)" type="command" category="lists"><header></header><code></code><translations></translations><inputs></inputs></block-definition></blocks><variables><variable name="test haha"><l>0</l></variable></variables></project><media name="!Hyper Blocks Pack!" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>