-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
410 lines (393 loc) · 466 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
<!doctype html>
<!-- Created with https://studio.penguinmod.com/PenguinMod-Packager/ -->
<html>
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>
<meta
name="description"
content="Nice website with Games, Art and other things made by TheShovel!!"
/>
<!-- We only include this to explicitly loosen the CSP of various packager environments. It does not provide any security. -->
<meta
http-equiv="Content-Security-Policy"
content="default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: blob:"
/>
<title>TheShovel</title>
<style>
body {
color: #ffffff;
font-family: sans-serif;
overflow: hidden;
margin: 0;
padding: 0;
}
:root,
body.is-fullscreen {
background-color: #272727;
}
[hidden] {
display: none !important;
}
h1 {
font-weight: normal;
}
a {
color: inherit;
text-decoration: underline;
cursor: pointer;
}
#app,
#loading,
#error,
#launch {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.screen {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
cursor: default;
user-select: none;
-webkit-user-select: none;
background-color: #272727;
}
#launch {
background-color: rgba(0, 0, 0, 0.7);
cursor: pointer;
}
.green-flag {
width: 80px;
height: 80px;
padding: 16px;
border-radius: 100%;
background: rgba(255, 255, 255, 0.75);
border: 3px solid hsla(0, 100%, 100%, 1);
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
#loading {
}
.progress-bar-outer {
border: 1px solid currentColor;
height: 10px;
width: 200px;
max-width: 200px;
}
.progress-bar-inner {
height: 100%;
width: 0;
background-color: currentColor;
}
.loading-text,
noscript {
font-weight: normal;
font-size: 36px;
margin: 0 0 16px;
}
.loading-image {
margin: 0 0 16px;
}
#error-message,
#error-stack {
font-family: monospace;
max-width: 600px;
white-space: pre-wrap;
user-select: text;
-webkit-user-select: text;
}
#error-stack {
text-align: left;
max-height: 200px;
overflow: auto;
}
.control-button {
width: 2rem;
height: 2rem;
padding: 0.375rem;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
user-select: none;
-webkit-user-select: none;
cursor: pointer;
border: 0;
border-radius: 4px;
}
.control-button:hover {
background: #00c3ff26;
}
.control-button.active {
background: #00c3ff59;
}
.fullscreen-button {
background: white !important;
}
.standalone-fullscreen-button {
position: absolute;
top: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.5);
border-radius: 0 0 0 4px;
padding: 4px;
cursor: pointer;
}
.sc-canvas {
cursor: auto;
}
.sc-monitor-root[data-opcode^="data_"] .sc-monitor-value-color {
background-color: #ff8c1a;
}
.sc-monitor-row-value-outer {
background-color: #fc662c;
}
.sc-monitor-row-value-editing .sc-monitor-row-value-outer {
background-color: #e25b27;
}
</style>
<meta name="theme-color" content="#272727" />
</head>
<body>
<div id="app"></div>
<div id="launch" class="screen" hidden title="Click to start">
<div class="green-flag">
<svg viewBox="0 0 16.63 17.5" width="42" height="44">
<defs>
<style>
.cls-1,
.cls-2 {
fill: #007af4;
stroke: #003080;
stroke-linecap: round;
stroke-linejoin: round;
}
.cls-2 {
stroke-width: 1.5px;
}
</style>
</defs>
<path
class="cls-1"
d="M.75,2A6.44,6.44,0,0,1,8.44,2h0a6.44,6.44,0,0,0,7.69,0V12.4a6.44,6.44,0,0,1-7.69,0h0a6.44,6.44,0,0,0-7.69,0"
/>
<line
class="cls-2"
x1="0.75"
y1="16.75"
x2="0.75"
y2="0.75"
/>
</svg>
</div>
</div>
<div id="loading" class="screen">
<noscript>Enable JavaScript</noscript>
</div>
<div id="error" class="screen" hidden>
<h1>Error</h1>
<details>
<summary id="error-message"></summary>
<p id="error-stack"></p>
</details>
</div>
<script src="script.js"></script>
<script>
const appElement = document.getElementById("app");
const launchScreen = document.getElementById("launch");
const loadingScreen = document.getElementById("loading");
const loadingInner = document.getElementById("loading-inner");
const errorScreen = document.getElementById("error");
const errorScreenMessage = document.getElementById("error-message");
const errorScreenStack = document.getElementById("error-stack");
const handleError = (error) => {
console.error(error);
if (!errorScreen.hidden) return;
errorScreen.hidden = false;
errorScreenMessage.textContent = "" + error;
let debug = (error && error.stack) || "no stack";
debug += "\nUser agent: " + navigator.userAgent;
errorScreenStack.textContent = debug;
};
const setProgress = (progress) => {
if (loadingInner)
loadingInner.style.width = progress * 100 + "%";
};
const interpolate = (a, b, t) => a + t * (b - a);
try {
setProgress(0.1);
const scaffolding = new Scaffolding.Scaffolding();
scaffolding.width = 480;
scaffolding.height = 480;
scaffolding.resizeMode = "preserve-ratio";
scaffolding.editableLists = false;
scaffolding.usePackagedRuntime = true;
scaffolding.setup();
scaffolding.appendTo(appElement);
const vm = scaffolding.vm;
window.scaffolding = scaffolding;
window.vm = scaffolding.vm;
window.Scratch = {
vm,
renderer: vm.renderer,
audioEngine: vm.runtime.audioEngine,
bitmapAdapter: vm.runtime.v2BitmapAdapter,
videoProvider: vm.runtime.ioDevices.video.provider,
};
scaffolding.setUsername(
"player####".replace(/#/g, () =>
Math.floor(Math.random() * 10),
),
);
scaffolding.setAccentColor("#00c3ff");
try {
scaffolding.addCloudProvider(
new Scaffolding.Cloud.WebSocketProvider(
[
"wss://clouddata.turbowarp.org",
"wss://clouddata.turbowarp.xyz",
],
),
);
} catch (error) {
console.error(error);
}
vm.setTurboMode(false);
if (vm.setInterpolation) vm.setInterpolation(false);
if (vm.setFramerate) vm.setFramerate(0);
if (vm.renderer.setUseHighQualityRender)
vm.renderer.setUseHighQualityRender(true);
if (vm.setRuntimeOptions)
vm.setRuntimeOptions({
fencing: false,
miscLimits: false,
maxClones: 9999999999,
dangerousOptimizations: false,
});
if (vm.setCompilerOptions)
vm.setCompilerOptions({
enabled: true,
warpTimer: false,
});
if (vm.renderer.setMaxTextureDimension)
vm.renderer.setMaxTextureDimension(2048);
if (typeof ScaffoldingAddons !== "undefined") {
ScaffoldingAddons.run(scaffolding, {
gamepad: false,
pointerlock: false,
specialCloudBehaviors: false,
unsafeCloudBehaviors: false,
pause: false,
});
}
scaffolding.setExtensionSecurityManager({
getSandboxMode: () => "unsandboxed",
canLoadExtensionFromProject: () => true,
});
for (const extension of [
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Clones%20Plus%0A%2F%2F%20ID%3A%20lmsclonesplus%0A%2F%2F%20Description%3A%20Expansion%20of%20Scratch's%20clone%20features.%0A%2F%2F%20By%3A%20LilyMakesThings%20%3Chttps%3A%2F%2Fscratch.mit.edu%2Fusers%2FLilyMakesThings%2F%3E%0A%2F%2F%20License%3A%20MIT%20AND%20LGPL-3.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22fi%22%3A%7B%22_Clones%2B%22%3A%22Kloonit%20%2B%22%2C%22_%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22kloonin%2C%20jonka%20%5BINPUTB%5D%20on%20%5BINPUTC%5D%2C%20%5BINPUTA%5D%22%2C%22_%5BINPUT%5D%20of%20main%20sprite%22%3A%22p%C3%A4%C3%A4hahmon%20%5BINPUT%5D%22%2C%22_clone%20count%22%3A%22kloonien%20m%C3%A4%C3%A4r%C3%A4%22%2C%22_clone%20count%20of%20%5BINPUT%5D%22%3A%22hahmon%20%5BINPUT%5D%20kloonien%20m%C3%A4%C3%A4r%C3%A4%22%2C%22_clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%20exists%3F%22%3A%22onko%20olemassa%20klooni%2C%20jonka%20%5BINPUTA%5D%20on%20%5BINPUTB%5D%3F%22%2C%22_costume%20%23%22%3A%22asusteen%20numero%22%2C%22_costume%20name%22%3A%22asusteen%20nimi%22%2C%22_create%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22luo%20klooni%2C%20jonka%20%5BINPUTA%5D%20on%20%5BINPUTB%5D%22%2C%22_delete%20clones%20in%20%5BINPUT%5D%22%3A%22poista%20hahmon%20%5BINPUT%5D%20kloonit%22%2C%22_delete%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22poista%20kloonit%2C%20joiden%20%5BINPUTA%5D%20on%20%5BINPUTB%5D%22%2C%22_direction%22%3A%22suunta%22%2C%22_is%20clone%3F%22%3A%22olenko%20klooni%3F%22%2C%22_myself%22%3A%22min%C3%A4%20itse%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20clones%20with%20%5BINPUTC%5D%20set%20to%20%5BINPUTD%5D%22%3A%22aseta%20muuttaja%20%5BINPUTA%5D%20arvoon%20%5BINPUTB%5D%20klooneilla%2C%20joiden%20%5BINPUTC%5D%20on%20%5BINPUTD%5D%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20main%20sprite%22%3A%22aseta%20p%C3%A4%C3%A4hahmon%20muuttuja%20%5BINPUTA%5D%20arvoon%20%5BINPUTB%5D%22%2C%22_size%22%3A%22koko%22%2C%22_stop%20scripts%20in%20%5BINPUT%5D%22%3A%22pys%C3%A4yt%C3%A4%20koodit%20hahmossa%20%5BINPUT%5D%22%2C%22_stop%20scripts%20in%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22pys%C3%A4yt%C3%A4%20koodit%20klooneissa%2C%20joiden%20%5BINPUTA%5D%20on%20%5BINPUTB%5D%22%2C%22_stop%20scripts%20in%20main%20sprite%22%3A%22pys%C3%A4yt%C3%A4%20p%C3%A4%C3%A4hahmon%20koodit%22%2C%22_touching%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%3F%22%3A%22koskettaako%20kloonia%2C%20jonka%20%5BINPUTA%5D%20on%20%5BINPUTB%5D%3F%22%2C%22_touching%20main%20sprite%3F%22%3A%22koskettaako%20p%C3%A4%C3%A4hahmoa%3F%22%2C%22_variable%20%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22kloonin%2C%20jonka%20%5BINPUTB%5D%20on%20%5BINPUTC%5D%2C%20muuttuja%20%5BINPUTA%5D%22%2C%22_variable%20%5BINPUT%5D%20of%20main%20sprite%22%3A%22p%C3%A4%C3%A4hahmon%20muuttuja%20%5BINPUT%5D%22%2C%22_volume%22%3A%22%C3%A4%C3%A4nenvoimakkuus%22%2C%22_when%20I%20start%20as%20a%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22kun%20aloitan%20kloonina%2C%20jonka%20%5BINPUTA%5D%20on%20%5BINPUTB%5D%22%2C%22_x%20position%22%3A%22x-sijainti%22%2C%22_y%20position%22%3A%22y-sijainti%22%7D%2C%22ko%22%3A%7B%22_Clones%2B%22%3A%22%EB%B3%B5%EC%A0%9C%EB%B3%B8%20%ED%94%8C%EB%9F%AC%EC%8A%A4%22%2C%22_%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22%5BINPUTB%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTC%5D%EC%9D%B8%20%EB%B3%B5%EC%A0%9C%EB%B3%B8%EC%9D%98%20%5BINPUTA%5D%22%2C%22_%5BINPUT%5D%20of%20main%20sprite%22%3A%22%EC%9B%90%EB%B3%B8%20%EC%8A%A4%ED%94%84%EB%9D%BC%EC%9D%B4%ED%8A%B8%EC%9D%98%20%5BINPUT%5D%22%2C%22_clone%20count%22%3A%22%EB%B3%B5%EC%A0%9C%EB%B3%B8%20%EA%B0%9C%EC%88%98%22%2C%22_clone%20count%20of%20%5BINPUT%5D%22%3A%22%5BINPUT%5D%EC%9D%98%20%EB%B3%B5%EC%A0%9C%EB%B3%B8%20%EA%B0%9C%EC%88%98%22%2C%22_clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%20exists%3F%22%3A%22%5BINPUTA%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTB%5D%EC%9D%B8%20%EB%B3%B5%EC%A0%9C%EB%B3%B8%EC%9D%B4%20%EC%A1%B4%EC%9E%AC%ED%95%98%EB%8A%94%EA%B0%80%3F%22%2C%22_costume%20%23%22%3A%22%EB%AA%A8%EC%96%91%20%EB%B2%88%ED%98%B8%22%2C%22_costume%20name%22%3A%22%EB%AA%A8%EC%96%91%20%EC%9D%B4%EB%A6%84%22%2C%22_create%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%5BINPUTA%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTB%5D%EC%9D%B8%20%EC%83%81%ED%83%9C%EB%A1%9C%20%EB%B3%B5%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_delete%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%5BINPUTA%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTB%5D%EC%9D%B8%20%EB%B3%B5%EC%A0%9C%EB%B3%B8%20%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_direction%22%3A%22%EB%B0%A9%ED%96%A5%22%2C%22_is%20clone%3F%22%3A%22%EB%B3%B5%EC%A0%9C%EB%B3%B8%EC%9D%B8%EA%B0%80%3F%22%2C%22_myself%22%3A%22%EB%82%98%20%EC%9E%90%EC%8B%A0%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20clones%20with%20%5BINPUTC%5D%20set%20to%20%5BINPUTD%5D%22%3A%22%5BINPUTC%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTD%5D%EC%9D%B8%20%EB%B3%B5%EC%A0%9C%EB%B3%B8%EC%9D%98%20%EB%B3%80%EC%88%98%20%5BINPUTA%5D%EC%9D%84(%EB%A5%BC)%20%5BINPUTB%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20main%20sprite%22%3A%22%EC%9B%90%EB%B3%B8%20%EC%8A%A4%ED%94%84%EB%9D%BC%EC%9D%B4%ED%8A%B8%EC%9D%98%20%EB%B3%80%EC%88%98%20%5BINPUTA%5D%EC%9D%84(%EB%A5%BC)%20%5BINPUTB%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_size%22%3A%22%ED%81%AC%EA%B8%B0%22%2C%22_stop%20scripts%20in%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%5BINPUTA%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTB%5D%EC%9D%B8%20%EB%B3%B5%EC%A0%9C%EB%B3%B8%20%EB%A9%88%EC%B6%94%EA%B8%B0%22%2C%22_stop%20scripts%20in%20main%20sprite%22%3A%22%EC%9B%90%EB%B3%B8%20%EC%8A%A4%ED%94%84%EB%9D%BC%EC%9D%B4%ED%8A%B8%EC%9D%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EB%A9%88%EC%B6%94%EA%B8%B0%22%2C%22_touching%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%3F%22%3A%22%5BINPUTA%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTB%5D%EC%9D%B8%20%EB%B3%B5%EC%A0%9C%EB%B3%B8%EC%97%90%20%EB%8B%BF%EC%95%98%EB%8A%94%EA%B0%80%3F%22%2C%22_touching%20main%20sprite%3F%22%3A%22%EC%9B%90%EB%B3%B8%20%EC%8A%A4%ED%94%84%EB%9D%BC%EC%9D%B4%ED%8A%B8%EC%97%90%20%EB%8B%BF%EC%95%98%EB%8A%94%EA%B0%80%3F%22%2C%22_variable%20%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22%5BINPUTB%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTC%5D%EC%9D%B8%20%EB%B3%B5%EC%A0%9C%EB%B3%B8%EC%9D%98%20%EB%B3%80%EC%88%98%EA%B0%92%20%5BINPUTA%5D%22%2C%22_variable%20%5BINPUT%5D%20of%20main%20sprite%22%3A%22%EC%9B%90%EB%B3%B8%20%EC%8A%A4%ED%94%84%EB%9D%BC%EC%9D%B4%ED%8A%B8%EC%9D%98%20%EB%B3%80%EC%88%98%EA%B0%92%20%5BINPUT%5D%22%2C%22_volume%22%3A%22%EC%9D%8C%EB%9F%89%22%2C%22_when%20I%20start%20as%20a%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%5BINPUTA%5D%EC%9D%B4(%EA%B0%80)%20%5BINPUTB%5D%EC%9D%B8%20%EC%83%81%ED%83%9C%EB%A1%9C%20%EB%B3%B5%EC%A0%9C%EB%90%98%EC%97%88%EC%9D%84%20%EB%95%8C%22%2C%22_x%20position%22%3A%22x%EC%A2%8C%ED%91%9C%22%2C%22_y%20position%22%3A%22y%EC%A2%8C%ED%91%9C%22%7D%2C%22nl%22%3A%7B%22_Clones%2B%22%3A%22Klonen%2B%22%2C%22_%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22%5BINPUTA%5D%20van%20kloon%20met%20%5BINPUTB%5D%20%3D%20%5BINPUTC%5D%22%2C%22_%5BINPUT%5D%20of%20main%20sprite%22%3A%22%5BINPUT%5D%20van%20originele%20sprite%22%2C%22_clone%20count%22%3A%22aantal%20klonen%22%2C%22_clone%20count%20of%20%5BINPUT%5D%22%3A%22aantal%20klonen%20van%20%5BINPUT%5D%22%2C%22_clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%20exists%3F%22%3A%22kloon%20met%20%5BINPUTA%5D%20%3D%20%5BINPUTB%5D%20bestaat%3F%22%2C%22_costume%20%23%22%3A%22uiterlijknummer%22%2C%22_costume%20name%22%3A%22uiterlijknaam%22%2C%22_create%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22maak%20een%20kloon%20met%20%5BINPUTA%5D%20%3D%20%5BINPUTB%5D%22%2C%22_delete%20clones%20in%20%5BINPUT%5D%22%3A%22verwijder%20klonen%20van%20%5BINPUT%5D%22%2C%22_delete%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22verwijder%20klonen%20met%20%5BINPUTA%5D%20%3D%20%5BINPUTB%5D%22%2C%22_direction%22%3A%22richting%22%2C%22_is%20clone%3F%22%3A%22is%20kloon%3F%22%2C%22_myself%22%3A%22mijzelf%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20clones%20with%20%5BINPUTC%5D%20set%20to%20%5BINPUTD%5D%22%3A%22maak%20variabele%20%5BINPUTA%5D%20%5BINPUTB%5D%20voor%20klonen%20met%20%5BINPUTC%5D%20%3D%20%5BINPUTD%5D%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20main%20sprite%22%3A%22maak%20variabele%20%5BINPUTA%5D%20%5BINPUTB%5D%20voor%20originele%20sprite%22%2C%22_size%22%3A%22grootte%22%2C%22_stop%20scripts%20in%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22stop%20scripts%20in%20klonen%20met%20%5BINPUTA%5D%20%3D%20%5BINPUTB%5D%22%2C%22_stop%20scripts%20in%20main%20sprite%22%3A%22stop%20scripts%20in%20originele%20sprite%22%2C%22_touching%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%3F%22%3A%22raak%20ik%20kloon%20met%20%5BINPUTA%5D%20%3D%20%5BINPUTB%5D%3F%22%2C%22_touching%20main%20sprite%3F%22%3A%22raak%20ik%20originele%20sprite%3F%22%2C%22_variable%20%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22variabele%20%5BINPUTA%5D%20van%20kloon%20met%20%5BINPUTB%5D%20%3D%20%5BINPUTC%5D%22%2C%22_variable%20%5BINPUT%5D%20of%20main%20sprite%22%3A%22variabele%20%5BINPUT%5D%20van%20originele%20sprite%22%2C%22_when%20I%20start%20as%20a%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22wanneer%20ik%20als%20kloon%20start%20met%20%5BINPUTA%5D%20%3D%20%5BINPUTB%5D%22%2C%22_x%20position%22%3A%22x-positie%22%2C%22_y%20position%22%3A%22y-positie%22%7D%2C%22pl%22%3A%7B%22_clone%20count%22%3A%22liczba%20klon%C3%B3w%22%2C%22_costume%20name%22%3A%22nazwa%20kostiumu%22%2C%22_direction%22%3A%22kierunek%22%2C%22_is%20clone%3F%22%3A%22jest%20klonem%3F%22%2C%22_size%22%3A%22wielko%C5%9B%C4%87%22%2C%22_volume%22%3A%22g%C5%82o%C5%9Bno%C5%9B%C4%87%22%2C%22_x%20position%22%3A%22pozycja%20x%22%2C%22_y%20position%22%3A%22pozycja%20y%22%7D%2C%22ru%22%3A%7B%22_Clones%2B%22%3A%22%D0%9A%D0%BB%D0%BE%D0%BD%D1%8B%2B%22%2C%22_%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22%5BINPUTA%5D%20%D0%BA%D0%BB%D0%BE%D0%BD%D0%B0%20%D1%81%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BINPUTB%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTC%5D%22%2C%22_%5BINPUT%5D%20of%20main%20sprite%22%3A%22%5BINPUT%5D%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%BF%D1%80%D0%B0%D0%B9%D1%82%D0%B0%22%2C%22_clone%20count%22%3A%22%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE%20%D0%BA%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2%22%2C%22_clone%20count%20of%20%5BINPUT%5D%22%3A%22%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE%20%D0%BA%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2%20%5BINPUT%5D%22%2C%22_clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%20exists%3F%22%3A%22%D0%BA%D0%BB%D0%BE%D0%BD%20%D1%81%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BINPUTA%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTB%5D%20%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82%3F%22%2C%22_costume%20%23%22%3A%22%D0%BA%D0%BE%D1%81%D1%82%D1%8E%D0%BC%20%23%22%2C%22_costume%20name%22%3A%22%D0%B8%D0%BC%D1%8F%20%D0%BA%D0%BE%D1%81%D1%82%D1%8E%D0%BC%D0%B0%22%2C%22_create%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C%20%D0%BA%D0%BB%D0%BE%D0%BD%20%D1%81%20%5BINPUTA%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTB%5D%22%2C%22_delete%20clones%20in%20%5BINPUT%5D%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%BA%D0%BB%D0%BE%D0%BD%D1%8B%20%5BINPUT%5D%22%2C%22_delete%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%BA%D0%BB%D0%BE%D0%BD%D1%8B%20%D1%81%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BINPUTA%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTB%5D%22%2C%22_direction%22%3A%22%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%22%2C%22_is%20clone%3F%22%3A%22%D0%BA%D0%BB%D0%BE%D0%BD%3F%22%2C%22_myself%22%3A%22%D1%81%D0%B0%D0%BC%D0%BE%D0%B3%D0%BE%20%D1%81%D0%B5%D0%B1%D1%8F%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20clones%20with%20%5BINPUTC%5D%20set%20to%20%5BINPUTD%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20%5BINPUTA%5D%20%D0%B2%20%5BINPUTB%5D%20%D0%B4%D0%BB%D1%8F%20%D0%BA%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BINPUTC%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTD%5D%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20main%20sprite%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20%5BINPUTA%5D%20%D1%81%20%5BINPUTB%5D%20%D0%B4%D0%BB%D1%8F%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%BF%D1%80%D0%B0%D0%B9%D1%82%D0%B0%22%2C%22_size%22%3A%22%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%22%2C%22_stop%20scripts%20in%20%5BINPUT%5D%22%3A%22%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B%20%5BINPUT%5D%22%2C%22_stop%20scripts%20in%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B%20%D0%B2%20%D0%BA%D0%BB%D0%BE%D0%BD%D0%B0%D1%85%20%D1%81%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BINPUTA%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTB%5D%22%2C%22_stop%20scripts%20in%20main%20sprite%22%3A%22%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B%20%D0%B2%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%BC%20%D1%81%D0%BF%D1%80%D0%B0%D0%B9%D1%82%D0%B5%22%2C%22_touching%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%3F%22%3A%22%D0%BA%D0%B0%D1%81%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%BA%D0%BB%D0%BE%D0%BD%D0%B0%20%D1%81%20%5BINPUTA%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTB%5D%3F%22%2C%22_touching%20main%20sprite%3F%22%3A%22%D0%BA%D0%B0%D1%81%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%BF%D1%80%D0%B0%D0%B9%D1%82%D0%B0%3F%22%2C%22_variable%20%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%5BINPUTA%5D%20%D0%BA%D0%BB%D0%BE%D0%BD%D0%B0%20%D1%81%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BINPUTB%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTC%5D%22%2C%22_variable%20%5BINPUT%5D%20of%20main%20sprite%22%3A%22%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%5BINPUT%5D%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%BF%D1%80%D0%B0%D0%B9%D1%82%D0%B0%22%2C%22_volume%22%3A%22%D0%BE%D0%B1%D1%8A%D1%91%D0%BC%22%2C%22_when%20I%20start%20as%20a%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0%20%D1%8F%20%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%20%D0%BA%D0%B0%D0%BA%20%D0%BA%D0%BB%D0%BE%D0%BD%20%D1%81%20%5BINPUTA%5D%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20%5BINPUTB%5D%22%2C%22_x%20position%22%3A%22%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F%20x%22%2C%22_y%20position%22%3A%22%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F%20y%22%7D%2C%22zh-cn%22%3A%7B%22_Clones%2B%22%3A%22%E5%85%8B%E9%9A%86%20%2B%22%2C%22_%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22%E8%8E%B7%E5%8F%96%5BINPUTB%5D%E4%B8%BA%5BINPUTC%5D%E7%9A%84%E5%85%8B%E9%9A%86%E4%BD%93%E7%9A%84%5BINPUTA%5D%22%2C%22_%5BINPUT%5D%20of%20main%20sprite%22%3A%22%E8%A7%92%E8%89%B2%E6%9C%AC%E4%BD%93%E7%9A%84%5BINPUT%5D%22%2C%22_clone%20count%22%3A%22%E5%85%8B%E9%9A%86%E4%BD%93%E6%95%B0%E9%87%8F%22%2C%22_clone%20count%20of%20%5BINPUT%5D%22%3A%22%5BINPUT%5D%E7%9A%84%E5%85%8B%E9%9A%86%E4%BD%93%E6%95%B0%E9%87%8F%22%2C%22_clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%20exists%3F%22%3A%22%E5%AD%98%E5%9C%A8%5BINPUTA%5D%E4%B8%BA%5BINPUTB%5D%E7%9A%84%E5%85%8B%E9%9A%86%E4%BD%93%EF%BC%9F%22%2C%22_costume%20%23%22%3A%22%E9%80%A0%E5%9E%8B%E7%BC%96%E5%8F%B7%22%2C%22_costume%20name%22%3A%22%E9%80%A0%E5%9E%8B%E5%90%8D%E7%A7%B0%22%2C%22_create%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%E5%88%9B%E5%BB%BA%E5%85%8B%E9%9A%86%E4%BD%93%E5%B9%B6%E5%B0%86%E5%AE%83%E7%9A%84%20%5BINPUTA%5D%20%E8%AE%BE%E4%B8%BA%20%5BINPUTB%5D%22%2C%22_delete%20clones%20in%20%5BINPUT%5D%22%3A%22%E5%88%A0%E9%99%A4%5BINPUT%5D%E7%9A%84%E6%89%80%E6%9C%89%E5%85%8B%E9%9A%86%E4%BD%93%22%2C%22_delete%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%E5%88%A0%E9%99%A4%5BINPUTA%5D%E4%B8%BA%5BINPUTB%5D%E7%9A%84%E5%85%8B%E9%9A%86%E4%BD%93%22%2C%22_direction%22%3A%22%E6%96%B9%E5%90%91%22%2C%22_is%20clone%3F%22%3A%22%E6%98%AF%E5%85%8B%E9%9A%86%E4%BD%93%EF%BC%9F%22%2C%22_myself%22%3A%22%E8%87%AA%E5%B7%B1%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20clones%20with%20%5BINPUTC%5D%20set%20to%20%5BINPUTD%5D%22%3A%22%E5%B0%86%E6%BB%A1%E8%B6%B3%5BINPUTC%5D%E4%B8%BA%5BINPUTD%5D%E7%9A%84%E5%85%8B%E9%9A%86%E4%BD%93%E7%9A%84%E5%8F%98%E9%87%8F%5BINPUTA%5D%E8%AE%BE%E4%B8%BA%5BINPUTB%5D%22%2C%22_set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20main%20sprite%22%3A%22%E8%AE%BE%E7%BD%AE%E8%A7%92%E8%89%B2%E6%9C%AC%E4%BD%93%E7%9A%84%E5%8F%98%E9%87%8F%5BINPUTA%5D%E4%B8%BA%5BINPUTB%5D%22%2C%22_size%22%3A%22%E5%A4%A7%E5%B0%8F%22%2C%22_stop%20scripts%20in%20%5BINPUT%5D%22%3A%22%E5%81%9C%E6%AD%A2%5BINPUT%5D%E4%B8%AD%E7%9A%84%E8%84%9A%E6%9C%AC%22%2C%22_stop%20scripts%20in%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%E5%81%9C%E6%AD%A2%5BINPUTA%5D%E4%B8%BA%5BINPUTB%5D%E7%9A%84%E5%85%8B%E9%9A%86%E4%BD%93%E7%9A%84%E8%84%9A%E6%9C%AC%22%2C%22_stop%20scripts%20in%20main%20sprite%22%3A%22%E5%81%9C%E6%AD%A2%E8%A7%92%E8%89%B2%E6%9C%AC%E4%BD%93%E4%B8%AD%E7%9A%84%E8%84%9A%E6%9C%AC%22%2C%22_touching%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%3F%22%3A%22%E7%A2%B0%E5%88%B0%20%5BINPUTA%5D%E4%B8%BA%20%5BINPUTB%5D%E7%9A%84%E5%85%8B%E9%9A%86%E4%BD%93%EF%BC%9F%22%2C%22_touching%20main%20sprite%3F%22%3A%22%E7%A2%B0%E5%88%B0%E8%A7%92%E8%89%B2%E6%9C%AC%E4%BD%93%EF%BC%9F%22%2C%22_variable%20%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%3A%22%E8%8E%B7%E5%8F%96%5BINPUTB%5D%E4%B8%BA%5BINPUTC%5D%E7%9A%84%E5%85%8B%E9%9A%86%E4%BD%93%E7%9A%84%E5%8F%98%E9%87%8F%5BINPUTA%5D%22%2C%22_variable%20%5BINPUT%5D%20of%20main%20sprite%22%3A%22%E8%A7%92%E8%89%B2%E6%9C%AC%E4%BD%93%E7%9A%84%E5%8F%98%E9%87%8F%5BINPUT%5D%22%2C%22_volume%22%3A%22%E9%9F%B3%E9%87%8F%22%2C%22_when%20I%20start%20as%20a%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%3A%22%E5%BD%93%E6%88%91%E4%BD%9C%E4%B8%BA%E5%85%8B%E9%9A%86%E4%BD%93%E5%90%AF%E5%8A%A8%EF%BC%8C%E4%B8%94%E6%BB%A1%E8%B6%B3%5BINPUTA%5D%E4%B8%BA%5BINPUTB%5D%22%2C%22_x%20position%22%3A%22x%E5%9D%90%E6%A0%87%22%2C%22_y%20position%22%3A%22y%E5%9D%90%E6%A0%87%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20const%20menuIconURI%20%3D%0A%20%20%20%20%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAZ4AAAGeCAYAAACkfGcPAAAAAXNSR0IArs4c6QAAIABJREFUeF7tndl1HEeWQEFZ0ZovmTDGTHsiM9oTjTFjRbe84JwEWWChUJUZEW%2BJt9z%2B6B%2FGet9yEVWg%2BO2N%2F0GgGYHvf%2F3%2BPdKVv%2F3zP98inYezQMCaAAlvTZj1XQlEk4rW5ZGTFknWiUAA8USIAmeYIlBVLlMQ7gYjpVVyzNtFAPHsIs%2B%2BlwQQzCWi0wEIScaP2XYEEI8dW1aeJIBoJoFNDkdEk8AYbkYA8ZihZeEzAkgmRn4goxhx6HYKxNMt4pvui2g2gZ%2FcFhFNAmP4EgHEs4SNSSMEkM0IpbhjkFDc2GQ%2FGeLJHsFA50c0gYJhcBREZAC16ZKIp2ngta6NbLRI5loHCeWKV7TTIp5oEUlwHmSTIEiOR0RCjrCLbIV4igTS%2BhrIxppwjfWRUI04Wt8C8VgTTrw%2BskkcvABHR0IBghD0CIgnaGB2Hgvh7KRfb28EVC%2Bm0hshHinBIvORTZFABr8GEgoeIKfjIR4n0BG3QTYRo9LnTEioT6wfb4p4GsYe4TQMeuArI6DAwTE6GuIxAhtxWYQTMSqc6UYAAfXJBcTTINYIp0GQC10RARUK5ourIJ6iMUY2RQPb7FpIqGbAEU%2BxuCKcYgHlOu8EEFCtREA8ReKJcIoEkmucEkBANRIE8SSPI8JJHkCOv0QAAS1hCzMJ8YQJxdxBEM4cL0bXJICAcsYV8SSMG9JJGDSObEYA%2BZihNVsY8Zih1V8Y4egzZcU6BBBQnlgingSxQjgJgsQRwxBAQGFC8fIgiCdwjBBO4OBwtPAEEFDcECGeoLFBOkEDw7FSEUA%2BMcOFeILFBeEECwjHKUEAAcUKI%2BIJEg%2BEEyQQHKM0AQQUI7yIJ0AckE6AIHCENgSQz%2F5QI56NMUA4G%2BGzdXsCCGhfCiCeTeyRzibwbAuBOwLIZ086IB5n7gjHGTjbQWCAAAIagKQ4BPEowjxbCuE4gWYbCAgIICABvImpiGcC1upQpLNKjnkQ8CeAfOyZIx5jxkjHGDDLQ8CAAPIxgHr%2F3Zrt8n1XRzh9Y8%2FN6xBAQDax5MVjwBXpGEBlSQhsIoB89MEjHkWmCEcRJktBIBgBBKQXEMSjxBLpKIFkGQgEJoB8dIKDeBQ4Ih0FiCwBgSQEkI88UIhHyBDpCAEyHQIJCSAfWdAQzyI%2FhLMIjmkQKEQAAa0FE%2FEscEM6C9CYAoGiBJDPfGARzyQzpDMJjOEQaEAA%2BcwFGfFM8EI6E7AYCoFmBJDPeMARzwArhDMAiSEQgMA7AQR0nQiI54IR0rlOIkZAAAKfCSCf84xAPCd8kA7tBAIQWCWAfF6TQzwv2CCd1XJjHgQgcCOAfJ7nAuJ5wgXp0DggAAEtAsjnK0nE88AE6WiVG%2BtAAAK8fHjxXFYB0rlExAAIQGCRAC%2BfX%2BB48fxkgXQWq4lpEIDAMAHk8wNVe%2FEgnOGaYSAEIKBEoLuAWosH6ShVEctAAALTBDrLp614kM50nTABAhBQJtBVPi3Fg3SUq4flIACBZQId5dNOPEhnuT6YCAEIGBHoJp9W4kE6RlXDshCAgJhAJ%2Fm0EQ%2FSEdcFC0AAAsYEusinhXiQjnG1sDwEIKBGoIN8yosH6ajVAwtBAAJOBKrLB%2FE4JRLbQAACEBglgHhGSQUcx2snYFA4EgQgMESgsnzKvniQzlBuMwgCEAhMoKp8SooH6QSuJI4GAQhMEagon3LiQTpTOc1gCEAgAYFq8iklHqSToII4IgQgsESgknzKiAfpLOUykyAAgUQEqsinhHiQTqLK4agQgICIQAX5pBcP0hHlMJMhAIGEBLLLB%2FEkTDqODAEI9CaAeDbGn9fORvhsDQEIbCWQWT5pXzxIZ2vOszkEIBCAQFb5pBQP0gmQ8RwBAhAIQSCjfNKJB%2BmEyHUOAQEIBCKQTT6IJ1DycBQIQAACKwQQzwq1wTm8dgZBMQwCEGhHIJN80rx4kE67OuLCEIDAJIEs8kkhHqQzmX0MhwAE2hLIIJ%2Fw4kE6beuHi0MAAosEossH8SwGlmkQgAAEohJAPILI8NoRwGMqBCDQmkBk%2BYR98SCd1jXD5SEAAQUCUeWDeBSCyxIQgAAEIhJAPBNR4bUzAYuhEIAABE4IRJRPuBcP0qGGIAABCOgSiCafUOJBOrrJxmoQgAAEbgQiyQfxkJcQgAAEGhBAPE%2BCzGunQeZzRQhAYCuBKPIJ8%2BJBPFvzkc0hAIEGBBDPXZCRToOM54oQgEAIAhHks%2F3Fg3RC5CKHgAAEGhHYLR%2FE0yjZuCoEIACBg0Br8fDaoQggAAEI7CGwUz7bXjxIZ0%2BysSsEIACBG4Fd8kE85CAEIACBpgRaiYfXTtMs59oQgEA4Ajvks%2BXFg3jC5R4HggAEmhJoIR6k0zS7uTYEIBCWgLd8XF88SCds3nEwCECgOQFP%2BSCeHcn2P%2F%2F%2Btev%2F%2FteOE9Te857v2U1hXzsPuN0UgZLiafPaGW16MylBg%2FxKy4Lz%2FS4wn8lQxhYh4CUftxdPafFYN8HHpO7aFL0537h35V2kmXKNcQKlxFNSOruaYDcJReHMa2i8ezEyNQEP%2Bbi8eEqIJ2IDjCKhRzbSF0IG1gd76T1TtycOX5VACfG4S%2Beqaa00i6s1o2Xgyh1n7zDKZOYso2vOntV6%2FMwdrc%2FC%2BjIC%2FOLPOz9r%2BZi%2BeFylM9O0RhvFzJqydLeZPXrP2d1nuVydY3a92fN6jb%2B6p9c52GeewFUONoytpXxqiOcqaZ6l4Vkiraw3n%2Bo%2BM7QLZpXNs3OsruVDbn0XbebrJ2HmCIHRPGwW15TicXvtjCbNiHwka40k%2BM4xGkUj5XN%2FBulaO1mO7K3Be2QfxsgIzOZhs7haycfsxZNCPEfKHok0m3yyVN8zW6NgOnDSjo4Gd%2B0zsd4PAiv53CyeqcSTRjqdClBaMCtF2onv2V2l7OFoQ2A1p5vF00I%2BJi8exGNTJ6JVpcWyWqSiQxeaLOVfCEWIq0jyuVksU4jHTTqrT%2BUQWe98CI1CkRSq83XDbqcRh7CXS3YwST43jKO2fNRfPIgnYAFqFIqkUAMi2XokjXhsvUCBzSX53DB%2BocXjKh1ePHPVLy0WSaHOnbTHaGk8elCyu6Ukn5vGTlM%2Bqi8exDNWJ%2F%2F3r398DPzvP%2F8emyQdJS0WSaFKzz45%2F57v2VQ39q8OIY3JJBeG3xGQ5HPTuCGeW%2F5Ikse4Ckebn1tj1CiWgLw1ON%2FHwF1GGnExzuWSy0tyuWnMQorH%2FbUTUD7aTfCx4EVNUaNYJMWq2L2sOd%2BOKuI9c1%2BN2Mzsx9i1v8Nz49Y4XlryUfuorat4vJqg%2BKdyrWLZJJ8dnN0EpBUbhDJOQJLHjeMVSjzbpLPx1bOzES41RM1ikRTteGv4GBmB9XEY0xeQZnwWGLebIsnh5rHSkI%2FKi2e7eI6qkSTSRNVFaYJLLyDNgnHgHZG1qYA04zOR0y2HSvK3eZxCiCeEdBxePlGb4JSAtAtGUrwn3S4DazMBaceopVUGLi3JXWIk%2Fvd6xC%2BeUOIxevlkaYSXzVC7YCTF%2B6I3ZGJ9yXug%2Fz0doh2n1XNUnifJXeKzVzzhpGMgnmyN8LIZahaNpHifNLWMrC95rzRvzRit7N9hjiR3ic97hkg%2BchO9eMKJR5JMhRrh7SpPvwzXKhpF1lmF85gyqr98oBWnDhJZuaMkf4kN4vnIOUkiPSRulUb48qdxjcJR4l2JterrRyNGKw25yxxJ%2FhKbfeKp%2Btqp1gi%2FNEONopEU7V1jq8ga%2BSQxlySHNWooCaarY65%2B3Lb8UVso8UiSqPBr5%2F5qHx8DSYsG1le1qPv3faTxujxt0wGSPCYmH0mDeBTqp%2BpP4B%2Ff%2Bfzxm5ySpGAbvHZOv19boU%2BTW6F2PUeSx8Rkj3gqvnaqS%2Bf9IyCpeCTF2kg6yOe6728fIcllxPMpfCuvnqWP2qqJp4N0ooinC2tV%2BdDo9D2FeNSYuogH6ajFy3WhCK%2BdbtJBPq4pPrcZ4pnjdTF6Vj7TLx7Eoxovt8UQjxvqLxup%2FP0eXj26AUQ8qjz7iEeSOD%2BRd%2FoJfLd4OrF%2BVtFi%2BSAe1UYp%2Bo8KE4svsTAVD68d3dz3Wm23dI57Ih6Ff%2BKchqdXMpIfXInD0zjMyGfqo7ZK4unUCHeLpxPrs87Iq0fPG%2BKVEI8Y4eMC9cUjSZqGP30jHvUaW1oQ8Sxhs5kk6SG8ePxePLx2bPLfY1WReCQF2lDyV%2FFEPleEnP5ckteI52WQRl89wx%2B1VRFPt499RNI50ktSoIhH%2FzfcqjY9YZ456WrPNolijnhepAjimawdQUPoxnqUrOjVk6gJjfKQ%2FnAzvE%2F2gQliryqeKq%2Bdjr9dJXrxCKTTkfVoXxOJ59gkQQMaYiHMr6E9qg1KEPsR%2BQx91IZ48mYv4okXO8TzMyaIZy05g8sH8TyEteNHP7vE05H1TBcRySd44xnigHSGMD0dFDz%2BKuIJ9doRftndsRkinvX6tpyJeP5tibf%2B2snlc%2FlRG%2BLJncOIJ2b8EA%2FiEWUm4hHhm5sseJ53fO0ccBHPXIp5jUY8iEeUa4hHhG9uMuKZ44V4pnl5TUA8iEeUa5XFw8dsotQIMZkXT4gwfDkE4kE8y5kZXDq3e539ksHpdzyIZzk1wkzcIZ6uH2vOBl0kn2OzJA3oKRfBpxeznMuNTxJ3xNP0P92yQzpHkSOesVYnFs%2FZNhmaE%2FIZS5THURli%2B%2Fb2tiSecK%2BdA74gUTs2Q8SzVteWs0xl8%2BrgkRuVoKYt4xR27cixfALtlXxeftSGeMKm3vDBEM8wKrOBW0ST7SWEfK7zL5lwrr7nQTzXIU87AvHsC1044TxDEbGZIaHPkYoYo4my4sXzr39M4KoxFPH4xzGFcJJ%2BZ6AaTYngkstAlePFYlPiCfkxG9%2FxTOcL4plGtjwhpXA6CwjxLOf67MRn8nn6URvimUUbb%2FxHI5T8dCYozi6%2FzFFCOB0FJMjt1L%2FGvqFVIZ4N0L23%2FNIIEY9ZCEpK556WJHfMqCstjHiUQF4vg3iuGaUd8bIJSpqHoDgrv3jKC6eDfAS5zYtnrk0injleaUafNkLEoxrHVtKpLCDEo1oXZ4sNiSfs9zu3mwkSpuJP4ZeNEPGoFdgla7Wdgi4kyaVoVxL0EV4888F8lM%2BXXy5APPNQd8wYboKSZiEozkqSH2a9IxG895Tkk%2FdZz%2FYT5DbimQ8k4plnFm7GVCOUNApJcRb5b7ZNsQ6XKUYHkuSU0ZGml5XkdoX7TwOTTUA8Mn7bZ083QkmRSIqzgHimWW%2FPDscDSPLK8Zgvt5Lkdva7b%2BB%2FKp7wH7MdwCQJk7wZLjVCaZEIeGf%2BuG2JtWJBX7Hbfb73q0pzS5HX9FKCvE5972lQehPu5fPpOx7EowdZe6XlRiNtDpICTSr6ZdaLQb%2BSzMyy3mdP24QleS2tqZmAFhqbWzzCV49mkXvlhLiZSApFUqAJxSNmPZgUHnnodZeU8pHktaSeBvOj4rDW4jkC6lH0Womj0jykhSIo0nasLwK%2Fi4dKHp3dTZpjWgUzuo4gp1OKdpSL4TjEk%2BS%2FVK3WLKRNQVKkSUSvxvpF4e4SzuNxTO8pzTPDpvdlaUlOZ7qnJ9OLvfKLR%2FhxW5ZXj1qTkBaKpEibiyeKcO57glpePTYaaZ55NklJTme6pyfTFfGk%2BMWC%2B4tJEidBM1RvDpJiEbKOLnp11gny64iJxb3TfAwlyWlJLQUSwY6j3F49H7%2FV1k08kZthyIYgKdTAjdiCdcRXzlmTUWeQoTFL8jnD%2FXZYZWDP%2FOIp%2BnGbehP42fRF%2FyicAuuIotdmnU04ph%2B%2FRW%2FOiGdAE%2FpDEM9PptGahWYzfLybSD6SQr3L30i8LVnrl6z9ipo83k8bWT6SfI58L%2Fs0Ee2AeAI2Q83Cf9bgReIp9uqxZi2qzo2TNbkgno2BDLp1DfHQDJ%2Bm16tXhVg8hXhrNdhILzitXqPFJvSrhxePVrpMrVNHPEWaoVaxXzVCsXwkBRvklenFeqoigw3WYhT21SPJYz5qW87WT%2BJJ9xttj9eWJFGAZqhV5FfSOa4qFo%2BS6I9lRs67nOEnEzV47zq7BY9Xa2pwCvvqkfQMxCNKw0M%2B779OnV48yZuhVoGPNMNI4tkhH0%2FWouoMMlmFV8RGjXi2ZRjieYF%2BpIFrRU2lsCdfD13ls4O1Vp7sWkeLWbiP3BDPrpR6qyUexVeP50%2FiGoU9K8po4vHivYP1tupW3FiDG%2BJRDEjypRDPRQBnG%2FpKPkiLevWMHeWzi%2FVKXkSbI2UX8rue1VdPxI8OoyXMyXnqiUf51XNjt9rcr3JBo5hXz6YiHgPeq%2FeJzPrqbBn%2BXCNXS7x6kI44XWuKx6AZWn0UJC1maZNWkc%2FqT43Or83drMXVGmABKcNw4lnpFYhHnIl1xbOSUAM4pY3%2BcQtpIUvPoyIeI9bast%2FNeiC9wg%2BRMgz5cdtM%2FiIdlRxFPIsYpQ3%2F2FZaxBpneD%2FHH78tUniYZvTy0RBQFNY6oPeuImUZ8tVzJR%2BEo5p07%2BIp8Xd4XmExbIbShigt4HDiuSpehdRdvXMU1goIti8hZRlWPNvJ9jpAbfE4NMNVAUkKeLUBv0pttVePE%2B9Z5pFYV2gvEp6Ip0IGyO9QXzyOzfAWjisxiAp38i%2BLjqZIRvmM8I7IejQmUcdJmSKfqJH1O1cP8WyQz30Iv%2Fy7OH%2F%2BLYrwldhWFs8snpX7js6xYD26d9RxiCdqZPKcq494NstHKyUsG6GqfArwtmStlQ%2B71hHJhy%2Frd4UtzL69xEMzvEw85PMLEeJ5nS4i8RzLIp%2FLWqw8oJ94ksvHuhmqiycxb2vWmRsL4skcvf1n7ymepM3QqxEinx%2BF6cV7fxtYO4FIPrx41qAXmdVXPLcAGv9dH8088WyE3eXjyVozRzzXQjyetGvthXgSvX68m6GJfJLw9madsa0gnoxRi3FmxJPo5bOjGXaVzw7WMVrC%2BCkQzzgrRn4mgHgeMyLwR2%2B7mqGZfAK%2FfnaxztSgEE%2BmaMU6K%2BJ5FY%2BAAtrVDE3FE%2FTFuYt1rPZwfhqReK4uyi8fXBFK%2FeeI5yp8gQS0sxm6yCfQC2gn66uU3P3npsJ5djkktDvk6vsjnlGkmwUUoRG6ySeAgCLwHk1Nj3Husjm7FCLyCLnpHohnFu9GAUVohq7y2fgxXATWs6mpPT6UbF5dDglph91lPcQjwewsoUjNcIuAHF9CkVhLUnRlbgrh3F8M%2BayEeescxKOJ31hE0ZrhNvk4vISisdZM01drpRPO40UQkEeaqOyBeFQwXiyiJKSIzXC7fM7QC7hHZG2VqumFg4CsUsNsXcRjhvbFwgWbYVj5FGStma7lhIOANNPDdC3EY4r3yeKFm2E4ARVmLU3b8tLhOyBpipjORzymeHuJ57htKPkgnqfZ3Uo6NwJ8%2F%2BPd6U73Qzze4WjQDMPIR8D6SItq3%2FO0FA4vH%2B8ON7Qf4hnCpDhI0AyzNcLtAhKwriae9tLh5aPYxORLIR45w7kVmjXDzPLJJvpXiYh0HsjwsdtczzIYjXgMoF4uKZBP1ma4TUANWd%2FnH9I5qUYEdNmqrAYgHiuyZ%2Bs2bobuAhKwzv5xWxTpPP6wFOVc7yWKfHZ0wDfEswN702b4qeF4FryAd9oX5p9%2Fu2a2FqctUvLMRdeoxN0M8eyIjaARZv0p%2FGVD8Sh6AW%2BthuqZZl7N25qN1z14%2BXhm54%2B9EI8%2F8x87NmqGww3ESkIC1tlEP8x6Me%2BtZfPqWNb34iO3xYRYnIZ4FsGJpzVphssNQ1NCsBan6y7hPB58OZ9GCGjm3Mh%2Bjccgnl3Bb9AM1ZqERkMozluN9ZN6iCKd%2B6OZ3Vcj13b1lET7Ip5dwRI2wgwfAak2B2lDEPKO2HytG3H0Ox%2F3V82xG1Bpru3qKYn2RTw7g1W4Gao3BGkzELKOLHpt1hmEYy1dvvOxbYyIx5bv%2BepFm6FVIxT%2FHSAh74gN2Yr1zrJY2VubA%2BJZicL4HMQzzspmZLFmqN0A7pv9bvFEe%2FVYsrZJdttVtXkgH7t4fTuW%2Fv7X79%2FttmDlUwJC8VRuhl%2F%2Bxvsfv8mTqRBvzUYb8TW3Gmw1LtKPd1cvUHzet3%2F%2B5xviiRDkIs1QreBP%2FkmCCK%2BeCLL3YB2hNFbPoMYH%2BayG4OU8xKOOdHFBBfFUaoZnP32LxXOAUuC9%2B4Wg1Vh332OxYi6nafF53wj5XPKeGYB4ZmhZj1Vohjvlo1XoV40wing6sLZOeev1tXIS8ehGCvHo8pSthniG%2F8XP7vLRaKhXgpclc5zZGqx49ejGE%2FHo8pSvllQ%2BWsU92gwjicf75aPBepSzPKFjrKDBjFePXiwRjx5LnZWUxHM7jFeD0Sjs2bN2lc8O1jrJvXcVDW7IRyeGiEeHo%2B4qyeSjUdCz0jmARxOPx8tnF2vdBN%2BzmgY7xKMTO8Sjw1F%2FlUTykRb0inRuwCPKx1JAUtaWZ9MvAv0Vxfz47TaVoHyI51iNv0SqwlRnEWXxWDUccSGf%2FH2dEZAq4jk2asJbIvmReEQfo5GvvHpkUT6kc6zw%2Fn%2BIRwbTZLZBM9QWkLSQNRphZPlo8o7A2iTPnReVckQ8soAhHhk%2Fn9lG8tFqiNIiDiUeo5fPLVGkd43A2ifpbXeRckQ8svggHhk%2Fv9lB5SMtYGkjvg9A9FePhnwkvDVZ%2ByW%2B3U4Slu%2Bn4rue5eAgnmV0zhMNxXN%2Fk9nmJC3e2f3OqKuJx%2FjVs8o7Emvn7DfZTsoT8ayHBfGss%2FOf6SSfmZ%2FMJcWrKZ3bmTPKZ5S3hLXWx6r%2BSW%2B7o4gpL57l4CCeZXSbJjrL5%2Bqnc0nhWojnOG9m%2BTzLqhuniKw3VYHathKmfNy2HoYv4jmW4leq14G6zNwoH837WYmnonyk3C1ZS8%2B2cz7i8ad%2Fk86x88evUyMe%2F0As7VhAPpbNUPXVcwQoOW9L1kv5G2iSSD583DYdScQzjSzghKQN0aMRIp8f%2BerBOmBlDB8J8QyjUhmIeFQwBlgkoXy8mqG6fBK%2BfrxYB6iEpSMgniVsy5MQzzK6gBOTycezGXaXjyfrgJVxeSTEc4lIdQDiUcUZYLFE8vFshibiSfTy8WQdoAqmj4B4ppGJJrwUz7Eqv9kmYrt3cgIBeTdDM%2FkkEJA3673Jv7Y78lnjNjvrXjrH3E%2B%2F1YZ4ZnEGHB9YPrsaYVf57OIdsCpeHgnx%2BEQL8fhw3r9LQAHtbISm8gn6%2BtnJe38BjJ0A8Yxxko5CPFKC2eYHEtDuRmgun2AC2s07Q6kgHp8oXYqHj9t8AuG%2BSwABRWiELvIJIKAIrN1zfGFDxLMAbXLKo3SefseDeCapZhy%2BSUJRmqGbfG65sYF3FNbRywPx2EcI8dgzzrWDc0OM1Azd5eMsoUisIxcF4rGPDuKxZ5x3BwcJRWuG2%2BTjJKFovCMWB%2BKxjwrisWdcbwdFIUVshNvlc5YxQvYReUcrEMRjH5Fh8fA9j30w0u4gaIZRG2FV%2BUTlHSn3EY9tNJ5J5%2BUvFyAe22CkX72gfI6YhBRQUdYRagDp2EcB8dgz7rND4WYYTj6FWe8uGMRjHwHEY8%2B4zw4NmmEYATVgvatwEI89%2BWnx8HGbfVDS7tCkGYaQTxPWr2rhSg6S77Gu1j6tT%2F4F0sv29Uo6p9%2FxIJ5Lrn0HNGuGWwUkYH0kqKQx70zwGSms3nFmjy8sEM9leiCeS0QMmCLQsBluk09H1n%2F%2BPZWOt8EzAhJJ59gQ8VzGaFk8vHou2fYc0LkZ7mg4At4zzThKMkukMHpfyR7vnHbkQZQADZzjTDqXH7UhngHCXYc0aoZPm5Rn4xGwzvZxm1gIgx8vivbxjH3S%2FoJ4kgYu%2FLEFzXD0p9IIDIYalHUjErDOJJ4h1oNJcZZj4n2s4z14x8jDEE%2Fk6GQ%2BG83wefSsmpKAdxbRi4XwEJFX9xbvYxXjzP3g4exi8fBxW6Fs0LyKoBG2%2BSlcs0E14C0WwpP8fiYf0T6aMdWsx0BrXUln6DsexBMootGOQjMcj4i0YcF6nPXJy0cknWNdaRyXb5FnIuLJE6ucJ6UZzsVN2rSK8xZL4SQax8tHZX1pDOcyJuVoNfHw6kkZf%2FtDCxthho%2FcVJrVLRLSpiXkHf27HlXWVtkvjaHVuYKsOyKd4Y%2FaEE%2BQqEY8Bs1wPCrSpiVkHV304cUjjd94pqQdiXjShi7ZwWmGcwGTNi94z%2FHWHC2NneZZgq6lLh5ePUEjvftYCo2w1U%2Fi0ualwDvyR25hXz3SuO2uU4f9R6Uz9VEb4nGIXNYtaIbjkdNoYPAe5601UiNuWmcJug7iCRqY0seiGY6HV9rEFFi3emWOR%2Bb5SGm8pPsnmW8mHl49STJgxzFphuPUNRoZvMd5S0dqxEt6huDzZ6Qz%2FVEb4gke%2Fd3HoxmORUCjkSmx5uVzETKNWI1lRepRiCd1%2BJIfnmY4HkCNhgbvcd6rIzXitLp3onnm4uHVkygbdhyVZjhGXaOhKbLm5fMkbBoxGsuG1KNmpbP0URviSZ0j9oenGY4z1mhs8B7nPTtSIz6zeyYc7yYe5JMwOzyPTDMco63R2JRZ8%2FL5GTqN2IxlQepRK9JZfvEgntS54nP4Rg1R9JceNRpcI9ZH8op4z2S%2FRmxm9ks4FvEkDFrpIxs0w8g%2FjS83Q63mBm%2BbctKKj83ptq%2FqLh5ePdtjHv8ARs0wooCWxXNcRqu5NeAt4rxaMVrxWd0%2F6LxV6Yg%2BakM8QbMh2rEMm2EEAak0Qs3GVpi3CuvV%2BtCM0eoZgs1DPMECwnEeCBg3wx0CUm%2BCmo2tEG91zpLi1IyR5BxB5m4TD6%2BeIBmQ4RgOzfCGweq%2FvmzeBLUamyNrC%2Bmbc5bUi1aMJGcIMFciHfFHbYgnQAZkOoJzQ9Roiq5NULOpbWD9mIojPwC48tWqFc04aZ3JeZ3t4kE%2BzhHPvl2AhhgaoWZTg7VdqDXjZHdKk5Wl0lF58SAek9jWXpSGeB5f7aYGb5t60o6TzSnVVw0jHuSjHtv6C9IMX8fYoqHhb01JAAAKFElEQVTB26amLGJlc1KVVTWko%2FbiQTwqMe23CM0Q%2BVTI%2BkbyCSce5FOhgjbcAfkgnw1pp75lA%2FloSUf1xYN41FO514II6Hm8LRoarG1qyyJWNiddWhXxLGFjUngCXRri0aBm7mrV0GbOED55nhzwnpvXXa1iFYB%2FWPHw6gmQHRWO4NUkvFk9NqWZe1o2tJlzeDNb3e8ZL697WsZqlYdwnqZ01D9qQzzC6DL9FwGvJuHB%2FKwRjd7To5mNnsWD2eoeV5y87nh1jtX7bZoXXjzIZ1NmVN3Wq1FY8BttPqN3HF1PcpfRs0j2sJg7w8brjjNnsmCitKa2dExePIhHKdos85mAV7PQ4j7bdEbvN7vu6n1Gz7O6vta8VR5e91s9nxYfhXXSiAf5KESbJZ4T8GoYK%2FylTWb0btJ9Zu82eq7ZdVfHa93f615a513lJZhnIR2zFw%2FiEUSaqeMEvBrH2Ym0m8ronbT3HaU%2Ber7R9UbHWd3X6z5W5x%2FltzgunXiQz2KkmbZOoEoTmbnHzoY2c86VqHrdzfoet7t73WeF9ZM5VtIxffEgHqXos8w6AY2GsqtZzJx91xmvIjNyhyhnHznr1X1H%2FjzKfQfOmlY8yGcgugyBwCsCM80wUUMLG%2FAZ3pJLJIiVpXTMXzy32Hz%2F6%2FfvkjgxFwJtCcw0wwQNLXwcZ3hLLhM4VtbSQTySxGEuBLwIzDbDwE3NC5lon1neq5sFjVMZ8fCR22pmMg8CPwnMNsOgTS1NPGd5r14sWJw8pOP24kE8q1nJPAjcEZhthsGaWrpYzvJevWCgOJUTD%2FJZzUrmQUAgn2NqoMaWLpaN5OMlHdcXD%2BJJV3IcOCqB1WaIgNYiusp7drfN8SkrHuQzm4mMh8ALApJmuLnBpYyphPfMhTfFxlM67i%2BeG39%2BvXomExkLAQP58BHcfFoVlY%2B3dBDPfOoxAwKxCGg0w00%2FZccCOXgaDd5XWznHo414%2BMjtKvP4cwhMEtBoiM4Nb%2FKGcYZrsL66jVMsdkhn24sH8VxlHX8OgQUCmg3RqfEt3DLGFE3Wz27kxL%2BdeJBPjPrhFMUIWDREpyaYLhIWrG8QHJjvks7WF8%2BNL79okK7cOHB0AlYN0aEZRkf75XxJWe%2BUDuJJl%2BUcGAKDBCwaIuJ5Dj8h6%2Fbi4SO3wUbCMAjMEtBuiIjndQQSsd4tnRAvHj5ym%2B0mjIfABAHNhoh4zsEnYB1BOohnon4ZCoG0BLQaIuK5ToHgrBHPkxDyiwbXec0ICCwRkDZEpDOOPSjrKNIJ9eLhu57xvGYkBJYIrDZEpDOPOyBrxHMSRl498znODAgME1hpiIhnGO%2BngbOsDTlHkk64F88taMhnLc%2BZBYEhAqMN0bARDp2zyqAR3oaso0knrHj42K1KxXGP0ATOGqJhIwzNxPpw98wdGEeUDuKxTjLWhwAEILCRAOJZgM9HbgvQmAIBCEDg7e0tqnRCv3j4vofagQAEILBGILJ0EM9aTJkFAQhAIDQBxKMQHj5yU4DIEhCAQAsC0aWT4sXDR24taoVLQgACCgQySCeVeI7D8vJRyEyWgAAEShLIIp104kE%2BJeuFS0EAAkICmaSDeITBZjoEIACBCAQQj0MU%2BMjNATJbQAACKQhkk07KF88tE5BPiprgkBCAgCGBjNJJLR6%2B7zHMZpaGAATCE8gqnfTiQT7ha4MDQgACBgQySwfxGCQES0IAAhCwJoB4rAkPrM%2F3PQOQGAIBCJQgkF06JV48t0xCPiVqiktAAAInBCpIp5R4%2BL6HeoUABCoTqCKdcuJBPpXLjrtBoC%2BBStIpKR7k07c4uTkEKhKoJp2y4kE%2BFcuPO0GgH4GK0iktHuTTr0i5MQQqEagqnfLiQT6VypC7QKAPgcrSQTx98pibQgACiQggnkTBenVU%2Fo5PgSByBQg0IVBdOi1ePLdcRT5NqpZrQiAxgQ7SaSUevu9JXI0cHQINCHSRTjvxIJ8G1csVIZCQQCfptBQP8klYlRwZAoUJdJNOW%2FEgn8JVzNUgkIhAR%2Bm0Fg%2FySVSdHBUCBQl0lU578SCfgtXMlSCQgEBn6SCeuwTl160TVCtHhEByAt2Fcwvft%2BRxVD0%2B8lHFyWIQgMAdAaTzCwbieSgN5EOvgAAEtAkgnc9EEc%2BTDEM%2B2mXHehDoSwDpfI094nlRD8inb6Pg5hDQIoB0npNEPCcZhny0yo91INCPANJ5HXPEc1EPyKdfw%2BDGEJASQDrnBBHPQIYhnwFIDIEABN4JIJ3rREA814w%2BRiCgCVgMhUAzAghnPOCIZ5zV%2B0jkMwmM4RBoQADpzAUZ8czxQj4LvJgCgcoEkM58dBHPPDPks8iMaRCoRgDprEUU8axx43sfITemQyAzAYQjix7ikfHj9aPAjyUgkIkA0pFHC%2FHIGSIfJYYsA4HoBJCOToQQjw5H5KPIkaUgEJEA0tGLCuLRY8n3PgYsWRICuwkgHP0IIB59prx%2BjJiyLAS8CSAdG%2BKIx4Yrrx9jriwPAUsCCMeS7tsb4rHly%2BvHgS9bQECTANLRpPl8LcRjzxj5ODFmGwhICSAdKcGx%2BYhnjJPaKP5bb2ooWQgCagQQjhrKoYUQzxAm%2FUEISJ8pK0JglgDCmSWmMx7x6HBcWgX5LGFjEgRUCCAdFYxLiyCeJWy6kxCQLk9Wg8AZAYSzPz8Qz%2F4YvJ8A%2BQQJBMcoTQDpxAgv4okRh49TIKBgAeE4JQggnFhhRDyx4oGAgsaDY%2BUkgHBixg3xxIwLH78FjgtHy0EA6cSNE%2BKJGxtePwliwxHjEUA48WLyeCLEEz9GCChRjDjqPgIIZx%2F72Z0RzyyxAOP5BYQAQeAIYQggnDChGD4I4hlGFWsg8okVD06zhwDS2cNduivikRLcPB8BbQ4A228hgHC2YFfbFPGoody7EALay5%2FdfQggHB%2FO1rsgHmvCzusjIGfgbOdCAOG4YHbbBPG4ofbdCAH58mY3GwIIx4br7lURz%2B4IOOyPhBwgs4UaAWSjhjLsQognbGj0D4aA9Jmyoh4BhKPHMvpKiCd6hAzOh4AMoLLkMgGEs4wu7UTEkzZ08oMjIDlDVlgngHDW2WWfiXiyR1Dp%2FEhICSTLnBJANiTIQQDxkAdfCCAhkkKTALLRpFljLcRTI44mt0BAJljbLIpw2oR6%2BqKIZxpZzwlIqGfcZ2%2BNbGaJ9RyPeHrGXXRrJCTCV24ysikXUvMLIR5zxLU3QEK14%2FvqdsimZ9y1bo14tEiyzhsSqp0EyKZ2fD1vh3g8aTfbCxHlDjiiyR2%2FyKdHPJGjU%2BhsSChHMJFNjjhlPyXiyR7BpOdHRDECh2hixKHbKRBPt4gHvi8ysg0OkrHly%2BrjBBDPOCtGOhNARDLgiEbGj9l2BBCPHVtWNiKAkD6DRTBGicayZgQQjxlaFt5BoKqUkMuObGJPKwKIx4os64YlEE1OSCVsqnAwIwL%2FD9mA6Lk1zUVXAAAAAElFTkSuQmCC%22%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7BVM.Target%7Cnull%7D%20target%0A%20%20%20*%20%40param%20%7Bstring%7Cunknown%7D%20thing%0A%20%20%20*%20%40returns%20%7Bstring%7Cnumber%7Cboolean%7D%0A%20%20%20*%2F%0A%20%20const%20getThingOfTarget%20%3D%20(target%2C%20thing)%20%3D%3E%20%7B%0A%20%20%20%20if%20(!target)%20%7B%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(thing%20%3D%3D%3D%20%22x%20position%22)%20%7B%0A%20%20%20%20%20%20return%20target.x%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(thing%20%3D%3D%3D%20%22y%20position%22)%20%7B%0A%20%20%20%20%20%20return%20target.y%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(thing%20%3D%3D%3D%20%22direction%22)%20%7B%0A%20%20%20%20%20%20return%20target.direction%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(thing%20%3D%3D%3D%20%22costume%20num%22)%20%7B%0A%20%20%20%20%20%20return%20target.currentCostume%20%2B%201%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(thing%20%3D%3D%3D%20%22costume%20name%22)%20%7B%0A%20%20%20%20%20%20return%20target.getCostumes()%5Btarget.currentCostume%5D.name%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(thing%20%3D%3D%3D%20%22size%22)%20%7B%0A%20%20%20%20%20%20return%20target.size%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(thing%20%3D%3D%3D%20%22volume%22)%20%7B%0A%20%20%20%20%20%20return%20target.volume%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20this%20should%20never%20happen%0A%20%20%20%20return%20%22%22%3B%0A%20%20%7D%3B%0A%0A%20%20class%20ClonesPlus%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22lmsclonesplus%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Clones%2B%22)%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23FFAB19%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%23EC9C13%22%2C%0A%20%20%20%20%20%20%20%20color3%3A%20%22%23CF8B17%22%2C%0A%20%20%20%20%20%20%20%20menuIconURI%3A%20menuIconURI%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22whenCloneStartsWithVar%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.HAT%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22when%20I%20start%20as%20a%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22createCloneWithVar%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22create%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22touchingCloneWithVar%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22touching%20clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%3F%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22touchingMainSprite%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22touching%20main%20sprite%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setVariableOfClone%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20clones%20with%20%5BINPUTC%5D%20set%20to%20%5BINPUTD%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTC%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTD%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getVariableOfClone%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22variable%20%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTC%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setVariableOfMainSprite%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22set%20variable%20%5BINPUTA%5D%20to%20%5BINPUTB%5D%20for%20main%20sprite%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getVariableOfMainSprite%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22variable%20%5BINPUT%5D%20of%20main%20sprite%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22cloneExists%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22clone%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%20exists%3F%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getThingOfClone%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5BINPUTA%5D%20of%20clone%20with%20%5BINPUTB%5D%20set%20to%20%5BINPUTC%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22thingOfMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTC%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getThingOfMainSprite%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22%5BINPUT%5D%20of%20main%20sprite%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22thingOfMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22stopScriptsInSprite%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22stop%20scripts%20in%20%5BINPUT%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22spriteMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22stopScriptsInClone%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22stop%20scripts%20in%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22stopScriptsInMainSprite%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22stop%20scripts%20in%20main%20sprite%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deleteClonesInSprite%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22delete%20clones%20in%20%5BINPUT%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22spriteMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deleteCloneWithVar%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22delete%20clones%20with%20%5BINPUTA%5D%20set%20to%20%5BINPUTB%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTA%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22variablesMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUTB%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isClone%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22is%20clone%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22cloneCount%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22clone%20count%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22spriteCloneCount%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22clone%20count%20of%20%5BINPUT%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INPUT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22spriteMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20extensions%3A%20%5B%22colours_control%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20spriteMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%22getSprites%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20menus%20use%20acceptReporters%3A%20false%20for%20Scratch%20parity%0A%20%20%20%20%20%20%20%20%20%20variablesMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%22getVariables%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20thingOfMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22x%20position%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22x%20position%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22y%20position%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22y%20position%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22direction%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22direction%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22costume%20%23%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22costume%20num%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22costume%20name%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22costume%20name%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22size%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22size%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22volume%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22volume%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20whenCloneStartsWithVar(args%2C%20util)%20%7B%0A%20%20%20%20%20%20%2F%2F%20TODO%3A%20this%20is%20really%20not%20ideal.%20this%20should%20be%20an%20event-based%20hat%20ideally%2C%20but%20we%20don't%20have%20a%20good%0A%20%20%20%20%20%20%2F%2F%20way%20to%20do%20that%20right%20now...%0A%20%20%20%20%20%20if%20(util.target.isOriginal)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20const%20variable%20%3D%20util.target.lookupVariableById(args.INPUTA)%3B%0A%20%20%20%20%20%20const%20expectedValue%20%3D%20args.INPUTB%3B%0A%20%20%20%20%20%20if%20(variable)%20%7B%0A%20%20%20%20%20%20%20%20return%20Scratch.Cast.compare(variable.value%2C%20expectedValue)%20%3D%3D%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20createCloneWithVar(args%2C%20util)%20%7B%0A%20%20%20%20%20%20%2F%2F%20%40ts-expect-error%20-%20not%20typed%20yet%0A%20%20%20%20%20%20Scratch.vm.runtime.ext_scratch3_control._createClone(%0A%20%20%20%20%20%20%20%20util.target.sprite.name%2C%0A%20%20%20%20%20%20%20%20util.target%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20const%20clones%20%3D%20util.target.sprite.clones%3B%0A%20%20%20%20%20%20const%20cloneNum%20%3D%20clones.length%20-%201%3B%0A%20%20%20%20%20%20const%20cloneVariable%20%3D%20clones%5BcloneNum%5D.lookupVariableById(args.INPUTA)%3B%0A%20%20%20%20%20%20if%20(cloneVariable)%20%7B%0A%20%20%20%20%20%20%20%20cloneVariable.value%20%3D%20args.INPUTB%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20touchingCloneWithVar(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20drawableCandidates%20%3D%20util.target.sprite.clones%0A%20%20%20%20%20%20%20%20.filter((clone)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20variable%20%3D%20clone.lookupVariableById(args.INPUTA)%3B%0A%20%20%20%20%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20variable%20%26%26%20Scratch.Cast.compare(variable.value%2C%20args.INPUTB)%20%3D%3D%3D%200%0A%20%20%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%20%20.map((clone)%20%3D%3E%20clone.drawableID)%3B%0A%20%20%20%20%20%20if%20(drawableCandidates.length%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20Scratch.vm.renderer.isTouchingDrawables(%0A%20%20%20%20%20%20%20%20util.target.drawableID%2C%0A%20%20%20%20%20%20%20%20drawableCandidates%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20touchingMainSprite(args%2C%20util)%20%7B%0A%20%20%20%20%20%20if%20(util.target.isOriginal)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20const%20main%20%3D%20util.target.sprite.clones%5B0%5D%3B%0A%20%20%20%20%20%20const%20drawableCandidates%20%3D%20%5Bmain.drawableID%5D%3B%0A%20%20%20%20%20%20return%20Scratch.vm.renderer.isTouchingDrawables(%0A%20%20%20%20%20%20%20%20util.target.drawableID%2C%0A%20%20%20%20%20%20%20%20drawableCandidates%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setVariableOfClone(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20newVariableValue%20%3D%20args.INPUTB%3B%0A%20%20%20%20%20%20const%20expectedVarValue%20%3D%20args.INPUTD%3B%0A%20%20%20%20%20%20const%20clones%20%3D%20util.target.sprite.clones%3B%0A%20%20%20%20%20%20for%20(let%20index%20%3D%201%3B%20index%20%3C%20clones.length%3B%20index%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20const%20checkVar%20%3D%20clones%5Bindex%5D.lookupVariableById(args.INPUTC)%3B%0A%20%20%20%20%20%20%20%20if%20(%0A%20%20%20%20%20%20%20%20%20%20checkVar%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Scratch.Cast.compare(checkVar.value%2C%20expectedVarValue)%20%3D%3D%3D%200%0A%20%20%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20editVar%20%3D%20clones%5Bindex%5D.lookupVariableById(args.INPUTA)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(editVar)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20editVar.value%20%3D%20newVariableValue%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20getVariableOfClone(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20clone%20%3D%20this.getCloneFromVariable(%0A%20%20%20%20%20%20%20%20args.INPUTB%2C%0A%20%20%20%20%20%20%20%20args.INPUTC%2C%0A%20%20%20%20%20%20%20%20util.target.sprite.clones%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20if%20(!clone)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20guaranteed%20to%20exist%20by%20getCloneFromVariable%0A%20%20%20%20%20%20const%20cloneVar%20%3D%20clone.lookupVariableById(args.INPUTA)%3B%0A%20%20%20%20%20%20return%20cloneVar.value%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setVariableOfMainSprite(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20main%20%3D%20util.target.sprite.clones%5B0%5D%3B%0A%20%20%20%20%20%20const%20variableObj%20%3D%20main.lookupVariableById(args.INPUTA)%3B%0A%20%20%20%20%20%20if%20(variableObj)%20%7B%0A%20%20%20%20%20%20%20%20variableObj.value%20%3D%20args.INPUTB%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20getVariableOfMainSprite(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20main%20%3D%20util.target.sprite.clones%5B0%5D%3B%0A%20%20%20%20%20%20const%20variableObj%20%3D%20main.lookupVariableById(args.INPUT)%3B%0A%20%20%20%20%20%20if%20(variableObj)%20%7B%0A%20%20%20%20%20%20%20%20return%20variableObj.value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20cloneExists(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20clone%20%3D%20this.getCloneFromVariable(%0A%20%20%20%20%20%20%20%20args.INPUTA%2C%0A%20%20%20%20%20%20%20%20args.INPUTB%2C%0A%20%20%20%20%20%20%20%20util.target.sprite.clones%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20return%20!!clone%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getThingOfClone(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20clone%20%3D%20this.getCloneFromVariable(%0A%20%20%20%20%20%20%20%20args.INPUTB%2C%0A%20%20%20%20%20%20%20%20args.INPUTC%2C%0A%20%20%20%20%20%20%20%20util.target.sprite.clones%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20return%20getThingOfTarget(clone%2C%20args.INPUTA)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getThingOfMainSprite(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20main%20%3D%20util.target.sprite.clones%5B0%5D%3B%0A%20%20%20%20%20%20return%20getThingOfTarget(main%2C%20args.INPUT)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20stopScriptsInSprite(args)%20%7B%0A%20%20%20%20%20%20const%20targetObj%20%3D%20Scratch.vm.runtime.getSpriteTargetByName(args.INPUT)%3B%0A%20%20%20%20%20%20if%20(targetObj)%20%7B%0A%20%20%20%20%20%20%20%20Scratch.vm.runtime.stopForTarget(targetObj)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20stopScriptsInMainSprite(args%2C%20util)%20%7B%0A%20%20%20%20%20%20Scratch.vm.runtime.stopForTarget(util.target.sprite.clones%5B0%5D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20stopScriptsInClone(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20clones%20%3D%20util.target.sprite.clones%3B%0A%20%20%20%20%20%20let%20expectedValue%20%3D%20args.INPUTB%3B%0A%20%20%20%20%20%20for%20(let%20index%20%3D%201%3B%20index%20%3C%20clones.length%3B%20index%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20const%20cloneVariable%20%3D%20clones%5Bindex%5D.lookupVariableById(args.INPUTA)%3B%0A%20%20%20%20%20%20%20%20if%20(%0A%20%20%20%20%20%20%20%20%20%20cloneVariable%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Scratch.Cast.compare(cloneVariable.value%2C%20expectedValue)%20%3D%3D%3D%200%0A%20%20%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20%20%20Scratch.vm.runtime.stopForTarget(clones%5Bindex%5D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20deleteClonesInSprite(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20target%20%3D%20Scratch.vm.runtime.getSpriteTargetByName(args.INPUT)%3B%0A%20%20%20%20%20%20if%20(!target)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20const%20clones%20%3D%20target.sprite.clones%3B%0A%20%20%20%20%20%20for%20(let%20index%20%3D%20clones.length%20-%201%3B%20index%20%3E%200%3B%20index--)%20%7B%0A%20%20%20%20%20%20%20%20Scratch.vm.runtime.disposeTarget(clones%5Bindex%5D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20deleteCloneWithVar(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20clones%20%3D%20util.target.sprite.clones%3B%0A%20%20%20%20%20%20const%20expectedValue%20%3D%20args.INPUTB%3B%0A%20%20%20%20%20%20for%20(let%20index%20%3D%20clones.length%20-%201%3B%20index%20%3E%200%3B%20index--)%20%7B%0A%20%20%20%20%20%20%20%20const%20cloneVar%20%3D%20clones%5Bindex%5D.lookupVariableById(args.INPUTA)%3B%0A%20%20%20%20%20%20%20%20if%20(%0A%20%20%20%20%20%20%20%20%20%20cloneVar%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Scratch.Cast.compare(cloneVar.value%2C%20expectedValue)%20%3D%3D%3D%200%0A%20%20%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20%20%20Scratch.vm.runtime.disposeTarget(clones%5Bindex%5D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20isClone(args%2C%20util)%20%7B%0A%20%20%20%20%20%20return%20!util.target.isOriginal%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20cloneCount(args%2C%20util)%20%7B%0A%20%20%20%20%20%20return%20Scratch.vm.runtime._cloneCounter%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20spriteCloneCount(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20target%20%3D%20Scratch.vm.runtime.getSpriteTargetByName(args.INPUT)%3B%0A%20%20%20%20%20%20if%20(target)%20%7B%0A%20%20%20%20%20%20%20%20return%20target.sprite.clones.length%20-%201%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%200%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20variableId%0A%20%20%20%20%20*%20%40param%20%7Bunknown%7D%20expectedValue%0A%20%20%20%20%20*%20%40param%20%7BVM.Target%5B%5D%7D%20clones%0A%20%20%20%20%20*%20%40returns%20%7BVM.Target%7Cnull%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20getCloneFromVariable(variableId%2C%20expectedValue%2C%20clones)%20%7B%0A%20%20%20%20%20%20for%20(let%20index%20%3D%201%3B%20index%20%3C%20clones.length%3B%20index%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20const%20cloneVar%20%3D%20clones%5Bindex%5D.lookupVariableById(variableId)%3B%0A%20%20%20%20%20%20%20%20if%20(%0A%20%20%20%20%20%20%20%20%20%20cloneVar%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Scratch.Cast.compare(cloneVar.value%2C%20expectedValue)%20%3D%3D%3D%200%0A%20%20%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20clones%5Bindex%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getSprites()%20%7B%0A%20%20%20%20%20%20let%20spriteNames%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20const%20targets%20%3D%20Scratch.vm.runtime.targets%3B%0A%20%20%20%20%20%20const%20myself%20%3D%20Scratch.vm.runtime.getEditingTarget().sprite.name%3B%0A%20%20%20%20%20%20for%20(let%20index%20%3D%201%3B%20index%20%3C%20targets.length%3B%20index%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20const%20curTarget%20%3D%20targets%5Bindex%5D.sprite%3B%0A%20%20%20%20%20%20%20%20let%20display%20%3D%20curTarget.name%3B%0A%20%20%20%20%20%20%20%20if%20(myself%20%3D%3D%3D%20curTarget.name)%20%7B%0A%20%20%20%20%20%20%20%20%20%20display%20%3D%20Scratch.translate(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20default%3A%20%22myself%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20description%3A%20%22Item%20in%20a%20dropdown%20that%20refers%20to%20the%20current%20sprite%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(targets%5Bindex%5D.isOriginal)%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20jsonOBJ%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20display%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20curTarget.name%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20spriteNames.push(jsonOBJ)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(spriteNames.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20return%20spriteNames%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%5B%7B%20text%3A%20%22%22%2C%20value%3A%200%20%7D%5D%3B%20%2F%2Fthis%20should%20never%20happen%20but%20it's%20a%20failsafe%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20getSpriteObj(name)%20%7B%0A%20%20%20%20%20%20%2F%2FThis%20is%20unused%20but%20I'm%20leaving%20it%20in%20for%20potential%20future%20blocks%0A%20%20%20%20%20%20const%20spriteObj%20%3D%20Scratch.vm.runtime.getSpriteTargetByName(name)%3B%0A%20%20%20%20%20%20return%20JSON.stringify(spriteObj)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getVariables()%20%7B%0A%20%20%20%20%20%20%2F%2F%20%40ts-expect-error%20-%20Blockly%20not%20typed%20yet%0A%20%20%20%20%20%20const%20variables%20%3D%0A%20%20%20%20%20%20%20%20typeof%20Blockly%20%3D%3D%3D%20%22undefined%22%0A%20%20%20%20%20%20%20%20%20%20%3F%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%3A%20Blockly.getMainWorkspace()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getVariableMap()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getVariablesOfType(%22%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.filter((model)%20%3D%3E%20model.isLocal)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.map((model)%20%3D%3E%20(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20model.name%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20model.getId()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D))%3B%0A%20%20%20%20%20%20if%20(variables.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20return%20variables%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%5B%7B%20text%3A%20%22%22%2C%20value%3A%20%22%22%20%7D%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20Scratch.extensions.register(new%20ClonesPlus())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20JSON%0A%2F%2F%20ID%3A%20skyhigh173JSON%0A%2F%2F%20Description%3A%20Handle%20JSON%20strings%20and%20arrays.%0A%2F%2F%20By%3A%20Skyhigh173%0A%2F%2F%20License%3A%20MIT%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22ca%22%3A%7B%22_Advanced%22%3A%22Avan%C3%A7at%22%7D%2C%22cs%22%3A%7B%22_Advanced%22%3A%22Pokro%C4%8Dil%C3%A9%22%7D%2C%22de%22%3A%7B%22_Advanced%22%3A%22Erweitert%22%7D%2C%22es%22%3A%7B%22_Advanced%22%3A%22Avanzado%22%7D%2C%22fi%22%3A%7B%22_Advanced%22%3A%22Edistykselliset%22%2C%22_Array%22%3A%22Taulukko%22%2C%22_General%20Utils%22%3A%22Yleiset%20ty%C3%B6kalut%22%2C%22_Lists%22%3A%22Listat%22%2C%22_Object%22%3A%22Olio%22%2C%22_%5Bjson%5D%20contains%20key%20%5Bkey%5D%3F%22%3A%22sis%C3%A4lt%C3%A4%C3%A4k%C3%B6%20%5Bjson%5D%20avaimen%20%5Bkey%5D%3F%22%2C%22_%5Bjson%5D%20contains%20value%20%5Bvalue%5D%3F%22%3A%22sis%C3%A4lt%C3%A4%C3%A4k%C3%B6%20%5Bjson%5D%20arvon%20%5Bvalue%5D%3F%22%2C%22_add%20%5Bitem%5D%20to%20array%20%5Bjson%5D%22%3A%22lis%C3%A4%C3%A4%20%5Bitem%5D%20taulukkoon%20%5Bjson%5D%22%2C%22_all%20%5BStype%5D%20of%20%5Bjson%5D%22%3A%22kaikki%20JSO-koodin%20%5Bjson%5D%20%5BStype%5D%20%22%2C%22_array%20concat%20%5Bjson%5D%20%5Bjson2%5D%22%3A%22yhdist%C3%A4%20taulukot%20%5Bjson%5D%20ja%20%5Bjson2%5D%22%2C%22_array%20from%20text%20%5Bjson%5D%22%3A%22taulukko%20tekstist%C3%A4%20%5Bjson%5D%22%2C%22_ascending%22%3A%22nousevaan%22%2C%22_create%20array%20by%20%5Btext%5D%20with%20delimiter%20%5Bd%5D%22%3A%22luo%20taulukko%20tekstist%C3%A4%20%5Btext%5D%20erottimella%20%5Bd%5D%20%22%2C%22_datas%22%3A%22datat%22%2C%22_delete%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22poista%20%5Bitem%5D%20JSON-koodissa%20%5Bjson%5D%22%2C%22_delete%20all%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22poista%20jokainen%20%5Bitem%5D%20taulukosta%20%5Bjson%5D%22%2C%22_delete%20item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22poista%20taulukon%20%5Bjson%5D%20%5Bitem%5D.%20kohde%22%2C%22_descending%22%3A%22laskevaan%22%2C%22_flat%20array%20%5Bjson%5D%20by%20depth%20%5Bdepth%5D%22%3A%22alenna%20taulukkoa%20%5Bjson%5D%20%5Bdepth%5D%20tasolla%22%2C%22_get%20all%20values%20with%20key%20%5Bkey%5D%20in%20array%20%5Bjson%5D%22%3A%22kaikki%20taulukon%20%5Bjson%5D%20arvot%20avaimella%20%5Bkey%5D%22%2C%22_get%20list%20%5Blist%5D%20as%20array%22%3A%22lista%20%5Blist%5D%20taulukkona%22%2C%22_insert%20%5Bitem%5D%20at%20%5Bpos%5D%20of%20array%20%5Bjson%5D%22%3A%22lis%C3%A4%C3%A4%20%5Bitem%5D%20taulukon%20%5Bjson%5D%20%5Bpos%5D.%20kohtaan%22%2C%22_is%20JSON%20%5Bjson%5D%20valid%3F%22%3A%22onko%20JSON-koodi%20%5Bjson%5D%20kelvollinen%3F%22%2C%22_is%20%5Bjson%5D%20%5Btypes%5D%3F%22%3A%22onko%20%5Bjson%5D%20%5Btypes%5D%3F%22%2C%22_item%20%23%20of%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22taulukon%20%5Bjson%5D%20%5Bitem%5D.%20kohde%22%2C%22_item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22taulukon%20%5Bjson%5D%20%5Bitem%5D.%20kohde%22%2C%22_items%20%5Bitem%5D%20to%20%5Bitem2%5D%20of%20array%20%5Bjson%5D%22%3A%22taulukon%20%5Bjson%5D%20kohteet%20%5Bitem%5D%20%E2%80%93%20%5Bitem2%5D%22%2C%22_join%20string%20by%20array%20%5Bjson%5D%20with%20delimiter%20%5Bd%5D%22%3A%22tee%20taulukosta%20%5Bjson%5D%20merkkijono%20erottimella%20%5Bd%5D%22%2C%22_keys%22%3A%22avaimet%22%2C%22_length%20of%20array%20%5Bjson%5D%22%3A%22taulukon%20%5Bjson%5D%20pituus%22%2C%22_length%20of%20json%20%5Bjson%5D%22%3A%22JSON-koodin%20%5Bjson%5D%20pituus%22%2C%22_new%20%5Bjson%5D%22%3A%22uusi%20%5Bjson%5D%22%2C%22_replace%20item%20%5Bpos%5D%20of%20%5Bjson%5D%20with%20%5Bitem%5D%22%3A%22korvaa%20taulukon%20%5Bjson%5D%20%5Bpos%5D.%20kohde%20arvolla%20%5Bitem%5D%22%2C%22_reverse%20array%20%5Bjson%5D%22%3A%22taulukko%20%5Bjson%5D%20k%C3%A4%C3%A4nteisen%C3%A4%22%2C%22_select%20a%20list%22%3A%22valitse%20lista%22%2C%22_set%20%5Bitem%5D%20in%20%5Bjson%5D%20to%20%5Bvalue%5D%22%3A%22aseta%20%5Bitem%5D%20JSON-koodissa%20%5Bjson%5D%20arvoon%20%5Bvalue%5D%22%2C%22_set%20length%20of%20array%20%5Bjson%5D%20to%20%5Blen%5D%22%3A%22aseta%20taulukon%20%5Bjson%5D%20pituus%20arvoon%20%5Blen%5D%22%2C%22_set%20list%20%5Blist%5D%20to%20%5Bjson%5D%22%3A%22aseta%20lista%20%5Blist%5D%20arvoon%20%5Bjson%5D%22%2C%22_sort%20array%20%5Blist%5D%20in%20%5Border%5D%20order%22%3A%22j%C3%A4rjest%C3%A4%20taulukko%20%5Blist%5D%20%5Border%5D%20j%C3%A4rjestykseen%22%2C%22_value%20of%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22avaimen%20%5Bitem%5D%20arvo%20JSON-koodissa%20%5Bjson%5D%22%2C%22_values%22%3A%22arvot%22%7D%2C%22fr%22%3A%7B%22_Advanced%22%3A%22Avanc%C3%A9%22%7D%2C%22hu%22%3A%7B%22_Advanced%22%3A%22Halad%C3%B3%22%7D%2C%22it%22%3A%7B%22_Advanced%22%3A%22Impostazioni%20Avanzate%22%7D%2C%22ja%22%3A%7B%22_Advanced%22%3A%22%E8%A9%B3%E7%B4%B0%E8%A8%AD%E5%AE%9A%22%7D%2C%22ja-hira%22%3A%7B%22_Advanced%22%3A%22%E3%81%93%E3%81%86%E3%81%A9%E3%81%AA%E3%81%9B%E3%81%A3%E3%81%A6%E3%81%84%22%7D%2C%22ko%22%3A%7B%22_Advanced%22%3A%22%EA%B3%A0%EA%B8%89%20%EC%84%A4%EC%A0%95%22%2C%22_Array%22%3A%22%EB%B0%B0%EC%97%B4%22%2C%22_Lists%22%3A%22%EB%A6%AC%EC%8A%A4%ED%8A%B8%22%2C%22_Object%22%3A%22%EA%B0%9D%EC%B2%B4%22%2C%22_%5Bjson%5D%20contains%20key%20%5Bkey%5D%3F%22%3A%22%5Bjson%5D%EC%9D%B4(%EA%B0%80)%20%5Bkey%5D%20%ED%82%A4%EB%A5%BC%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%EA%B0%80%3F%22%2C%22_%5Bjson%5D%20contains%20value%20%5Bvalue%5D%3F%22%3A%22%5Bjson%5D%EC%9D%B4(%EA%B0%80)%20%5Bvalue%5D%20%EA%B0%92%EC%9D%84%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%EA%B0%80%3F%22%2C%22_add%20%5Bitem%5D%20to%20array%20%5Bjson%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%5Bjson%5D%EC%97%90%20%5Bitem%5D%20%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0%22%2C%22_all%20%5BStype%5D%20of%20%5Bjson%5D%22%3A%22%5Bjson%5D%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%5BStype%5D%22%2C%22_array%20concat%20%5Bjson%5D%20%5Bjson2%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%ED%95%A9%EC%B9%98%EA%B8%B0%20%5Bjson%5D%20%5Bjson2%5D%22%2C%22_ascending%22%3A%22%EC%98%A4%EB%A6%84%EC%B0%A8%EC%88%9C%22%2C%22_datas%22%3A%22%EB%8D%B0%EC%9D%B4%ED%84%B0%22%2C%22_delete%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22%5Bjson%5D%EC%9D%98%20%5Bitem%5D%20%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_delete%20all%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%5Bjson%5D%EC%9D%98%20%5Bitem%5D%EC%9D%84(%EB%A5%BC)%20%EB%AA%A8%EB%91%90%20%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_delete%20item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%5Bjson%5D%EC%9D%98%20%5Bitem%5D%EC%9D%84(%EB%A5%BC)%20%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_descending%22%3A%22%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C%22%2C%22_get%20list%20%5Blist%5D%20as%20array%22%3A%22%EB%A6%AC%EC%8A%A4%ED%8A%B8%20%5Blist%5D%EC%9D%84(%EB%A5%BC)%20%EB%B0%B0%EC%97%B4%EB%A1%9C%22%2C%22_insert%20%5Bitem%5D%20at%20%5Bpos%5D%20of%20array%20%5Bjson%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%5Bjson%5D%EC%97%90%20%5Bitem%5D%EC%9D%84(%EB%A5%BC)%20%5Bpos%5D%EB%B2%88%EC%A7%B8%EC%97%90%20%EC%82%BD%EC%9E%85%ED%95%98%EA%B8%B0%22%2C%22_is%20JSON%20%5Bjson%5D%20valid%3F%22%3A%22JSON%20%5Bjson%5D%EC%9D%B4(%EA%B0%80)%20%EC%9C%A0%ED%9A%A8%ED%95%9C%EA%B0%80%3F%22%2C%22_is%20%5Bjson%5D%20%5Btypes%5D%3F%22%3A%22%5Bjson%5D%EC%9D%B4(%EA%B0%80)%20%5Btypes%5D%EC%9D%B8%EA%B0%80%3F%22%2C%22_item%20%23%20of%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%5Bjson%5D%EC%97%90%EC%84%9C%20%5Bitem%5D%EC%9D%98%20%EB%B2%88%EC%A7%B8%22%2C%22_keys%22%3A%22%ED%82%A4%22%2C%22_length%20of%20array%20%5Bjson%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%5Bjson%5D%EC%9D%98%20%EA%B8%B8%EC%9D%B4%22%2C%22_length%20of%20json%20%5Bjson%5D%22%3A%22JSON%20%5Bjson%5D%EC%9D%98%20%EA%B8%B8%EC%9D%B4%22%2C%22_reverse%20array%20%5Bjson%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%5Bjson%5D%EC%9D%84(%EB%A5%BC)%20%EC%97%AD%EB%B0%A9%ED%96%A5%EC%9C%BC%EB%A1%9C%22%2C%22_select%20a%20list%22%3A%22%EB%A6%AC%EC%8A%A4%ED%8A%B8%20%EC%84%A0%ED%83%9D%ED%95%98%EA%B8%B0%22%2C%22_set%20%5Bitem%5D%20in%20%5Bjson%5D%20to%20%5Bvalue%5D%22%3A%22%5Bjson%5D%EC%9D%98%20%5Bitem%5D%EC%9D%84(%EB%A5%BC)%20%5Bvalue%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20length%20of%20array%20%5Bjson%5D%20to%20%5Blen%5D%22%3A%22%EB%B0%B0%EC%97%B4%20%5Bjson%5D%EC%9D%98%20%EA%B8%B8%EC%9D%B4%EB%A5%BC%20%5Blen%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20list%20%5Blist%5D%20to%20%5Bjson%5D%22%3A%22%EB%A6%AC%EC%8A%A4%ED%8A%B8%20%5Blist%5D%EC%9D%84(%EB%A5%BC)%20%5Bjson%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_sort%20array%20%5Blist%5D%20in%20%5Border%5D%20order%22%3A%22%EB%B0%B0%EC%97%B4%20%5Blist%5D%EC%9D%84(%EB%A5%BC)%20%5Border%5D%EC%9C%BC%EB%A1%9C%20%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0%22%2C%22_value%20of%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22%5Bjson%5D%EC%97%90%EC%84%9C%20%5Bitem%5D%EC%9D%98%20%EA%B0%92%22%2C%22_values%22%3A%22%EA%B0%92%22%7D%2C%22lt%22%3A%7B%22_Advanced%22%3A%22I%C5%A1pl%C4%97stiniai%22%7D%2C%22nb%22%3A%7B%22_Advanced%22%3A%22Avansert%22%2C%22_keys%22%3A%22n%C3%B8kler%22%2C%22_values%22%3A%22verdier%22%7D%2C%22nl%22%3A%7B%22_Advanced%22%3A%22Geavanceerd%22%2C%22_General%20Utils%22%3A%22Algemeen%22%2C%22_Lists%22%3A%22Lijsten%22%2C%22_%5Bjson%5D%20contains%20key%20%5Bkey%5D%3F%22%3A%22%5Bjson%5D%20bevat%20sleutel%20%5Bkey%5D%3F%22%2C%22_%5Bjson%5D%20contains%20value%20%5Bvalue%5D%3F%22%3A%22%5Bjson%5D%20bevat%20waarde%20%5Bvalue%5D%3F%22%2C%22_add%20%5Bitem%5D%20to%20array%20%5Bjson%5D%22%3A%22voeg%20%5Bitem%5D%20toe%20aan%20array%20%5Bjson%5D%22%2C%22_all%20%5BStype%5D%20of%20%5Bjson%5D%22%3A%22alle%20%5BStype%5D%20van%20%5Bjson%5D%22%2C%22_array%20concat%20%5Bjson%5D%20%5Bjson2%5D%22%3A%22voeg%20arrays%20%5Bjson%5D%20en%20%5Bjson2%5D%20samen%22%2C%22_array%20from%20text%20%5Bjson%5D%22%3A%22array%20van%20tekst%20%5Bjson%5D%22%2C%22_ascending%22%3A%22oplopende%22%2C%22_create%20array%20by%20%5Btext%5D%20with%20delimiter%20%5Bd%5D%22%3A%22cre%C3%ABer%20array%20uit%20%5Btext%5D%20met%20scheidingsteken%20%5Bd%5D%22%2C%22_datas%22%3A%22gegevens%22%2C%22_delete%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22verwijder%20%5Bitem%5D%20van%20%5Bjson%5D%22%2C%22_delete%20all%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22verwijder%20alle%20%5Bitem%5D%20van%20array%20%5Bjson%5D%22%2C%22_delete%20item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22verwijder%20item%20%5Bitem%5D%20van%20array%20%5Bjson%5D%22%2C%22_descending%22%3A%22aflopende%22%2C%22_flat%20array%20%5Bjson%5D%20by%20depth%20%5Bdepth%5D%22%3A%22vlak%20array%20%5Bjson%5D%20af%20op%20diepte%20%5Bdepth%5D%22%2C%22_get%20all%20values%20with%20key%20%5Bkey%5D%20in%20array%20%5Bjson%5D%22%3A%22alle%20waarden%20met%20sleutel%20%5Bkey%5D%20in%20array%20%5Bjson%5D%22%2C%22_get%20list%20%5Blist%5D%20as%20array%22%3A%22lijst%20%5Blist%5D%20als%20array%22%2C%22_insert%20%5Bitem%5D%20at%20%5Bpos%5D%20of%20array%20%5Bjson%5D%22%3A%22voeg%20%5Bitem%5D%20in%20op%20%5Bpos%5D%20van%20array%20%5Bjson%5D%22%2C%22_is%20JSON%20%5Bjson%5D%20valid%3F%22%3A%22is%20JSON%20%5Bjson%5D%20geldig%3F%22%2C%22_is%20%5Bjson%5D%20%5Btypes%5D%3F%22%3A%22is%20%5Bjson%5D%20%5Btypes%5D%20%3F%22%2C%22_item%20%23%20of%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22item%20%23%20van%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%2C%22_item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22item%20%5Bitem%5D%20van%20array%20%5Bjson%5D%22%2C%22_items%20%5Bitem%5D%20to%20%5Bitem2%5D%20of%20array%20%5Bjson%5D%22%3A%22items%20%5Bitem%5D%20t%2Fm%20%5Bitem2%5D%20van%20array%20%5Bjson%5D%22%2C%22_join%20string%20by%20array%20%5Bjson%5D%20with%20delimiter%20%5Bd%5D%22%3A%22voeg%20array%20%5Bjson%5D%20samen%20tot%20string%20met%20scheidingsteken%20%5Bd%5D%22%2C%22_keys%22%3A%22sleutels%22%2C%22_length%20of%20array%20%5Bjson%5D%22%3A%22lengte%20van%20array%20%5Bjson%5D%22%2C%22_length%20of%20json%20%5Bjson%5D%22%3A%22lengte%20van%20JSON%20%5Bjson%5D%22%2C%22_new%20%5Bjson%5D%22%3A%22nieuw(e)%20%5Bjson%5D%22%2C%22_replace%20item%20%5Bpos%5D%20of%20%5Bjson%5D%20with%20%5Bitem%5D%22%3A%22vervang%20item%20%5Bpos%5D%20van%20%5Bjson%5D%20door%20%5Bitem%5D%22%2C%22_reverse%20array%20%5Bjson%5D%22%3A%22keer%20array%20%5Bjson%5D%20om%22%2C%22_select%20a%20list%22%3A%22selecteer%20een%20lijst%22%2C%22_set%20%5Bitem%5D%20in%20%5Bjson%5D%20to%20%5Bvalue%5D%22%3A%22maak%20%5Bitem%5D%20in%20%5Bjson%5D%20%5Bvalue%5D%22%2C%22_set%20length%20of%20array%20%5Bjson%5D%20to%20%5Blen%5D%22%3A%22maak%20lengte%20van%20array%20%5Bjson%5D%20%5Blen%5D%22%2C%22_set%20list%20%5Blist%5D%20to%20%5Bjson%5D%22%3A%22maak%20lijst%20%5Blist%5D%20%5Bjson%5D%22%2C%22_sort%20array%20%5Blist%5D%20in%20%5Border%5D%20order%22%3A%22sorteer%20array%20%5Blist%5D%20in%20%5Border%5D%20volgorde%22%2C%22_value%20of%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22waarde%20van%20%5Bitem%5D%20in%20%5Bjson%5D%22%2C%22_values%22%3A%22waarden%22%7D%2C%22pl%22%3A%7B%22_Advanced%22%3A%22Zaawansowane%22%7D%2C%22pt%22%3A%7B%22_Advanced%22%3A%22Avan%C3%A7ado%22%7D%2C%22pt-br%22%3A%7B%22_Advanced%22%3A%22Avan%C3%A7ado%22%7D%2C%22ro%22%3A%7B%22_Advanced%22%3A%22Avansat%22%7D%2C%22ru%22%3A%7B%22_Advanced%22%3A%22%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%22%2C%22_Array%22%3A%22%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0%22%2C%22_General%20Utils%22%3A%22%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%A3%D1%82%D0%B8%D0%BB%D0%B8%D1%82%D1%8B%22%2C%22_Lists%22%3A%22%D0%A1%D0%BF%D0%B8%D1%81%D0%BA%D0%B8%22%2C%22_Object%22%3A%22%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%22%2C%22_%5Bjson%5D%20contains%20key%20%5Bkey%5D%3F%22%3A%22%5Bjson%5D%20%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D1%82%20%D0%BA%D0%BB%D1%8E%D1%87%20%5Bkey%5D%3F%22%2C%22_%5Bjson%5D%20contains%20value%20%5Bvalue%5D%3F%22%3A%22%5Bjson%5D%20%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D1%82%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%5Bvalue%5D%3F%22%2C%22_add%20%5Bitem%5D%20to%20array%20%5Bjson%5D%22%3A%22%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%5Bitem%5D%20%D0%B2%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83%20%5Bjson%5D%22%2C%22_all%20%5BStype%5D%20of%20%5Bjson%5D%22%3A%22%D0%B2%D1%81%D0%B5%20%5BStype%5D%20%5Bjson%5D%22%2C%22_array%20concat%20%5Bjson%5D%20%5Bjson2%5D%22%3A%22%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%82%D1%8C%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%20%D0%B8%20%5Bjson2%5D%22%2C%22_array%20from%20text%20%5Bjson%5D%22%3A%22%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0%20%D0%B8%D0%B7%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%20%5Bjson%5D%22%2C%22_ascending%22%3A%22%D0%BD%D0%B0%D1%80%D0%B0%D1%81%D1%82%D0%B0%D1%8E%D1%89%D0%B5%D0%B9%22%2C%22_create%20array%20by%20%5Btext%5D%20with%20delimiter%20%5Bd%5D%22%3A%22%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83%20%D0%B8%D0%B7%20%5Btext%5D%20%D1%81%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%BC%20%5Bd%5D%22%2C%22_datas%22%3A%22%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%22%2C%22_delete%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%5Bitem%5D%20%D0%B8%D0%B7%20%5Bjson%5D%22%2C%22_delete%20all%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%5Bitem%5D%20%D0%B2%20%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B5%20%5Bjson%5D%22%2C%22_delete%20item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D1%87%D0%B8%D1%81%D0%BB%D0%BE%20%5Bitem%5D%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%22%2C%22_descending%22%3A%22%D0%BE%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D1%8E%D1%89%D0%B5%D0%B9%22%2C%22_flat%20array%20%5Bjson%5D%20by%20depth%20%5Bdepth%5D%22%3A%22%D0%BF%D0%BB%D0%BE%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0%20%5Bjson%5D%20%D0%BF%D0%BE%20%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D0%B5%20%5Bdepth%5D%22%2C%22_get%20all%20values%20with%20key%20%5Bkey%5D%20in%20array%20%5Bjson%5D%22%3A%22%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%81%20%D0%BA%D0%BB%D1%8E%D1%87%D0%BE%D0%BC%20%5Bkey%5D%20%D0%B2%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B5%20%5Bjson%5D%22%2C%22_get%20list%20%5Blist%5D%20as%20array%22%3A%22%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%5Blist%5D%20%D0%BA%D0%B0%D0%BA%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0%20%22%2C%22_insert%20%5Bitem%5D%20at%20%5Bpos%5D%20of%20array%20%5Bjson%5D%22%3A%22%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%5Bitem%5D%20%D0%BD%D0%B0%20%D1%87%D0%B8%D1%81%D0%BB%D0%BE%20%5Bpos%5D%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%22%2C%22_is%20JSON%20%5Bjson%5D%20valid%3F%22%3A%22JSON%20%5Bjson%5D%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B5%D0%BD%3F%22%2C%22_is%20%5Bjson%5D%20%5Btypes%5D%3F%22%3A%22%5Bjson%5D%20%5Btypes%5D%3F%22%2C%22_item%20%23%20of%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%23%20%5Bitem%5D%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%22%2C%22_item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22%D1%87%D0%B8%D1%81%D0%BB%D0%BE%20%5Bitem%5D%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%22%2C%22_items%20%5Bitem%5D%20to%20%5Bitem2%5D%20of%20array%20%5Bjson%5D%22%3A%22%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%5Bitem%5D%20%D0%B2%20%5Bitem2%5D%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%22%2C%22_join%20string%20by%20array%20%5Bjson%5D%20with%20delimiter%20%5Bd%5D%22%3A%22%D0%BF%D1%80%D0%B8%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%82%D1%8C%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B5%D0%B9%20%5Bjson%5D%20%D1%81%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%BC%20%5Bd%5D%22%2C%22_keys%22%3A%22%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%22%2C%22_length%20of%20array%20%5Bjson%5D%22%3A%22%D0%B4%D0%BB%D0%B8%D0%BD%D0%B0%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%22%2C%22_length%20of%20json%20%5Bjson%5D%22%3A%22%D0%B4%D0%BB%D0%B8%D0%BD%D0%B0%20json%20%5Bjson%5D%22%2C%22_new%20%5Bjson%5D%22%3A%22%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9%20%5Bjson%5D%22%2C%22_replace%20item%20%5Bpos%5D%20of%20%5Bjson%5D%20with%20%5Bitem%5D%22%3A%22%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%87%D0%B8%D1%81%D0%BB%D0%BE%20%5Bpos%5D%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%20%D0%BD%D0%B0%20%5Bitem%5D%22%2C%22_reverse%20array%20%5Bjson%5D%22%3A%22%D0%BE%D0%B1%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83%20%5Bjson%5D%22%2C%22_select%20a%20list%22%3A%22%D0%B2%D1%8B%D0%B1%D0%B5%D1%80%D0%B8%D1%82%D0%B5%20%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%22%2C%22_set%20%5Bitem%5D%20in%20%5Bjson%5D%20to%20%5Bvalue%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%5Bitem%5D%20%D0%B2%20%5Bjson%5D%20%D0%BD%D0%B0%20%5Bvalue%5D%22%2C%22_set%20length%20of%20array%20%5Bjson%5D%20to%20%5Blen%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D0%B4%D0%BB%D0%B8%D0%BD%D1%83%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B%20%5Bjson%5D%20%D0%BD%D0%B0%20%5Blen%5D%22%2C%22_set%20list%20%5Blist%5D%20to%20%5Bjson%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%5Blist%5D%20%D0%B2%20%5Bjson%5D%22%2C%22_sort%20array%20%5Blist%5D%20in%20%5Border%5D%20order%22%3A%22%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83%20%5Blist%5D%20%D0%B2%20%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5%20%5Border%5D%22%2C%22_value%20of%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%5Bitem%5D%20%D0%B2%20%5Bjson%5D%22%2C%22_values%22%3A%22%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%22%7D%2C%22sl%22%3A%7B%22_Advanced%22%3A%22Napredno%22%7D%2C%22sr%22%3A%7B%22_Advanced%22%3A%22%D0%9D%D0%B0%D0%BF%D1%80%D0%B5%D0%B4%D0%BD%D0%BE%22%7D%2C%22sv%22%3A%7B%22_Advanced%22%3A%22Avancerat%22%7D%2C%22tr%22%3A%7B%22_Advanced%22%3A%22Geli%C5%9Fmi%C5%9F%22%7D%2C%22vi%22%3A%7B%22_Advanced%22%3A%22N%C3%A2ng%20cao%22%7D%2C%22zh-cn%22%3A%7B%22_Advanced%22%3A%22%E9%AB%98%E7%BA%A7%22%2C%22_General%20Utils%22%3A%22%E9%80%9A%E7%94%A8%22%2C%22_Lists%22%3A%22%E5%8E%9F%E7%89%88%E5%88%97%E8%A1%A8%22%2C%22_%5Bjson1%5D%20%5Bequal%5D%20%5Bjson2%5D%22%3A%22%5Bjson1%5D%5Bequal%5D%5Bjson2%5D%22%2C%22_%5Bjson%5D%20contains%20key%20%5Bkey%5D%3F%22%3A%22%5Bjson%5D%E5%8C%85%E6%8B%AC%E9%94%AE%5Bkey%5D%EF%BC%9F%22%2C%22_%5Bjson%5D%20contains%20value%20%5Bvalue%5D%3F%22%3A%22%5Bjson%5D%E5%8C%85%E6%8B%AC%E5%80%BC%5Bvalue%5D%EF%BC%9F%22%2C%22_add%20%5Bitem%5D%20to%20array%20%5Bjson%5D%22%3A%22%E5%90%91Array%5Bjson%5D%E6%B7%BB%E5%8A%A0%5Bitem%5D%22%2C%22_all%20%5BStype%5D%20of%20%5Bjson%5D%22%3A%22%5Bjson%5D%E7%9A%84%E6%89%80%E6%9C%89%5BStype%5D%22%2C%22_array%20concat%20%5Bjson%5D%20%5Bjson2%5D%22%3A%22%E5%90%88%E5%B9%B6Array%5Bjson%5D%E5%92%8C%5Bjson2%5D%22%2C%22_array%20from%20text%20%5Bjson%5D%22%3A%22%E6%9D%A5%E8%87%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%5Bjson%5D%E7%9A%84Array%22%2C%22_ascending%22%3A%22%E6%AD%A3%E5%BA%8F%22%2C%22_create%20array%20by%20%5Btext%5D%20with%20delimiter%20%5Bd%5D%22%3A%22%E4%BB%A5%5Bd%5D%E5%88%86%E5%89%B2%E5%AD%97%E7%AC%A6%E4%B8%B2%5Btext%5D%E4%BD%9C%E4%B8%BAArray%22%2C%22_datas%22%3A%22%E6%95%B0%E6%8D%AE%22%2C%22_delete%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22%E5%88%A0%E9%99%A4%5Bjson%5D%E4%B8%AD%E7%9A%84%5Bitem%5D%22%2C%22_delete%20all%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22%E5%88%A0%E9%99%A4Array%5Bjson%5D%E7%9A%84%E6%89%80%E6%9C%89%5Bitem%5D%22%2C%22_delete%20item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22%E5%88%A0%E9%99%A4Array%5Bjson%5D%E7%9A%84%E7%AC%AC%5Bitem%5D%E9%A1%B9%22%2C%22_descending%22%3A%22%E5%80%92%E5%BA%8F%22%2C%22_flat%20array%20%5Bjson%5D%20by%20depth%20%5Bdepth%5D%22%3A%22%E6%8C%89%E7%85%A7%E6%B7%B1%E5%BA%A6%5Bdepth%5D%E5%B9%B3%E9%9D%A2%E5%8C%96Array%5Bjson%5D%22%2C%22_get%20all%20values%20with%20key%20%5Bkey%5D%20in%20array%20%5Bjson%5D%22%3A%22%E8%8E%B7%E5%8F%96Array%5Bjson%5D%E4%B8%AD%E6%89%80%E6%9C%89%5Bkey%5D%E7%9A%84%E5%80%BC%22%2C%22_get%20list%20%5Blist%5D%20as%20array%22%3A%22%E8%8E%B7%E5%8F%96%E5%8E%9F%E7%89%88%E5%88%97%E8%A1%A8%5Blist%5D%22%2C%22_insert%20%5Bitem%5D%20at%20%5Bpos%5D%20of%20array%20%5Bjson%5D%22%3A%22%E5%9C%A8Array%5Bjson%5D%E7%9A%84%E7%AC%AC%5Bpos%5D%E9%A1%B9%E5%89%8D%E6%8F%92%E5%85%A5%5Bitem%5D%22%2C%22_is%20JSON%20%5Bjson%5D%20valid%3F%22%3A%22%5Bjson%5D%E6%98%AF%E5%90%88%E6%B3%95JSON%EF%BC%9F%22%2C%22_is%20%5Bjson%5D%20%5Btypes%5D%3F%22%3A%22%5Bjson%5D%E6%98%AF%5Btypes%5D%EF%BC%9F%22%2C%22_item%20%23%20of%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22%3A%22Array%5Bjson%5D%E4%B8%AD%E7%AC%AC%E4%B8%80%E4%B8%AA%5Bitem%5D%E7%9A%84%E4%BD%8D%E7%BD%AE%22%2C%22_item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22%3A%22Array%5Bjson%5D%E7%9A%84%E7%AC%AC%5Bitem%5D%E9%A1%B9%22%2C%22_items%20%5Bitem%5D%20to%20%5Bitem2%5D%20of%20array%20%5Bjson%5D%22%3A%22Array%5Bjson%5D%E7%9A%84%E7%AC%AC%5Bitem%5D%E5%88%B0%E7%AC%AC%5Bitem2%5D%E9%A1%B9%22%2C%22_join%20string%20by%20array%20%5Bjson%5D%20with%20delimiter%20%5Bd%5D%22%3A%22%E4%BB%A5%5Bd%5D%E5%90%88%E5%B9%B6Array%5Bjson%5D%22%2C%22_keys%22%3A%22%E9%94%AE%22%2C%22_length%20of%20array%20%5Bjson%5D%22%3A%22Array%5Bjson%5D%E7%9A%84%E9%95%BF%E5%BA%A6%22%2C%22_length%20of%20json%20%5Bjson%5D%22%3A%22JSON%5Bjson%5D%E7%9A%84%E9%95%BF%E5%BA%A6%22%2C%22_new%20%5Bjson%5D%22%3A%22%E6%96%B0%5Bjson%5D%22%2C%22_replace%20item%20%5Bpos%5D%20of%20%5Bjson%5D%20with%20%5Bitem%5D%22%3A%22%E6%9B%BF%E6%8D%A2Array%5Bjson%5D%E7%9A%84%E7%AC%AC%5Bpos%5D%E9%A1%B9%E4%B8%BA%5Bitem%5D%22%2C%22_reverse%20array%20%5Bjson%5D%22%3A%22%E5%8F%8D%E8%BD%ACArray%5Bjson%5D%22%2C%22_select%20a%20list%22%3A%22%E8%AF%B7%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E5%88%97%E8%A1%A8%22%2C%22_set%20%5Bitem%5D%20in%20%5Bjson%5D%20to%20%5Bvalue%5D%22%3A%22%E8%AE%BE%E7%BD%AE%5Bjson%5D%E4%B8%AD%E7%9A%84%5Bitem%5D%E4%B8%BA%5Bvalue%5D%22%2C%22_set%20length%20of%20array%20%5Bjson%5D%20to%20%5Blen%5D%22%3A%22%E8%AE%BE%E7%BD%AEArray%5Bjson%5D%E7%9A%84%E9%95%BF%E5%BA%A6%E4%B8%BA%5Blen%5D%22%2C%22_set%20list%20%5Blist%5D%20to%20%5Bjson%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E5%8E%9F%E7%89%88%E5%88%97%E8%A1%A8%5Blist%5D%E4%B8%BA%5Bjson%5D%22%2C%22_sort%20array%20%5Blist%5D%20in%20%5Border%5D%20order%22%3A%22%E4%BB%A5%5Border%5D%E6%8E%92%E5%BA%8FArray%5Blist%5D%22%2C%22_value%20of%20%5Bitem%5D%20in%20%5Bjson%5D%22%3A%22%5Bjson%5D%E4%B8%AD%E7%9A%84%5Bitem%5D%22%2C%22_values%22%3A%22%E5%80%BC%22%7D%2C%22zh-tw%22%3A%7B%22_Advanced%22%3A%22%E5%80%8B%E5%88%A5%E6%9B%B4%E6%94%B9%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%20%20%2F*%0A%20%20%20*%20JSON%20extension%20v2.5%20by%20skyhigh173%20(English%20Version)%0A%20%20%20*%20Do%20not%20remove%20this%20comment%0A%20%20%20*%2F%0A%0A%20%20const%20vm%20%3D%20Scratch.vm%3B%0A%20%20const%20hasOwn%20%3D%20(obj%2C%20property)%20%3D%3E%0A%20%20%20%20Object.prototype.hasOwnProperty.call(obj%2C%20property)%3B%0A%0A%20%20const%20makeLabel%20%3D%20(text)%20%3D%3E%20(%7B%0A%20%20%20%20blockType%3A%20%22label%22%2C%0A%20%20%20%20text%3A%20text%2C%0A%20%20%7D)%3B%0A%0A%20%20class%20JSONS%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22skyhigh173JSON%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20%22JSON%22%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%233271D0%22%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20makeLabel(Scratch.translate(%22General%20Utils%22))%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_is_valid%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22is%20JSON%20%5Bjson%5D%20valid%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22key%22%3A%22value%22%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_is%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22is%20%5Bjson%5D%20%5Btypes%5D%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22key%22%3A%22value%22%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20types%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Object%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22types%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_get_all%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22all%20%5BStype%5D%20of%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Stype%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22get_all%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22key%22%3A%22value%22%2C%22key2%22%3A%22value2%22%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_new%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22new%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Object%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22types%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_has_key%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22%5Bjson%5D%20contains%20key%20%5Bkey%5D%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20key%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22key2%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22key%22%3A%22value%22%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_has_value%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22%5Bjson%5D%20contains%20value%20%5Bvalue%5D%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22scratch%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22TurboWarp%22%2C%22scratch%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22%5Bjson1%5D%20%5Bequal%5D%20%5Bjson2%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json1%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22a%22%3A0%2C%22b%22%3A1%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json2%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22b%22%3A1%2C%22a%22%3A0%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20equal%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%3D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20makeLabel(%22JSON%20Strings%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_jlength%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22length%20of%20json%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22key%22%3A%22value%22%2C%22key2%22%3A%22value2%22%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_get%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22value%20of%20%5Bitem%5D%20in%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22key%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22key%22%3A%22value%22%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_set%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20%5Bitem%5D%20in%20%5Bjson%5D%20to%20%5Bvalue%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22key%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22new%20value%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22key%22%3A%22value%22%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_delete%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22delete%20%5Bitem%5D%20in%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22key2%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%7B%22key%22%3A%22value%22%2C%22key2%22%3A%22value2%22%7D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20makeLabel(Scratch.translate(%22Array%22))%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_length%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22length%20of%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%5B1%2C2%2C3%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_get%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22scratch%22%2C%22TurboWarp%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_push%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22add%20%5Bitem%5D%20to%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22TurboWarp%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22scratch%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_set%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22replace%20item%20%5Bpos%5D%20of%20%5Bjson%5D%20with%20%5Bitem%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22fav%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20pos%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%202%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22love%22%2C%22heart%22%2C%22follow%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_insert%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22insert%20%5Bitem%5D%20at%20%5Bpos%5D%20of%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22fav%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20pos%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%202%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22love%22%2C%22follow%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_delete%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22delete%20item%20%5Bitem%5D%20of%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%202%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22scratch%22%2C%22a%22%2C%22TurboWarp%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_remove_all%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22delete%20all%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22a%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22scratch%22%2C%22a%22%2C%22TurboWarp%22%2C%22a%22%2C%22a%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_itemH%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22item%20%23%20of%20%5Bitem%5D%20in%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22scratch%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22scratch%22%2C%22TurboWarp%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20makeLabel(Scratch.translate(%22Advanced%22))%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_from%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22array%20from%20text%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22abcd%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_fromto%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22items%20%5Bitem%5D%20to%20%5Bitem2%5D%20of%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%5B1%2C2%2C3%2C4%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%202%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20item2%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%203%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_reverse%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22reverse%20array%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22a%22%2C%22b%22%2C%22c%22%2C%22d%22%2C%22e%22%2C%22f%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_flat%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22flat%20array%20%5Bjson%5D%20by%20depth%20%5Bdepth%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%5B%5B1%5D%2C2%2C%5B3%2C4%5D%2C%5B5%2C%5B6%5D%5D%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20depth%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%202%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_concat%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22array%20concat%20%5Bjson%5D%20%5Bjson2%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22a%22%2C%22b%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json2%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22c%22%2C%22d%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_filter%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22get%20all%20values%20with%20key%20%5Bkey%5D%20in%20array%20%5Bjson%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20key%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22id%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%7B%22id%22%3A12%7D%2C%7B%22id%22%3A24%7D%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_setlen%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20length%20of%20array%20%5Bjson%5D%20to%20%5Blen%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22a%22%2C%22b%22%2C%22c%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20len%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%202%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_create%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22create%20array%20by%20%5Btext%5D%20with%20delimiter%20%5Bd%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22a%2Cb%2Cc%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20d%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%2C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_join%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22join%20string%20by%20array%20%5Bjson%5D%20with%20delimiter%20%5Bd%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22a%22%2C%22b%22%2C%22c%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20d%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%2C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_array_sort%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22sort%20array%20%5Blist%5D%20in%20%5Border%5D%20order%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20list%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5B5.23%2C%20214%2C%20522%2C%2061%2C%205.24%2C%2062.2%2C%201%2C%2051212%2C%200%2C%200%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20order%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22sort_order%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20makeLabel(Scratch.translate(%22Lists%22))%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_vm_getlist%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22get%20list%20%5Blist%5D%20as%20array%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20list%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22get_list%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22json_vm_setlist%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20list%20%5Blist%5D%20to%20%5Bjson%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20list%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22get_list%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20json%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5B%22apple%22%2C%22banana%22%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20get_all%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22keys%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22keys%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22values%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22values%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22datas%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22datas%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20get_list%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%22getLists%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20types%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22Object%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22Object%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22Array%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22Array%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20equal%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22%3D%22%2C%20%22%E2%89%A0%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20sort_order%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22ascending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22ascending%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22descending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22descending%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getLists()%20%7B%0A%20%20%20%20%20%20const%20globalLists%20%3D%20Object.values(%0A%20%20%20%20%20%20%20%20vm.runtime.getTargetForStage().variables%0A%20%20%20%20%20%20).filter((x)%20%3D%3E%20x.type%20%3D%3D%20%22list%22)%3B%0A%20%20%20%20%20%20const%20localLists%20%3D%20Object.values(vm.editingTarget.variables).filter(%0A%20%20%20%20%20%20%20%20(x)%20%3D%3E%20x.type%20%3D%3D%20%22list%22%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20const%20uniqueLists%20%3D%20%5B...new%20Set(%5B...globalLists%2C%20...localLists%5D)%5D%3B%0A%20%20%20%20%20%20if%20(uniqueLists.length%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20return%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22select%20a%20list%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22select%20a%20list%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20uniqueLists.map((i)%20%3D%3E%20(%7B%0A%20%20%20%20%20%20%20%20text%3A%20i.name%2C%0A%20%20%20%20%20%20%20%20value%3A%20i.id%2C%0A%20%20%20%20%20%20%7D))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20lookupList(list%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20byId%20%3D%20util.target.lookupVariableById(list)%3B%0A%20%20%20%20%20%20if%20(byId%20%26%26%20byId.type%20%3D%3D%3D%20%22list%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20byId%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20const%20byName%20%3D%20util.target.lookupVariableByNameAndType(list%2C%20%22list%22)%3B%0A%20%20%20%20%20%20if%20(byName)%20%7B%0A%20%20%20%20%20%20%20%20return%20byName%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_is_valid(%7B%20json%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(typeof%20json%20!%3D%20%22string%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(%0A%20%20%20%20%20%20%20%20(json.slice(0%2C%201)%20!%3D%20%22%5B%22%20%7C%7C%20json.slice(-1)%20!%3D%20%22%5D%22)%20%26%26%0A%20%20%20%20%20%20%20%20(json.slice(0%2C%201)%20!%3D%20%22%7B%22%20%7C%7C%20json.slice(-1)%20!%3D%20%22%7D%22)%0A%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20return%20object%20if%20its%20json%20else%20string%0A%20%20%20%20json_valid_return(json)%20%7B%0A%20%20%20%20%20%20if%20(typeof%20json%20!%3D%20%22string%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20json%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(%0A%20%20%20%20%20%20%20%20(json.slice(0%2C%201)%20!%3D%20%22%5B%22%20%7C%7C%20json.slice(-1)%20!%3D%20%22%5D%22)%20%26%26%0A%20%20%20%20%20%20%20%20(json.slice(0%2C%201)%20!%3D%20%22%7B%22%20%7C%7C%20json.slice(-1)%20!%3D%20%22%7D%22)%0A%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20return%20json%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20json%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_is(%7B%20json%2C%20types%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!this.json_is_valid(%7B%20json%3A%20json%20%7D))%20return%20false%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20switch%20(types)%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20%22Object%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20!Array.isArray(json)%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22Array%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Array.isArray(json)%3B%0A%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_length(%7B%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20return%20Object.keys(json).length%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%20%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_new(%7B%20json%20%7D)%20%7B%0A%20%20%20%20%20%20switch%20(json)%20%7B%0A%20%20%20%20%20%20%20%20case%20%22Object%22%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%22%7B%7D%22%3B%0A%20%20%20%20%20%20%20%20case%20%22Array%22%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%22%5B%5D%22%3B%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_has_key(%7B%20json%2C%20key%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20%20%20this._fixInvalidJSONValues(this.json_valid_return(key))%20in%0A%20%20%20%20%20%20%20%20%20%20JSON.parse(json)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_has_value(%7B%20json%2C%20value%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20value%20%3D%20this.json_valid_return(value)%3B%0A%20%20%20%20%20%20%20%20return%20json.includes(value)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_equal(%7B%20json1%2C%20equal%2C%20json2%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json1%20%3D%20JSON.parse(json1)%3B%0A%20%20%20%20%20%20%20%20json2%20%3D%20JSON.parse(json2)%3B%0A%0A%20%20%20%20%20%20%20%20const%20keys1%20%3D%20Object.keys(json1)%3B%0A%20%20%20%20%20%20%20%20const%20keys2%20%3D%20Object.keys(json2)%3B%0A%20%20%20%20%20%20%20%20const%20result%20%3D%0A%20%20%20%20%20%20%20%20%20%20keys1.length%20%3D%3D%3D%20keys2.length%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Object.keys(json1).every((key)%20%3D%3E%20json1%5Bkey%5D%20%3D%3D%3D%20json2%5Bkey%5D)%3B%0A%20%20%20%20%20%20%20%20if%20(equal%20%3D%3D%3D%20%22%3D%22)%20return%20result%3B%0A%20%20%20%20%20%20%20%20if%20(equal%20%3D%3D%3D%20%22%E2%89%A0%22)%20return%20!result%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20ignore%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_get_all(%7B%20Stype%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20switch%20(Stype)%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20%22keys%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.stringify(Object.keys(json).map((key)%20%3D%3E%20key))%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22values%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.stringify(Object.keys(json).map((key)%20%3D%3E%20json%5Bkey%5D))%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22datas%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.stringify(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Object.keys(json).map((key)%20%3D%3E%20%5Bkey%2C%20json%5Bkey%5D%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_get(%7B%20item%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20if%20(hasOwn(json%2C%20item))%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20result%20%3D%20json%5Bitem%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(typeof%20result%20%3D%3D%3D%20%22object%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.stringify(result)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20ignore%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20_fixInvalidJSONValues(value)%20%7B%0A%20%20%20%20%20%20%2F%2F%20JSON%20does%20not%20support%20these%20values%2C%20so%20convert%20to%20string.%0A%20%20%20%20%20%20if%20(Number.isNaN(value))%20return%20%22NaN%22%3B%0A%20%20%20%20%20%20if%20(value%20%3D%3D%3D%20Infinity)%20return%20%22Infinity%22%3B%0A%20%20%20%20%20%20if%20(value%20%3D%3D%3D%20-Infinity)%20return%20%22-Infinity%22%3B%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_set(%7B%20item%2C%20value%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20value%20%3D%20this.json_valid_return(value)%3B%0A%20%20%20%20%20%20%20%20value%20%3D%20this._fixInvalidJSONValues(value)%3B%0A%20%20%20%20%20%20%20%20json%5Bitem%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_delete(%7B%20item%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20delete%20json%5Bitem%5D%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_jlength(%7B%20json%20%7D)%20%7B%0A%20%20%20%20%20%20%2F%2F%20same%20function%0A%20%20%20%20%20%20return%20this.json_length(%7B%20json%3A%20json%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_get(%7B%20item%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20%2F%2F%201...length%20%3A%20array%20content%2C%20-1...-length%20%3A%20reverse%20array%20content%2C%200%20%3A%20ERROR%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20item%20%3D%20Scratch.Cast.toNumber(item)%3B%0A%20%20%20%20%20%20%20%20if%20(item%20%3D%3D%200)%20return%20%22%22%3B%0A%20%20%20%20%20%20%20%20if%20(item%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20item--%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20let%20result%3B%0A%20%20%20%20%20%20%20%20if%20(item%20%3E%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20json%5Bitem%5D%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20json%5Bjson.length%20%2B%20item%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(typeof%20result%20%3D%3D%20%22object%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20JSON.stringify(result)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_itemH(%7B%20item%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20item%20%3D%20this._fixInvalidJSONValues(this.json_valid_return(item))%3B%0A%20%20%20%20%20%20%20%20let%20result%20%3D%20JSON.stringify(json.indexOf(item)%20%2B%201)%3B%0A%20%20%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_from(%7B%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(Array.from(String(json)))%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_concat(%7B%20json%2C%20json2%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20json2%20%3D%20JSON.parse(json2)%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json.concat(json2))%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_push(%7B%20item%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20item%20%3D%20this._fixInvalidJSONValues(this.json_valid_return(item))%3B%0A%20%20%20%20%20%20%20%20json.push(item)%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_insert(%7B%20item%2C%20pos%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20item%20%3D%20this._fixInvalidJSONValues(this.json_valid_return(item))%3B%0A%20%20%20%20%20%20%20%20json.splice(pos%20-%201%2C%200%2C%20item)%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_set(%7B%20item%2C%20pos%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20json%5Bpos%20-%201%5D%20%3D%20this._fixInvalidJSONValues(%0A%20%20%20%20%20%20%20%20%20%20this.json_valid_return(item)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_delete(%7B%20item%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20json.splice(item%20-%201%2C%201)%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_remove_all(%7B%20item%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20item%20%3D%20this._fixInvalidJSONValues(this.json_valid_return(item))%3B%0A%20%20%20%20%20%20%20%20let%20i%20%3D%200%3B%0A%20%20%20%20%20%20%20%20while%20(i%20%3C%20json.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(json%5Bi%5D%20%3D%3D%3D%20item)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20json.splice(i%2C%201)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2B%2Bi%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_fromto(%7B%20json%2C%20item%2C%20item2%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(JSON.parse(json).slice(item%20-%201%2C%20item2))%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_reverse(%7B%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(JSON.parse(json).reverse())%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_flat(%7B%20json%2C%20depth%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(JSON.parse(json).flat(depth))%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_create(%7B%20text%2C%20d%20%7D)%20%7B%0A%20%20%20%20%20%20return%20JSON.stringify(String(text).split(d))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_join(%7B%20json%2C%20d%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20JSON.parse(json).join(d)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_filter(%7B%20key%2C%20json%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(%0A%20%20%20%20%20%20%20%20%20%20json.map((x)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(hasOwn(x%2C%20key))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20x%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_setlen(%7B%20json%2C%20len%20%7D)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20json%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20json.length%20%3D%20len%3B%0A%20%20%20%20%20%20%20%20return%20JSON.stringify(json)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_vm_getlist(%7B%20list%20%7D%2C%20util)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20let%20listVariable%20%3D%20this.lookupList(list%2C%20util)%3B%0A%20%20%20%20%20%20%20%20if%20(listVariable)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20JSON.stringify(listVariable.value)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20ignore%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20json_vm_setlist(%7B%20list%2C%20json%20%7D%2C%20util)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20let%20listVariable%20%3D%20this.lookupList(list%2C%20util)%3B%0A%20%20%20%20%20%20%20%20if%20(listVariable)%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20array%20%3D%20JSON.parse(json)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(Array.isArray(array))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20safeArray%20%3D%20array.map((i)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(typeof%20i%20%3D%3D%3D%20%22object%22)%20return%20JSON.stringify(i)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20listVariable.value%20%3D%20safeArray%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20ignore%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20json_array_sort(args)%20%7B%0A%20%20%20%20%20%20let%20list%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20list%20%3D%20JSON.parse(args.list)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(!Array.isArray(list))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20list.sort(Scratch.Cast.compare)%3B%0A%20%20%20%20%20%20if%20(args.order%20%3D%3D%3D%20%22descending%22)%20list.reverse()%3B%0A%20%20%20%20%20%20return%20JSON.stringify(list)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20Scratch.extensions.register(new%20JSONS())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Mouse%20Cursor%0A%2F%2F%20ID%3A%20MouseCursor%0A%2F%2F%20Description%3A%20Use%20custom%20cursors%20or%20hide%20the%20cursor.%20Also%20allows%20replacing%20the%20cursor%20with%20any%20costume%20image.%0A%2F%2F%20License%3A%20MIT%20AND%20MPL-2.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_Mouse%20Cursor%22%3A%22Mauszeiger%22%7D%2C%22fi%22%3A%7B%22_Mouse%20Cursor%22%3A%22Hiiren%20kohdistin%22%2C%22_bottom%20left%22%3A%22vasempaan%20alakulmaan%22%2C%22_bottom%20right%22%3A%22oikeaan%20alakulmaan%22%2C%22_center%22%3A%22keskelle%22%2C%22_cursor%22%3A%22kohdistin%22%2C%22_hide%20cursor%22%3A%22piilota%20kohdistin%22%2C%22_set%20cursor%20to%20%5Bcur%5D%22%3A%22aseta%20kohdistimeksi%20%5Bcur%5D%22%2C%22_set%20cursor%20to%20current%20costume%20center%3A%20%5Bposition%5D%20max%20size%3A%20%5Bsize%5D%22%3A%22aseta%20kohdistimeksi%20nykyisen%20asusteen%20keskikohta%3A%20%5Bposition%5D%20enimm%C3%A4iskoko%3A%20%5Bsize%5D%22%2C%22_top%20left%22%3A%22vasempaan%20yl%C3%A4kulmaan%22%2C%22_top%20right%22%3A%22oikeaan%20yl%C3%A4kulmaan%22%2C%22_%7Bsize%7D%20(unreliable)%22%3A%22%7Bsize%7D%20(ep%C3%A4luotettava)%22%7D%2C%22it%22%3A%7B%22_Mouse%20Cursor%22%3A%22Puntatore%20Mouse%22%2C%22_bottom%20left%22%3A%22angolo%20sinistra%20in%20basso%22%2C%22_bottom%20right%22%3A%22angolo%20destra%20in%20basso%22%2C%22_center%22%3A%22centro%22%2C%22_cursor%22%3A%22puntatore%22%2C%22_hide%20cursor%22%3A%22nascondi%20puntatore%22%2C%22_set%20cursor%20to%20%5Bcur%5D%22%3A%22usa%20%5Bcur%5D%20come%20puntatore%22%2C%22_set%20cursor%20to%20current%20costume%20center%3A%20%5Bposition%5D%20max%20size%3A%20%5Bsize%5D%22%3A%22usa%20il%20costume%20attuale%20con%20centro%3A%20%5Bposition%5D%20dimensione%20massima%3A%20%5Bsize%5D%20come%20puntatore%22%2C%22_top%20left%22%3A%22angolo%20sinistra%20in%20alto%22%2C%22_top%20right%22%3A%22angolo%20destra%20in%20alto%22%2C%22_%7Bsize%7D%20(unreliable)%22%3A%22%7Bsize%7D%20(inaffidabile)%22%7D%2C%22ja%22%3A%7B%22_Mouse%20Cursor%22%3A%22%E3%83%9E%E3%82%A6%E3%82%B9%E3%82%AB%E3%83%BC%E3%82%BD%E3%83%AB%22%2C%22_bottom%20left%22%3A%22%E5%B7%A6%E4%B8%8B%22%2C%22_bottom%20right%22%3A%22%E5%8F%B3%E4%B8%8B%22%2C%22_center%22%3A%22%E4%B8%AD%E5%A4%AE%22%2C%22_top%20left%22%3A%22%E5%B7%A6%E4%B8%8A%22%2C%22_top%20right%22%3A%22%E5%8F%B3%E4%B8%8A%22%7D%2C%22ko%22%3A%7B%22_Mouse%20Cursor%22%3A%22%EB%A7%88%EC%9A%B0%EC%8A%A4%20%EC%BB%A4%EC%84%9C%22%2C%22_bottom%20left%22%3A%22%EC%99%BC%EC%AA%BD%20%EC%95%84%EB%9E%98%22%2C%22_bottom%20right%22%3A%22%EC%98%A4%EB%A5%B8%EC%AA%BD%20%EC%95%84%EB%9E%98%22%2C%22_center%22%3A%22%EA%B0%80%EC%9A%B4%EB%8D%B0%22%2C%22_cursor%22%3A%22%EC%BB%A4%EC%84%9C%22%2C%22_hide%20cursor%22%3A%22%EC%BB%A4%EC%84%9C%20%EC%88%A8%EA%B8%B0%EA%B8%B0%22%2C%22_set%20cursor%20to%20%5Bcur%5D%22%3A%22%EC%BB%A4%EC%84%9C%EB%A5%BC%20%5Bcur%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_top%20left%22%3A%22%EC%99%BC%EC%AA%BD%20%EC%9C%84%22%2C%22_top%20right%22%3A%22%EC%98%A4%EB%A5%B8%EC%AA%BD%20%EC%9C%84%22%7D%2C%22nb%22%3A%7B%22_Mouse%20Cursor%22%3A%22Mus%20Pekkeren%22%2C%22_bottom%20left%22%3A%22nederst%20til%20venstre%22%2C%22_bottom%20right%22%3A%22nederst%20til%20h%C3%B8yre%22%2C%22_center%22%3A%22senter%22%2C%22_cursor%22%3A%22pekeren%22%2C%22_hide%20cursor%22%3A%22skjul%20pekeren%22%2C%22_set%20cursor%20to%20%5Bcur%5D%22%3A%22sett%20mark%C3%B8ren%20til%20%5Bcur%5D%22%2C%22_set%20cursor%20to%20current%20costume%20center%3A%20%5Bposition%5D%20max%20size%3A%20%5Bsize%5D%22%3A%22sett%20mark%C3%B8ren%20til%20midten%20av%20gjeldende%20drakt%3A%20%5Bposition%5D%20maks%20st%C3%B8rrelse%3A%20%5Bsize%5D%22%2C%22_top%20left%22%3A%22%C3%B8verst%20til%20venstre%22%2C%22_top%20right%22%3A%22%C3%B8verst%20til%20h%C3%B8yre%22%2C%22_%7Bsize%7D%20(unreliable)%22%3A%22%7Bsize%7D%20(up%C3%A5litelig)%22%7D%2C%22nl%22%3A%7B%22_Mouse%20Cursor%22%3A%22Muisaanwijzer%22%2C%22_bottom%20left%22%3A%22linksonder%22%2C%22_bottom%20right%22%3A%22rechtsonder%22%2C%22_center%22%3A%22midden%22%2C%22_hide%20cursor%22%3A%22verberg%20cursor%22%2C%22_set%20cursor%20to%20%5Bcur%5D%22%3A%22maak%20cursor%20%5Bcur%5D%22%2C%22_set%20cursor%20to%20current%20costume%20center%3A%20%5Bposition%5D%20max%20size%3A%20%5Bsize%5D%22%3A%22maak%20cursor%20huidig%20uiterlijk%20met%20middelpunt%3A%20%5Bposition%5D%20en%20max.%20grootte%3A%20%5Bsize%5D%22%2C%22_top%20left%22%3A%22linksboven%22%2C%22_top%20right%22%3A%22rechtsboven%22%2C%22_%7Bsize%7D%20(unreliable)%22%3A%22%7Bsize%7D%20(onbetrouwbaar)%22%7D%2C%22ru%22%3A%7B%22_Mouse%20Cursor%22%3A%22%D0%9A%D1%83%D1%80%D1%81%D0%BE%D1%80%20%D0%9C%D1%8B%D1%88%D0%B8%22%2C%22_bottom%20left%22%3A%22%D0%BD%D0%B8%D0%B6%D0%BD%D0%B5%D0%BC%20%D0%BB%D0%B5%D0%B2%D0%BE%D0%BC%20%D1%83%D0%B3%D0%BB%D1%83%22%2C%22_bottom%20right%22%3A%22%D0%BD%D0%B8%D0%B6%D0%BD%D0%B5%D0%BC%20%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%BC%20%D1%83%D0%B3%D0%BB%D1%83%22%2C%22_center%22%3A%22%D1%86%D0%B5%D0%BD%D1%82%D1%80%D0%B5%22%2C%22_cursor%22%3A%22%D0%BA%D1%83%D1%80%D1%81%D0%BE%D1%80%22%2C%22_hide%20cursor%22%3A%22%D1%81%D0%BF%D1%80%D1%8F%D1%82%D0%B0%D1%82%D1%8C%20%D0%BA%D1%83%D1%80%D1%81%D0%BE%D1%80%22%2C%22_set%20cursor%20to%20%5Bcur%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%BA%D1%83%D1%80%D1%81%D0%BE%D1%80%20%D0%BD%D0%B0%20%5Bcur%5D%22%2C%22_set%20cursor%20to%20current%20costume%20center%3A%20%5Bposition%5D%20max%20size%3A%20%5Bsize%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%BA%D1%83%D1%80%D1%81%D0%BE%D1%80%20%D0%BD%D0%B0%20%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B9%20%D0%BA%D0%BE%D1%81%D1%82%D1%8E%D0%BC%20%D1%81%20%D1%86%D0%B5%D0%BD%D1%82%D1%80%D0%BE%D0%BC%20%D0%B2%3A%20%5Bposition%5D%20%D0%BC%D0%B0%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%BE%D0%BC%3A%20%5Bsize%5D%22%2C%22_top%20left%22%3A%22%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%B5%D0%BC%20%D0%BB%D0%B5%D0%B2%D0%BE%D0%BC%20%D1%83%D0%B3%D0%BB%D1%83%22%2C%22_top%20right%22%3A%22%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%B5%D0%BC%20%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%BC%20%D1%83%D0%B3%D0%BB%D1%83%22%2C%22_%7Bsize%7D%20(unreliable)%22%3A%22%7Bsize%7D%20(%D0%BD%D0%B5%D0%BD%D0%B0%D0%B4%D0%B5%D0%B6%D0%BD%D0%BE)%22%7D%2C%22uk%22%3A%7B%22_Mouse%20Cursor%22%3A%22%D0%92%D0%BA%D0%B0%D0%B7%D1%96%D0%B2%D0%BD%D0%B8%D0%BA%20%D0%9C%D0%B8%D1%88%D1%96%22%7D%2C%22zh-cn%22%3A%7B%22_Mouse%20Cursor%22%3A%22%E9%BC%A0%E6%A0%87%E5%9B%BE%E6%A0%87%22%2C%22_bottom%20left%22%3A%22%E5%BA%95%E9%83%A8%E5%B7%A6%E4%BE%A7%22%2C%22_bottom%20right%22%3A%22%E5%BA%95%E9%83%A8%E5%8F%B3%E4%BE%A7%22%2C%22_center%22%3A%22%E5%B1%85%E4%B8%AD%22%2C%22_cursor%22%3A%22%E9%BC%A0%E6%A0%87%E6%A0%B7%E5%BC%8F%22%2C%22_hide%20cursor%22%3A%22%E9%9A%90%E8%97%8F%E9%BC%A0%E6%A0%87%22%2C%22_set%20cursor%20to%20%5Bcur%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E9%BC%A0%E6%A0%87%E6%A0%B7%E5%BC%8F%E4%B8%BA%5Bcur%5D%22%2C%22_set%20cursor%20to%20current%20costume%20center%3A%20%5Bposition%5D%20max%20size%3A%20%5Bsize%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E9%BC%A0%E6%A0%87%E4%B8%AD%E5%BF%83%E4%B8%BA%5Bposition%5D%EF%BC%8C%E6%9C%80%E5%A4%A7%E5%B0%BA%E5%AF%B8%E4%B8%BA%5Bsize%5D%22%2C%22_top%20left%22%3A%22%E9%A1%B6%E9%83%A8%E5%B7%A6%E4%BE%A7%22%2C%22_top%20right%22%3A%22%E9%A1%B6%E9%83%A8%E5%8F%B3%E4%BE%A7%22%2C%22_%7Bsize%7D%20(unreliable)%22%3A%22%7Bsize%7D%EF%BC%88%E5%AE%9E%E9%AA%8C%E6%80%A7%EF%BC%89%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20%7B%0A%20%20%20%20throw%20new%20Error(%22MouseCursor%20extension%20must%20be%20run%20unsandboxed%22)%3B%0A%20%20%7D%0A%0A%20%20const%20lazilyCreatedCanvas%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20%2F**%20%40type%20%7BHTMLCanvasElement%7D%20*%2F%0A%20%20%20%20let%20canvas%20%3D%20null%3B%0A%20%20%20%20%2F**%20%40type%20%7BCanvasRenderingContext2D%7D%20*%2F%0A%20%20%20%20let%20ctx%20%3D%20null%3B%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20width%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20height%0A%20%20%20%20%20*%20%40returns%20%7B%5BHTMLCanvasElement%2C%20CanvasRenderingContext2D%5D%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20return%20(width%2C%20height)%20%3D%3E%20%7B%0A%20%20%20%20%20%20if%20(!canvas)%20%7B%0A%20%20%20%20%20%20%20%20canvas%20%3D%20document.createElement(%22canvas%22)%3B%0A%20%20%20%20%20%20%20%20ctx%20%3D%20canvas.getContext(%222d%22)%3B%0A%20%20%20%20%20%20%20%20if%20(!ctx)%20%7B%0A%20%20%20%20%20%20%20%20%20%20throw%20new%20Error(%22Could%20not%20get%202d%20rendering%20context%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20Setting%20canvas%20size%20also%20clears%20it%0A%20%20%20%20%20%20canvas.width%20%3D%20width%3B%0A%20%20%20%20%20%20canvas.height%20%3D%20height%3B%0A%20%20%20%20%20%20return%20%5Bcanvas%2C%20ctx%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%20%20const%20getRawSkinCanvas%20%3D%20lazilyCreatedCanvas()%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7BRenderWebGL.Skin%7D%20skin%0A%20%20%20*%20%40returns%20%7Bstring%7D%20A%20data%3A%20URI%20for%20the%20skin.%0A%20%20%20*%2F%0A%20%20const%20encodeSkinToURL%20%3D%20(skin)%20%3D%3E%20%7B%0A%20%20%20%20const%20svgSkin%20%3D%20%2F**%20%40type%20%7BRenderWebGL.SVGSkin%7D%20*%2F%20(skin)%3B%0A%20%20%20%20if%20(svgSkin._svgImage)%20%7B%0A%20%20%20%20%20%20%2F%2F%20This%20is%20an%20SVG%20skin%0A%20%20%20%20%20%20return%20svgSkin._svgImage.src%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20It's%20probably%20a%20bitmap%20skin.%0A%20%20%20%20%2F%2F%20The%20most%20reliable%20way%20to%20get%20the%20bitmap%20in%20every%20runtime%20is%20through%20the%20silhouette.%0A%20%20%20%20%2F%2F%20This%20is%20very%20slow%20and%20could%20involve%20reading%20the%20texture%20from%20the%20GPU.%0A%20%20%20%20const%20silhouette%20%3D%20skin._silhouette%3B%0A%20%20%20%20%2F%2F%20unlazy()%20only%20exists%20in%20TW%0A%20%20%20%20if%20(silhouette.unlazy)%20%7B%0A%20%20%20%20%20%20silhouette.unlazy()%3B%0A%20%20%20%20%7D%0A%20%20%20%20const%20colorData%20%3D%20silhouette._colorData%3B%0A%20%20%20%20const%20width%20%3D%20silhouette._width%3B%0A%20%20%20%20const%20height%20%3D%20silhouette._height%3B%0A%20%20%20%20const%20imageData%20%3D%20new%20ImageData(%0A%20%20%20%20%20%20colorData%2C%0A%20%20%20%20%20%20silhouette._width%2C%0A%20%20%20%20%20%20silhouette._height%0A%20%20%20%20)%3B%0A%20%20%20%20const%20%5Bcanvas%2C%20ctx%5D%20%3D%20getRawSkinCanvas(width%2C%20height)%3B%0A%20%20%20%20ctx.putImageData(imageData%2C%200%2C%200)%3B%0A%20%20%20%20return%20canvas.toDataURL()%3B%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7BVM.Costume%7D%20costume%0A%20%20%20*%20%40param%20%7Bnumber%7D%20maxWidth%0A%20%20%20*%20%40param%20%7Bnumber%7D%20maxHeight%0A%20%20%20*%20%40returns%20%7B%7Buri%3A%20string%2C%20width%3A%20number%2C%20height%3A%20number%7D%7D%0A%20%20%20*%2F%0A%20%20const%20costumeToCursor%20%3D%20(costume%2C%20maxWidth%2C%20maxHeight)%20%3D%3E%20%7B%0A%20%20%20%20const%20skin%20%3D%20Scratch.vm.renderer._allSkins%5Bcostume.skinId%5D%3B%0A%20%20%20%20const%20imageURI%20%3D%20encodeSkinToURL(skin)%3B%0A%0A%20%20%20%20let%20width%20%3D%20skin.size%5B0%5D%3B%0A%20%20%20%20let%20height%20%3D%20skin.size%5B1%5D%3B%0A%20%20%20%20if%20(width%20%3E%20maxWidth)%20%7B%0A%20%20%20%20%20%20height%20%3D%20height%20*%20(maxWidth%20%2F%20width)%3B%0A%20%20%20%20%20%20width%20%3D%20maxWidth%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(height%20%3E%20maxHeight)%20%7B%0A%20%20%20%20%20%20width%20%3D%20width%20*%20(maxHeight%20%2F%20height)%3B%0A%20%20%20%20%20%20height%20%3D%20maxHeight%3B%0A%20%20%20%20%7D%0A%20%20%20%20width%20%3D%20Math.round(width)%3B%0A%20%20%20%20height%20%3D%20Math.round(height)%3B%0A%0A%20%20%20%20%2F%2F%20We%20wrap%20the%20encoded%20image%20in%20an%20%3Csvg%3E.%20This%20lets%20us%20do%20some%20clever%20things%3A%0A%20%20%20%20%2F%2F%20%20-%20We%20can%20resize%20the%20image%20without%20a%20canvas.%0A%20%20%20%20%2F%2F%20%20-%20We%20can%20give%20the%20browser%20an%20image%20with%20more%20raw%20pixels%20than%20its%20DPI%20independent%20size.%0A%20%20%20%20%2F%2F%20The%20latter%20is%20important%20so%20that%20cursors%20won't%20look%20horrible%20on%20high%20DPI%20displays.%20For%0A%20%20%20%20%2F%2F%20example%2C%20if%20the%20cursor%20will%20display%20at%2032x32%20in%20DPI%20independent%20units%20on%20a%202x%20high%20DPI%0A%20%20%20%20%2F%2F%20display%2C%20we%20actually%20need%20to%20send%20a%2064x64%20image%20for%20it%20to%20look%20good.%20This%20lets%20us%20do%0A%20%20%20%20%2F%2F%20that%20automatically.%0A%20%20%20%20let%20svg%20%3D%20%60%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22%24%7Bwidth%7D%22%20height%3D%22%24%7Bheight%7D%22%3E%60%3B%0A%20%20%20%20svg%20%2B%3D%20%60%3Cimage%20href%3D%22%24%7BimageURI%7D%22%20width%3D%22%24%7Bwidth%7D%22%20height%3D%22%24%7Bheight%7D%22%20%2F%3E%60%3B%0A%20%20%20%20svg%20%2B%3D%20%22%3C%2Fsvg%3E%22%3B%0A%20%20%20%20%2F%2F%20URI%20encoding%20usually%20results%20in%20smaller%20string%20than%20base%2064%20for%20the%20types%20of%20data%20we%20get%20here.%0A%20%20%20%20const%20svgURI%20%3D%20%60data%3Aimage%2Fsvg%2Bxml%3B%2C%24%7BencodeURIComponent(svg)%7D%60%3B%0A%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20uri%3A%20svgURI%2C%0A%20%20%20%20%20%20width%2C%0A%20%20%20%20%20%20height%2C%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20%2F**%20%40type%20%7Bstring%7D%20*%2F%0A%20%20let%20nativeCursor%20%3D%20%22default%22%3B%0A%20%20%2F**%20%40type%20%7Bnull%7Cstring%7D%20*%2F%0A%20%20let%20customCursorImageName%20%3D%20null%3B%0A%0A%20%20const%20canvas%20%3D%20Scratch.renderer.canvas%3B%0A%20%20%2F**%20%40type%20%7Bstring%7D%20*%2F%0A%20%20let%20currentCanvasCursor%20%3D%20nativeCursor%3B%0A%20%20const%20updateCanvasCursor%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20if%20(canvas.style.cursor%20!%3D%3D%20currentCanvasCursor)%20%7B%0A%20%20%20%20%20%20canvas.style.cursor%20%3D%20currentCanvasCursor%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20scratch-gui%20will%20sometimes%20reset%20the%20cursor%20when%20resizing%20the%20window%20or%20going%20in%2Fout%20of%20fullscreen%0A%20%20new%20MutationObserver(updateCanvasCursor).observe(canvas%2C%20%7B%0A%20%20%20%20attributeFilter%3A%20%5B%22style%22%5D%2C%0A%20%20%20%20attributes%3A%20true%2C%0A%20%20%7D)%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Parse%20strings%20like%20%2260x12%22%20or%20%2277%2C1%22%0A%20%20%20*%20%40param%20%7Bstring%7D%20string%0A%20%20%20*%20%40returns%20%7B%5Bnumber%2C%20number%5D%7D%0A%20%20%20*%2F%0A%20%20const%20parseTuple%20%3D%20(string)%20%3D%3E%20%7B%0A%20%20%20%20const%20%5Ba%2C%20b%5D%20%3D%20(%22%22%20%2B%20string).split(%2F%5B%20%2Cx%5D%2F)%3B%0A%20%20%20%20return%20%5B%2Ba%20%7C%7C%200%2C%20%2Bb%20%7C%7C%200%5D%3B%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7Bstring%7D%20size%20eg.%20%2248x84%22%0A%20%20%20*%20%40returns%20%7Bstring%7D%0A%20%20%20*%2F%0A%20%20const%20formatUnreliableSize%20%3D%20(size)%20%3D%3E%0A%20%20%20%20Scratch.translate(%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20default%3A%20%22%7Bsize%7D%20(unreliable)%22%2C%0A%20%20%20%20%20%20%20%20description%3A%20%22%5Bsize%5D%20is%20replaced%20with%20a%20size%20in%20pixels%20such%20as%20'48x48'%22%2C%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7B%20size%20%7D%0A%20%20%20%20)%3B%0A%0A%20%20const%20cursors%20%3D%20%5B%0A%20%20%20%20%22default%22%2C%0A%20%20%20%20%22pointer%22%2C%0A%20%20%20%20%22move%22%2C%0A%20%20%20%20%22grab%22%2C%0A%20%20%20%20%22grabbing%22%2C%0A%20%20%20%20%22text%22%2C%0A%20%20%20%20%22vertical-text%22%2C%0A%20%20%20%20%22wait%22%2C%0A%20%20%20%20%22progress%22%2C%0A%20%20%20%20%22help%22%2C%0A%20%20%20%20%22context-menu%22%2C%0A%20%20%20%20%22zoom-in%22%2C%0A%20%20%20%20%22zoom-out%22%2C%0A%20%20%20%20%22crosshair%22%2C%0A%20%20%20%20%22cell%22%2C%0A%20%20%20%20%22not-allowed%22%2C%0A%20%20%20%20%22copy%22%2C%0A%20%20%20%20%22alias%22%2C%0A%20%20%20%20%22no-drop%22%2C%0A%20%20%20%20%22all-scroll%22%2C%0A%20%20%20%20%22col-resize%22%2C%0A%20%20%20%20%22row-resize%22%2C%0A%20%20%20%20%22n-resize%22%2C%0A%20%20%20%20%22e-resize%22%2C%0A%20%20%20%20%22s-resize%22%2C%0A%20%20%20%20%22w-resize%22%2C%0A%20%20%20%20%22ne-resize%22%2C%0A%20%20%20%20%22nw-resize%22%2C%0A%20%20%20%20%22se-resize%22%2C%0A%20%20%20%20%22sw-resize%22%2C%0A%20%20%20%20%22ew-resize%22%2C%0A%20%20%20%20%22ns-resize%22%2C%0A%20%20%20%20%22nesw-resize%22%2C%0A%20%20%20%20%22nwse-resize%22%2C%0A%20%20%5D%3B%0A%0A%20%20class%20MouseCursor%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20Scratch.vm.runtime.on(%22RUNTIME_DISPOSED%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20this.setCur(%7B%0A%20%20%20%20%20%20%20%20%20%20cur%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22MouseCursor%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Mouse%20Cursor%22)%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setCur%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20cursor%20to%20%5Bcur%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20cur%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22pointer%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22cursors%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setCursorImage%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22set%20cursor%20to%20current%20costume%20center%3A%20%5Bposition%5D%20max%20size%3A%20%5Bsize%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20position%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%2C0%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22imagePositions%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20size%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2232x32%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22imageSizes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22hideCur%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22hide%20cursor%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getCur%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22cursor%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20cursors%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20cursors%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20imagePositions%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%5Bx%2C%20y%5D%20where%20x%20is%20%5B0%3Dleft%2C%20100%3Dright%5D%20and%20y%20is%20%5B0%3Dtop%2C%20100%3Dbottom%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20Scratch.translate(%22top%20left%22)%2C%20value%3A%20%220%2C0%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20Scratch.translate(%22top%20right%22)%2C%20value%3A%20%22100%2C0%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20Scratch.translate(%22bottom%20left%22)%2C%20value%3A%20%220%2C100%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20Scratch.translate(%22bottom%20right%22)%2C%20value%3A%20%22100%2C100%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20Scratch.translate(%22center%22)%2C%20value%3A%20%2250%2C50%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20imageSizes%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Some%20important%20numbers%20to%20keep%20in%20mind%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Browsers%20ignore%20cursor%20images%20%3E128%20in%20any%20dimension%20(https%3A%2F%2Fsearchfox.org%2Fmozilla-central%2Frev%2F43ee5e789b079e94837a21336e9ce2420658fd19%2Fwidget%2Fgtk%2FnsWindow.cpp%233393-3402)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Browsers%20may%20refuse%20to%20display%20a%20cursor%20near%20window%20borders%20for%20images%20%3E32%20in%20any%20dimension%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%224x4%22%2C%20value%3A%20%224x4%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%228x8%22%2C%20value%3A%20%228x4%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%2212x12%22%2C%20value%3A%20%2212x12%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%2216x16%22%2C%20value%3A%20%2216x16%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%2232x32%22%2C%20value%3A%20%2232x32%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20formatUnreliableSize(%2248x48%22)%2C%20value%3A%20%2248x48%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20formatUnreliableSize(%2264x64%22)%2C%20value%3A%20%2264x64%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20formatUnreliableSize(%22128x128%22)%2C%20value%3A%20%22128x128%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setCur(args)%20%7B%0A%20%20%20%20%20%20const%20newCursor%20%3D%20Scratch.Cast.toString(args.cur)%3B%0A%20%20%20%20%20%20%2F%2F%20Prevent%20setting%20cursor%20to%20%22url(...)%2C%20default%22%20from%20causing%20fetch.%0A%20%20%20%20%20%20if%20(cursors.includes(newCursor)%20%7C%7C%20newCursor%20%3D%3D%3D%20%22none%22)%20%7B%0A%20%20%20%20%20%20%20%20nativeCursor%20%3D%20newCursor%3B%0A%20%20%20%20%20%20%20%20customCursorImageName%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20currentCanvasCursor%20%3D%20newCursor%3B%0A%20%20%20%20%20%20%20%20updateCanvasCursor()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20setCursorImage(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20%5BmaxWidth%2C%20maxHeight%5D%20%3D%20parseTuple(args.size).map((i)%20%3D%3E%0A%20%20%20%20%20%20%20%20Math.max(0%2C%20i)%0A%20%20%20%20%20%20)%3B%0A%0A%20%20%20%20%20%20const%20currentCostume%20%3D%0A%20%20%20%20%20%20%20%20util.target.getCostumes()%5Butil.target.currentCostume%5D%3B%0A%20%20%20%20%20%20const%20costumeName%20%3D%20currentCostume.name%3B%0A%0A%20%20%20%20%20%20let%20encodedCostume%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20encodedCostume%20%3D%20costumeToCursor(currentCostume%2C%20maxWidth%2C%20maxHeight)%3B%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20This%20could%20happen%20for%20a%20variety%20of%20reasons.%0A%20%20%20%20%20%20%20%20console.error(e)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(encodedCostume)%20%7B%0A%20%20%20%20%20%20%20%20const%20%5BpercentX%2C%20percentY%5D%20%3D%20parseTuple(args.position).map(%0A%20%20%20%20%20%20%20%20%20%20(i)%20%3D%3E%20Math.max(0%2C%20Math.min(100%2C%20i))%20%2F%20100%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%20%20const%20x%20%3D%20percentX%20*%20encodedCostume.width%3B%0A%20%20%20%20%20%20%20%20const%20y%20%3D%20percentY%20*%20encodedCostume.height%3B%0A%0A%20%20%20%20%20%20%20%20currentCanvasCursor%20%3D%20%60url(%22%24%7BencodedCostume.uri%7D%22)%20%24%7Bx%7D%20%24%7By%7D%2C%20%24%7BnativeCursor%7D%60%3B%0A%20%20%20%20%20%20%20%20updateCanvasCursor()%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20for%20some%20reason%20the%20costume%20couldn't%20be%20encoded%2C%20we'll%20leave%20the%20cursor%20unchanged.%0A%20%20%20%20%20%20%20%20%2F%2F%20This%20is%20the%20same%20behavior%20that%20would%20happen%20if%20we%20successfully%20encode%20a%20cursor%20but%20the%20browser%0A%20%20%20%20%20%20%20%20%2F%2F%20is%20unable%20to%20parse%20it%20for%20some%20reason.%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20customCursorImageName%20%3D%20costumeName%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20hideCur()%20%7B%0A%20%20%20%20%20%20this.setCur(%7B%0A%20%20%20%20%20%20%20%20cur%3A%20%22none%22%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getCur()%20%7B%0A%20%20%20%20%20%20if%20(customCursorImageName%20!%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20return%20customCursorImageName%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20nativeCursor%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20MouseCursor())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Network%0A%2F%2F%20ID%3A%20truefantomnetwork%0A%2F%2F%20Description%3A%20Various%20blocks%20for%20interacting%20with%20the%20network.%0A%2F%2F%20By%3A%20TrueFantom%20%3Chttps%3A%2F%2Fscratch.mit.edu%2Fusers%2FTrueFantom%2F%3E%0A%2F%2F%20License%3A%20MIT%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_Network%22%3A%22Netzwerk%22%7D%2C%22fi%22%3A%7B%22_(1)%20text%22%3A%22(1)%20teksti%22%2C%22_(3)%20status%20ok%3F%22%3A%22(3)%20onko%20tila%20ok%3F%22%2C%22_(4)%20status%22%3A%22(4)%20tila%22%2C%22_(5%201)%20status%20text%20and%20text%22%3A%22(5%201)%20tilateksti%20ja%20teksti%22%2C%22_(5)%20status%20text%22%3A%22(5)%20tilateksti%22%2C%22_(6%204)%20type%20and%20status%22%3A%22(6%204)%20tyyppi%20ja%20tila%22%2C%22_(6)%20type%22%3A%22(6)%20tyyppi%22%2C%22_(7)%20redirected%3F%22%3A%22(7)%20onko%20uudelleenohjattu%3F%22%2C%22_(9)%20body%20used%3F%22%3A%22(9)%20onko%20runkoa%20k%C3%A4ytetty%3F%22%2C%22_Network%22%3A%22Verkko%22%2C%22_apple%22%3A%22omena%22%2C%22_browser%22%3A%22selain%22%2C%22_connected%20to%20internet%3F%22%3A%22onko%20yhteydess%C3%A4%20internetiin%3F%22%2C%22_current%20url%22%3A%22nykyinen%20url-osoite%22%2C%22_default%22%3A%22oletus%22%2C%22_delete%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20delete-pyynt%C3%B6%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_downlink%20max%20speed%20in%20mb%2Fs%22%3A%22enimm%C3%A4isvastaanottovauhti%20megabittein%C3%A4%20sekunnissa%22%2C%22_downlink%20speed%20in%20mb%2Fs%22%3A%22vastaanottonopeus%20megabittein%C3%A4%20sekunnissa%22%2C%22_get%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20get-pyynt%C3%B6%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_network%20generation%22%3A%22verkon%20sukupolvi%22%2C%22_network%20type%22%3A%22verkon%20tyyppi%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20tab%22%3A%22avaa%20%5BUSER_URL%5D%20uudessa%20v%C3%A4lilehdess%C3%A4%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%3A%22avaa%20%5BUSER_URL%5D%20uudessa%20ikkunassa%3A%20leveys%20%5BWIDTH%5D%20korkeus%3A%20%5BHEIGHT%5D%20vasen%20sijainti%3A%20%5BLEFT%5D%20yl%C3%A4sijainti%3A%20%5BTOP%5D%22%2C%22_patch%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20patch-pyynt%C3%B6%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_post%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20post-pyynt%C3%B6%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_put%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20put-pyynt%C3%B6%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_redirect%20this%20tab%20to%20%5BUSER_URL%5D%22%3A%22siirry%20osoitteeseen%20%5BUSER_URL%5D%20t%C3%A4ll%C3%A4%20v%C3%A4lilehdell%C3%A4%22%2C%22_rtt%20in%20ms%22%3A%22viive%20millisekunteina%22%7D%2C%22it%22%3A%7B%22_Network%22%3A%22Rete%22%2C%22_apple%22%3A%22mela%22%7D%2C%22ja%22%3A%7B%22_Network%22%3A%22%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%22%2C%22_apple%22%3A%22%E3%82%8A%E3%82%93%E3%81%94%22%2C%22_browser%22%3A%22%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%22%7D%2C%22ko%22%3A%7B%22_Network%22%3A%22%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%22%2C%22_browser%22%3A%22%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%22%2C%22_connected%20to%20internet%3F%22%3A%22%EC%9D%B8%ED%84%B0%EB%84%B7%EC%97%90%20%EC%97%B0%EA%B2%B0%EB%90%98%EC%97%88%EB%8A%94%EA%B0%80%3F%22%2C%22_current%20url%22%3A%22%ED%98%84%EC%9E%AC%20URL%22%2C%22_default%22%3A%22%EA%B8%B0%EB%B3%B8%22%7D%2C%22nb%22%3A%7B%22_Network%22%3A%22Nettverk%22%2C%22_browser%22%3A%22nettleser%22%7D%2C%22nl%22%3A%7B%22_Network%22%3A%22Netwerk%22%2C%22_apple%22%3A%22appel%22%2C%22_default%22%3A%22standaard%22%7D%2C%22pl%22%3A%7B%22_browser%22%3A%22przegl%C4%85darka%22%7D%2C%22ru%22%3A%7B%22_Network%22%3A%22%D0%A1%D0%B5%D1%82%D1%8C%22%2C%22_apple%22%3A%22%D1%8F%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%22%2C%22_browser%22%3A%22%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%22%2C%22_default%22%3A%22%D0%BF%D0%BE%20%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E%22%7D%2C%22zh-cn%22%3A%7B%22_(1)%20text%22%3A%22(1)%20%E6%96%87%E6%9C%AC%22%2C%22_(3)%20status%20ok%3F%22%3A%22(3)%20%E7%8A%B6%E6%80%81%20ok%3F%22%2C%22_(4)%20status%22%3A%22(4)%20%E7%8A%B6%E6%80%81%22%2C%22_(5%201)%20status%20text%20and%20text%22%3A%22(5%201)%20%E7%8A%B6%E6%80%81%E6%96%87%E6%9C%AC%E5%92%8C%E6%96%87%E6%9C%AC%22%2C%22_(5)%20status%20text%22%3A%22(5)%20%E7%8A%B6%E6%80%81%E6%96%87%E6%9C%AC%22%2C%22_(6%204)%20type%20and%20status%22%3A%22(6%204)%20%E7%B1%BB%E5%9E%8B%E5%92%8C%E7%8A%B6%E6%80%81%22%2C%22_(6)%20type%22%3A%22(6)%20%E7%B1%BB%E5%9E%8B%22%2C%22_(7)%20redirected%3F%22%3A%22(7)%20%E5%B7%B2%E9%87%8D%E5%AE%9A%E5%90%91%EF%BC%9F%22%2C%22_(9)%20body%20used%3F%22%3A%22(9)%20%E8%AF%B7%E6%B1%82%E4%BD%93%E5%B7%B2%E4%BD%BF%E7%94%A8%EF%BC%9F%22%2C%22_Network%22%3A%22%E7%BD%91%E7%BB%9C%22%2C%22_apple%22%3A%22%E8%8B%B9%E6%9E%9C%22%2C%22_browser%22%3A%22%E6%B5%8F%E8%A7%88%E5%99%A8%E5%90%8D%E7%A7%B0%22%2C%22_connected%20to%20internet%3F%22%3A%22%E5%B7%B2%E8%81%94%E7%BD%91%EF%BC%9F%22%2C%22_current%20url%22%3A%22%E5%BD%93%E5%89%8Durl%22%2C%22_default%22%3A%22%E9%BB%98%E8%AE%A4%E7%B1%BB%E5%9E%8B%22%2C%22_delete%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22%E5%88%A0%E9%99%A4%5BUSER_URL%5D%E7%9A%84%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_downlink%20max%20speed%20in%20mb%2Fs%22%3A%22%E6%9C%80%E5%A4%A7%E4%B8%8B%E8%A1%8C%E9%80%9F%E5%BA%A6%20mb%2Fs%22%2C%22_downlink%20speed%20in%20mb%2Fs%22%3A%22%E4%B8%8B%E8%A1%8C%E9%80%9F%E5%BA%A6%20mb%2Fs%22%2C%22_get%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22%E8%8E%B7%E5%8F%96%5BUSER_URL%5D%E7%9A%84%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_network%20generation%22%3A%22%E7%BD%91%E7%BB%9C%E4%BB%A3%E9%99%85%22%2C%22_network%20type%22%3A%22%E7%BD%91%E7%BB%9C%E7%B1%BB%E5%9E%8B%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20tab%22%3A%22%E5%9C%A8%E6%96%B0%E6%A0%87%E7%AD%BE%E9%A1%B5%E6%89%93%E5%BC%80%5BUSER_URL%5D%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%3A%22%E5%9C%A8%E6%96%B0%E7%AA%97%E5%8F%A3%E6%89%93%E5%BC%80%5BUSER_URL%5D%20%E5%AE%BD%3A%20%5BWIDTH%5D%20%E9%AB%98%3A%20%5BHEIGHT%5D%20%E5%B7%A6%3A%20%5BLEFT%5D%20%E4%B8%8A%3A%20%5BTOP%5D%22%2C%22_patch%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22patch%5BCONTENT_TYPE%5D%5BBODY%5D%E7%9A%84%5BUSER_URL%5D%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_post%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22post%5BCONTENT_TYPE%5D%5BBODY%5D%E7%9A%84%5BUSER_URL%5D%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_put%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22put%5BCONTENT_TYPE%5D%5BBODY%5D%E7%9A%84%5BUSER_URL%5D%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_redirect%20this%20tab%20to%20%5BUSER_URL%5D%22%3A%22%E8%B7%B3%E8%BD%AC%E5%88%B0%5BUSER_URL%5D%22%2C%22_rtt%20in%20ms%22%3A%22%E5%BE%80%E8%BF%94%E6%97%B6%E5%BB%B6%20ms%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F((Scratch)%20%3D%3E%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20const%20icon%20%3D%0A%20%20%20%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2aWV3Qm94PSIwLDAsMjI1LjM1NDgsMjI1LjM1NDgiIGhlaWdodD0iMjI1LjM1NDgiIHdpZHRoPSIyMjUuMzU0OCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI3LjMyMjc0LC02Ny4zMjI2KSI%2BPGcgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiIHN0cm9rZS1kYXNob2Zmc2V0PSIwIiBzdHJva2UtZGFzaGFycmF5PSIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZT0ibm9uZSIgZmlsbC1ydWxlPSJub256ZXJvIiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iPjxwYXRoIHN0cm9rZS13aWR0aD0iMCIgZmlsbD0iIzE0NjYwMCIgZD0iTTEyNy4zMjI3NSwxODBjMCwtNjIuMjMwMDEgNTAuNDQ3MzksLTExMi42Nzc0IDExMi42Nzc0LC0xMTIuNjc3NGM2Mi4yMzAwMSwwIDExMi42Nzc0LDUwLjQ0NzM5IDExMi42Nzc0LDExMi42Nzc0YzAsNjIuMjMwMDEgLTUwLjQ0NzM5LDExMi42Nzc0IC0xMTIuNjc3NCwxMTIuNjc3NGMtNjIuMjMwMDEsMCAtMTEyLjY3NzQsLTUwLjQ0NzM5IC0xMTIuNjc3NCwtMTEyLjY3NzR6Ij48L3BhdGg%2BPGcgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSIjZmZmZmZmIj48cGF0aCBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZD0iTTI2MS4zNjIzNSwxNDYuNjIzNTlsLTUuMTUwOTcsNS4yNzQ2MmwtMTMuMTg1NTEsLTEyLjIzOTg5bDE5LjIzNjg5LC0xOS40OTU4OWMxMC41OTE0NywtMTAuNTkxNDcgMjcuNzU4NCwtMTAuNTkxNDcgMzguMzQxMTIsMGwxMi43ODAzOCwxMi43ODAzOGMxMC41OTE0NywxMC41ODI3MSAxMC41OTE0NywyNy43NDk2NSAwLDM4LjM0MTEybC0zOC4zNDExMiwzOC4zNDExMmMtMTAuNTkxNDcsMTAuNTg2OTUgLTI3Ljc0OTY1LDEwLjU4Njk1IC0zOC4zNDExMiwwbC0xMi43ODAzNywtMTIuNzgwMzdsLTEyLjY3Mzc4LC0xMy4yMjYxMmwxMi4yNjMwNCwtMTIuNDMzbDI1Ljk3MTQ5LDI1LjY1OTEyYzMuNTIxNzQsMy41MjE3NCA5LjI1ODY0LDMuNTIxNzQgMTIuNzgwMzgsMGwzOC4zNDExMiwtMzguMzQxMTJjMy41MzA0OSwtMy41MzA0OSAzLjUzMDQ5LC05LjI1ODY0IDAsLTEyLjc4MDM4bC0xMi43ODAzNywtMTIuNzgwMzdjLTMuNTIxNzQsLTMuNTIxNzMgLTkuMjQ5ODgsLTMuNTMwNDkgLTEyLjc4MDM4LDBsLTEzLjY4MDc5LDEzLjY4MDc5eiI%2BPC9wYXRoPjxwYXRoIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBkPSJNMjE4LjYzNzczLDIxMy4zNzY0bDUuMTUwOTcsLTUuMjc0NjJsMTMuMTg1NTEsMTIuMjM5ODlsLTE5LjIzNjg5LDE5LjQ5NTg5Yy0xMC41OTE0NywxMC41OTE0NyAtMjcuNzU4NCwxMC41OTE0NyAtMzguMzQxMTIsMGwtMTIuNzgwMzgsLTEyLjc4MDM4Yy0xMC41OTE0NywtMTAuNTgyNzEgLTEwLjU5MTQ3LC0yNy43NDk2NSAwLC0zOC4zNDExMWwzOC4zNDExMiwtMzguMzQxMTJjMTAuNTkxNDcsLTEwLjU4Njk1IDI3Ljc0OTY1LC0xMC41ODY5NSAzOC4zNDExMiwwbDEyLjc4MDM3LDEyLjc4MDM3bDEyLjY3Mzc4LDEzLjIyNjEybC0xMi4yNjMwNSwxMi40MzNsLTI1Ljk3MTQ4LC0yNS42NTkxMmMtMy41MjE3NCwtMy41MjE3NCAtOS4yNTg2NCwtMy41MjE3NCAtMTIuNzgwMzgsMGwtMzguMzQxMTIsMzguMzQxMTJjLTMuNTMwNDksMy41MzA0OSAtMy41MzA0OSw5LjI1ODY0IDAsMTIuNzgwMzhsMTIuNzgwMzcsMTIuNzgwMzdjMy41MjE3NCwzLjUyMTczIDkuMjQ5ODgsMy41MzA0OSAxMi43ODAzOCwwbDEzLjY4MDc5LC0xMy42ODA3OXoiPjwvcGF0aD48L2c%2BPC9nPjwvZz48L3N2Zz48IS0tcm90YXRpb25DZW50ZXI6MTEyLjY3NzI1NToxMTIuNjc3NDA1LS0%2B%22%3B%0A%0A%20%20const%20fetch_url%20%3D%20(%0A%20%20%20%20%7B%20USER_URL%2C%20BODY%2C%20CONTENT_TYPE%2C%20RESPONSES_TYPES%2C%20SPLIT%20%7D%2C%0A%20%20%20%20METHOD%0A%20%20)%20%3D%3E%20%7B%0A%20%20%20%20SPLIT%20%3D%20String(SPLIT)%3B%0A%20%20%20%20CONTENT_TYPE%20%3D%20Number(CONTENT_TYPE)%3B%0A%20%20%20%20RESPONSES_TYPES%20%3D%0A%20%20%20%20%20%20String(RESPONSES_TYPES)%0A%20%20%20%20%20%20%20%20.split(%22%20%22)%0A%20%20%20%20%20%20%20%20.filter((word)%20%3D%3E%20word%20!%3D%3D%20%22%22).length%20%3E%3D%201%0A%20%20%20%20%20%20%20%20%3F%20String(RESPONSES_TYPES)%0A%20%20%20%20%20%20%20%20%20%20%20%20.split(%22%20%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20.filter((word)%20%3D%3E%20word%20!%3D%3D%20%22%22)%0A%20%20%20%20%20%20%20%20%3A%20%5B%229%22%5D%3B%0A%20%20%20%20let%20single%20%3D%20METHOD%20%3D%3D%3D%20%22GET%22%20%7C%7C%20METHOD%20%3D%3D%3D%20%22DELETE%22%3B%0A%20%20%20%20return%20Scratch.fetch(String(USER_URL)%2C%20%7B%0A%20%20%20%20%20%20method%3A%20METHOD%2C%0A%20%20%20%20%20%20headers%3A%20single%0A%20%20%20%20%20%20%20%20%3F%20%7B%7D%0A%20%20%20%20%20%20%20%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Content-Type%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONTENT_TYPE%20%3D%3D%3D%201%20%3F%20%22text%2Fplain%22%20%3A%20%22application%2Fjson%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20redirect%3A%20single%20%3F%20%22follow%22%20%3A%20%22follow%22%2C%0A%20%20%20%20%20%20body%3A%20CONTENT_TYPE%20%3D%3D%3D%201%20%3F%20String(BODY)%20%3A%20JSON.stringify(BODY)%2C%0A%20%20%20%20%7D)%0A%20%20%20%20%20%20.then((res)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20const%20responses%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%3D%20RESPONSES_TYPES.length%20-%201%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20switch%20(Number(RESPONSES_TYPES%5Bi%5D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.text())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%202%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(JSON.stringify(res.json()))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%203%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(String(res.ok))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%204%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.status)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%205%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.statusText)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%206%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.type)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%207%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(String(res.redirected))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%208%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.url)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%209%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(single%20%3F%20res.url%20%3A%20String(res.bodyUsed))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20Promise.all(responses)%3B%0A%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20.then((arr)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20responses%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%3D%20RESPONSES_TYPES.length%20-%201%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20responses%20%2B%3D%20SPLIT%20%2B%20arr%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20SPLIT%20%3D%3D%3D%20%22%22%20%3F%20responses%20%3A%20responses.slice(1)%3B%0A%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20.catch((err)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20console.error(err)%3B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%7D%3B%0A%0A%20%20class%20Network%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22truefantomnetwork%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Network%22)%2C%0A%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23146600%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%23125C00%22%2C%0A%20%20%20%20%20%20%20%20color3%3A%20%22%23105200%22%2C%0A%0A%20%20%20%20%20%20%20%20menuIconURI%3A%20icon%2C%0A%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22connected_to_internet_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22connected%20to%20internet%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22browser_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22browser%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22current_url_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22current%20url%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22network_type_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22network%20type%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22network_generation_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22network%20generation%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22downlink_speed_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22downlink%20speed%20in%20mb%2Fs%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22downlink_max_speed_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22downlink%20max%20speed%20in%20mb%2Fs%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22rtt_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22rtt%20in%20ms%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22get_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22get%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fget%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22only_url_response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22delete_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22delete%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fdelete%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22only_url_response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22post_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22post%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fpost%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BODY%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.translate(%22apple%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONTENT_TYPE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22content_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22put_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22put%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fput%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BODY%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.translate(%22apple%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONTENT_TYPE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22content_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22patch_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22patch%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fpatch%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BODY%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.translate(%22apple%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONTENT_TYPE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22content_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22open_link_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22open%20%5BUSER_URL%5D%20in%20new%20tab%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22open_window_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20WIDTH%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20HEIGHT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20LEFT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TOP%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22redirect_link_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22redirect%20this%20tab%20to%20%5BUSER_URL%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20content_type%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(1)%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(2)%20json%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20only_url_response_type%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(1)%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(2)%20json%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(3)%20status%20ok%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%223%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(4)%20status%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%224%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(5)%20status%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%225%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(5%201)%20status%20text%20and%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%225%201%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(6)%20type%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%226%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(6%204)%20type%20and%20status%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%226%204%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(7)%20redirected%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%227%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(8)%20url%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%228%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20response_type%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(1)%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(2)%20json%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(3)%20status%20ok%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%223%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(4)%20status%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%224%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(5)%20status%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%225%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(5%201)%20status%20text%20and%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%225%201%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(6)%20type%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%226%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(6%204)%20type%20and%20status%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%226%204%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(7)%20redirected%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%227%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(8)%20url%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%228%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(9)%20body%20used%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%229%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20default%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22default%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20connected_to_internet_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20navigator.onLine%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20browser_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20let%20has%20%3D%20(input)%20%3D%3E%20navigator.userAgent.includes(input)%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Firefox%22))%20return%20%22firefox%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22SamsungBrowser%22))%20return%20%22samsung%20internet%22%3B%0A%20%20%20%20%20%20%20%20if%20((has(%22Opera%22)%20%7C%7C%20has(%22OPR%22))%20%26%26%20has(%22GX%22))%20return%20%22opera%20gx%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Opera%22)%20%7C%7C%20has(%22OPR%22))%20return%20%22opera%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Trident%22))%20return%20%22internet%20explorer%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Edge%22))%20return%20%22legacy%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Edg%22))%20return%20%22edge%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22YaBrowser%22)%20%7C%7C%20has(%22YaSearchBrowser%22))%20return%20%22yandex%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Miui%22))%20return%20%22mi%20browser%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22UBrowser%22))%20return%20%22uc%20browser%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Chrome%22))%20return%20%22chromium%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Safari%22))%20return%20%22safari%22%3B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20current_url_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20document.URL%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20network_type_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20switch%20(navigator.connection.type)%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20%22bluetooth%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22bluetooth%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22cellular%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22cellular%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22ethernet%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22ethernet%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22wifi%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22wi-fi%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22wimax%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22wimax%22%3B%0A%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20network_generation_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20switch%20(navigator.connection.effectiveType)%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20%22slow-2g%22%3A%0A%20%20%20%20%20%20%20%20%20%20case%20%222g%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%222g%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%223g%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%223g%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%224g%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%224g%22%3B%0A%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20downlink_speed_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20navigator.connection.downlink%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20downlink_max_speed_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20navigator.connection.downlinkMax%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20rtt_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20navigator.connection.rtt%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20get_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22GET%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20delete_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22DELETE%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20post_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22POST%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20put_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22PUT%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20patch_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22PATCH%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20open_link_block(%7B%20USER_URL%20%7D)%20%7B%0A%20%20%20%20%20%20Scratch.openWindow(USER_URL)%3B%0A%20%20%20%20%7D%0A%20%20%20%20open_window_block(%7B%20USER_URL%2C%20WIDTH%2C%20HEIGHT%2C%20LEFT%2C%20TOP%20%7D)%20%7B%0A%20%20%20%20%20%20let%20params%20%3D%20%22popup%3D1%22%3B%0A%20%20%20%20%20%20params%20%2B%3D%20isNaN(WIDTH)%0A%20%20%20%20%20%20%20%20%3F%20%22%22%0A%20%20%20%20%20%20%20%20%3A%20%60%2Cwidth%3D%24%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Number(WIDTH)%20%3C%20100%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20100%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(WIDTH)%20%3E%20window.screen.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20window.screen.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(WIDTH)%0A%20%20%20%20%20%20%20%20%20%20%7D%60%3B%0A%20%20%20%20%20%20params%20%2B%3D%20isNaN(HEIGHT)%0A%20%20%20%20%20%20%20%20%3F%20%22%22%0A%20%20%20%20%20%20%20%20%3A%20%60%2Cheight%3D%24%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Number(HEIGHT)%20%3C%20100%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20100%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(HEIGHT)%20%3E%20window.screen.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20window.screen.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(HEIGHT)%0A%20%20%20%20%20%20%20%20%20%20%7D%60%3B%0A%20%20%20%20%20%20params%20%2B%3D%20isNaN(LEFT)%0A%20%20%20%20%20%20%20%20%3F%20%22%22%0A%20%20%20%20%20%20%20%20%3A%20%60%2Cleft%3D%24%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Number(LEFT)%20%3C%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(LEFT)%20%3E%20window.screen.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20window.screen.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(LEFT)%0A%20%20%20%20%20%20%20%20%20%20%7D%60%3B%0A%20%20%20%20%20%20params%20%2B%3D%20isNaN(TOP)%0A%20%20%20%20%20%20%20%20%3F%20%22%22%0A%20%20%20%20%20%20%20%20%3A%20%60%2Ctop%3D%24%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Number(TOP)%20%3C%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(TOP)%20%3E%20window.screen.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20window.screen.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(TOP)%0A%20%20%20%20%20%20%20%20%20%20%7D%60%3B%0A%20%20%20%20%20%20Scratch.openWindow(String(USER_URL)%2C%20params)%3B%0A%20%20%20%20%7D%0A%20%20%20%20redirect_link_block(%7B%20USER_URL%20%7D)%20%7B%0A%20%20%20%20%20%20Scratch.redirect(USER_URL)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20Network())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Sound%0A%2F%2F%20ID%3A%20notSound%0A%2F%2F%20Description%3A%20Play%20sounds%20from%20URLs.%0A%2F%2F%20License%3A%20MIT%20AND%20MPL-2.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_Sound%22%3A%22Kl%C3%A4nge%22%7D%2C%22fi%22%3A%7B%22_Sound%22%3A%22%C3%84%C3%A4ni%22%2C%22_play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done%22%3A%22soita%20%C3%A4%C3%A4ni%20URL-osoitteesta%3A%20%5Bpath%5D%20loppuun%20%22%2C%22_start%20sound%20from%20url%3A%20%5Bpath%5D%22%3A%22soita%20%C3%A4%C3%A4ni%20URL-osoitteesta%3A%20%5Bpath%5D%22%7D%2C%22it%22%3A%7B%22_Sound%22%3A%22Suoni%22%2C%22_play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done%22%3A%22avvia%20riproduzione%20suono%20da%20url%3A%20%5Bpath%5D%20e%20attendi%20la%20fine%22%2C%22_start%20sound%20from%20url%3A%20%5Bpath%5D%22%3A%22riproduci%20suono%20da%20url%3A%20%5Bpath%5D%22%7D%2C%22ja%22%3A%7B%22_Sound%22%3A%22%E9%9F%B3%E5%A3%B0%22%7D%2C%22ko%22%3A%7B%22_Sound%22%3A%22%EC%86%8C%EB%A6%AC%22%7D%2C%22nb%22%3A%7B%22_Sound%22%3A%22Lyd%22%2C%22_play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done%22%3A%22spill%20lyd%20fra%20nettadresse%3A%20%5Bpath%5D%20til%20ferdig%22%2C%22_start%20sound%20from%20url%3A%20%5Bpath%5D%22%3A%22start%20lyd%20fra%20url%3A%20%5Bpath%5D%22%7D%2C%22nl%22%3A%7B%22_Sound%22%3A%22Geluid%22%2C%22_play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done%22%3A%22start%20geluid%20van%20URL%3A%20%5Bpath%5D%20en%20wacht%22%2C%22_start%20sound%20from%20url%3A%20%5Bpath%5D%22%3A%22start%20geluid%20van%20URL%3A%20%5Bpath%5D%22%7D%2C%22pl%22%3A%7B%22_Sound%22%3A%22D%C5%BAwi%C4%99k%22%7D%2C%22ru%22%3A%7B%22_Sound%22%3A%22%D0%97%D0%B2%D1%83%D0%BA%22%2C%22_play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done%22%3A%22%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C%20%D0%B7%D0%B2%D1%83%D0%BA%20%D0%B8%D0%B7%20url%3A%20%5Bpath%5D%20%D0%B4%D0%BE%20%D0%BA%D0%BE%D0%BD%D1%86%D0%B0%22%2C%22_start%20sound%20from%20url%3A%20%5Bpath%5D%22%3A%22%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20%D0%B7%D0%B2%D1%83%D0%BA%20%D0%B8%D0%B7%20url%3A%20%5Bpath%5D%22%7D%2C%22uk%22%3A%7B%22_Sound%22%3A%22%D0%97%D0%B2%D1%83%D0%BA%D0%B8%22%2C%22_play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done%22%3A%22%D0%B2%D1%96%D0%B4%D1%82%D0%B2%D0%BE%D1%80%D0%B8%D1%82%D0%B8%20%D0%B7%D0%B2%D1%83%D0%BA%20%D0%B7%20url%3B%20%5Bpath%5D%20%D0%B4%D0%BE%20%D0%BA%D1%96%D0%BD%D1%86%D1%8F%22%2C%22_start%20sound%20from%20url%3A%20%5Bpath%5D%22%3A%22%D0%B2%D1%96%D0%B4%D1%82%D0%B2%D0%BE%D1%80%D0%B8%D1%82%D0%B8%20%D0%B7%D0%B2%D1%83%D0%BA%20%D0%B7%20url%3B%20%5Bpath%5D%22%7D%2C%22zh-cn%22%3A%7B%22_Sound%22%3A%22%E5%A3%B0%E9%9F%B3%22%2C%22_play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done%22%3A%22%E6%92%AD%E6%94%BEURL%5Bpath%5D%E7%9A%84%E5%A3%B0%E9%9F%B3%E7%9B%B4%E5%88%B0%E7%BB%93%E6%9D%9F%22%2C%22_start%20sound%20from%20url%3A%20%5Bpath%5D%22%3A%22%E6%92%AD%E6%94%BEURL%5Bpath%5D%E7%9A%84%E5%A3%B0%E9%9F%B3%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F((Scratch)%20%3D%3E%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20const%20audioEngine%20%3D%20Scratch.vm.runtime.audioEngine%3B%0A%0A%20%20%2F**%0A%20%20%20*%20This%20method%20assumes%20that%20the%20caller%20has%20already%20requested%20permission%20to%20fetch%20the%20URL.%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0A%20%20%20*%20%40returns%20%7BPromise%3CArrayBuffer%3E%7D%0A%20%20%20*%2F%0A%20%20const%20fetchAsArrayBufferWithTimeout%20%3D%20(url)%20%3D%3E%0A%20%20%20%20new%20Promise((resolve%2C%20reject)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%2F%2F%20Permission%20is%20checked%20in%20playSound()%0A%20%20%20%20%20%20%2F%2F%20eslint-disable-next-line%20no-restricted-syntax%0A%20%20%20%20%20%20const%20xhr%20%3D%20new%20XMLHttpRequest()%3B%0A%20%20%20%20%20%20let%20timeout%20%3D%20setTimeout(()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20xhr.abort()%3B%0A%20%20%20%20%20%20%20%20reject(new%20Error(%22Timed%20out%22))%3B%0A%20%20%20%20%20%20%7D%2C%205000)%3B%0A%20%20%20%20%20%20xhr.onload%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20clearTimeout(timeout)%3B%0A%20%20%20%20%20%20%20%20if%20(xhr.status%20%3D%3D%3D%20200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20resolve(xhr.response)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20reject(new%20Error(%60HTTP%20error%20%24%7Bxhr.status%7D%20while%20fetching%20%24%7Burl%7D%60))%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20xhr.onerror%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20clearTimeout(timeout)%3B%0A%20%20%20%20%20%20%20%20reject(new%20Error(%60Failed%20to%20request%20%24%7Burl%7D%60))%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20xhr.responseType%20%3D%20%22arraybuffer%22%3B%0A%20%20%20%20%20%20xhr.open(%22GET%22%2C%20url)%3B%0A%20%20%20%20%20%20xhr.send()%3B%0A%20%20%20%20%7D)%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40type%20%7BMap%3Cstring%2C%20%7Bsound%3A%20AudioEngine.SoundPlayer%20%7C%20null%2C%20error%3A%20unknown%7D%3E%7D%0A%20%20%20*%2F%0A%20%20const%20soundPlayerCache%20%3D%20new%20Map()%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0A%20%20%20*%20%40returns%20%7BPromise%3CAudioEngine.SoundPlayer%3E%7D%0A%20%20%20*%2F%0A%20%20const%20decodeSoundPlayer%20%3D%20async%20(url)%20%3D%3E%20%7B%0A%20%20%20%20const%20cached%20%3D%20soundPlayerCache.get(url)%3B%0A%20%20%20%20if%20(cached)%20%7B%0A%20%20%20%20%20%20if%20(cached.sound)%20%7B%0A%20%20%20%20%20%20%20%20return%20cached.sound%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20throw%20cached.error%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20const%20arrayBuffer%20%3D%20await%20fetchAsArrayBufferWithTimeout(url)%3B%0A%20%20%20%20%20%20const%20soundPlayer%20%3D%20await%20audioEngine.decodeSoundPlayer(%7B%0A%20%20%20%20%20%20%20%20data%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20buffer%3A%20arrayBuffer%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20soundPlayerCache.set(url%2C%20%7B%0A%20%20%20%20%20%20%20%20sound%3A%20soundPlayer%2C%0A%20%20%20%20%20%20%20%20error%3A%20null%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20return%20soundPlayer%3B%0A%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20soundPlayerCache.set(url%2C%20%7B%0A%20%20%20%20%20%20%20%20sound%3A%20null%2C%0A%20%20%20%20%20%20%20%20error%3A%20e%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20throw%20e%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0A%20%20%20*%20%40param%20%7BVM.Target%7D%20target%0A%20%20%20*%20%40returns%20%7BPromise%3Cboolean%3E%7D%20true%20if%20the%20sound%20could%20be%20played%2C%20false%20if%20the%20sound%20could%20not%20be%20decoded%0A%20%20%20*%2F%0A%20%20const%20playWithAudioEngine%20%3D%20async%20(url%2C%20target)%20%3D%3E%20%7B%0A%20%20%20%20const%20soundBank%20%3D%20target.sprite.soundBank%3B%0A%0A%20%20%20%20%2F**%20%40type%20%7BAudioEngine.SoundPlayer%7D%20*%2F%0A%20%20%20%20let%20soundPlayer%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20const%20originalSoundPlayer%20%3D%20await%20decodeSoundPlayer(url)%3B%0A%20%20%20%20%20%20soundPlayer%20%3D%20originalSoundPlayer.take()%3B%0A%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20console.warn(%0A%20%20%20%20%20%20%20%20%22Could%20not%20fetch%20audio%3B%20falling%20back%20to%20primitive%20approach%22%2C%0A%20%20%20%20%20%20%20%20e%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20soundBank.addSoundPlayer(soundPlayer)%3B%0A%20%20%20%20await%20soundBank.playSound(target%2C%20soundPlayer.id)%3B%0A%0A%20%20%20%20delete%20soundBank.soundPlayers%5BsoundPlayer.id%5D%3B%0A%20%20%20%20soundBank.playerTargets.delete(soundPlayer.id)%3B%0A%20%20%20%20soundBank.soundEffects.delete(soundPlayer.id)%3B%0A%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20This%20method%20assumes%20that%20the%20caller%20has%20already%20requested%20permission%20to%20fetch%20the%20URL.%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0A%20%20%20*%20%40param%20%7BVM.Target%7D%20target%0A%20%20%20*%20%40returns%20%7BPromise%3Cvoid%3E%7D%0A%20%20%20*%2F%0A%20%20const%20playWithAudioElement%20%3D%20(url%2C%20target)%20%3D%3E%0A%20%20%20%20new%20Promise((resolve%2C%20reject)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%2F%2F%20Unfortunately%2C%20we%20can't%20play%20all%20sounds%20with%20the%20audio%20engine.%0A%20%20%20%20%20%20%2F%2F%20For%20these%20sounds%2C%20fall%20back%20to%20a%20primitive%20%3Caudio%3E-based%20solution%20that%20will%20work%20for%20all%0A%20%20%20%20%20%20%2F%2F%20sounds%2C%20even%20those%20without%20CORS.%0A%20%20%20%20%20%20%2F%2F%20Permission%20is%20checked%20in%20playSound()%0A%20%20%20%20%20%20%2F%2F%20eslint-disable-next-line%20no-restricted-syntax%0A%20%20%20%20%20%20const%20mediaElement%20%3D%20new%20Audio(url)%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Make%20a%20minimal%20effort%20to%20simulate%20Scratch's%20sound%20effects.%0A%20%20%20%20%20%20%2F%2F%20We%20can%20get%20pretty%20close%20for%20volumes%20%3C100%25.%0A%20%20%20%20%20%20%2F%2F%20playbackRate%20does%20not%20have%20enough%20range%20for%20simulating%20pitch.%0A%20%20%20%20%20%20%2F%2F%20There%20is%20no%20way%20for%20us%20to%20pan%20left%20or%20right.%0A%20%20%20%20%20%20mediaElement.volume%20%3D%20target.volume%20%2F%20100%3B%0A%0A%20%20%20%20%20%20mediaElement.onended%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20resolve()%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20mediaElement%0A%20%20%20%20%20%20%20%20.play()%0A%20%20%20%20%20%20%20%20.then(()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Wait%20for%20onended%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%20%20.catch((err)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20reject(err)%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D)%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0A%20%20%20*%20%40param%20%7BVM.Target%7D%20target%0A%20%20%20*%20%40returns%20%7BPromise%3Cvoid%3E%7D%0A%20%20%20*%2F%0A%20%20const%20playSound%20%3D%20async%20(url%2C%20target)%20%3D%3E%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20if%20(!(await%20Scratch.canFetch(url)))%20%7B%0A%20%20%20%20%20%20%20%20throw%20new%20Error(%60Permission%20to%20fetch%20%24%7Burl%7D%20denied%60)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20const%20success%20%3D%20await%20playWithAudioEngine(url%2C%20target)%3B%0A%20%20%20%20%20%20if%20(!success)%20%7B%0A%20%20%20%20%20%20%20%20return%20await%20playWithAudioElement(url%2C%20target)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20console.warn(%60All%20attempts%20to%20play%20%24%7Burl%7D%20failed%60%2C%20e)%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20class%20Sound%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20'sound'%20would%20conflict%20with%20normal%20Scratch%0A%20%20%20%20%20%20%20%20id%3A%20%22notSound%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Sound%22)%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22play%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22start%20sound%20from%20url%3A%20%5Bpath%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20path%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2Fmeow.mp3%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22playUntilDone%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20path%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2Fmeow.mp3%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20play(%7B%20path%20%7D%2C%20util)%20%7B%0A%20%20%20%20%20%20playSound(path%2C%20util.target)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20playUntilDone(%7B%20path%20%7D%2C%20util)%20%7B%0A%20%20%20%20%20%20return%20playSound(path%2C%20util.target)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20Sound())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Temporary%20Variables%0A%2F%2F%20ID%3A%20lmsTempVars2%0A%2F%2F%20Description%3A%20Create%20disposable%20runtime%20or%20thread%20variables.%0A%2F%2F%20By%3A%20LilyMakesThings%20%3Chttps%3A%2F%2Fscratch.mit.edu%2Fusers%2FLilyMakesThings%2F%3E%0A%2F%2F%20License%3A%20MIT%20AND%20LGPL-3.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_Temporary%20Variables%22%3A%22Tempor%C3%A4re%20Variablen%22%7D%2C%22fi%22%3A%7B%22_Runtime%20Variables%22%3A%22Ajonaikaiset%20muuttujat%22%2C%22_Temporary%20Variables%22%3A%22V%C3%A4liaikaiset%20muuttujat%22%2C%22_Thread%20Variables%22%3A%22S%C3%A4iemuuttujat%22%2C%22_active%20runtime%20variables%22%3A%22k%C3%A4yt%C3%B6ss%C3%A4%20olevat%20ajonaikaiset%20muuttujat%22%2C%22_active%20thread%20variables%22%3A%22k%C3%A4yt%C3%B6ss%C3%A4%20olevat%20s%C3%A4iemuuttujat%22%2C%22_change%20runtime%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22lis%C3%A4%C3%A4%20ajonaikaiseen%20muuttujaan%20%5BVAR%5D%20arvo%20%5BNUM%5D%22%2C%22_change%20thread%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22lis%C3%A4%C3%A4%20s%C3%A4iemuuttujaan%20%5BVAR%5D%20arvo%20%5BNUM%5D%22%2C%22_delete%20all%20runtime%20variables%22%3A%22poista%20kaikki%20ajonaikaiset%20muuttujat%22%2C%22_delete%20runtime%20var%20%5BVAR%5D%22%3A%22poista%20ajonaikainen%20muuttuja%20%5BVAR%5D%22%2C%22_for%20%5BVAR%5D%20in%20%5BNUM%5D%22%3A%22toista%20%5BNUM%5D%20kertaa%20ja%20laske%20s%C3%A4iemuuttujalla%20%5BVAR%5D%22%2C%22_runtime%20var%20%5BVAR%5D%22%3A%22ajonaikainen%20muuttuja%20%5BVAR%5D%22%2C%22_runtime%20var%20%5BVAR%5D%20exists%3F%22%3A%22onko%20ajonaikainen%20muuttuja%20%5BVAR%5D%20olemassa%3F%22%2C%22_set%20runtime%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22aseta%20ajonaikainen%20muuttuja%20%5BVAR%5D%20arvoon%20%5BSTRING%5D%20%22%2C%22_set%20thread%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22aseta%20s%C3%A4iemuuttuja%20%5BVAR%5D%20arvoon%20%5BSTRING%5D%22%2C%22_thread%20var%20%5BVAR%5D%22%3A%22s%C3%A4iemuuttuja%20%5BVAR%5D%22%2C%22_thread%20var%20%5BVAR%5D%20exists%3F%22%3A%22onko%20s%C3%A4iemuuttuja%20%5BVAR%5D%20olemassa%3F%22%7D%2C%22it%22%3A%7B%22_Temporary%20Variables%22%3A%22Variabili%20Temporanee%22%7D%2C%22ja%22%3A%7B%22_Temporary%20Variables%22%3A%22%E4%B8%80%E6%99%82%E5%A4%89%E6%95%B0%22%7D%2C%22ko%22%3A%7B%22_Runtime%20Variables%22%3A%22%EB%9F%B0%ED%83%80%EC%9E%84%20%EB%B3%80%EC%88%98%22%2C%22_Temporary%20Variables%22%3A%22%EC%9D%BC%EC%8B%9C%EC%A0%81%20%EB%B3%80%EC%88%98%22%2C%22_Thread%20Variables%22%3A%22%EC%8A%A4%EB%A0%88%EB%93%9C%20%EB%B3%80%EC%88%98%22%2C%22_active%20runtime%20variables%22%3A%22%ED%99%9C%EC%84%B1%ED%99%94%EB%90%9C%20%EB%9F%B0%ED%83%80%EC%9E%84%20%EB%B3%80%EC%88%98%20%EB%AA%A9%EB%A1%9D%22%2C%22_active%20thread%20variables%22%3A%22%ED%99%9C%EC%84%B1%ED%99%94%EB%90%9C%20%EC%8A%A4%EB%A0%88%EB%93%9C%20%EB%B3%80%EC%88%98%20%EB%AA%A9%EB%A1%9D%22%2C%22_change%20runtime%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22%EB%9F%B0%ED%83%80%EC%9E%84%20%EB%B3%80%EC%88%98%20%5BVAR%5D%EC%9D%84(%EB%A5%BC)%20%5BNUM%5D%EB%A7%8C%ED%81%BC%20%EB%B0%94%EA%BE%B8%EA%B8%B0%22%2C%22_change%20thread%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22%EC%8A%A4%EB%A0%88%EB%93%9C%20%EB%B3%80%EC%88%98%20%5BVAR%5D%EC%9D%84(%EB%A5%BC)%20%5BNUM%5D%EB%A7%8C%ED%81%BC%20%EB%B0%94%EA%BE%B8%EA%B8%B0%22%2C%22_delete%20all%20runtime%20variables%22%3A%22%EB%AA%A8%EB%93%A0%20%EB%9F%B0%ED%83%80%EC%9E%84%20%EB%B3%80%EC%88%98%20%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_delete%20runtime%20var%20%5BVAR%5D%22%3A%22%EB%9F%B0%ED%83%80%EC%9E%84%20%EB%B3%80%EC%88%98%20%5BVAR%5D%20%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_for%20%5BVAR%5D%20in%20%5BNUM%5D%22%3A%22%5BNUM%5D%EB%A7%8C%ED%81%BC%20%5BVAR%5D(%EC%9C%BC)%EB%A1%9C%20%EC%88%9C%ED%9A%8C%ED%95%98%EA%B8%B0%22%2C%22_runtime%20var%20%5BVAR%5D%22%3A%22%EB%9F%B0%ED%83%80%EC%9E%84%20%EB%B3%80%EC%88%98%20%5BVAR%5D%22%2C%22_runtime%20var%20%5BVAR%5D%20exists%3F%22%3A%22%EB%9F%B0%ED%83%80%EC%9E%84%20%EB%B3%80%EC%88%98%20%5BVAR%5D%EC%9D%B4(%EA%B0%80)%20%EC%A1%B4%EC%9E%AC%ED%95%98%EB%8A%94%EA%B0%80%3F%22%2C%22_set%20runtime%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22%EB%9F%B0%ED%83%80%EC%9E%84%20%EB%B3%80%EC%88%98%20%5BVAR%5D%EC%9D%84(%EB%A5%BC)%20%5BSTRING%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20thread%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22%EC%8A%A4%EB%A0%88%EB%93%9C%20%EB%B3%80%EC%88%98%20%5BVAR%5D%EC%9D%84(%EB%A5%BC)%20%5BSTRING%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_thread%20var%20%5BVAR%5D%22%3A%22%EC%8A%A4%EB%A0%88%EB%93%9C%20%EB%B3%80%EC%88%98%20%5BVAR%5D%22%2C%22_thread%20var%20%5BVAR%5D%20exists%3F%22%3A%22%EC%8A%A4%EB%A0%88%EB%93%9C%20%EB%B3%80%EC%88%98%20%5BVAR%5D%EC%9D%B4(%EA%B0%80)%20%EC%A1%B4%EC%9E%AC%ED%95%98%EB%8A%94%EA%B0%80%3F%22%7D%2C%22nb%22%3A%7B%22_Temporary%20Variables%22%3A%22Midlertidige%20variabler%22%7D%2C%22nl%22%3A%7B%22_Runtime%20Variables%22%3A%22Looptijdvariabelen%22%2C%22_Temporary%20Variables%22%3A%22Tijdelijke%20variabelen%22%2C%22_Thread%20Variables%22%3A%22Threadvariabelen%22%2C%22_active%20runtime%20variables%22%3A%22actieve%20looptijdvariabelen%22%2C%22_active%20thread%20variables%22%3A%22actieve%20threadvariabelen%22%2C%22_change%20runtime%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22verander%20looptijdvar.%20%5BVAR%5D%20met%20%5BNUM%5D%22%2C%22_change%20thread%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22verander%20threadvar.%20%5BVAR%5D%20met%20%5BNUM%5D%22%2C%22_delete%20all%20runtime%20variables%22%3A%22verwijder%20alle%20looptijdvariabelen%22%2C%22_delete%20runtime%20var%20%5BVAR%5D%22%3A%22verwijder%20looptijdvar.%20%5BVAR%5D%22%2C%22_for%20%5BVAR%5D%20in%20%5BNUM%5D%22%3A%22voor%20elke%20%5BVAR%5D%20in%20%5BNUM%5D%22%2C%22_runtime%20var%20%5BVAR%5D%22%3A%22looptijdvar.%20%5BVAR%5D%22%2C%22_runtime%20var%20%5BVAR%5D%20exists%3F%22%3A%22looptijdvar.%20%5BVAR%5D%20bestaat%3F%22%2C%22_set%20runtime%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22maak%20looptijdvar.%20%5BVAR%5D%20%5BSTRING%5D%22%2C%22_set%20thread%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22maak%20threadvar.%20%5BVAR%5D%20%5BSTRING%5D%22%2C%22_thread%20var%20%5BVAR%5D%22%3A%22threadvar.%20%5BVAR%5D%22%2C%22_thread%20var%20%5BVAR%5D%20exists%3F%22%3A%22threadvar.%20%5BVAR%5D%20bestaat%3F%22%7D%2C%22ru%22%3A%7B%22_Runtime%20Variables%22%3A%22%D0%92%D1%80%D0%B5%D0%BC%D1%8F%20%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%22%2C%22_Temporary%20Variables%22%3A%22%D0%92%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%22%2C%22_Thread%20Variables%22%3A%22%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%92%D0%B5%D1%82%D0%BA%D0%B8%22%2C%22_active%20runtime%20variables%22%3A%22%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%81%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B5%D0%BC%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%22%2C%22_active%20thread%20variables%22%3A%22%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%B2%D0%B5%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%22%2C%22_change%20runtime%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BVAR%5D%20%D0%B2%20%5BNUM%5D%22%2C%22_change%20thread%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%B2%D0%B5%D1%82%D0%BE%D1%87%D0%BD%D1%83%D1%8E%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20%5BVAR%5D%20%D0%BD%D0%B0%20%5BNUM%5D%22%2C%22_delete%20all%20runtime%20variables%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%81%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B5%D0%BC%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%22%2C%22_delete%20runtime%20var%20%5BVAR%5D%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20%5BVAR%5D%20%D1%81%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B5%D0%BC%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%22%2C%22_for%20%5BVAR%5D%20in%20%5BNUM%5D%22%3A%22%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D1%82%D1%8C%20%5BVAR%5D%20%D1%80%D0%B0%D0%B7%20%5BNUM%5D%22%2C%22_runtime%20var%20%5BVAR%5D%22%3A%22%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BVAR%5D%22%2C%22_runtime%20var%20%5BVAR%5D%20exists%3F%22%3A%22%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BVAR%5D%20%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82%3F%22%2C%22_set%20runtime%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%5BVAR%5D%20%D0%B2%20%5BSTRING%5D%22%2C%22_set%20thread%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D0%B2%D0%B5%D1%82%D0%BE%D1%87%D0%BD%D1%83%D1%8E%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20%5BVAR%5D%20%D0%B2%20%5BSTRING%5D%22%2C%22_thread%20var%20%5BVAR%5D%22%3A%22%D0%B2%D0%B5%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%5BVAR%5D%22%2C%22_thread%20var%20%5BVAR%5D%20exists%3F%22%3A%22%D0%B2%D0%B5%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%5BVAR%5D%20%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82%3F%22%7D%2C%22tr%22%3A%7B%22_Temporary%20Variables%22%3A%22Ge%C3%A7ici%20De%C4%9Fi%C5%9Fkenler%22%7D%2C%22uk%22%3A%7B%22_Temporary%20Variables%22%3A%22%D0%A2%D0%B8%D0%BC%D1%87%D0%B0%D1%81%D0%BE%D0%B2%D1%96%20%D0%97%D0%BC%D1%96%D0%BD%D0%BD%D1%96%22%7D%2C%22zh-cn%22%3A%7B%22_Runtime%20Variables%22%3A%22%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%22%2C%22_Temporary%20Variables%22%3A%22%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%22%2C%22_Thread%20Variables%22%3A%22%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%22%2C%22_active%20runtime%20variables%22%3A%22%E6%89%80%E6%9C%89%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%22%2C%22_active%20thread%20variables%22%3A%22%E6%89%80%E6%9C%89%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%22%2C%22_change%20runtime%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22%E5%B0%86%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%5BVAR%5D%E5%A2%9E%E5%8A%A0%5BNUM%5D%22%2C%22_change%20thread%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22%3A%22%E5%B0%86%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%5BVAR%5D%E5%A2%9E%E5%8A%A0%5BNUM%5D%22%2C%22_delete%20all%20runtime%20variables%22%3A%22%E5%88%A0%E9%99%A4%E6%89%80%E6%9C%89%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%22%2C%22_delete%20runtime%20var%20%5BVAR%5D%22%3A%22%E5%88%A0%E9%99%A4%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%5BVAR%5D%22%2C%22_for%20%5BVAR%5D%20in%20%5BNUM%5D%22%3A%22%E5%AF%B9%E4%BA%8E%5BNUM%5D%E4%B8%AD%E7%9A%84%E6%AF%8F%E4%B8%AA%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%5BVAR%5D%22%2C%22_runtime%20var%20%5BVAR%5D%22%3A%22%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%5BVAR%5D%22%2C%22_runtime%20var%20%5BVAR%5D%20exists%3F%22%3A%22%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%5BVAR%5D%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%EF%BC%9F%22%2C%22_set%20runtime%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%5BVAR%5D%E4%B8%BA%5BSTRING%5D%22%2C%22_set%20thread%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%5BVAR%5D%E4%B8%BA%5BSTRING%5D%22%2C%22_thread%20var%20%5BVAR%5D%22%3A%22%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%5BVAR%5D%22%2C%22_thread%20var%20%5BVAR%5D%20exists%3F%22%3A%22%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%5BVAR%5D%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%EF%BC%9F%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20%2F%2F%20Object.create(null)%20prevents%20%22variable%20%5BtoString%5D%22%20from%20returning%20a%20function%0A%20%20let%20runtimeVariables%20%3D%20Object.create(null)%3B%0A%0A%20%20%2F%2F%20Credit%20to%20skyhigh173%20for%20the%20idea%20of%20this%0A%20%20const%20label%20%3D%20(name%2C%20hidden)%20%3D%3E%20(%7B%0A%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0A%20%20%20%20text%3A%20name%2C%0A%20%20%20%20hideFromPalette%3A%20hidden%2C%0A%20%20%7D)%3B%0A%0A%20%20function%20resetRuntimeVariables()%20%7B%0A%20%20%20%20runtimeVariables%20%3D%20Object.create(null)%3B%0A%20%20%7D%0A%0A%20%20class%20TempVars%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20Scratch.vm.runtime.on(%22PROJECT_START%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20resetRuntimeVariables()%3B%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20Scratch.vm.runtime.on(%22PROJECT_STOP_ALL%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20resetRuntimeVariables()%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22lmsTempVars2%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Temporary%20Variables%22)%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23FF791A%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%23E15D00%22%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20label(Scratch.translate(%22Thread%20Variables%22)%2C%20false)%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setThreadVariable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20thread%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeThreadVariable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20thread%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getThreadVariable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22thread%20var%20%5BVAR%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20allowDropAnywhere%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22threadVariableExists%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22thread%20var%20%5BVAR%5D%20exists%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22forEachThreadVariable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LOOP%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22for%20%5BVAR%5D%20in%20%5BNUM%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22thread%20variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2210%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22listThreadVariables%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22active%20thread%20variables%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20label(Scratch.translate(%22Runtime%20Variables%22)%2C%20false)%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setRuntimeVariable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20runtime%20var%20%5BVAR%5D%20to%20%5BSTRING%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeRuntimeVariable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20runtime%20var%20%5BVAR%5D%20by%20%5BNUM%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getRuntimeVariable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22runtime%20var%20%5BVAR%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20allowDropAnywhere%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22runtimeVariableExists%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22runtime%20var%20%5BVAR%5D%20exists%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deleteRuntimeVariable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22delete%20runtime%20var%20%5BVAR%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22variable%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deleteAllRuntimeVariables%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22delete%20all%20runtime%20variables%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22listRuntimeVariables%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22active%20runtime%20variables%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F*%20THREAD%20VARIABLES%20*%2F%0A%0A%20%20%20%20setThreadVariable(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20thread%20%3D%20util.thread%3B%0A%20%20%20%20%20%20if%20(!thread.variables)%20thread.variables%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20const%20vars%20%3D%20thread.variables%3B%0A%20%20%20%20%20%20vars%5Bargs.VAR%5D%20%3D%20args.STRING%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20changeThreadVariable(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20thread%20%3D%20util.thread%3B%0A%20%20%20%20%20%20if%20(!thread.variables)%20thread.variables%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20const%20vars%20%3D%20thread.variables%3B%0A%20%20%20%20%20%20const%20prev%20%3D%20Scratch.Cast.toNumber(vars%5Bargs.VAR%5D)%3B%0A%20%20%20%20%20%20const%20next%20%3D%20Scratch.Cast.toNumber(args.NUM)%3B%0A%20%20%20%20%20%20vars%5Bargs.VAR%5D%20%3D%20prev%20%2B%20next%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getThreadVariable(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20thread%20%3D%20util.thread%3B%0A%20%20%20%20%20%20if%20(!thread.variables)%20thread.variables%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20const%20vars%20%3D%20thread.variables%3B%0A%20%20%20%20%20%20const%20varValue%20%3D%20vars%5Bargs.VAR%5D%3B%0A%20%20%20%20%20%20if%20(typeof%20varValue%20%3D%3D%3D%20%22undefined%22)%20return%20%22%22%3B%0A%20%20%20%20%20%20return%20varValue%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20threadVariableExists(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20thread%20%3D%20util.thread%3B%0A%20%20%20%20%20%20if%20(!thread.variables)%20thread.variables%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20const%20vars%20%3D%20thread.variables%3B%0A%20%20%20%20%20%20const%20varValue%20%3D%20vars%5Bargs.VAR%5D%3B%0A%20%20%20%20%20%20return%20!(typeof%20varValue%20%3D%3D%3D%20%22undefined%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20forEachThreadVariable(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20thread%20%3D%20util.thread%3B%0A%20%20%20%20%20%20if%20(!thread.variables)%20thread.variables%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20const%20vars%20%3D%20thread.variables%3B%0A%20%20%20%20%20%20if%20(typeof%20util.stackFrame.index%20%3D%3D%3D%20%22undefined%22)%20%7B%0A%20%20%20%20%20%20%20%20util.stackFrame.index%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(util.stackFrame.index%20%3C%20Number(args.NUM))%20%7B%0A%20%20%20%20%20%20%20%20util.stackFrame.index%2B%2B%3B%0A%20%20%20%20%20%20%20%20vars%5Bargs.VAR%5D%20%3D%20util.stackFrame.index%3B%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20listThreadVariables(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20thread%20%3D%20util.thread%3B%0A%20%20%20%20%20%20if%20(!thread.variables)%20thread.variables%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20const%20vars%20%3D%20thread.variables%3B%0A%20%20%20%20%20%20return%20Object.keys(vars).join(%22%2C%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F*%20RUNTIME%20VARIABLES%20*%2F%0A%0A%20%20%20%20setRuntimeVariable(args)%20%7B%0A%20%20%20%20%20%20runtimeVariables%5Bargs.VAR%5D%20%3D%20args.STRING%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20changeRuntimeVariable(args)%20%7B%0A%20%20%20%20%20%20const%20prev%20%3D%20Scratch.Cast.toNumber(runtimeVariables%5Bargs.VAR%5D)%3B%0A%20%20%20%20%20%20const%20next%20%3D%20Scratch.Cast.toNumber(args.NUM)%3B%0A%20%20%20%20%20%20runtimeVariables%5Bargs.VAR%5D%20%3D%20prev%20%2B%20next%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getRuntimeVariable(args)%20%7B%0A%20%20%20%20%20%20if%20(!(args.VAR%20in%20runtimeVariables))%20return%20%22%22%3B%0A%20%20%20%20%20%20return%20runtimeVariables%5Bargs.VAR%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20runtimeVariableExists(args)%20%7B%0A%20%20%20%20%20%20return%20args.VAR%20in%20runtimeVariables%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20listRuntimeVariables(args%2C%20util)%20%7B%0A%20%20%20%20%20%20return%20Object.keys(runtimeVariables).join(%22%2C%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20deleteRuntimeVariable(args)%20%7B%0A%20%20%20%20%20%20Reflect.deleteProperty(runtimeVariables%2C%20args.VAR)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20deleteAllRuntimeVariables()%20%7B%0A%20%20%20%20%20%20runtimeVariables%20%3D%20Object.create(null)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20Scratch.extensions.register(new%20TempVars())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%20%20const%20icon%20%3D%0A%20%20%20%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSItMjcuNTEzODgsLTI3LjUxMzg4LDIwMCwyMDAiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNjcuNTEzNzgsLTEwNy41MTM3OCkiPjxnIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2lzUGFpbnRpbmdMYXllciZxdW90Ozp0cnVlfSIgZmlsbC1ydWxlPSJub256ZXJvIiBzdHJva2UtbGluZWNhcD0iYnV0dCIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIiIHN0cm9rZS1kYXNob2Zmc2V0PSIwIiBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6IG5vcm1hbCI%2BPHBhdGggZD0iTTMxMC40ODYyMiwxMDkuNjM4Nzd2MzEuNzQ1MTdsLTEwLjA0MDU2LC0xMi4zODA2MmwtMTQuNzc1MSwxNS4yNzg5OWwtMTAuMDc3ODIsLTEwLjA3NzgybDE1LjI2Mjg3LC0xNC43NjAwMWwtMTIuMTE0NTUsLTkuODA1NzF6TTIwNC4yODIzMSwyMjUuNjcwNTVsLTE1LjI3MDkzLDE0Ljc2NzA1bDEyLjI0NzU3LDkuOTIzNjRoLTMxLjc0NTE3di0zMS43NDUxN2w5LjkyMzY3LDEyLjI0NzYxbDE0Ljc2NzA1LC0xNS4yNzA5M3pNMTY5LjYzODc3LDEwOS41MTM3OGgzMS43NDUxN2wtMTIuMzgwNjIsMTAuMDQwNTdsMTUuMjc4OTksMTQuNzc1MWwtMTAuMDc3ODIsMTAuMDc3ODJsLTE0Ljc2LC0xNS4yNjI4N2wtOS44MDU3MSwxMi4xMTQ1NnpNMjg1LjY3MDU1LDIxNS43MTc2OGwxNC43NjcwNCwxNS4yNzA5NGw5LjkyMzY0LC0xMi4yNDc1N3YzMS43NDUxN2gtMzEuNzQ1MTdsMTIuMjQ3NiwtOS45MjM2NmwtMTUuMjcwOTMsLTE0Ljc2NzA1eiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFhNjI2MiIgc3Ryb2tlLXdpZHRoPSI0Ii8%2BPHBhdGggZD0iTTI3OS45NTE2NCwyMDcuODA0OWMtMC44MjY0OSwwLjgzNDc5IC0xLjY3MzE0LDEuNjg5OTQgLTIuNDk5NjMsMi41MjQ3MmMtMS4yNzM0LDEuMDk2NjYgLTIuNjE0OTMsMi4xMTE2MiAtNC4wMTY1NSwzLjAzODhjLTAuODA5NzcsMC41NjE0MiAtMS42NTI5NCwxLjA3MzA5IC0yLjUyNDg1LDEuNTMyMTFsLTEuMzczOCwwLjc3Njc0Yy01LjYwODg3LDIuODUxNTIgLTExLjc3OTcyLDQuNDI1MjcgLTE4LjA2OTE1LDQuNjA4MjVjLTUuMzM4NDMsMC4xOTYxMyAtMTAuNjY1MTUsLTAuNjI5OTggLTE1LjY5MzQsLTIuNDMzODRjLTEuOTk0NDEsLTAuNzc4NzUgLTMuOTM0NywtMS42ODk1NCAtNS44MDc5OCwtMi43MjYzNWMtMS42MDU0NiwtMC45ODQ3MyAtMi45ODc1NSwtMS44NjkyNiAtNC4xMjY1NCwtMi43NTUwMWMtMC42NDA0MSwtMC40NTg0OSAtMS4yNTE4NiwtMC45NTYxNCAtMS44MzA4NSwtMS40OTAwOWwtMC40MDcyMSwtMC40MDMxNmwtMC42NzE5MSwtMC42NjUyMmMtMi4xNjQ5NCwtMS44NjUzOSAtMi40MjUxOSwtNS4xMjU3NyAtMC41ODM1NCwtNy4zMTA5NGwwLjIyMTc0LC0wLjIyMzk3YzEuNzUzMTYsLTEuNzg3OTEgNC41MzcyOCwtMi4wNTgxNSA2LjYwMTU2LC0wLjY0MDc5YzAsMCAwLjI4NTA1LDAuMjgyMjMgMC44MzM1OCwwLjU4MzM4YzAsMCAwLjI2NDY4LDAuMjYyMDUgMC41MDkwMSwwLjUwMzk1YzAuNDIxMTYsMC4zMDQzMiAwLjg2MjUyLDAuNTc5NjUgMS4zMjEwMiwwLjgyNDA2YzAuODUzMzMsMC40ODE5OSAxLjkyOTgyLDEuMDIzNjIgMy4xODg3MywxLjU4NDYyYzEuMzcyMDUsMC41NzY1MiAyLjc4MjUzLDEuMDU2ODggNC4yMjEyNiwxLjQzNzYzYzMuNjExOSwwLjg1NjQ3IDcuMzU1ODMsMS4wMDI5MSAxMS4wMjM2LDAuNDMxMTdjNC4wNzgyLC0wLjU5NjU5IDcuOTY5NDQsLTIuMTA0OTMgMTEuMzg0MzMsLTQuNDEyNzh2MGwwLjk2ODgxLC0wLjczNDJjMC40ODcwNSwtMC4zMjk3OCAwLjk1MjIsLTAuNjkwNzYgMS4zOTI1NCwtMS4wODA3NGwxLjM3MDc2LC0xLjM4NDUzbDAuODA2MzMsLTAuODE0NDNjMS4zMDExLC0xLjQzNDcxIDIuNDQ3NjksLTMuMDAyMyAzLjQyMDgzLC00LjY3Njg5YzEuNjk4OTgsLTIuOTA4MzMgMi44MTE3NCwtNi4xMjEzNSAzLjI3NTM4LC05LjQ1NzUyYzAuMDc3MzksLTAuNzI5NzQgMC4xNTQ5OSwtMS40MTg5OCAwLjE3MTcxLC0yLjEyODE2bC04LjEwMzgsMC4wNDA0OGMtMS42NDk5MywwLjAwNjQzIC0zLjE0MjcyLC0wLjk3NzQzIC0zLjc4NzQyLC0yLjQ5NjE5Yy0wLjY0NDcsLTEuNTE4NzYgLTAuMzE1NSwtMy4yNzYwOCAwLjgzNTI0LC00LjQ1ODQ4bDE3LjgxOTkxLC0xNy45OTg4NmMwLjc2NjA1LC0wLjc4NDY4IDEuODE0NjgsLTEuMjI5NTMgMi45MTEyNywtMS4yMzVjMS4wOTY1OCwtMC4wMDU0OCAyLjE0OTYxLDAuNDI4ODggMi45MjM0NywxLjIwNTg2bDE3Ljk3ODUsMTcuNzk5NzdjMS42MDAyMiwxLjYwNjQ3IDEuNjA0MTYsNC4yMDMyNyAwLjAwODc4LDUuODE0NTdjLTAuNzYwMTEsMC43NjM0MiAtMS43OTM2NywxLjE5MTYxIC0yLjg3MDk4LDEuMTg5NDNsLTguNjkxNDIsMC4wMjMxN2MtMC4yMjM5NiwxLjk2MDIgLTAuNTcyOSwzLjkwNDExIC0xLjA0NDcsNS44MTk4M2MtMS4zNzg4NSw1LjU0NTA5IC0zLjgxNTUyLDEwLjc3MTc0IC03LjE3NjE4LDE1LjM5MjkyYy0xLjE4NzcxLDEuNTYzNjYgLTIuNDk0NDQsMy4wMzMyNyAtMy45MDg0OCw0LjM5NTY4eiIgZmlsbD0iIzFhNjI2MiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjIzLjcyODU0LDIwMy40MjU5OGwtMC4xNDExMSwwLjE0MjUzYy0xLjM2NDc3LDEuNTc0NTUgLTEuMTk4ODUsMy45NTYzNyAwLjM3MTA0LDUuMzI2NTJsMC42NzE5LDAuNjY1MjJjMC43MDQ5OCwwLjY1MTA3IDEuNDQ1MjcsMS4yNjI4NiAyLjIxNzQ5LDEuODMyNTljMS4wOTgyNywwLjg0NTQzIDIuNDM5NjQsMS42ODk2NSAzLjk2Mzg2LDIuNjM0MjZjMS43NzY0MSwwLjk4MDUxIDMuNjE0NzYsMS44NDQzNSA1LjUwMzM4LDIuNTg2MDRjNC44Mzk0OSwxLjgwOTQ3IDkuOTgxOSwyLjY3MTA5IDE1LjE0Njg5LDIuNTM3ODhjNi4wNTE3NCwtMC4yMTEyOCAxMS45ODExNSwtMS43NjMyNSAxNy4zNjAzNywtNC41NDM5M2MxLjMzMTI5LC0wLjcxMDMgMi42MjU3MiwtMS40ODc2MiAzLjg3ODI4LC0yLjMyOTAyYzEuMzM4LC0wLjg4MzY2IDIuNjE4ODgsLTEuODUwOTQgMy44MzQ5MywtMi44OTYwOGMwLjgwNjMzLC0wLjgxNDQzIDEuNjMyODIsLTEuNjQ5MjEgMi40MzkxNSwtMi40NjM2NGMxLjM2MDAyLC0xLjM1MTk4IDIuNjEyNjgsLTIuODA3ODQgMy43NDY2MSwtNC4zNTQzNWMzLjI2NDM5LC00LjQzMzE3IDUuNjQ2NjIsLTkuNDUyMjYgNy4wMTcxNCwtMTQuNzg0MzRjMC40OTIzOSwtMi4xOTY3NCAwLjgyNjU3LC00LjQyNTk3IDAuOTk5OTQsLTYuNjcwNTNsMC4wMTg1NCwtMC4zNDQ1MWw5Ljk4ODAzLC0wLjAyOTY0YzAuNjcxMTUsLTAuMDIwODMgMS4zMDg0MSwtMC4yOTk3OSAxLjc3OSwtMC43Nzg3NmMwLjUwNjEzLC0wLjUwMDMzIDAuNzkxMDcsLTEuMTgyMzUgMC43OTEzMiwtMS44OTQwNGMwLjAwMDI1LC0wLjcxMTY5IC0wLjI4NDIyLC0xLjM5MzkgLTAuNzg5OTksLTEuODk0NThsLTE3Ljk3ODUsLTE3Ljc5OTc2Yy0xLjAzNzgyLC0xLjAyNzYyIC0yLjcwOTQ1LC0xLjAyODMyIC0zLjc0ODEsLTAuMDAxNTNsLTE3LjgxOTkzLDE3Ljk5ODg2Yy0wLjc1MzMxLDAuNzY5NDQgLTAuOTY5NDgsMS45MTY2NCAtMC41NDc4NSwyLjkwNzQ2YzAuNDIxNjMsMC45OTA4MyAxLjM5ODE1LDEuNjMwNDggMi40NzQ5MiwxLjYyMTE2bDkuNDgxNDUsLTAuMDQ3MzZjMC4wMTM0NywxLjI2NzYxIC0wLjA2ODI0LDIuNTM0NDYgLTAuMjQ0NDUsMy43ODk4NGMtMC40NTcwMSwzLjUyNzYyIC0xLjU5NjAzLDYuOTMyNjIgLTMuMzUzNTksMTAuMDI1MTljLTEuMDE3OTYsMS43NjEzNyAtMi4yMTg0NiwzLjQxMDczIC0zLjU4MTY5LDQuOTIwODFsLTAuOTQ3NDUsMC45NTY5NmMtMC40NDM0OSwwLjQ0NzkzIC0wLjg2NjgsMC44NzU1MSAtMS4yNDk4MiwxLjI2MjM2djBjLTAuNTQ0MjYsMC41NDk3NCAtMi4wOTk0OSwxLjUwOTczIC0yLjU4MzMsMS45OTgzOGMtMy41OTM1MywyLjQyMTIyIC03LjY4NDAyLDQuMDA2MjUgLTExLjk3MDc0LDQuNjM4NTZjLTMuODQ0MDYsMC41NjI2MyAtNy43NjEwNCwwLjM2ODg2IC0xMS41MzA3OSwtMC41NzA0NWMtMS41MDk1MiwtMC40MTQ5OSAtMi45ODgwMSwtMC45MzU2NiAtNC40MjQ0NiwtMS41NTgxOGMtMS4yOTk2NCwtMC42MDEzMSAtMi4zOTY2OSwtMS4yMDM2MyAtMy4yMDkxLC0xLjYwNDc4Yy0wLjgxMjQxLC0wLjQwMTE0IC0xLjU4NTUxLC0xLjA0NTYgLTIuMTM0MDIsLTEuMzQ2NzZjLTAuNTQ4NTIsLTAuMzAxMTUgLTAuNzkyODUsLTAuNTQzMDYgLTAuNzkyODUsLTAuNTQzMDZjLTEuNDk3ODMsLTEuMDE2MjkgLTMuNTA3NjQsLTAuODE4ODIgLTQuNzc5MDIsMC40Njk1OU0yMjEuNTQ5OTMsMjAxLjI2OTA0djBjMi4xOTA0NywtMi4zODA3IDUuNzg1MTMsLTIuODE5MjggOC40ODM3NywtMS4wMzUxMmMwLjE0MjMzLDAuMTAwNTkgMC41Njk5LDAuNTIzOSAwLjgzMzU3LDAuNTgzMzdjMC4yNjM2NywwLjA1OTQ3IDAuNDQ2OTMsMC4yNDA4OSAwLjY1MDUzLDAuNDQyNDdjMC4zNjM2MSwwLjI2NTIgMC43NDM3NiwwLjUwNjkxIDEuMTM4MTcsMC43MjM2OGwwLjE0MjUzLDAuMTQxMTFjMC43OTI0NSwwLjQ2MjAxIDEuOTkwNywxLjA0MzU4IDIuODg0MTMsMS40NDQzMWMxLjMxMjUxLDAuNTUyNjggMi42NjIsMS4wMTMwNSA0LjAzODYyLDEuMzc3NzZjMy40MTkyMSwwLjg0ODE2IDYuOTcwNzUsMS4wMjMxIDEwLjQ1NjczLDAuNTE1MDRjMy44MTY3NiwtMC41Njk1MiA3LjQ2MTY4LC0xLjk3MTA1IDEwLjY3Njc2LC00LjEwNTM0bDEuMDA5OTQsLTAuNjEyODRsMS4xNzA3OSwtMC44NTY3N2wwLjM2Mjg0LC0wLjM2NjQ5YzAuMzIyNTMsLTAuMzI1NzcgMC42ODUzOCwtMC42OTIyNiAxLjA0ODIyLC0xLjA1ODc1bDAuNzI1NywtMC43MzI5OGMxLjIxNTg2LC0xLjM1NjQzIDIuMjg4MDIsLTIuODM1MTMgMy4xOTkzLC00LjQxMjRjMS42MTQyMiwtMi43ODM3MiAyLjY1OTM4LC01Ljg2MDM2IDMuMDc0ODMsLTkuMDUxMzFsMC4wNTgyNSwtMC41MDY3OGwtNi40ODMwNCwwLjAzMjM5Yy0yLjI0MDY5LDAuMDE5ODggLTQuMjcxOTEsLTEuMzE0NDIgLTUuMTQzNDQsLTMuMzc4NzhjLTAuODcxNTMsLTIuMDY0MzYgLTAuNDExMDksLTQuNDUwNjMgMS4xNjU5MywtNi4wNDI1bDE3LjkyMDcxLC0xOC4xMDA2NmMyLjE1MjAxLC0yLjE1MTIxIDUuNjM3NjksLTIuMTU5NTggNy44LC0wLjAxODcxbDE3LjkxNzQyLDE3LjczOTI5YzIuMTYyNDYsMi4xNjMxNiAyLjE3MDkyLDUuNjY2OTcgMC4wMTg5MSw3Ljg0MDUyYy0xLjAzMTM5LDEuMDQwNTkgLTIuNDM2OTcsMS42MjQxNCAtMy45MDIwOSwxLjYyMDAzbC03LjQzNTMzLDAuMDE2ODhjLTAuMjM1MDIsMS42MjE5OCAtMC41Mzc3LDMuMjE3MjcgLTAuOTA4MDUsNC43ODU5Yy0xLjQ3MjIsNS42NzA1OSAtNC4wMTc2OSwxMS4wMDY0MyAtNy40OTg3MSwxNS43MTg2OWMtMS4yMDcyNywxLjY0NzM4IC0yLjU0MDcxLDMuMTk4NDQgLTMuOTg4Myw0LjYzOTJjLTAuODI2NDksMC44MzQ3OSAtMS42OTMzLDEuNzEwMyAtMi42NDA3MywyLjY2NzI2Yy0xLjI3NDIxLDEuMDk1NjcgLTIuNjE1NjgsMi4xMTA1OCAtNC4wMTY1NiwzLjAzODhjLTAuODczMTUsMC42MjA2IC0xLjc4Mzc2LDEuMTg2NzUgLTIuNzI2NjMsMS42OTUybC0xLjUxNDQ5LDEuMDAwMzFsLTAuMTIwOTUsMC4xMjIxNmMtNS43NjQ2MiwyLjk2ODk3IC0xMi4xMTQ0Miw0LjYyNjU0IC0xOC41OTQ2OSw0Ljg1Mzk5Yy01LjU1MjUxLDAuMTM5MjMgLTExLjA4MDEsLTAuNzg5MTkgLTE2LjI4MjQ0LC0yLjczNDhjLTIuMDAwMTYsLTAuNzg4NDQgLTMuOTQ3MDQsLTEuNzA1ODUgLTUuODI4MzQsLTIuNzQ2NTF2MGMtMS41ODUzLC0xLjAwNTA4IC0zLjAwNzkyLC0xLjg4OTQyIC00LjEyNjU0LC0yLjc1NTAxYy0wLjY5NjQyLC0wLjQ5NjIgLTEuMzYyMTYsLTEuMDM0MTQgLTEuOTkzNTMsLTEuNjEwODRjLTAuMTIyMTYsLTAuMTIwOTUgLTAuMjQ0MzMsLTAuMjQxOSAtMC4zNDYxNCwtMC4zNDI2OWwtMC43NTMzNSwtMC43NDU4NmMtMS4zMjUxMiwtMS4xNTc2MiAtMi4xMzQ3MywtMi43OTUyMyAtMi4yNDk5NSwtNC41NTEwMmMtMC4xMTUyMiwtMS43NTU3OSAwLjQ3MzQ1LC0zLjQ4NTE2IDEuNjM1OTMsLTQuODA2MDNsMC4yODIyMiwtMC4yODUwNXoiIGZpbGw9IiMxYTYyNjIiIHN0cm9rZT0iIzFhNjI2MiIgc3Ryb2tlLXdpZHRoPSIzIi8%2BPHBhdGggZD0iTTIyMy41NDQ1MiwyMDMuMzAwMzNjMS4yNzEzOCwtMS4yODg0MSAzLjM2MzY0LC0xLjUxODEzIDQuODYxNDgsLTAuNTAxODRjMCwwIDAuMjQzOTYsMC4yNDEwMyAwLjc5MjQ5LDAuNTQyMmMwLjU0ODUyLDAuMzAxMTUgMS4zMjA1NSwwLjk0MzMzIDIuMTMyOTUsMS4zNDQ0NmMwLjgxMjQxLDAuNDAxMTQgMS45MDc2NiwxLjAwMDIzIDMuMjA3MywxLjYwMTU1YzEuNDM2NDUsMC42MjI1MiAyLjkxMjAzLDEuMTM5MDEgNC40MjE1NiwxLjU1Mzk5YzMuNzY5NzYsMC45MzkzMiA3LjY3NjQzLDEuMTIzNTggMTEuNTIwNSwwLjU2MDk1YzQuMjg2NzIsLTAuNjMyMyA4LjM1NjgsLTIuMjI0NTcgMTEuOTUwMzIsLTQuNjQ1NzljMC40ODM4LC0wLjQ4ODY2IDIuMDMxMjIsLTEuNDQ4NjcgMi41NzU0OSwtMS45OTg0MXYwYzAuMzgzLC0wLjM4Njg2IDAuODAxNTksLTAuODEzNzYgMS4yNDUwNiwtMS4yNjE3MWwwLjk0MzM4LC0wLjk1NTk2YzEuMzYzMjMsLTEuNTEwMDggMi41NDM3MiwtMy4xNDcwMiAzLjU2MTY5LC00LjkwODM5YzEuNzU3NTUsLTMuMDkyNTcgMi44ODczNiwtNi40NTI3NCAzLjM0NDM3LC05Ljk4MDM2YzAuMTc2MjEsLTEuMjU1MzggMC4yNjM1LC0yLjUxMTQ2IDAuMjUwMDIsLTMuNzc5MDdsLTkuNDUxNCwwLjA2NTY3Yy0xLjA3Njc3LDAuMDA5MzIgLTIuMDQwMTUsLTAuNjMwNDcgLTIuNDYxNzgsLTEuNjIxMjljLTAuNDIxNjMsLTAuOTkwODMgLTAuMjE1ODEsLTIuMjI1ODkgMC41Mzc1MSwtMi45OTUzMmwxNy44NDUwNiwtMTcuOTkzMjRjMS4wMzg2NiwtMS4wMjY3NyAyLjcxMzY2LC0xLjAyMzk3IDMuNzUxNDgsMC4wMDM2NWwxNy45OTU1NywxNy44MjI5NWMwLjUwNTc5LDAuNTAwNjkgMC43OTA4NiwxLjE4NTA0IDAuNzkwNiwxLjg5NjczYy0wLjAwMDI1LDAuNzExNjkgLTAuMjg0NzgsMS4zOTU0OCAtMC43OTA5LDEuODk1ODNjLTAuNDcwNTksMC40Nzg5NyAtMS4xOTQ0OSwwLjc3NjEyIC0xLjg2NTY2LDAuNzk2OTRsLTkuOTg3MjksMC4wMzI2OGwwLjA2Njg5LDAuMzIxMTljLTAuMTczMzgsMi4yNDQ1NiAtMC41MDYwNyw0LjQ4NDM2IC0wLjk5ODQ1LDYuNjgxMDljLTEuMzcwNTIsNS4zMzIwNyAtMy43NjE3MywxMC4zNzg3NyAtNy4wMjYxMiwxNC44MTE5M2MtMS4xMzM5MiwxLjU0NjUyIC0yLjM5NCwzLjAxMDAzIC0zLjc1NDAyLDQuMzYyMDFjLTAuODA2MzMsMC44MTQ0MyAtMS42Mzc5MSwxLjY1Mjc3IC0yLjQ0NDI0LDIuNDY3MmMtMS4yMTYwNiwxLjA0NTE0IC0yLjUwNDQxLDIuMDE2IC0zLjg0MjQzLDIuODk5NjdjLTEuMjUyNTcsMC44NDE0IC0yLjU1NDA5LDEuNjIwNjggLTMuODg1MzgsMi4zMzA5N2MtNS4zNzkyNCwyLjc4MDY4IC0xMS4zMzMzMiw0LjMzMDIxIC0xNy4zODUwNiw0LjU0MTQ5Yy01LjE2NSwwLjEzMzIxIC0xMC4zMjE3NiwtMC43Mzc3NCAtMTUuMTYxMjUsLTIuNTQ3MjFjLTEuODg4NjMsLTAuNzQxNjkgLTMuNzMxMDIsLTEuNjEwMDcgLTUuNTA3NDQsLTIuNTkwNThjLTEuNTI0MjEsLTAuOTQ0NiAtMi44NjgyMiwtMS43OTI1OCAtMy45NjY0OCwtMi42MzgwMmMtMC43NzIyMSwtMC41Njk3MyAtMS41MTM4NiwtMS4xODM4NSAtMi4yMTg4NiwtMS44MzQ5MmwtMC42NzIzMiwtMC42NjYwMWMtMS41Njk4OSwtMS4zNzAxNCAtMS43Mzc4NiwtMy43NTY1NyAtMC4zNzMwOSwtNS4zMzExM2wwLjE0MTA3LC0wLjE0MjYxIiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtub0hvdmVyJnF1b3Q7OmZhbHNlLCZxdW90O29yaWdJdGVtJnF1b3Q7OlsmcXVvdDtQYXRoJnF1b3Q7LHsmcXVvdDthcHBseU1hdHJpeCZxdW90Ozp0cnVlLCZxdW90O3NlZ21lbnRzJnF1b3Q7OltbMjA0LjMzNDA1LDE2MC4xMDgwNF0sW1syMDQuMTQwNTEsMTU5Ljk5MDM5XSxbMCwwXSxbLTIuMDg3MjUsLTEuMDg2NTFdXSxbWzE5OC4zODY3NiwxNjEuNzkzODddLFsxLjA5MzYzLC0yLjA4MzUzXSxbMCwwXV0sW1sxOTcuODMyMTMsMTYyLjcwNjI2XSxbMCwwXSxbLTAuNTMwNDIsMC45NDUwM11dLFtbMTk2LjQwMDI0LDE2NS42MjIzNV0sWzAuNDIzNDUsLTAuOTk3NTZdLFstMC42NDA4NSwxLjQyNzk2XV0sW1sxOTQuNTQ1NDEsMTcwLjY2Njg2XSxbMC42MzgxNiwtMS45MjE4NF0sWy0wLjYxMTUsMi4yMDgyOF1dLFtbMTkzLjE0NzAxLDE3Ny4zODk4M10sWzAuMzE5NzcsLTIuMjY4OTZdLFstMC43MTkzNSw1Ljc5MDJdXSxbWzE5NC4zMjg3OCwxOTQuNjkzMjFdLFstMS40OTk5MSwtNS42Mzg2NF0sWzEuODE4MDYsNi41OTIyNF1dLFtbMjAzLjg2OTczLDIxMi41NzIwOV0sWy00LjQ2NDIsLTUuMTgwMTZdLFsxLjEyOTEyLDEuMjc2MjNdXSxbWzIwNy40NDQ0NCwyMTYuMjIxODhdLFstMS4yNTI1LC0xLjE1NTM5XSxbMS4zMjEzMiwxLjIzODE3XV0sW1syMTEuNjMwNjksMjE5LjY3NTQzXSxbLTEuNDY2NzQsLTEuMDYxOV0sWzEuMTA1OTMsMC42NzIyOV1dLFtbMjE0Ljk3NjEzLDIyMS43MDkxXSxbLTEuMTA1OTMsLTAuNjcyMjldLFsxLjg0MTUyLDEuMTM5NjJdXSxbWzIyMC43NDEwOSwyMjQuNjgzNDZdLFstMS45OTU5NiwtMC44NDAyOF0sWzUuNzI1MTYsMi40MjQwMV1dLFtbMjM4LjgyMDA5LDIyOC41MTddLFstNi4yMTYyNSwtMC4xMDgxXSxbMi41NDIwNywtMC4wMzQ4M11dLFtbMjQ2LjQwOTQ3LDIyNy44NjcyNl0sWy0yLjUxMSwwLjM5Nzc4XSxbMCwwXV0sWzI0Ni43OTI3NiwyMjcuNzk3MzNdLFtbMjQ5LjQ0Mjg3LDIzOC43NjEwM10sWzAsMF0sWzAuMTk4NzcsMC43MzE3OF1dLFtbMjUwLjc2NDUzLDI0MC41MTEwOV0sWy0wLjY0OTQ2LC0wLjM5MTRdLFswLjY4MjI0LDAuNDI0ODRdXSxbWzI1My4wNTI0NCwyNDAuODgzOTddLFstMC43ODE4MywwLjE4NjIzXSxbMC43ODE4MywtMC4xODYyM11dLFtbMjU0LjkyNjU0LDIzOS41MTk2N10sWy0wLjQxNzQ0LDAuNjg2OF0sWzAsMF1dLFtbMjY5Ljc2NzI5LDIxNS4xMDYyMl0sWzAsMF0sWzAuODU2ODIsLTEuNDA5MzFdXSxbWzI2OC43ODY3MSwyMTAuOTg4NjddLFsxLjQwMDA3LDAuODcxODRdLFswLDBdXSxbWzI0NC4zNDU2MSwxOTYuMTMxMTFdLFswLDBdLFstMS4wNDI2MSwtMC42MjU4NF1dLFtbMjQxLjAwODMxLDE5Ni4yOTEyN10sWzAuOTc3ODksLTAuNzIyODFdLFstMC45Nzc4OSwwLjcyMjgxXV0sW1syMzkuODc2MTIsMTk5LjQzNDcyXSxbLTAuMjkyNDIsLTEuMTgwMzRdLFswLDBdXSxbWzI0Mi40MTI5NSwyMDkuODM3MzFdLFswLDBdLFstMS4zODg4OSwwLjM0N11dLFtbMjM4LjE4NTg5LDIxMC41NjE5OV0sWzEuNDI1MTcsLTAuMTM1NDNdLFstMy45OTQ3MywwLjQyMjQ4XV0sW1syMjYuMjk0NzMsMjA5LjUwNTQ5XSxbMy44NTc2NywxLjEyMDE0XSxbLTIuMjAxNTgsLTAuNjU2NTldXSxbWzIxOS45NTA3NiwyMDYuODYwNzNdLFsyLjAxNjAyLDEuMTAxNzFdLFswLDBdXSxbWzIxOC42NTEyOCwyMDYuMDcwNzldLFswLDBdLFstMC42MDgyNiwtMC4zNjk3Nl1dLFtbMjE2LjkzNzA5LDIwNS4wMjg3NF0sWzAuNTI1MzIsMC4zMTkzM10sWzAsMF1dLFtbMjE2LjkzNzA5LDIwNS4wMjg3NF0sWzAsMF0sWy0wLjc0NjUsLTAuNDUzNzldXSxbWzIxNC4wNjQ5NCwyMDIuNzE0OF0sWzAuNjYzNTYsMC40MDMzN10sWy0zLjYwMTM3LC0zLjMxMjgyXV0sW1syMDUuODMyNSwxOTAuNzgxMDNdLFsxLjgxNzk4LDQuNTQzMDldLFstMS42MjU0NCwtNC4wNzUxMV1dLFtbMjAzLjQzNzI2LDE3Ny45NjU0XSxbLTAuMDQzODcsNC4zODcxXSxbMC4wNjAyNSwtMS43NjY5MV1dLFtbMjAzLjk4OTM0LDE3Mi42OTY5NV0sWy0wLjMwNzM2LDEuNzQxMDNdLFswLjMxOTkyLC0xLjU4NTE5XV0sW1syMDQuOTExMTIsMTY4Ljc1MTMyXSxbLTAuMjI3NzMsMC45OTc1Ml0sWzAuMjI3NzMsLTAuOTk3NTJdXSxbWzIwNS44MzEyMSwxNjYuMDU0MjNdLFstMC4xODcwNiwwLjY4MTQ1XSxbMC4xODcwNiwtMC42ODE0NV1dLFtbMjA2LjIxOTk2LDE2NS4wNDA5OV0sWzAsMF0sWzAuNzIzODIsLTEuOTExNjVdXSxbWzIwNC40NTE3LDE1OS45MTQ1XSxbMS43NDg0NSwxLjA1ODkxXSxbMCwwXV1dLCZxdW90O2ZpbGxDb2xvciZxdW90OzpbMCwwLDAsMV19XX0iIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIwLjUiLz48cGF0aCBkPSJNMjU3LjM4NTY5LDE1Ny42MjIwNmMtMS43NTg0NywxLjc3Njc3IC00LjUzNDIsMi4wNDYyMiAtNi42MDE1NiwwLjY0MDc5bC0xLjMwMTA3LC0wLjg4NDk0Yy0wLjQ2MjY4LC0wLjM0NjI3IC0wLjk1MTk4LC0wLjY1NTQ1IC0xLjQ2MzM0LC0wLjkyNDY1Yy0wLjg1MzMzLC0wLjQ4MTk5IC0xLjkyOTgyLC0xLjAyMzYxIC0zLjE4ODc0LC0xLjU4NDZjLTEuMzc2MzIsLTAuNTY1MTkgLTIuNzg2MDgsLTEuMDQ1MzEgLTQuMjIxMjYsLTEuNDM3NjNjLTMuNTcyOTYsLTAuODc3MjkgLTcuMjgxNDEsLTEuMDU4MjUgLTEwLjkyMjgsLTAuNTMyOThjLTQuMDg3MTQsMC41OTg4NiAtNy45ODU5MSwyLjExNDM5IC0xMS40MDQ1LDQuNDMzMTNsLTAuOTI4NDksMC42OTM0OGMtMC40OTQxMywwLjMzNjIgLTAuOTY2MDIsMC43MDQgLTEuNDEyNywxLjEwMTFsLTEuMzUwNiwxLjM2NDE3bC0wLjgyNjQ5LDAuODM0NzljLTEuMjk3NDIsMS40Mzc3MSAtMi40NDM3LDMuMDA0OTEgLTMuNDIwODMsNC42NzY4OWMtMS42ODA5OCwyLjkwMjA1IC0yLjc5MjczLDYuMDk4MiAtMy4yNzU1OSw5LjQxNzAxYy0wLjA3NzU5LDAuNjg5MjIgLTAuMTM1MDMsMS4zNTgxIC0wLjE1MTc1LDIuMDY3MjhsOC4xMDM4LC0wLjA0MDQ4YzEuNjQ5OTMsLTAuMDA2NDMgMy4xNDI3MiwwLjk3NzQzIDMuNzg3NDIsMi40OTYyMWMwLjY0NDcsMS41MTg3NiAwLjMxNTUsMy4yNzYwNyAtMC44MzUyNCw0LjQ1ODQ4bC0xNy44ODA0LDE4LjA1OTk0Yy0wLjc1OTEsMC43Nzc1NiAtMS43OTYwMSwxLjIyMTczIC0yLjg4MjYxLDEuMjM0NzVjLTEuMDg2NiwwLjAxMzAyIC0yLjEzMzg3LC0wLjQwNjE1IC0yLjkxMTQsLTEuMTY1MjlsLTE3Ljk3ODQ5LC0xNy43OTk3NWMtMS4xNjI0OSwtMS4xNzA4NSAtMS41MDkyMywtMi45MjQ3OSAtMC44Nzk3NCwtNC40NDk5MmMwLjYyOTQ5LC0xLjUyNTEzIDIuMTEyMzgsLTIuNTIzODcgMy43NjIyOSwtMi41MzM5Mmw4LjczMTU0LC0wLjEwNDRjMC4yMjA5LC0xLjk2NTg5IDAuNTYyOTksLTMuOTE2MjggMS4wMjQzNCwtNS44Mzk5OWMxLjM3NTg3LC01LjUzNjI0IDMuODA1NDgsLTEwLjc1NTUzIDcuMTU2MDIsLTE1LjM3MjU2YzEuMTMxNCwtMS41NDg5NCAyLjM3Njk1LC0zLjAxMTE5IDMuNzI2MjUsLTQuMzc0NTNjMC44MjY0OSwtMC44MzQ3OSAxLjY3MzE0LC0xLjY4OTk0IDIuNDk5NjMsLTIuNTI0NzJjMS4yNzg0NiwtMS4xMDUzNyAyLjYyNjgzLC0yLjEyNzIyIDQuMDM2NzIsLTMuMDU5MTZjMC44MDk3LC0wLjU2MTU1IDEuNjUyODgsLTEuMDczMjEgMi41MjQ4NCwtMS41MzIxMmwxLjM3MzgsLTAuNzc2NzRjNS41OTA3NCwtMi44OTg2IDExLjc1NDg3LC00LjUyMDg5IDE4LjA0ODE5LC00Ljc0OTk2YzUuMzUxOTMsLTAuMTMyODggMTAuNjc5NjYsMC43NjIxIDE1LjY5NDQxLDIuNjM2NDRjMi4wNzI2NSwwLjc2Mzc4IDQuMDgyNCwxLjY4ODU0IDYuMDEwNzksMi43NjU4NWMxLjQyOTQ4LDAuODE5ODkgMi44MDc1MSwxLjcyNjQxIDQuMTI2MzQsMi43MTQ0OWMwLjYzOTcyLDAuNDU5NCAxLjI1MTExLDAuOTU3MDEgMS44MzA4NSwxLjQ5MDA5bDAuMzY2NDksMC4zNjI4NGMwLjUwOTAxLDAuNTAzOTUgMC43NTMzNSwwLjc0NTg2IDAuNzUzMzUsMC43NDU4NmMyLjExNzIyLDEuODg5MTggMi4zMjI5OCw1LjEyOTE2IDAuNDYxNzgsNy4yNzEwM2wtMC4yMDE1OSwwLjIwMzYxeiIgZmlsbD0iIzFhNjI2MiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjAwLjk3ODczLDE1Mi45NDAxNmMtMS4zNTkwOSwxLjM1Mjg0IC0yLjYxMTY4LDIuODA4NjIgLTMuNzQ2NjEsNC4zNTQzNWMtMy4yNTg2LDQuNDI2NDUgLTUuNjM0MTksOS40MzkwNiAtNi45OTY5OCwxNC43NjM5N2MtMC40OTIyOSwyLjE5Njc2IC0wLjgyNjQ1LDQuNDI1OTggLTAuOTk5OTQsNi42NzA1M2wtMC4wMTg1NCwwLjM0NDUxbC05Ljk4ODAzLDAuMDI5NjRjLTEuMDk0ODUsLTAuMDE1NTcgLTIuMDg3NzgsMC42NDAyNCAtMi41MDMyNCwxLjY1MzMzYy0wLjQxNTQ1LDEuMDEzMSAtMC4xNjg4MywyLjE3NzIzIDAuNjIxNzMsMi45MzQ4NGwxOC4wMzk1OCwxNy44NjAyM2MxLjA0NTc4LDEuMDM1MzggMi43MzI4OCwxLjAyNjk1IDMuNzY4MjYsLTAuMDE4ODJsMTcuNzc5NiwtMTcuOTU4MTRjMC43NjUyMywtMC43NjQ5NiAwLjk5MTg5LC0xLjkxNjczIDAuNTczNTksLTIuOTE0NjJjLTAuNDE4MzEsLTAuOTk3ODggLTEuMzk4NTIsLTEuNjQzNzIgLTIuNDgwNSwtMS42MzQzNmwtOS41MDE4MSwwLjAyNzJjMC4wMTA3NCwtMS4yNjA4MSAwLjA5OTE4LC0yLjUxOTc1IDAuMjY0ODEsLTMuNzY5NjljMC40Njk2MiwtMy41MjQ3IDEuNjA3ODgsLTYuOTI3MzQgMy4zNTM2LC0xMC4wMjUxOWMxLjAyNjYzLC0xLjc2NzExIDIuMjMzNywtMy40MjMwMyAzLjYwMTg2LC00Ljk0MTE3bDAuOTQ3NDMsLTAuOTU2OTVjMC40NDM0OSwtMC40NDc5MyAwLjg2NjgsLTAuODc1NTEgMS4yNDk4MiwtMS4yNjIzNnYwYzAuNTQ0MjYsLTAuNTQ5NzQgMi4wOTk1LC0xLjUwOTc0IDIuNTYzMTQsLTEuOTc4MDNjMy41OTcyNSwtMi40MzIxIDcuNjk1MjUsLTQuMDI0MzIgMTEuOTkwOTEsLTQuNjU4OTJjMy44NDQ1OSwtMC41NTE3MSA3Ljc1OTQzLC0wLjM1ODA0IDExLjUzMDc5LDAuNTcwNDVjMS41MTgzNiwwLjQxMjQ2IDMuMDA5NTQsMC45MTkyNSA0LjQ2NDc4LDEuNTE3NDVjMS4yOTk2NCwwLjYwMTMxIDIuMjc0NzMsMS4xMjMxOSAzLjA0NjYxLDEuNTI0NTRjMC43MzM5LDAuNDA4NzYgMS40NDAwNSwwLjg2NTQ2IDIuMTEzODYsMS4zNjcxMmMwLjU0ODUyLDAuMzAxMTUgMC43OTI4NSwwLjU0MzA2IDAuNzkyODUsMC41NDMwNmMxLjQ5MTg0LDAuOTk4NzQgMy40ODAyNiwwLjgxMTAyIDQuNzU4ODUsLTAuNDQ5MjRsMC4yMDE1OCwtMC4yMDM2YzAuNjU0MDIsLTAuNzU0NTIgMC45ODA0NCwtMS43Mzg1NiAwLjkwNzAzLC0yLjczNDM3Yy0wLjA3MzQxLC0wLjk5NTgyIC0wLjU0MDYyLC0xLjkyMTMyIC0xLjI5ODIyLC0yLjU3MTc5YzAsMCAtMC4yMjM5NywtMC4yMjE3NCAtMC42NzE5LC0wLjY2NTIyYy0wLjcwNTA2LC0wLjY1MDk5IC0xLjQ0NTM0LC0xLjI2Mjc3IC0yLjIxNzQ5LC0xLjgzMjU5Yy0xLjI2OTU0LC0wLjk0MTA5IC0yLjU5MzAyLC0xLjgwNzE1IC0zLjk2MzY2LC0yLjU5Mzc0Yy0xLjc2MDc2LC0xLjAwMzIxIC0zLjU5MzUzLC0xLjg3NDM5IC01LjQ4MzIzLC0yLjYwNjRjLTQuODM5NDksLTEuODA5NDcgLTkuOTgxOSwtMi42NzEwOSAtMTUuMTQ2ODksLTIuNTM3ODhjLTYuMDUxNzQsMC4yMTEyOCAtMTEuOTgxMTUsMS43NjMyNSAtMTcuMzYwMzgsNC41NDM5M2MtMS4zMzEzNSwwLjcxMDIgLTIuNjI1NzYsMS40ODc1NSAtMy44NzgyOCwyLjMyOTAyYy0xLjM0NjEsMC44ODg2OCAtMi42MzM3NiwxLjg2Mjg1IC0zLjg1NTA5LDIuOTE2NDRjLTAuODA2MzMsMC44MTQ0MyAtMS42MzI4MiwxLjY0OTIxIC0yLjQzOTE1LDIuNDYzNjRNMTk5LjE2NjQyLDE1MS4xMDU1NnYwYzAuODA2MzMsLTAuODE0NDMgMS42NzMxNCwtMS42ODk5NCAyLjYyMDU3LC0yLjY0NjljMS4yNzkzOSwtMS4xMDQyMiAyLjYyNzcsLTIuMTI2IDQuMDM2NzIsLTMuMDU5MTdjMC44OTQ1MSwtMC42MDIwOSAxLjgyNTUzLC0xLjE0ODA0IDIuNzg3NzEsLTEuNjM0NzNsMS4zMzMyOCwtMC43NzY1NGwwLjEyMDk1LC0wLjEyMjE2YzUuNzY0NjIsLTIuOTY4OTcgMTIuMTE0NDIsLTQuNjI2NTUgMTguNTk0NjksLTQuODUzOTljNS41NTI1MSwtMC4xMzkyMyAxMS4wODAxLDAuNzg5MTkgMTYuMjgyNDQsMi43MzQ4YzIuMDM3NjksMC43OTM2NiA0LjAxMzEzLDEuNzM4NjggNS45MDk3OCwyLjgyNzE0YzEuNDQxNzYsMC44MjA5OCAyLjgzMzE5LDEuNzI3MzUgNC4xNjY4NSwyLjcxNDI5YzAuNjk2NDIsMC40OTYyIDEuMzYyMTYsMS4wMzQxNCAxLjk5MzUzLDEuNjEwODRjMC4xMjIxNiwwLjEyMDk1IC0wLjA0MDcxLC0wLjA0MDMxIDAuMzQ2MTQsMC4zNDI2OWMwLjM4Njg2LDAuMzgzIDAuNjUxNTUsMC42NDUwNyAwLjc3MzcxLDAuNzY2MDFjMi42OTIxNiwyLjQxMTA3IDIuOTY0NzQsNi41MzEzMSAwLjYxMzYyLDkuMjc2MDFsLTAuNDgzODEsMC40ODg2NmMtMi4yNjcwNSwyLjI2MzMzIC01LjgyNTksMi41ODc3NiAtOC40NjQ4MywwLjc3MTY0bC0wLjcxMTYsLTAuNTAyOTVsLTAuNDY4MjksLTAuNDYzNjVjLTAuNDAwNTUsLTAuMjk3NDIgLTAuODIxNjQsLTAuNTY2MTQgLTEuMjYwMTQsLTAuODA0MDlsLTAuMTQyNTMsLTAuMTQxMTFjLTAuNzMxNTcsLTAuNDQyMDcgLTEuOTA5NDUsLTEuMDAzNDYgLTIuODg0MTMsLTEuNDQ0MzFjLTEuMzEwNjksLTAuNTMzNTEgLTIuNjUyNTgsLTAuOTg2OSAtNC4wMTgyNywtMS4zNTc2MWMtMy40MjAwNSwtMC44NDI0MSAtNi45NzA0NiwtMS4wMTcyOSAtMTAuNDU2NzMsLTAuNTE1MDRjLTMuODMwMDcsMC41NTUxIC03LjQ4NjA2LDEuOTY1MTcgLTEwLjY5NjkyLDQuMTI1N2wtMS4wMDkzNCwwLjczNDRsLTEuMTcwNzksMC44NTY3N2wtMC4zNjI4NCwwLjM2NjQ5bC0xLjA2ODM4LDEuMDc5MTJsLTAuODA2MzMsMC44MTQ0M2MtMS4xOTQ5OSwxLjM4MDcyIC0yLjI0NjQ4LDIuODc5MzggLTMuMTM4MjIsNC40NzI4N2MtMS42MDIyNywyLjc0OTA0IC0yLjY2MDE3LDUuNzgwODkgLTMuMTE1OTUsOC45Mjk5NmwtMC4wNTgyNSwwLjUwNjc4bDYuNTYzNDcsLTAuMTU0MzVjMi4yNDU5NSwtMC4wMTk5OSA0LjI4MDg3LDEuMzIwNTIgNS4xNDkxLDMuMzkxOTdjMC44NjgyMywyLjA3MTQ1IDAuMzk3MjQsNC40NjIyOSAtMS4xOTE3Niw2LjA0OTY3bC0xNy43OTk3NSwxNy45Nzg0OWMtMi4xNDg2OCwyLjE3MDI3IC01LjY0OTksMi4xODc3NiAtNy44MjAxNiwwLjAzOTA3bC0xNy45Nzg1LC0xNy43OTk3NmMtMS42MDQ3OCwtMS41NzE0MiAtMi4wOTk2NCwtMy45NTc0NSAtMS4yNTIxNSwtNi4wMzc0N2MwLjg0NzQ5LC0yLjA4MDAzIDIuODY4OTIsLTMuNDQwOCA1LjExNDk2LC0zLjQ0MzI1bDcuMzUzNDksLTAuMTc4NTZjMC4yMzUwMiwtMS42MjE5OCAwLjUzNzcsLTMuMjE3MjYgMC45MDgwNiwtNC43ODU4OWMxLjQ2ODUxLC01LjY2MTk4IDQuMDA3LC0xMC45OTA1OSA3LjQ3ODU1LC0xNS42OTgzNGMxLjIwOTM5LC0xLjY0NTY3IDIuNTQyNzEsLTMuMTk2NTkgMy45ODgzLC00LjYzOTJ6IiBmaWxsPSIjMWE2MjYyIiBzdHJva2U9IiMxYTYyNjIiIHN0cm9rZS13aWR0aD0iMyIvPjxwYXRoIGQ9Ik0yMDAuOTcxNjgsMTUzLjAwNjkxYzAuODA2MzMsLTAuODE0NDMgMS42Mzc5MywtMS42NTI3OCAyLjQ0NDI2LC0yLjQ2NzIxYzEuMjIxMzIsLTEuMDUzNiAyLjUxNjU1LC0yLjAzMTM1IDMuODYyNjUsLTIuOTIwMDRjMS4yNTI1MiwtMC44NDE0NiAyLjU1NDA2LC0xLjYyMDc1IDMuODg1NCwtMi4zMzA5NWM1LjM3OTI0LC0yLjc4MDY4IDExLjMzMzMsLTQuMzMwMTQgMTcuMzg1MDUsLTQuNTQxNDJjNS4xNjUsLTAuMTMzMjEgMTAuMzIxNywwLjczNzc2IDE1LjE2MTE5LDIuNTQ3MjNjMS44ODk2OSwwLjczMjAxIDMuNzI2NSwxLjYwNzczIDUuNDg3MjcsMi42MTA5NGMxLjM3MDY0LDAuNzg2NTggMi42OTY3MSwxLjY1NjM3IDMuOTY2MjUsMi41OTc0NmMwLjc3MjE1LDAuNTY5ODEgMS41MTM3OCwxLjE4MzkzIDIuMjE4ODYsMS44MzQ5MmMwLjQ0NzkzLDAuNDQzNDkgMC42NzIzMiwwLjY2NjAxIDAuNjcyMzIsMC42NjYwMWMwLjc1NzYsMC42NTA0NyAxLjIyNjAyLDEuNTc4NTQgMS4yOTk0MywyLjU3NDM1YzAuMDczNDEsMC45OTU4MiAtMC4yNTIxNywxLjk4MTg5IC0wLjkwNjIsMi43MzY0MmwtMC4yMDE1NCwwLjIwMzczYy0xLjI3ODU5LDEuMjYwMjYgLTMuMzQ5MzcsMS40ODA0OSAtNC44NDEyLDAuNDgxNzVjMCwwIC0wLjI0Mzk2LC0wLjI0MTAzIC0wLjc5MjQ5LC0wLjU0MjJjLTAuNjczODEsLTAuNTAxNjYgLTEuMzc4ODcsLTAuOTU2MDYgLTIuMTEyNzgsLTEuMzY0ODJjLTAuNzcxODgsLTAuNDAxMzQgLTEuNzQ1MjYsLTAuOTIwMTYgLTMuMDQ0ODksLTEuNTIxNDhjLTEuNDU1MjQsLTAuNTk4MiAtMi45NDM1MSwtMS4xMDA4NCAtNC40NjE4OSwtMS41MTMzYy0zLjc3MTM2LC0wLjkyODUgLTcuNjc1OTUsLTEuMTEyNjYgLTExLjUyMDUzLC0wLjU2MDk1Yy00LjI5NTY2LDAuNjM0NiAtOC4zNzMyNywyLjIzNDA3IC0xMS45NzA1Myw0LjY2NjE2Yy0wLjQ2MzY0LDAuNDY4MyAtMi4wMTExMywxLjQyODM1IC0yLjU1NTQsMS45NzgwOXYwYy0wLjM4MywwLjM4Njg2IC0wLjgwMTYsMC44MTM3OCAtMS4yNDUwOSwxLjI2MTcybC0wLjk0MzM4LDAuOTU1OThjLTEuMzY4MTUsMS41MTgxNSAtMi41NTUwOSwzLjE2MTY1IC0zLjU4MTcxLDQuOTI4NzZjLTEuNzQ1NzMsMy4wOTc4NSAtMi44NzQ3MSw2LjQ1NTU0IC0zLjM0NDM0LDkuOTgwMjVjLTAuMTY1NjMsMS4yNDk5NCAtMC4yNTk2LDIuNDk4MTggLTAuMjcwMzUsMy43NTlsOS40NzE1NywtMC4wNDU1NmMxLjA4MTk4LC0wLjAwOTM3IDIuMDQ5MDYsMC42MzY2NyAyLjQ2NzM3LDEuNjM0NTRjMC40MTgzMSwwLjk5Nzg4IDAuMjAyMTcsMi4yMzc0OCAtMC41NjMwNiwzLjAwMjQ2bC0xNy44MDQ3MywxNy45NTI1NWMtMS4wMzUzOCwxLjA0NTc4IC0yLjcyNTg2LDEuMDUyMDkgLTMuNzcxNjUsMC4wMTY3MWwtMTguMDU2NywtMTcuODgzNWMtMC43OTA1NiwtMC43NTc1OSAtMS4wMzgwNCwtMS45MjQ5MSAtMC42MjI1OCwtMi45MzhjMC40MTU0NSwtMS4wMTMxIDEuNDk0OTEsLTEuNjg3NjkgMi41ODk3NiwtMS42NzIxM2w5Ljk4NzMsLTAuMDMyNjdsLTAuMDY2OTQsLTAuMzIxMzZjMC4xNzM0OCwtMi4yNDQ1NCAwLjUwNjE5LC00LjQ4NDM4IDAuOTk4NDcsLTYuNjgxMTRjMS4zNjI4LC01LjMyNDkgMy43NDc0NiwtMTAuMzY1MTEgNy4wMDYwNSwtMTQuNzkxNTVjMS4xMzQ5MiwtMS41NDU3MyAyLjM5NDk1LC0zLjAwOTE0IDMuNzU0MDQsLTQuMzYxOTgiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O25vSG92ZXImcXVvdDs6ZmFsc2UsJnF1b3Q7b3JpZ0l0ZW0mcXVvdDs6WyZxdW90O1BhdGgmcXVvdDsseyZxdW90O2FwcGx5TWF0cml4JnF1b3Q7OnRydWUsJnF1b3Q7c2VnbWVudHMmcXVvdDs6W1tbMjY1LjEzOTExLDEzOC4zNzk3OV0sWzAsMF0sWy0xLjg0MjIyLC0xLjEzODM3XV0sW1syNTkuMzc0MTUsMTM1LjQwNTQzXSxbMS45OTUzNSwwLjg0MTU4XSxbLTUuNzE2MjYsLTIuNDE5NDFdXSxbWzI0MS4zMjI4LDEzMS41ODg3XSxbNi4yMDYzNSwwLjEwMTQ5XSxbLTIuNTQyMDcsMC4wMzQ5NF1dLFtbMjMzLjczMzQyLDEzMi4yMzg0NF0sWzIuNTExMDEsLTAuMzk3NjZdLFswLDBdXSxbMjMzLjM1MDEzLDEzMi4zMDgzN10sW1syMzAuNzAwMDIsMTIxLjM0NDY3XSxbMCwwXSxbLTAuMjY5ODIsLTEuMjA2NzRdXSxbWzIyOC4yMjc4OCwxMTkuMDI4MjRdLFsxLjIyMTcyLDAuMTkwODZdLFstMS4yMjE3MiwtMC4xOTA4Nl1dLFtbMjI1LjE2NzAyLDEyMC40ODAzMV0sWzAuNjI1MDEsLTEuMDY2OTRdLFswLDBdXSxbWzIxMC4yNzU4NSwxNDQuOTc2NzFdLFswLDBdLFstMC44NjMyNiwxLjQyMDA5XV0sW1syMTEuMjg0MDcsMTQ5LjExMTA3XSxbLTEuNDIwMDksLTAuODYzMjZdLFswLDBdXSxbWzIzNS42Njk4OCwxNjMuOTM1MDFdLFswLDBdLFsxLjA0MDgzLDAuNjQwMV1dLFtbMjM5LjAyMTc5LDE2My44MDEyNF0sWy0wLjk4NjUxLDAuNzIxMDFdLFswLjk4NjUxLC0wLjcyMTAxXV0sW1syNDAuMTY3MDEsMTYwLjY0ODJdLFswLjI5Mzg0LDEuMTg2MDVdLFswLDBdXSxbWzIzNy42NDcsMTUwLjIxNzk3XSxbMCwwXSxbMS4zODc3NywtMC4zMTg2Ml1dLFtbMjQxLjg1NzI1LDE0OS41MjA5M10sWy0xLjQxNjQxLDAuMTQ1NjNdLFszLjk5NDgzLC0wLjQwNzg1XV0sW1syNTMuNzQ4NCwxNTAuNTc3NDRdLFstMy44NjAzNywtMS4xMDU3Nl0sWzIuMjEwMTUsMC42NjQ2MV1dLFtbMjYwLjEyMDAzLDE1My4yMzkwMV0sWy0yLjAyNjE4LC0xLjEwNV0sWzAsMF1dLFtbMjYxLjQxOTUsMTU0LjAyODk0XSxbMCwwXSxbMC42MDgyNiwwLjM2OTc2XV0sW1syNjMuMTMzNjksMTU1LjA3MDk5XSxbLTAuNTI1MzIsLTAuMzE5MzNdLFswLDBdXSxbWzI2My4xMzM2OSwxNTUuMDcwOTldLFswLDBdLFswLjc0NjUsMC40NTM3OV1dLFtbMjY1Ljk3ODIsMTU3LjM2ODExXSxbLTAuNjM1OTEsLTAuMzg2NTZdLFszLjYxNDI5LDMuMzE0MDZdXSxbWzI3NC4yMzgyOSwxNjkuMzE4N10sWy0xLjgyMjg0LC00LjU1MjNdLFsxLjYxMzU4LDQuMDc4NTRdXSxbWzI3Ni42MzM1MywxODIuMTM0MzNdLFswLjAzMTU2LC00LjM4NjAyXSxbLTAuMDU1MTUsMS43NzU5Nl1dLFtbMjc2LjEzNjc0LDE4Ny40MzY0XSxbMC4yNzU3MywtMS43NTUzXSxbLTAuMzE5OTIsMS41ODUxOV1dLFtbMjc1LjI2MDUyLDE5MS4xODI1Ml0sWzAuMjM4NTgsLTAuOTUzMDZdLFstMC4yNTY2NywwLjkxMzI4XV0sW1syNzQuMzEyNzYsMTkzLjg2MjhdLFswLjM3NDQ3LC0wLjg3MTYzXSxbLTAuMTg3MDYsMC42ODE0NV1dLFtbMjczLjkyNDAyLDE5NC44NzYwNF0sWzAsMF0sWy0wLjcwNjExLDEuOTAwNDddXSxbWzI3NS42NjQ2MywxOTkuOTg1NzNdLFstMS43MTk0MywtMS4wNzQyMV0sWzAsMF1dLFtbMjc1Ljk0MTEyLDIwMC4xNTM4XSxbMCwwXSxbMS4wMDAyMSwwLjUyMDY4XV0sW1syNzkuMTgyNDIsMjAwLjQzMzU0XSxbLTEuMDc0NjMsMC4zNDE2MV0sWzEuMDc0NjMsLTAuMzQxNjFdXSxbWzI4MS42NjcyMiwxOTguMzMzNTJdLFstMC41MTU5NywxLjAwMjY2XSxbMCwwXV0sW1syODIuMjIxODUsMTk3LjQyMTEyXSxbLTAuMzY5NzYsMC42MDgyNl0sWzAuNTMwMzEsLTAuOTQ1MDldXSxbWzI4My42NTM3NCwxOTQuNTA1MDNdLFstMC40MjM1NiwwLjk5NzUxXSxbMC43MDEwNCwtMS42NDExN11dLFtbMjg1LjQ2NDExLDE4OS40NzEzN10sWy0wLjUwNDgzLDEuNzExNzNdLFswLjY0MDU1LC0yLjE5NzA0XV0sW1syODYuODkwMTYsMTgyLjc2NTJdLFstMC4zMDg4NSwyLjI2NzU5XSxbMC43MTkzNSwtNS43OTAyXV0sW1syODUuNzA4MzksMTY1LjQ2MTgyXSxbMS40OTk5MSw1LjYzODY0XSxbLTEuODE4MDYsLTYuNTkyMjRdXSxbWzI3Ni4xNjc0NCwxNDcuNTgyOTNdLFs0LjQ2NDIsNS4xODAxNl0sWy0xLjEyOTAzLC0xLjI3NjMxXV0sW1syNzIuNTkyNzMsMTQzLjkzMzE1XSxbMS4yNTI1NiwxLjE1NTMyXSxbLTEuMzI4OTUsLTEuMjQ1NzRdXSxbWzI2OC4zNzg4MywxNDAuNDYyOF0sWzEuNDc3NCwxLjA2NTQ2XSxbLTEuMTA1OTMsLTAuNjcyMjldXSxbWzI2NS4wMzMzOSwxMzguNDI5MTNdLFsxLjEwNTkzLDAuNjcyMjldLFswLDBdXV0sJnF1b3Q7ZmlsbENvbG9yJnF1b3Q7OlswLDAsMCwxXX1dfSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjAuNSIvPjwvZz48L2c%2BPC9zdmc%2BPCEtLXJvdGF0aW9uQ2VudGVyOjcyLjQ4NjIxOTk5OTk5OTk3OjcyLjQ4NjIyLS0%2B%22%3B%0A%20%20const%20tr_icon%20%3D%0A%20%20%20%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9Ii0yLjI2MzMxLC0yLjQxMTU2LDIwLDIwIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjMyLjI3NjYyLC0xNzIuNTczMTIpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGw9IiNmZmZmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yNDMuOTE0MTksMTgzLjk1OTEzYzAuMzY1OSwwIDAuNjcyNDYsMC4yOTYxOSAwLjY3MjQ2LDAuNjcwMTFjMCwwLjM2NDA4IC0wLjMwNjU2LDAuNjU5MjkgLTAuNjcyNDYsMC42NTkyOWMtMC4zNjU5LDAgLTAuNjYyNTcsLTAuMjk1MjEgLTAuNjYyNTcsLTAuNjU5MjljMCwtMC4zNzM5MiAwLjI5NjY3LC0wLjY3MDExIDAuNjYyNTcsLTAuNjcwMTF6TTIzNS4wNDMwMiwxNzkuMDUwMDN2MC4wMDk4NGMtMC4xODc4OSwwLjQ4MjE2IC0wLjcwMTE0LDAuNzc3MzYgLTEuMjI1MjcsMC42NDk0NGMtMC41NjQ2NywtMC4xMjc5MiAtMC45MjA2OCwtMC42OTg2NCAtMC43OTExMywtMS4yNTk1MmMwLjU0MzksLTIuMzQxOTMgMi40NDI2MiwtNC4zODg2NiA0Ljg5NDE0LC01LjEyNjY3YzEuMjE3MzUsLTAuMzczOTIgMi41NDE1MiwtMC40MjMxMiAzLjgxNzIyLC0wLjE0ODU4YzEuMDk4NjgsMC4yMzYxNiAyLjE0NTk1LDAuNzM4MDEgMy4wNDU4NiwxLjQzNjY1bDAuOTg4OTEsLTAuOTg0YzAuNDU0OSwtMC40NDE4MiAxLjIyNzI1LC0wLjEyNzkyIDEuMjI3MjUsMC41MTI2NnY0LjY5MjcyYzAsMC4zOTQ1OSAtMC4zMjYzNCwwLjcxOTMxIC0wLjcyMjg5LDAuNzE5MzFoLTQuNzE2MTRjLTAuNjQzNzksMCAtMC45NjAyNCwtMC43Njg1MSAtMC41MTUyMywtMS4yMjExNWwxLjE1NzAzLC0xLjE1MDNjLTAuOTA5OCwtMC44MzY0MSAtMi4yNDM4NSwtMS4yNjkzNiAtMy41Nzk4NywtMS4wNDMwNWMtMS41MjI5MywwLjIyNTM0IC0yLjk3NjYzLDEuMzQ3MSAtMy41Nzk4NywyLjkxMjY2ek0yNDEuMjkzMzcsMTg1LjQwNjZjMC40MTUzNSwwIDAuNzQxNjksMC4zMjQ3MyAwLjc0MTY5LDAuNzM4MDFjMCwwLjQxMzI4IC0wLjMyNjM0LDAuNzQ3ODQgLTAuNzQxNjksMC43NDc4NGMtMC40MTUzNSwwIC0wLjc1MTU4LC0wLjMzNDU2IC0wLjc1MTU4LC0wLjc0Nzg0YzAsLTAuNDEzMjggMC4zMzYyMywtMC43MzgwMSAwLjc1MTU4LC0wLjczODAxek0yMzUuNjE2NTksMTgzLjgxMjMyYzAuNTA1MzQsMCAwLjkwOTgxLDAuNDAzNDQgMC45MDk4MSwwLjkwNTI4YzAsMC40OTIgLTAuNDA0NDcsMC44OTU0NCAtMC45MDk4MSwwLjg5NTQ0Yy0wLjUwNDM1LDAgLTAuOTA5OCwtMC40MDM0NSAtMC45MDk4LC0wLjg5NTQ0YzAsLTAuNTAxODUgMC40MDU0NSwtMC45MDUyOCAwLjkwOTgsLTAuOTA1Mjh6TTIzNC4wMzQ2MywxODEuMTU1NDFjMC41NDM5LDAgMC45ODg5MSwwLjQ0MjggMC45ODg5MSwwLjk4NGMwLDAuNTUxMDQgLTAuNDQ1MDEsMC45ODQgLTAuOTg4OTEsMC45ODRjLTAuNTQzOSwwIC0wLjk4ODkyLC0wLjQzMjk2IC0wLjk4ODkyLC0wLjk4NGMwLC0wLjU0MTIgMC40NDUwMiwtMC45ODQgMC45ODg5MiwtMC45ODR6TTIzOC4yNjc2OCwxODUuMzQ2ODdjMC40NTQ5LDAgMC44MjA4LDAuMzczOTMgMC44MjA4LDAuODI2NTdjMCwwLjQ1MjY0IC0wLjM2NTksMC44MjY1NiAtMC44MjA4LDAuODI2NTZjLTAuNDU0OSwwIC0wLjgzMTY3LC0wLjM3MzkyIC0wLjgzMTY3LC0wLjgyNjU2YzAsLTAuNDUyNjQgMC4zNzY3NywtMC44MjY1NyAwLjgzMTY3LC0wLjgyNjU3eiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIHN0cm9rZT0iIzI1ODM4MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNMjQzLjkxNDE5LDE4My45NTkxM2MwLjM2NTksMCAwLjY3MjQ2LDAuMjk2MTkgMC42NzI0NiwwLjY3MDExYzAsMC4zNjQwOCAtMC4zMDY1NiwwLjY1OTI4IC0wLjY3MjQ2LDAuNjU5MjhjLTAuMzY1OSwwIC0wLjY2MjU3LC0wLjI5NTIgLTAuNjYyNTcsLTAuNjU5MjhjMCwtMC4zNzM5MiAwLjI5NjY3LC0wLjY3MDExIDAuNjYyNTcsLTAuNjcwMTF6TTIzNS4wNDMwMiwxNzkuMDUwMDN2MC4wMDk4NGMtMC4xODc4OSwwLjQ4MjE2IC0wLjcwMTE0LDAuNzc3MzYgLTEuMjI1MjcsMC42NDk0NGMtMC41NjQ2NywtMC4xMjc5MiAtMC45MjA2OCwtMC42OTg2NCAtMC43OTExMywtMS4yNTk1M2MwLjU0MzksLTIuMzQxOTMgMi40NDI2MiwtNC4zODg2NiA0Ljg5NDE0LC01LjEyNjY2YzEuMjE3MzYsLTAuMzczOTIgMi41NDE1MSwtMC40MjMxMiAzLjgxNzIxLC0wLjE0ODU4YzEuMDk4NjksMC4yMzYxNiAyLjE0NTk1LDAuNzM4IDMuMDQ1ODYsMS40MzY2NWwwLjk4ODkyLC0wLjk4NGMwLjQ1NDksLTAuNDQxODIgMS4yMjcyNCwtMC4xMjc5MiAxLjIyNzI0LDAuNTEyNjd2NC42OTI3MmMwLDAuMzk0NTkgLTAuMzI2MzQsMC43MTkzMSAtMC43MjI5LDAuNzE5MzFoLTQuNzE2MTRjLTAuNjQzNzgsMCAtMC45NjAyNCwtMC43Njg1MSAtMC41MTUyMywtMS4yMjExNWwxLjE1NzAzLC0xLjE1MDNjLTAuOTA5OCwtMC44MzY0IC0yLjI0Mzg1LC0xLjI2OTM3IC0zLjU3OTg3LC0xLjA0MzA1Yy0xLjUyMjkzLDAuMjI1MzQgLTIuOTc2NjQsMS4zNDcxIC0zLjU3OTg4LDIuOTEyNjV6TTI0MS4yOTMzNiwxODUuNDA2NmMwLjQxNTM0LDAgMC43NDE2OSwwLjMyNDcyIDAuNzQxNjksMC43MzhjMCwwLjQxMzI4IC0wLjMyNjM0LDAuNzQ3ODQgLTAuNzQxNjksMC43NDc4NGMtMC40MTUzNCwwIC0wLjc1MTU4LC0wLjMzNDU2IC0wLjc1MTU4LC0wLjc0Nzg0YzAsLTAuNDEzMjggMC4zMzYyMywtMC43MzggMC43NTE1OCwtMC43Mzh6TTIzNS42MTY1OSwxODMuODEyMzJjMC41MDUzNCwwIDAuOTA5OCwwLjQwMzQ0IDAuOTA5OCwwLjkwNTI4YzAsMC40OTIgLTAuNDA0NDcsMC44OTU0NCAtMC45MDk4LDAuODk1NDRjLTAuNTA0MzUsMCAtMC45MDk4LC0wLjQwMzQ0IC0wLjkwOTgsLTAuODk1NDRjMCwtMC41MDE4NCAwLjQwNTQ2LC0wLjkwNTI4IDAuOTA5OCwtMC45MDUyOHpNMjM0LjAzNDYyLDE4MS4xNTU0MWMwLjU0MzksMCAwLjk4ODkyLDAuNDQyOCAwLjk4ODkyLDAuOTg0YzAsMC41NTEwNCAtMC40NDUwMSwwLjk4NCAtMC45ODg5MiwwLjk4NGMtMC41NDM5LDAgLTAuOTg4OTIsLTAuNDMyOTYgLTAuOTg4OTIsLTAuOTg0YzAsLTAuNTQxMiAwLjQ0NTAxLC0wLjk4NCAwLjk4ODkyLC0wLjk4NHpNMjM4LjI2NzY4LDE4NS4zNDY4N2MwLjQ1NDksMCAwLjgyMDgsMC4zNzM5MiAwLjgyMDgsMC44MjY1NmMwLDAuNDUyNjQgLTAuMzY1OSwwLjgyNjU2IC0wLjgyMDgsMC44MjY1NmMtMC40NTQ5LDAgLTAuODMxNjgsLTAuMzczOTIgLTAuODMxNjgsLTAuODI2NTZjMCwtMC40NTI2NCAwLjM3Njc4LC0wLjgyNjU2IDAuODMxNjgsLTAuODI2NTZ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48L2c%2BPC9nPjwvc3ZnPjwhLS1yb3RhdGlvbkNlbnRlcjo3LjcyMzM3OTk5OTk5OTk5Mjo3LjQyNjg4MDAwMDAwMDAxMS0tPg%3D%3D%22%3B%0A%20%20const%20tl_icon%20%3D%0A%20%20%20%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9Ii0yLjI2MzMxLC0yLjQxMTU2LDIwLDIwIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjM0LjUxMzMxLC0xNzUuMDgyNykiPjxnIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2lzUGFpbnRpbmdMYXllciZxdW90Ozp0cnVlfSIgZmlsbD0iI2ZmZmZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0iYnV0dCIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIiIHN0cm9rZS1kYXNob2Zmc2V0PSIwIiBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6IG5vcm1hbCI%2BPHBhdGggZD0iTTIzOS4wMTE2OSwxODcuMDQwOGMwLDAuMzY0MDggLTAuMjk2NjcsMC42NTkyOSAtMC42NjI1NywwLjY1OTI5Yy0wLjM2NTksMCAtMC42NzI0NiwtMC4yOTUyMSAtMC42NzI0NiwtMC42NTkyOWMwLC0wLjM3MzkyIDAuMzA2NTYsLTAuNjcwMTEgMC42NzI0NiwtMC42NzAxMWMwLjM2NTksMCAwLjY2MjU3LDAuMjk2MTkgMC42NjI1NywwLjY3MDExek0yNDcuMjIwMjgsMTgxLjQ2MTZjLTAuNjAzMjQsLTEuNTY1NTYgLTIuMDU2OTQsLTIuNjg3MzIgLTMuNTc5ODcsLTIuOTEyNjZjLTEuMzM2MDIsLTAuMjI2MzEgLTIuNjcwMDcsMC4yMDY2NCAtMy41Nzk4NywxLjA0MzA1bDEuMTU3MDMsMS4xNTAzYzAuNDQ1MDEsMC40NTI2NCAwLjEyODU2LDEuMjIxMTUgLTAuNTE1MjMsMS4yMjExNWgtNC43MTYxNGMtMC4zOTY1NSwwIC0wLjcyMjg5LC0wLjMyNDcyIC0wLjcyMjg5LC0wLjcxOTMxdi00LjY5MjcyYzAsLTAuNjQwNTggMC43NzIzNSwtMC45NTQ0OCAxLjIyNzI1LC0wLjUxMjY2bDAuOTg4OTEsMC45ODRjMC44OTk5MSwtMC42OTg2NCAxLjk0NzE4LC0xLjIwMDQ5IDMuMDQ1ODYsLTEuNDM2NjVjMS4yNzU3LC0wLjI3NDU0IDIuNTk5ODcsLTAuMjI1MzQgMy44MTcyMiwwLjE0ODU4YzIuNDUxNTIsMC43MzgwMSA0LjM1MDI0LDIuNzg0NzQgNC44OTQxNCw1LjEyNjY3YzAuMTI5NTUsMC41NjA4OCAtMC4yMjY0NiwxLjEzMTYgLTAuNzkxMTMsMS4yNTk1MmMtMC41MjQxMywwLjEyNzkyIC0xLjAzNzM4LC0wLjE2NzI4IC0xLjIyNTI3LC0wLjY0OTQ0di0wLjAwOTg0ek0yNDEuNzIxNTIsMTg4LjU1NjE3YzAsMC40MTMyOCAtMC4zMzYyMywwLjc0Nzg0IC0wLjc1MTU4LDAuNzQ3ODRjLTAuNDE1MzUsMCAtMC43NDE2OSwtMC4zMzQ1NiAtMC43NDE2OSwtMC43NDc4NGMwLC0wLjQxMzI4IDAuMzI2MzQsLTAuNzM4MDEgMC43NDE2OSwtMC43MzgwMWMwLjQxNTM1LDAgMC43NTE1OCwwLjMyNDczIDAuNzUxNTgsMC43MzgwMXpNMjQ3LjU1NjUyLDE4Ny4xMjkxNmMwLDAuNDkxOTkgLTAuNDA1NDUsMC44OTU0NCAtMC45MDk4LDAuODk1NDRjLTAuNTA1MzQsMCAtMC45MDk4MSwtMC40MDM0NCAtMC45MDk4MSwtMC44OTU0NGMwLC0wLjUwMTg0IDAuNDA0NDcsLTAuOTA1MjggMC45MDk4MSwtMC45MDUyOGMwLjUwNDM1LDAgMC45MDk4LDAuNDAzNDMgMC45MDk4LDAuOTA1Mjh6TTI0OS4yMTc2LDE4NC41NTA5N2MwLDAuNTUxMDQgLTAuNDQ1MDIsMC45ODQgLTAuOTg4OTIsMC45ODRjLTAuNTQzOSwwIC0wLjk4ODkxLC0wLjQzMjk2IC0wLjk4ODkxLC0wLjk4NGMwLC0wLjU0MTIgMC40NDUwMSwtMC45ODQgMC45ODg5MSwtMC45ODRjMC41NDM5LDAgMC45ODg5MiwwLjQ0MjggMC45ODg5MiwwLjk4NHpNMjQ0LjgyNzMsMTg4LjU4NWMwLDAuNDUyNjQgLTAuMzc2NzcsMC44MjY1NiAtMC44MzE2NywwLjgyNjU2Yy0wLjQ1NDksMCAtMC44MjA4LC0wLjM3MzkyIC0wLjgyMDgsLTAuODI2NTZjMCwtMC40NTI2NCAwLjM2NTksLTAuODI2NTcgMC44MjA4LC0wLjgyNjU3YzAuNDU0OSwwIDAuODMxNjcsMC4zNzM5MyAwLjgzMTY3LDAuODI2NTd6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgc3Ryb2tlPSIjMjU4MzgzIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik0yMzkuMDExNjksMTg3LjA0MDhjMCwwLjM2NDA4IC0wLjI5NjY3LDAuNjU5MjggLTAuNjYyNTcsMC42NTkyOGMtMC4zNjU5LDAgLTAuNjcyNDYsLTAuMjk1MiAtMC42NzI0NiwtMC42NTkyOGMwLC0wLjM3MzkyIDAuMzA2NTYsLTAuNjcwMTEgMC42NzI0NiwtMC42NzAxMWMwLjM2NTksMCAwLjY2MjU3LDAuMjk2MTkgMC42NjI1NywwLjY3MDExek0yNDcuMjIwMzEsMTgxLjQ2MTZjLTAuNjAzMjQsLTEuNTY1NTUgLTIuMDU2OTUsLTIuNjg3MzEgLTMuNTc5ODgsLTIuOTEyNjVjLTEuMzM2MDIsLTAuMjI2MzIgLTIuNjcwMDcsMC4yMDY2NSAtMy41Nzk4NywxLjA0MzA1bDEuMTU3MDMsMS4xNTAzYzAuNDQ1MDEsMC40NTI2NCAwLjEyODU1LDEuMjIxMTUgLTAuNTE1MjMsMS4yMjExNWgtNC43MTYxNGMtMC4zOTY1NiwwIC0wLjcyMjksLTAuMzI0NzIgLTAuNzIyOSwtMC43MTkzMXYtNC42OTI3MmMwLC0wLjY0MDU5IDAuNzcyMzQsLTAuOTU0NDkgMS4yMjcyNCwtMC41MTI2N2wwLjk4ODkyLDAuOTg0YzAuODk5OTEsLTAuNjk4NjUgMS45NDcxNywtMS4yMDA0OSAzLjA0NTg2LC0xLjQzNjY1YzEuMjc1NywtMC4yNzQ1NCAyLjU5OTg1LC0wLjIyNTM0IDMuODE3MjEsMC4xNDg1OGMyLjQ1MTUyLDAuNzM4IDQuMzUwMjQsMi43ODQ3MyA0Ljg5NDE0LDUuMTI2NjZjMC4xMjk1NSwwLjU2MDg5IC0wLjIyNjQ2LDEuMTMxNjEgLTAuNzkxMTMsMS4yNTk1M2MtMC41MjQxMywwLjEyNzkyIC0xLjAzNzM4LC0wLjE2NzI4IC0xLjIyNTI3LC0wLjY0OTQ0di0wLjAwOTg0ek0yNDEuNzIxNTMsMTg4LjU1NjE2YzAsMC40MTMyOCAtMC4zMzYyNCwwLjc0Nzg0IC0wLjc1MTU4LDAuNzQ3ODRjLTAuNDE1MzUsMCAtMC43NDE2OSwtMC4zMzQ1NiAtMC43NDE2OSwtMC43NDc4NGMwLC0wLjQxMzI4IDAuMzI2MzUsLTAuNzM4IDAuNzQxNjksLTAuNzM4YzAuNDE1MzUsMCAwLjc1MTU4LDAuMzI0NzIgMC43NTE1OCwwLjczOHpNMjQ3LjU1NjUyLDE4Ny4xMjkxNmMwLDAuNDkyIC0wLjQwNTQ1LDAuODk1NDQgLTAuOTA5OCwwLjg5NTQ0Yy0wLjUwNTMzLDAgLTAuOTA5OCwtMC40MDM0NCAtMC45MDk4LC0wLjg5NTQ0YzAsLTAuNTAxODQgMC40MDQ0NiwtMC45MDUyOCAwLjkwOTgsLTAuOTA1MjhjMC41MDQzNCwwIDAuOTA5OCwwLjQwMzQ0IDAuOTA5OCwwLjkwNTI4ek0yNDkuMjE3NjEsMTg0LjU1MDk3YzAsMC41NTEwNCAtMC40NDUwMiwwLjk4NCAtMC45ODg5MiwwLjk4NGMtMC41NDM5MSwwIC0wLjk4ODkyLC0wLjQzMjk2IC0wLjk4ODkyLC0wLjk4NGMwLC0wLjU0MTIgMC40NDUwMiwtMC45ODQgMC45ODg5MiwtMC45ODRjMC41NDM5MSwwIDAuOTg4OTIsMC40NDI4IDAuOTg4OTIsMC45ODR6TTI0NC44MjczMSwxODguNTg0OTljMCwwLjQ1MjY0IC0wLjM3Njc4LDAuODI2NTYgLTAuODMxNjgsMC44MjY1NmMtMC40NTQ5LDAgLTAuODIwOCwtMC4zNzM5MiAtMC44MjA4LC0wLjgyNjU2YzAsLTAuNDUyNjQgMC4zNjU5LC0wLjgyNjU2IDAuODIwOCwtMC44MjY1NmMwLjQ1NDksMCAwLjgzMTY4LDAuMzczOTIgMC44MzE2OCwwLjgyNjU2eiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIi8%2BPC9nPjwvZz48L3N2Zz48IS0tcm90YXRpb25DZW50ZXI6NS40ODY2OTE0OTU5NDA0Mjo0LjkxNzMwNDExMjkyMTc1NS0tPg%3D%3D%22%3B%0A%20%20let%20gx%20%3D%20%5B0%5D%3B%0A%20%20let%20gy%20%3D%20%5B0%5D%3B%0A%20%20let%20gr%20%3D%20%5B90%5D%3B%0A%20%20let%20gs%20%3D%20%5B100%5D%3B%0A%20%20let%20rm%20%3D%20%5B0%5D%3B%0A%20%20class%20Global_Coordinate%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22globalCoordinate%22%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%232ea4a4%22%2C%0A%20%20%20%20%20%20%20%20menuIconURI%3A%20icon%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Global%20Coordinate%22)%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22SET%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20icon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22go%20to%20x%3A%20%5Bx%5D%20y%3A%20%5By%5D%20direction%20%5Br%5D%20size%20%5Bs%5D%20-%20use%20screens%20%5Bscreen%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20r%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2290%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22100%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22rotation_mode%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20filter%3A%20%5BScratch.TargetType.SPRITE%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22set%20screens%20%5Bscreen%5D's%20rotation%20mode%20to%20%5Bm%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20m%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22rotation_mode%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22set%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22set%20screens%20%5Bscreen%5D%20's%20x%3A%20%5Bx%5D%20y%3A%20%5By%5D%20direction%3A%20%5Br%5D%20size%3A%20%5Bs%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20r%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2290%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22100%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22Set_Co%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20screens%20%5Bscreen%5D%20's%20x%20%5Bx%5D%20y%3A%20%5By%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22Set_GX%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20screens%20%5Bscreen%5D%20's%20x%20to%20%5Bx%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22Set_GY%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20screens%20%5Bscreen%5D%20's%20y%20to%3A%20%5By%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22CX%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20screens%20%5Bscreen%5D%20's%20x%20by%20%5Bx%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2210%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22CY%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20screens%20%5Bscreen%5D%20's%20y%20by%20%5By%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2210%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22Set_GR%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20screens%20%5Bscreen%5D%20's%20direction%20%5Br%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20r%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2290%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22TR%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22turn%20%5Btr_icon%5D%20%5Br%5D%20degrees%20-%20screens%20%5Bscreen%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20r%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2215%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20tr_icon%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.IMAGE%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dataURI%3A%20tr_icon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22TL%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22turn%20%5Btr_icon%5D%20%5Br%5D%20degrees%20-%20screens%20%5Bscreen%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20r%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2215%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20tr_icon%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.IMAGE%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dataURI%3A%20tl_icon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22Set_si%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20screens%20%5Bscreen%5D%20's%20size%20%5Bs%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22100%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22CS%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20screens%20%5Bscreen%5D%20's%20size%20by%20%5Bs%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2210%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22screens%20%5Bscreen%5D%20x%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22y%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22screens%20%5Bscreen%5D%20y%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22r%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22screens%20%5Bscreen%5D%20direction%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22s%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22screens%20%5Bscreen%5D%20size%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22rm%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22screens%20%5Bscreen%5D%20rotation%20mode%20is%20screen%3F%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20screen%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20rotation_mode%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22center%20of%20stage%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22center%20of%20screen%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20SET(args%2C%20%7B%20target%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(isNaN(args.x))%20%7B%0A%20%20%20%20%20%20%20%20args.x%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(isNaN(args.y))%20%7B%0A%20%20%20%20%20%20%20%20args.y%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(isNaN(args.r))%20%7B%0A%20%20%20%20%20%20%20%20args.r%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(isNaN(args.s))%20%7B%0A%20%20%20%20%20%20%20%20args.s%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20target.setSize((args.s%20%2F%20100)%20*%20gs%5Bargs.screen%20-%201%5D)%3B%0A%20%20%20%20%20%20target.setDirection(-(args.r%20-%20(gr%5Bargs.screen%20-%201%5D%20-%2090)%20-%2090)%20%2B%2090)%3B%0A%20%20%20%20%20%20if%20(rm%5Bargs.screen%20-%201%5D%20%3D%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20target.setXY(%0A%20%20%20%20%20%20%20%20%20%20(gx%5Bargs.screen%20-%201%5D%20%2F%20100)%20*%20gs%5Bargs.screen%20-%201%5D%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20(gs%5Bargs.screen%20-%201%5D%20%2F%20100)%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20(-args.x%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Math.cos(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20((-(gr%5Bargs.screen%20-%201%5D%20-%2090%20-%2090)%20%2B%2090)%20%2F%20180)%20*%20Math.PI%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20-%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-args.y%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Math.sin(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20((-(gr%5Bargs.screen%20-%201%5D%20-%2090%20-%2090)%20%2B%2090)%20%2F%20180)%20*%20Math.PI%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20))%2C%0A%20%20%20%20%20%20%20%20%20%20(gy%5Bargs.screen%20-%201%5D%20%2F%20100)%20*%20gs%5Bargs.screen%20-%201%5D%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20(gs%5Bargs.screen%20-%201%5D%20%2F%20100)%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20(-args.x%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Math.sin(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20((-(gr%5Bargs.screen%20-%201%5D%20-%2090%20-%2090)%20%2B%2090)%20%2F%20180)%20*%20Math.PI%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-args.y%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Math.cos(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20((-(gr%5Bargs.screen%20-%201%5D%20-%2090%20-%2090)%20%2B%2090)%20%2F%20180)%20*%20Math.PI%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20))%2C%0A%20%20%20%20%20%20%20%20%20%20true%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20target.setXY(%0A%20%20%20%20%20%20%20%20%20%20(gs%5Bargs.screen%20-%201%5D%20%2F%20100)%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20(-(args.x%20%2B%20gx%5Bargs.screen%20-%201%5D)%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Math.cos(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20((-(gr%5Bargs.screen%20-%201%5D%20-%2090%20-%2090)%20%2B%2090)%20%2F%20180)%20*%20Math.PI%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20-%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-(args.y%20%2B%20gy%5Bargs.screen%20-%201%5D)%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Math.sin(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20((-(gr%5Bargs.screen%20-%201%5D%20-%2090%20-%2090)%20%2B%2090)%20%2F%20180)%20*%20Math.PI%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20))%2C%0A%20%20%20%20%20%20%20%20%20%20(gs%5Bargs.screen%20-%201%5D%20%2F%20100)%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20(-(args.x%20%2B%20gx%5Bargs.screen%20-%201%5D)%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Math.sin(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20((-(gr%5Bargs.screen%20-%201%5D%20-%2090%20-%2090)%20%2B%2090)%20%2F%20180)%20*%20Math.PI%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20-(args.y%20%2B%20gy%5Bargs.screen%20-%201%5D)%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Math.cos(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20((-(gr%5Bargs.screen%20-%201%5D%20-%2090%20-%2090)%20%2B%2090)%20%2F%20180)%20*%20Math.PI%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20))%2C%0A%20%20%20%20%20%20%20%20%20%20true%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20rotation_mode(args)%20%7B%0A%20%20%20%20%20%20rm%5Bargs.screen%20-%201%5D%20%3D%20args.m%3B%0A%20%20%20%20%7D%0A%20%20%20%20set(%7B%20x%2C%20y%2C%20r%2C%20s%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(x))%20%7B%0A%20%20%20%20%20%20%20%20gx%5Bscreen%20-%201%5D%20%3D%20x%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20gx%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(!isNaN(y))%20%7B%0A%20%20%20%20%20%20%20%20gy%5Bscreen%20-%201%5D%20%3D%20y%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20gy%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(!isNaN(r))%20%7B%0A%20%20%20%20%20%20%20%20gr%5Bscreen%20-%201%5D%20%3D%20r%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20gr%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(!isNaN(s))%20%7B%0A%20%20%20%20%20%20%20%20gs%5Bscreen%20-%201%5D%20%3D%20s%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20gs%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20Set_Co(%7B%20x%2C%20y%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(x%20%2B%20y))%20%7B%0A%20%20%20%20%20%20%20%20gx%5Bscreen%20-%201%5D%20%3D%20x%3B%0A%20%20%20%20%20%20%20%20gy%5Bscreen%20-%201%5D%20%3D%20y%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20if%20(isNaN(x))%20%7B%0A%20%20%20%20%20%20%20%20%20%20x%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(isNaN(y))%20%7B%0A%20%20%20%20%20%20%20%20%20%20y%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20Set_GX(%7B%20x%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(x))%20%7B%0A%20%20%20%20%20%20%20%20gx%5Bscreen%20-%201%5D%20%3D%20x%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20gx%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20Set_GY(%7B%20y%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(y))%20%7B%0A%20%20%20%20%20%20%20%20gy%5Bscreen%20-%201%5D%20%3D%20y%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20gy%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20CX(%7B%20x%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(x))%20%7B%0A%20%20%20%20%20%20%20%20gx%5Bscreen%20-%201%5D%20%2B%3D%20x%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20CY(%7B%20y%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(y))%20%7B%0A%20%20%20%20%20%20%20%20gy%5Bscreen%20-%201%5D%20%2B%3D%20y%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20Set_GR(%7B%20r%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(r))%20%7B%0A%20%20%20%20%20%20%20%20gr%5Bscreen%20-%201%5D%20%3D%20r%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20gr%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20TR(%7B%20r%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(r))%20%7B%0A%20%20%20%20%20%20%20%20gr%5Bscreen%20-%201%5D%20%2B%3D%20r%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20TL(%7B%20r%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(r))%20%7B%0A%20%20%20%20%20%20%20%20gr%5Bscreen%20-%201%5D%20-%3D%20r%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20Set_si(%7B%20s%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(s))%20%7B%0A%20%20%20%20%20%20%20%20gs%5Bscreen%20-%201%5D%20%3D%20s%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20gs%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(gs%5Bscreen%20-%201%5D%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20gs%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20CS(%7B%20s%2C%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(!isNaN(s))%20%7B%0A%20%20%20%20%20%20%20%20gs%5Bscreen%20-%201%5D%20%2B%3D%20s%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(gs%5Bscreen%20-%201%5D%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20gs%5Bscreen%20-%201%5D%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20x(%7B%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20return%20gx%5Bscreen%20-%201%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20y(%7B%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20return%20gy%5Bscreen%20-%201%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20r(%7B%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20return%20gr%5Bscreen%20-%201%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20s(%7B%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20return%20gs%5Bscreen%20-%201%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20rm(%7B%20screen%20%7D)%20%7B%0A%20%20%20%20%20%20return%20rm%5Bscreen%20-%201%5D%20%3D%3D%201%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20Scratch.extensions.register(new%20Global_Coordinate())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Window%20Controls%0A%2F%2F%20ID%3A%20cubesterWindowControls%0A%2F%2F%20Description%3A%20Move%2C%20resize%2C%20rename%20the%20window%2C%20enter%20fullscreen%2C%20get%20screen%20size%2C%20and%20more.%0A%2F%2F%20By%3A%20CubesterYT%20%3Chttps%3A%2F%2Fscratch.mit.edu%2Fusers%2FCubesterYT%2F%3E%0A%2F%2F%20Original%3A%20BlueDome77%0A%2F%2F%20License%3A%20MIT%0A%0A%2F%2F%20Version%20V.1.0.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_Window%20Controls%22%3A%22Fensterkontrolle%22%7D%2C%22fi%22%3A%7B%22_Hello%20World!%22%3A%22Hei%20kaikki!%22%2C%22_May%20not%20work%20in%20normal%20browser%20tabs%22%3A%22Ei%20toimi%20tavallisilla%20selainv%C3%A4lilehdill%C3%A4%22%2C%22_Refer%20to%20Documentation%20for%20details%22%3A%22Lis%C3%A4tietoja%20oppaassa%22%2C%22_Window%20Controls%22%3A%22Ikkunan%20s%C3%A4%C3%A4t%C3%B6%22%2C%22_bottom%22%3A%22alaosaan%22%2C%22_bottom%20left%22%3A%22vasempaan%20alakulmaan%22%2C%22_bottom%20right%22%3A%22oikeaan%20alakulmaan%22%2C%22_center%22%3A%22keskelle%22%2C%22_change%20window%20height%20by%20%5BH%5D%22%3A%22lis%C3%A4%C3%A4%20ikkunan%20korkeutta%20arvolla%20%5BH%5D%22%2C%22_change%20window%20width%20by%20%5BW%5D%22%3A%22lis%C3%A4%C3%A4%20ikkunan%20leveytt%C3%A4%20arvolla%20%5BW%5D%22%2C%22_change%20window%20x%20by%20%5BX%5D%22%3A%22lis%C3%A4%C3%A4%20ikkunan%20x%3An%20arvoon%20%5BX%5D%22%2C%22_change%20window%20y%20by%20%5BY%5D%22%3A%22lis%C3%A4%C3%A4%20ikkunan%20y%3An%20arvoon%20%5BY%5D%22%2C%22_close%20window%22%3A%22sulje%20ikkuna%22%2C%22_enter%20fullscreen%22%3A%22siirry%20koko%20n%C3%A4yt%C3%B6n%20tilaan%22%2C%22_exit%20fullscreen%22%3A%22poistu%20koko%20n%C3%A4yt%C3%B6n%20tilasta%22%2C%22_is%20window%20focused%3F%22%3A%22onko%20ikkuna%20huomion%20kohteena%3F%22%2C%22_is%20window%20fullscreen%3F%22%3A%22onko%20ikkuna%20koko%20n%C3%A4yt%C3%B6n%20tilassa%3F%22%2C%22_is%20window%20touching%20screen%20edge%3F%22%3A%22koskettaako%20ikkuna%20n%C3%A4yt%C3%B6n%20reunaa%3F%22%2C%22_left%22%3A%22vasemmalle%22%2C%22_match%20stage%20size%22%3A%22tee%20ikkunasta%20esiintymislavan%20kokoinen%22%2C%22_move%20window%20to%20the%20%5BPRESETS%5D%22%3A%22siirr%C3%A4%20ikkuna%20%5BPRESETS%5D%22%2C%22_move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%3A%22siirr%C3%A4%20ikkuna%20sijaintiin%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%22_random%20position%22%3A%22satunnaiseen%20sijaintiin%22%2C%22_resize%20window%20to%20%5BPRESETS%5D%22%3A%22aseta%20ikkunan%20kooksi%20%5BPRESETS%5D%22%2C%22_resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22%3A%22aseta%20ikkunan%20leveydeksi%20%5BW%5D%20ja%20korkeudeksi%20%5BH%5D%20%22%2C%22_right%22%3A%22oikealle%22%2C%22_screen%20height%22%3A%22n%C3%A4yt%C3%B6n%20korkeus%22%2C%22_screen%20width%22%3A%22n%C3%A4yt%C3%B6n%20leveys%22%2C%22_set%20window%20height%20to%20%5BH%5D%22%3A%22aseta%20ikkunan%20korkeudeksi%20%5BH%5D%22%2C%22_set%20window%20title%20to%20%5BTITLE%5D%22%3A%22aseta%20ikkunan%20otsikoksi%20%5BTITLE%5D%22%2C%22_set%20window%20width%20to%20%5BW%5D%22%3A%22aseta%20ikkunan%20leveydeksi%20%5BW%5D%22%2C%22_set%20window%20x%20to%20%5BX%5D%22%3A%22aseta%20ikkunan%20x%3An%20arvoksi%20%5BX%5D%22%2C%22_set%20window%20y%20to%20%5BY%5D%22%3A%22aseta%20ikkunan%20y%3An%20arvoksi%20%5BY%5D%22%2C%22_top%22%3A%22yl%C3%A4osaan%22%2C%22_top%20left%22%3A%22vasempaan%20yl%C3%A4kulmaan%22%2C%22_top%20right%22%3A%22oikeaan%20yl%C3%A4kulmaan%22%2C%22_window%20height%22%3A%22ikkunan%20korkeus%22%2C%22_window%20title%22%3A%22ikkunan%20otsikko%22%2C%22_window%20width%22%3A%22ikkunan%20leveys%22%2C%22_window%20x%22%3A%22ikkunan%20x-sijainti%22%2C%22_window%20y%22%3A%22ikkunan%20y-sijainti%22%2C%22editorConfirmation%22%3A%22Haluatko%20varmasti%20sulkea%20t%C3%A4m%C3%A4n%20ikkunan%3F%5Cn%5Cn(T%C3%A4t%C3%A4%20viesti%C3%A4%20ei%20n%C3%A4ytet%C3%A4%2C%20kun%20projekti%20on%20pakattu.)%22%7D%2C%22it%22%3A%7B%22_Hello%20World!%22%3A%22Ciao%20Mondo%22%2C%22_May%20not%20work%20in%20normal%20browser%20tabs%22%3A%22Potrebbe%20non%20funzionare%20nelle%20normali%20schede%20del%20browser%22%2C%22_Refer%20to%20Documentation%20for%20details%22%3A%22Per%20i%20dettagli%20fare%20riferimento%20alla%20Documetazione%22%2C%22_Window%20Controls%22%3A%22Controlli%20Finestra%22%2C%22_bottom%22%3A%22in%20fondo%22%2C%22_bottom%20left%22%3A%22angolo%20sinistra%20in%20basso%22%2C%22_bottom%20right%22%3A%22angolo%20destra%20in%20basso%22%2C%22_center%22%3A%22centro%22%2C%22_change%20window%20height%20by%20%5BH%5D%22%3A%22cambia%20altezza%20finestra%20di%20%5BH%5D%22%2C%22_change%20window%20width%20by%20%5BW%5D%22%3A%22cambia%20larghezza%20finestra%20di%20%5BW%5D%22%2C%22_change%20window%20x%20by%20%5BX%5D%22%3A%22cambia%20x%20finestra%20di%20%5BX%5D%22%2C%22_change%20window%20y%20by%20%5BY%5D%22%3A%22cambia%20y%20finestra%20di%20%5BY%5D%22%2C%22_close%20window%22%3A%22chiudi%20finestra%22%2C%22_enter%20fullscreen%22%3A%22passa%20a%20schermo%20intero%22%2C%22_exit%20fullscreen%22%3A%22esci%20da%20schermo%20intero%22%2C%22_is%20window%20focused%3F%22%3A%22finestra%20in%20primo%20piano%22%2C%22_is%20window%20fullscreen%3F%22%3A%22la%20finestra%20%C3%A8%20a%20schermo%20intero%22%2C%22_is%20window%20touching%20screen%20edge%3F%22%3A%22la%20finestra%20tocca%20il%20bordo%20dello%20schermo%22%2C%22_left%22%3A%22a%20sinistra%22%2C%22_match%20stage%20size%22%3A%22dimensione%20Stage%22%2C%22_move%20window%20to%20the%20%5BPRESETS%5D%22%3A%22sposta%20finestra%20a%20%5BPRESETS%5D%22%2C%22_move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%3A%22sposta%20finestra%20a%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%22_random%20position%22%3A%22posizione%20scelta%20a%20caso%22%2C%22_resize%20window%20to%20%5BPRESETS%5D%22%3A%22ridimensiona%20finestra%20a%20%5BPRESETS%5D%22%2C%22_resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22%3A%22ridimensiona%20finestra%20a%20larghezza%3A%20%5BW%5D%20altezza%3A%20%5BH%5D%22%2C%22_right%22%3A%22a%20destra%22%2C%22_screen%20height%22%3A%22altezza%20schermo%22%2C%22_screen%20width%22%3A%22larghezza%20schermo%22%2C%22_set%20window%20height%20to%20%5BH%5D%22%3A%22porta%20altezza%20finestra%20a%20%5BH%5D%22%2C%22_set%20window%20title%20to%20%5BTITLE%5D%22%3A%22imposta%20titolo%20finestra%20a%20%5BTITLE%5D%22%2C%22_set%20window%20width%20to%20%5BW%5D%22%3A%22porta%20larghezza%20finestra%20a%20%5BW%5D%22%2C%22_set%20window%20x%20to%20%5BX%5D%22%3A%22sposta%20finestra%20a%20x%20%5BX%5D%22%2C%22_set%20window%20y%20to%20%5BY%5D%22%3A%22sposta%20finestra%20a%20y%20%5BY%5D%22%2C%22_top%22%3A%22in%20cima%22%2C%22_top%20left%22%3A%22angolo%20sinistra%20in%20alto%22%2C%22_top%20right%22%3A%22angolo%20destra%20in%20alto%22%2C%22_window%20height%22%3A%22altezza%20finestra%22%2C%22_window%20title%22%3A%22titolo%20finestra%22%2C%22_window%20width%22%3A%22larghezza%20finestra%22%2C%22_window%20x%22%3A%22x%20finestra%22%2C%22_window%20y%22%3A%22y%20finestra%22%2C%22editorConfirmation%22%3A%22Sei%20sicuro%20di%20voler%20chiudere%20questa%20finestra%3F%5Cn%5Cn(Questo%20messaggio%20non%20apparir%C3%A0%20se%20si%20usa%20il%20packager)%22%7D%2C%22ja%22%3A%7B%22_May%20not%20work%20in%20normal%20browser%20tabs%22%3A%22%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E3%81%AF%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%22%2C%22_Refer%20to%20Documentation%20for%20details%22%3A%22%E8%A9%B3%E3%81%97%E3%81%8F%E3%81%AF%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E3%81%94%E8%A6%A7%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%22%2C%22_bottom%22%3A%22%E4%B8%8B%22%2C%22_bottom%20left%22%3A%22%E5%B7%A6%E4%B8%8B%22%2C%22_bottom%20right%22%3A%22%E5%8F%B3%E4%B8%8B%22%2C%22_center%22%3A%22%E4%B8%AD%E5%A4%AE%22%2C%22_change%20window%20height%20by%20%5BH%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E9%AB%98%E3%81%95%E3%82%92%5BH%5D%E3%81%9A%E3%81%A4%E5%A4%89%E3%81%88%E3%82%8B%22%2C%22_change%20window%20width%20by%20%5BW%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E5%B9%85%E3%82%92%5BW%5D%E3%81%9A%E3%81%A4%E5%A4%89%E3%81%88%E3%82%8B%22%2C%22_change%20window%20x%20by%20%5BX%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AEx%E5%BA%A7%E6%A8%99%E3%82%92%5BX%5D%E3%81%9A%E3%81%A4%E5%A4%89%E3%81%88%E3%82%8B%22%2C%22_change%20window%20y%20by%20%5BY%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AEy%E5%BA%A7%E6%A8%99%E3%82%92%5BY%5D%E3%81%9A%E3%81%A4%E5%A4%89%E3%81%88%E3%82%8B%22%2C%22_close%20window%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E9%96%89%E3%81%98%E3%82%8B%22%2C%22_enter%20fullscreen%22%3A%22%E5%85%A8%E7%94%BB%E9%9D%A2%E8%A1%A8%E7%A4%BA%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_exit%20fullscreen%22%3A%22%E5%85%A8%E7%94%BB%E9%9D%A2%E8%A1%A8%E7%A4%BA%E3%82%92%E7%B5%82%E4%BA%86%E3%81%99%E3%82%8B%22%2C%22_is%20window%20focused%3F%22%3A%22%E3%81%93%E3%81%AE%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%8C%E3%83%95%E3%82%A9%E3%83%BC%E3%82%AB%E3%82%B9%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%22%2C%22_is%20window%20fullscreen%3F%22%3A%22%E5%85%A8%E7%94%BB%E9%9D%A2%E8%A1%A8%E7%A4%BA%22%2C%22_is%20window%20touching%20screen%20edge%3F%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%8C%E7%94%BB%E9%9D%A2%E3%81%AE%E7%AB%AF%E3%81%AB%E8%A7%A6%E3%82%8C%E3%81%9F%22%2C%22_left%22%3A%22%E5%B7%A6%22%2C%22_match%20stage%20size%22%3A%22%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8%E3%81%AE%E5%A4%A7%E3%81%8D%E3%81%95%E3%81%AB%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%22%2C%22_move%20window%20to%20the%20%5BPRESETS%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%5BPRESETS%5D%E3%81%AB%E7%A7%BB%E5%8B%95%E3%81%99%E3%82%8B%22%2C%22_move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AEx%E5%BA%A7%E6%A8%99%E3%82%92%5BX%5D%E3%80%81y%E5%BA%A7%E6%A8%99%E3%82%92%5BY%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_random%20position%22%3A%22%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%81%AA%E4%BD%8D%E7%BD%AE%22%2C%22_resize%20window%20to%20%5BPRESETS%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E5%A4%A7%E3%81%8D%E3%81%95%E3%82%92%5BPRESETS%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E5%B9%85%E3%82%92%5BW%5D%E3%80%81%E9%AB%98%E3%81%95%E3%82%92%5BH%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_right%22%3A%22%E5%8F%B3%22%2C%22_screen%20height%22%3A%22%E7%94%BB%E9%9D%A2%E3%81%AE%E9%AB%98%E3%81%95%22%2C%22_screen%20width%22%3A%22%E7%94%BB%E9%9D%A2%E3%81%AE%E5%B9%85%22%2C%22_set%20window%20height%20to%20%5BH%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E9%AB%98%E3%81%95%E3%82%92%5BH%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20window%20title%20to%20%5BTITLE%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%82%92%5BTITLE%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20window%20width%20to%20%5BW%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E5%B9%85%E3%82%92%5BW%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20window%20x%20to%20%5BX%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AEx%E5%BA%A7%E6%A8%99%E3%82%92%5BX%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20window%20y%20to%20%5BY%5D%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AEy%E5%BA%A7%E6%A8%99%E3%82%92%5BY%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_top%22%3A%22%E4%B8%8A%22%2C%22_top%20left%22%3A%22%E5%B7%A6%E4%B8%8A%22%2C%22_top%20right%22%3A%22%E5%8F%B3%E4%B8%8A%22%2C%22_window%20height%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E9%AB%98%E3%81%95%22%2C%22_window%20title%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%22%2C%22_window%20width%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E5%B9%85%22%2C%22_window%20x%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AEx%E5%BA%A7%E6%A8%99%22%2C%22_window%20y%22%3A%22%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AEy%E5%BA%A7%E6%A8%99%22%2C%22editorConfirmation%22%3A%22%E3%81%93%E3%81%AE%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E9%96%89%E3%81%98%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%5Cn%5Cn(%E3%81%93%E3%81%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AF%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%8C%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E5%8C%96%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E3%81%AF%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93)%22%7D%2C%22ko%22%3A%7B%22_Hello%20World!%22%3A%22%ED%97%AC%EB%A1%9C%20%EC%9B%94%EB%93%9C!%22%2C%22_Refer%20to%20Documentation%20for%20details%22%3A%22%EC%83%81%EC%84%B8%EC%A0%95%EB%B3%B4%20%EB%AC%B8%EC%84%9C%20%EB%B3%B4%EA%B8%B0%22%2C%22_Window%20Controls%22%3A%22%EC%B0%BD%20%EC%A0%9C%EC%96%B4%22%2C%22_bottom%22%3A%22%EC%95%84%EB%9E%98%22%2C%22_bottom%20left%22%3A%22%EC%99%BC%EC%AA%BD%20%EC%95%84%EB%9E%98%22%2C%22_bottom%20right%22%3A%22%EC%98%A4%EB%A5%B8%EC%AA%BD%20%EC%95%84%EB%9E%98%22%2C%22_center%22%3A%22%EA%B0%80%EC%9A%B4%EB%8D%B0%22%2C%22_change%20window%20height%20by%20%5BH%5D%22%3A%22%EC%B0%BD%EC%9D%98%20%EB%86%92%EC%9D%B4%EB%A5%BC%20%5BH%5D%EB%A7%8C%ED%81%BC%20%EB%B0%94%EA%BE%B8%EA%B8%B0%22%2C%22_change%20window%20width%20by%20%5BW%5D%22%3A%22%EC%B0%BD%EC%9D%98%20%EB%84%93%EC%9D%B4%EB%A5%BC%20%5BW%5D%EB%A7%8C%ED%81%BC%20%EB%B0%94%EA%BE%B8%EA%B8%B0%22%2C%22_change%20window%20x%20by%20%5BX%5D%22%3A%22%EC%B0%BD%EC%9D%98%20x%EC%A2%8C%ED%91%9C%EB%A5%BC%20%5BX%5D%EB%A7%8C%ED%81%BC%20%EB%B0%94%EA%BE%B8%EA%B8%B0%22%2C%22_change%20window%20y%20by%20%5BY%5D%22%3A%22%EC%B0%BD%EC%9D%98%20y%EC%A2%8C%ED%91%9C%EB%A5%BC%20%5BY%5D%EB%A7%8C%ED%81%BC%20%EB%B0%94%EA%BE%B8%EA%B8%B0%22%2C%22_close%20window%22%3A%22%EC%B0%BD%20%EB%8B%AB%EA%B8%B0%22%2C%22_enter%20fullscreen%22%3A%22%EC%A0%84%EC%B2%B4%20%ED%99%94%EB%A9%B4%20%EC%A7%84%EC%9E%85%ED%95%98%EA%B8%B0%22%2C%22_exit%20fullscreen%22%3A%22%EC%A0%84%EC%B2%B4%20%ED%99%94%EB%A9%B4%20%EB%82%98%EA%B0%80%EA%B8%B0%22%2C%22_is%20window%20focused%3F%22%3A%22%EC%B0%BD%EC%9D%B4%20%EC%84%A0%ED%83%9D%EB%90%98%EC%97%88%EB%8A%94%EA%B0%80%3F%22%2C%22_is%20window%20fullscreen%3F%22%3A%22%EC%A0%84%EC%B2%B4%20%ED%99%94%EB%A9%B4%EC%9D%B8%EA%B0%80%3F%22%2C%22_is%20window%20touching%20screen%20edge%3F%22%3A%22%EC%B0%BD%EC%9D%B4%20%ED%99%94%EB%A9%B4%EC%9D%98%20%EB%81%9D%EC%97%90%20%EB%8B%BF%EC%95%98%EB%8A%94%EA%B0%80%3F%22%2C%22_left%22%3A%22%EC%99%BC%EC%AA%BD%22%2C%22_move%20window%20to%20the%20%5BPRESETS%5D%22%3A%22%EC%B0%BD%EC%9D%84%20%5BPRESETS%5D(%EC%9C%BC)%EB%A1%9C%20%EC%9D%B4%EB%8F%99%ED%95%98%EA%B8%B0%22%2C%22_move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%3A%22%EC%B0%BD%EC%9D%84%20x%3A%5BX%5D%20y%3A%5BY%5D%20(%EC%9C%BC)%EB%A1%9C%20%EC%9D%B4%EB%8F%99%ED%95%98%EA%B8%B0%22%2C%22_random%20position%22%3A%22%EB%AC%B4%EC%9E%91%EC%9C%84%20%EC%9C%84%EC%B9%98%22%2C%22_resize%20window%20to%20%5BPRESETS%5D%22%3A%22%EC%B0%BD%EC%9D%98%20%ED%81%AC%EA%B8%B0%EB%A5%BC%20%5BPRESETS%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A1%B0%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22%3A%22%EC%B0%BD%EC%9D%98%20%ED%81%AC%EA%B8%B0%EB%A5%BC%20%EB%84%93%EC%9D%B4%3A%5BW%5D%20%EB%86%92%EC%9D%B4%3A%5BH%5D%20(%EC%9C%BC)%EB%A1%9C%20%EC%A1%B0%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_right%22%3A%22%EC%98%A4%EB%A5%B8%EC%AA%BD%22%2C%22_screen%20height%22%3A%22%ED%99%94%EB%A9%B4%20%EB%86%92%EC%9D%B4%22%2C%22_screen%20width%22%3A%22%ED%99%94%EB%A9%B4%20%EB%84%93%EC%9D%B4%22%2C%22_set%20window%20height%20to%20%5BH%5D%22%3A%22%EC%B0%BD%EC%9D%98%20%EB%86%92%EC%9D%B4%EB%A5%BC%20%5BH%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20window%20title%20to%20%5BTITLE%5D%22%3A%22%EC%B0%BD%EC%9D%98%20%EC%A0%9C%EB%AA%A9%EC%9D%84%20%5BTITLE%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20window%20width%20to%20%5BW%5D%22%3A%22%EC%B0%BD%EC%9D%98%20%EB%84%93%EC%9D%B4%EB%A5%BC%20%5BW%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20window%20x%20to%20%5BX%5D%22%3A%22%EC%B0%BD%EC%9D%98%20x%EC%A2%8C%ED%91%9C%EB%A5%BC%20%5BX%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20window%20y%20to%20%5BY%5D%22%3A%22%EC%B0%BD%EC%9D%98%20y%EC%A2%8C%ED%91%9C%EB%A5%BC%20%5BY%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_top%22%3A%22%EC%9C%84%22%2C%22_top%20left%22%3A%22%EC%99%BC%EC%AA%BD%20%EC%9C%84%22%2C%22_top%20right%22%3A%22%EC%98%A4%EB%A5%B8%EC%AA%BD%20%EC%9C%84%22%2C%22_window%20height%22%3A%22%EC%B0%BD%20%EB%86%92%EC%9D%B4%22%2C%22_window%20title%22%3A%22%EC%B0%BD%20%EC%A0%9C%EB%AA%A9%22%2C%22_window%20width%22%3A%22%EC%B0%BD%20%EB%84%93%EC%9D%B4%22%2C%22_window%20x%22%3A%22%EC%B0%BD%20x%22%2C%22_window%20y%22%3A%22%EC%B0%BD%20y%22%7D%2C%22nb%22%3A%7B%22_Hello%20World!%22%3A%22Hei%20verden!%22%2C%22_May%20not%20work%20in%20normal%20browser%20tabs%22%3A%22Kan%20ikke%20fungere%20i%20vanlige%20nettlesertabeller%22%2C%22_Refer%20to%20Documentation%20for%20details%22%3A%22Se%20Dokumentasjonen%20for%20detaljer%22%2C%22_Window%20Controls%22%3A%22Vinduskontroller%22%2C%22_bottom%22%3A%22bunn%22%2C%22_bottom%20left%22%3A%22nederst%20til%20venstre%22%2C%22_bottom%20right%22%3A%22nederst%20til%20h%C3%B8yre%22%2C%22_center%22%3A%22senter%22%2C%22_change%20window%20height%20by%20%5BH%5D%22%3A%22endre%20vindush%C3%B8yden%20med%20%5BH%5D%22%2C%22_change%20window%20width%20by%20%5BW%5D%22%3A%22endre%20vindusbredde%20med%20%5BW%5D%22%2C%22_change%20window%20x%20by%20%5BX%5D%22%3A%22endre%20vinduet%20x%20med%20%5BX%5D%22%2C%22_change%20window%20y%20by%20%5BY%5D%22%3A%22endre%20vinduet%20y%20med%20%5BY%5D%22%2C%22_close%20window%22%3A%22Lukk%20vindu%22%2C%22_enter%20fullscreen%22%3A%22g%C3%A5%20til%20fullskjerm%22%2C%22_exit%20fullscreen%22%3A%22avslutt%20fullskjerm%22%2C%22_is%20window%20focused%3F%22%3A%22er%20vinduet%20fokusert%3F%22%2C%22_is%20window%20fullscreen%3F%22%3A%22er%20vinduet%20i%20fullskjerm%3F%22%2C%22_is%20window%20touching%20screen%20edge%3F%22%3A%22er%20vinduet%20i%20kontakt%20med%20skjermkanten%3F%22%2C%22_left%22%3A%22venstre%22%2C%22_match%20stage%20size%22%3A%22kamp%20scenest%C3%B8rrelse%22%2C%22_move%20window%20to%20the%20%5BPRESETS%5D%22%3A%22flytt%20vinduet%20til%20%5BPRESETS%5D%22%2C%22_move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%3A%22flytt%20vinduet%20til%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%22_random%20position%22%3A%22tilfeldig%20posisjon%22%2C%22_resize%20window%20to%20%5BPRESETS%5D%22%3A%22endre%20vinduet%20til%20%5BPRESETS%5D%22%2C%22_resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22%3A%22endre%20vinduet%20til%20bredde%3A%20%5BW%5D%20h%C3%B8yde%3A%20%5BH%5D%22%2C%22_right%22%3A%22h%C3%B8yre%22%2C%22_screen%20height%22%3A%22skjerm%20h%C3%B8yde%22%2C%22_screen%20width%22%3A%22skjerm%20bredde%22%2C%22_set%20window%20height%20to%20%5BH%5D%22%3A%22sett%20vindush%C3%B8yden%20til%20%5BH%5D%22%2C%22_set%20window%20title%20to%20%5BTITLE%5D%22%3A%22sett%20vindustittel%20til%20%5BTITLE%5D%22%2C%22_set%20window%20width%20to%20%5BW%5D%22%3A%22sett%20vindusbredde%20til%20%5BW%5D%22%2C%22_set%20window%20x%20to%20%5BX%5D%22%3A%22sett%20vindu%20x%20til%20%5BX%5D%22%2C%22_set%20window%20y%20to%20%5BY%5D%22%3A%22sett%20vindu%20y%20til%20%5BY%5D%22%2C%22_top%22%3A%22topp%22%2C%22_top%20left%22%3A%22%C3%B8verst%20til%20venstre%22%2C%22_top%20right%22%3A%22%C3%B8verst%20til%20h%C3%B8yre%22%2C%22_window%20height%22%3A%22vindush%C3%B8yde%22%2C%22_window%20title%22%3A%22vindustittel%22%2C%22_window%20width%22%3A%22vindusbredde%22%2C%22_window%20x%22%3A%22vindu%20x%22%2C%22_window%20y%22%3A%22vindu%20y%22%2C%22editorConfirmation%22%3A%22Er%20du%20sikker%20p%C3%A5%20at%20du%20vil%20lukke%20dette%20vinduet%3F%5Cn%5Cn(Denne%20meldingen%20vil%20ikke%20vises%20n%C3%A5r%20prosjektet%20er%20pakket)%22%7D%2C%22nl%22%3A%7B%22_Hello%20World!%22%3A%22Hallo%20Wereld!%22%2C%22_May%20not%20work%20in%20normal%20browser%20tabs%22%3A%22Werkt%20misschien%20niet%20in%20browsers%22%2C%22_Refer%20to%20Documentation%20for%20details%22%3A%22Lees%20documentatie%20voor%20details%22%2C%22_Window%20Controls%22%3A%22Vensterbesturing%22%2C%22_bottom%22%3A%22onder%22%2C%22_bottom%20left%22%3A%22linksonder%22%2C%22_bottom%20right%22%3A%22rechtsonder%22%2C%22_center%22%3A%22midden%22%2C%22_change%20window%20height%20by%20%5BH%5D%22%3A%22verander%20vensterhoogte%20met%20%5BH%5D%22%2C%22_change%20window%20width%20by%20%5BW%5D%22%3A%22verander%20vensterbreedte%20met%20%5BW%5D%22%2C%22_change%20window%20x%20by%20%5BX%5D%22%3A%22verander%20venster-x%20met%20%5BX%5D%22%2C%22_change%20window%20y%20by%20%5BY%5D%22%3A%22verander%20venster-y%20met%20%5BY%5D%22%2C%22_close%20window%22%3A%22sluit%20venster%22%2C%22_enter%20fullscreen%22%3A%22schakel%20volledig%20scherm%20in%22%2C%22_exit%20fullscreen%22%3A%22schakel%20volledig%20scherm%20uit%22%2C%22_is%20window%20focused%3F%22%3A%22venster%20gefocust%3F%22%2C%22_is%20window%20fullscreen%3F%22%3A%22venster%20in%20volledig%20scherm%3F%22%2C%22_is%20window%20touching%20screen%20edge%3F%22%3A%22venster%20raakt%20schermrand%20aan%3F%22%2C%22_left%22%3A%22links%22%2C%22_match%20stage%20size%22%3A%22maak%20venstergrootte%20gelijk%20aan%20speelveldgrootte%22%2C%22_move%20window%20to%20the%20%5BPRESETS%5D%22%3A%22verplaats%20venster%20naar%20%5BPRESETS%5D%22%2C%22_move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%3A%22verplaats%20venster%20naar%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%22_random%20position%22%3A%22willekeurige%20positie%22%2C%22_resize%20window%20to%20%5BPRESETS%5D%22%3A%22maak%20venstergrootte%20%5BPRESETS%5D%22%2C%22_resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22%3A%22maak%20vensterbreedte%20%5BW%5D%20en%20-hoogte%20%5BH%5D%22%2C%22_right%22%3A%22rechts%22%2C%22_screen%20height%22%3A%22schermhoogte%22%2C%22_screen%20width%22%3A%22schermbreedte%22%2C%22_set%20window%20height%20to%20%5BH%5D%22%3A%22maak%20vensterhoogte%20%5BH%5D%22%2C%22_set%20window%20title%20to%20%5BTITLE%5D%22%3A%22maak%20venstertitel%20%5BTITLE%5D%22%2C%22_set%20window%20width%20to%20%5BW%5D%22%3A%22maak%20vensterbreedte%20%5BW%5D%22%2C%22_set%20window%20x%20to%20%5BX%5D%22%3A%22maak%20venster-x%20%5BX%5D%22%2C%22_set%20window%20y%20to%20%5BY%5D%22%3A%22maak%20venster-y%20%5BY%5D%22%2C%22_top%22%3A%22boven%22%2C%22_top%20left%22%3A%22linksboven%22%2C%22_top%20right%22%3A%22rechtsboven%22%2C%22_window%20height%22%3A%22vensterhoogte%22%2C%22_window%20title%22%3A%22venstertitel%22%2C%22_window%20width%22%3A%22vensterbreedte%22%2C%22_window%20x%22%3A%22venster-x%22%2C%22_window%20y%22%3A%22venster-y%22%2C%22editorConfirmation%22%3A%22Weet%20je%20zeker%20dat%20je%20dit%20venster%20wilt%20sluiten%3F%5Cn%5Cn(Dit%20bericht%20wordt%20niet%20weergegeven%20wanneer%20het%20project%20gepackaged%20is)%22%7D%2C%22ru%22%3A%7B%22_Hello%20World!%22%3A%22%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%9C%D0%B8%D1%80!%22%2C%22_May%20not%20work%20in%20normal%20browser%20tabs%22%3A%22%D0%9C%D0%BE%D0%B6%D0%B5%D1%82%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C%20%D0%BD%D0%B0%20%D0%BE%D0%B1%D1%8B%D1%87%D0%BD%D1%8B%D1%85%20%D0%B2%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0%D1%85%20%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%B0%22%2C%22_Refer%20to%20Documentation%20for%20details%22%3A%22%D0%9F%D0%BE%D0%B4%D1%80%D0%BE%D0%B1%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D1%81%D0%BC.%20%D0%B2%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8%22%2C%22_Window%20Controls%22%3A%22%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%20%D0%9E%D0%BA%D0%BD%D0%B0%22%2C%22_bottom%22%3A%22%D0%BD%D0%B8%D0%B7%22%2C%22_bottom%20left%22%3A%22%D0%BD%D0%B8%D0%B6%D0%BD%D0%B5%D0%BC%20%D0%BB%D0%B5%D0%B2%D0%BE%D0%BC%20%D1%83%D0%B3%D0%BB%D1%83%22%2C%22_bottom%20right%22%3A%22%D0%BD%D0%B8%D0%B6%D0%BD%D0%B5%D0%BC%20%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%BC%20%D1%83%D0%B3%D0%BB%D1%83%22%2C%22_center%22%3A%22%D1%86%D0%B5%D0%BD%D1%82%D1%80%D1%83%22%2C%22_change%20window%20height%20by%20%5BH%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D1%83%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BH%5D%22%2C%22_change%20window%20width%20by%20%5BW%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D1%83%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BW%5D%22%2C%22_change%20window%20x%20by%20%5BX%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20x%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BX%5D%22%2C%22_change%20window%20y%20by%20%5BY%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20y%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BY%5D%22%2C%22_close%20window%22%3A%22%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D1%8C%20%D0%BE%D0%BA%D0%BD%D0%BE%22%2C%22_enter%20fullscreen%22%3A%22%D0%B2%D0%BE%D0%B9%D1%82%D0%B8%20%D0%B2%20%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9%20%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%22%2C%22_exit%20fullscreen%22%3A%22%D0%B2%D1%8B%D0%B9%D1%82%D0%B8%20%D0%B8%D0%B7%20%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B0%22%2C%22_is%20window%20focused%3F%22%3A%22%D1%81%D1%84%D0%BE%D0%BA%D1%83%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BE%20%D0%BE%D0%BA%D0%BD%D0%BE%3F%22%2C%22_is%20window%20fullscreen%3F%22%3A%22%D0%BE%D0%BA%D0%BD%D0%BE%20%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%BD%D0%BE%3F%22%2C%22_is%20window%20touching%20screen%20edge%3F%22%3A%22%D0%BA%D0%B0%D1%81%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%BE%D0%BA%D0%BD%D0%BE%20%D0%BA%D1%80%D0%B0%D1%8F%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%3F%22%2C%22_left%22%3A%22%D0%BB%D0%B5%D0%B2%D0%BE%D0%BC%D1%83%20%D0%BA%D1%80%D0%B0%D1%8E%22%2C%22_match%20stage%20size%22%3A%22%D1%81%D0%BE%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D1%83%20%D1%81%D1%86%D0%B5%D0%BD%D1%8B%22%2C%22_move%20window%20to%20the%20%5BPRESETS%5D%22%3A%22%D0%B4%D0%B2%D0%B8%D0%BD%D1%83%D1%82%D1%8C%20%D0%BE%D0%BA%D0%BD%D0%BE%20%D0%B2%20%5BPRESETS%5D%22%2C%22_move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%3A%22%D0%B4%D0%B2%D0%B8%D0%BD%D1%83%D1%82%D1%8C%20%D0%BE%D0%BA%D0%BD%D0%BE%20%D0%BD%D0%B0%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%22_random%20position%22%3A%22%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F%22%2C%22_resize%20window%20to%20%5BPRESETS%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BPRESETS%5D%22%2C%22_resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22%3A%22%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D1%83%3A%20%5BW%5D%20%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D1%83%3A%20%5BH%5D%22%2C%22_right%22%3A%22%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%BC%D1%83%20%D0%BA%D1%80%D0%B0%D1%8E%22%2C%22_screen%20height%22%3A%22%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D0%B0%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%22%2C%22_screen%20width%22%3A%22%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%B0%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%22%2C%22_set%20window%20height%20to%20%5BH%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D1%83%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BH%5D%22%2C%22_set%20window%20title%20to%20%5BTITLE%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BTITLE%5D%22%2C%22_set%20window%20width%20to%20%5BW%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D1%83%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BW%5D%22%2C%22_set%20window%20x%20to%20%5BX%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20x%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BX%5D%22%2C%22_set%20window%20y%20to%20%5BY%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20y%20%D0%BE%D0%BA%D0%BD%D0%B0%20%D0%BD%D0%B0%20%5BY%5D%22%2C%22_top%22%3A%22%D0%B2%D0%B5%D1%80%D1%85%22%2C%22_top%20left%22%3A%22%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%B5%D0%BC%20%D0%BB%D0%B5%D0%B2%D0%BE%D0%BC%20%D1%83%D0%B3%D0%BB%D1%83%22%2C%22_top%20right%22%3A%22%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%B5%D0%BC%20%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%BC%20%D1%83%D0%B3%D0%BB%D1%83%22%2C%22_window%20height%22%3A%22%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D0%B0%20%D0%BE%D0%BA%D0%BD%D0%B0%22%2C%22_window%20title%22%3A%22%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BE%D0%BA%D0%BD%D0%B0%22%2C%22_window%20width%22%3A%22%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%B0%20%D0%BE%D0%BA%D0%BD%D0%B0%22%2C%22_window%20x%22%3A%22x%20%D0%BE%D0%BA%D0%BD%D0%B0%22%2C%22_window%20y%22%3A%22y%20%D0%BE%D0%BA%D0%BD%D0%B0%22%2C%22editorConfirmation%22%3A%22%D0%92%D1%8B%20%D1%83%D0%B2%D0%B5%D1%80%D0%B5%D0%BD%D1%8B%2C%20%D1%87%D1%82%D0%BE%20%D1%85%D0%BE%D1%82%D0%B8%D1%82%D0%B5%20%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D1%8C%20%D1%8D%D1%82%D0%BE%20%D0%BE%D0%BA%D0%BD%D0%BE%3F%5Cn%5Cn(%D0%AD%D1%82%D0%BE%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B5%20%D0%BF%D0%BE%D1%8F%D0%B2%D0%B8%D1%82%D1%81%D1%8F%20%D0%BF%D1%80%D0%B8%20%D1%83%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0)%22%7D%2C%22tr%22%3A%7B%22_Window%20Controls%22%3A%22Pencere%20Kontrolleri%22%7D%2C%22uk%22%3A%7B%22_Window%20Controls%22%3A%22%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%20%D0%92%D1%96%D0%BA%D0%BD%D0%B0%22%2C%22_left%22%3A%22%D0%BB%D1%96%D0%B2%D1%83%22%2C%22_right%22%3A%22%D0%BF%D1%80%D0%B0%D0%B2%D1%83%22%7D%2C%22zh-cn%22%3A%7B%22_Hello%20World!%22%3A%22%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C%EF%BC%81%22%2C%22_May%20not%20work%20in%20normal%20browser%20tabs%22%3A%22%E5%8F%AF%E8%83%BD%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E8%BF%90%E8%A1%8C%22%2C%22_Refer%20to%20Documentation%20for%20details%22%3A%22%E5%85%B7%E4%BD%93%E4%BF%A1%E6%81%AF%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3%22%2C%22_Window%20Controls%22%3A%22%E7%BD%91%E9%A1%B5%E6%8E%A7%E5%88%B6%22%2C%22_bottom%22%3A%22%E5%BA%95%E9%83%A8%22%2C%22_bottom%20left%22%3A%22%E5%BA%95%E9%83%A8%E5%B7%A6%E4%BE%A7%22%2C%22_bottom%20right%22%3A%22%E5%BA%95%E9%83%A8%E5%8F%B3%E4%BE%A7%22%2C%22_center%22%3A%22%E5%B1%85%E4%B8%AD%22%2C%22_change%20window%20height%20by%20%5BH%5D%22%3A%22%E9%A1%B5%E9%9D%A2%E7%9A%84%E9%AB%98%E5%A2%9E%E5%8A%A0%5BH%5D%22%2C%22_change%20window%20width%20by%20%5BW%5D%22%3A%22%E9%A1%B5%E9%9D%A2%E7%9A%84%E5%AE%BD%E5%A2%9E%E5%8A%A0%5BW%5D%22%2C%22_change%20window%20x%20by%20%5BX%5D%22%3A%22%E9%A1%B5%E9%9D%A2%E7%9A%84x%E5%9D%90%E6%A0%87%E5%A2%9E%E5%8A%A0%5BX%5D%22%2C%22_change%20window%20y%20by%20%5BY%5D%22%3A%22%E9%A1%B5%E9%9D%A2%E7%9A%84y%E5%9D%90%E6%A0%87%E5%A2%9E%E5%8A%A0%5BY%5D%22%2C%22_close%20window%22%3A%22%E5%85%B3%E9%97%AD%E7%AA%97%E5%8F%A3%22%2C%22_enter%20fullscreen%22%3A%22%E8%BF%9B%E5%85%A5%E5%85%A8%E5%B1%8F%22%2C%22_exit%20fullscreen%22%3A%22%E9%80%80%E5%87%BA%E5%85%A8%E5%B1%8F%22%2C%22_is%20window%20focused%3F%22%3A%22%E9%A1%B5%E9%9D%A2%E5%9C%A8%E8%A2%AB%E4%BD%BF%E7%94%A8%E5%90%97%EF%BC%9F%22%2C%22_is%20window%20fullscreen%3F%22%3A%22%E9%A1%B5%E9%9D%A2%E5%85%A8%E5%B1%8F%E5%90%97%EF%BC%9F%22%2C%22_is%20window%20touching%20screen%20edge%3F%22%3A%22%E9%A1%B5%E9%9D%A2%E6%8E%A5%E8%A7%A6%E5%88%B0%E5%B1%8F%E5%B9%95%E8%BE%B9%E7%BC%98%E5%90%97%EF%BC%9F%22%2C%22_left%22%3A%22%E5%B1%85%E5%B7%A6%22%2C%22_match%20stage%20size%22%3A%22%E5%8C%B9%E9%85%8D%E8%88%9E%E5%8F%B0%E5%A4%A7%E5%B0%8F%22%2C%22_move%20window%20to%20the%20%5BPRESETS%5D%22%3A%22%E7%A7%BB%E5%8A%A8%E9%A1%B5%E9%9D%A2%E5%88%B0%5BPRESETS%5D%22%2C%22_move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%3A%22%E7%A7%BB%E5%8A%A8%E9%A1%B5%E9%9D%A2%E5%88%B0x%5BX%5D%20y%5BY%5D%22%2C%22_random%20position%22%3A%22%E9%9A%8F%E6%9C%BA%E4%BD%8D%E7%BD%AE%22%2C%22_resize%20window%20to%20%5BPRESETS%5D%22%3A%22%E6%94%B9%E5%8F%98%E9%A1%B5%E9%9D%A2%E7%9A%84%E5%A4%A7%E5%B0%8F%E4%B8%BA%5BPRESETS%5D%22%2C%22_resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22%3A%22%E6%94%B9%E5%8F%98%E9%A1%B5%E9%9D%A2%E7%9A%84%E5%A4%A7%E5%B0%8F%E4%B8%BA%E5%AE%BD%5BW%5D%E9%AB%98%5BH%5D%22%2C%22_right%22%3A%22%E5%B1%85%E5%8F%B3%22%2C%22_screen%20height%22%3A%22%E5%B1%8F%E5%B9%95%E9%AB%98%E5%BA%A6%22%2C%22_screen%20width%22%3A%22%E5%B1%8F%E5%B9%95%E5%AE%BD%E5%BA%A6%22%2C%22_set%20window%20height%20to%20%5BH%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E9%A1%B5%E9%9D%A2%E7%9A%84%E9%AB%98%E4%B8%BA%5BH%5D%22%2C%22_set%20window%20title%20to%20%5BTITLE%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E9%A1%B5%E9%9D%A2%E6%A0%87%E9%A2%98%E4%B8%BA%5BTITLE%5D%22%2C%22_set%20window%20width%20to%20%5BW%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E9%A1%B5%E9%9D%A2%E7%9A%84%E5%AE%BD%E4%B8%BA%5BW%5D%22%2C%22_set%20window%20x%20to%20%5BX%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E9%A1%B5%E9%9D%A2%E7%9A%84x%E5%9D%90%E6%A0%87%E4%B8%BA%5BX%5D%22%2C%22_set%20window%20y%20to%20%5BY%5D%22%3A%22%E8%AE%BE%E7%BD%AE%E9%A1%B5%E9%9D%A2%E7%9A%84y%E5%9D%90%E6%A0%87%E4%B8%BA%5BY%5D%22%2C%22_top%22%3A%22%E9%A1%B6%E9%83%A8%22%2C%22_top%20left%22%3A%22%E9%A1%B6%E9%83%A8%E5%B7%A6%E4%BE%A7%22%2C%22_top%20right%22%3A%22%E9%A1%B6%E9%83%A8%E5%8F%B3%E4%BE%A7%22%2C%22_window%20height%22%3A%22%E9%A1%B5%E9%9D%A2%E9%AB%98%E5%BA%A6%22%2C%22_window%20title%22%3A%22%E9%A1%B5%E9%9D%A2%E6%A0%87%E9%A2%98%22%2C%22_window%20width%22%3A%22%E9%A1%B5%E9%9D%A2%E5%AE%BD%E5%BA%A6%22%2C%22_window%20x%22%3A%22%E9%A1%B5%E9%9D%A2%E4%B8%AD%E5%BF%83%E7%9A%84x%E5%9D%90%E6%A0%87%22%2C%22_window%20y%22%3A%22%E9%A1%B5%E9%9D%A2%E4%B8%AD%E5%BF%83%E7%9A%84y%E5%9D%90%E6%A0%87%22%2C%22editorConfirmation%22%3A%22%E4%BD%A0%E7%A1%AE%E5%AE%9A%E5%85%B3%E9%97%AD%E9%A1%B5%E9%9D%A2%E5%90%97%EF%BC%9F%5Cn%5Cn%EF%BC%88%E6%89%93%E5%8C%85%E4%BD%9C%E5%93%81%E5%B9%B6%E4%B8%8D%E4%BC%9A%E6%98%BE%E7%A4%BA%E6%AD%A4%E6%B6%88%E6%81%AF%EF%BC%89%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20const%20icon%20%3D%0A%20%20%20%20%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAA0GVYSWZJSSoACAAAAAoAAAEEAAEAAABAAAAAAQEEAAEAAABAAAAAAgEDAAMAAACGAAAAEgEDAAEAAAABAAAAGgEFAAEAAACMAAAAGwEFAAEAAACUAAAAKAEDAAEAAAACAAAAMQECAA0AAACcAAAAMgECABQAAACqAAAAaYcEAAEAAAC%2BAAAAAAAAAAgACAAIAEgAAAABAAAASAAAAAEAAABHSU1QIDIuMTAuMzQAADIwMjM6MDg6MTUgMjI6MjU6MTcAAQABoAMAAQAAAAEAAAAAAAAA%2BKkp0wAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfW6VFKgp2KOKQoTpZKCriqFUoQoVQK7TqYHLpFzRpSFJcHAXXgoMfi1UHF2ddHVwFQfADxNXFSdFFSvxfUmgR48FxP97de9y9A%2FzNKlPNngSgapaRSSWFXH5VCL4ihEEEEEVCYqY%2BJ4ppeI6ve%2Fj4ehfnWd7n%2Fhz9SsFkgE8gnmW6YRFvEE9vWjrnfeIIK0sK8TnxuEEXJH7kuuzyG%2BeSw36eGTGymXniCLFQ6mK5i1nZUImniGOKqlG%2BP%2BeywnmLs1qts%2FY9%2BQvDBW1lmes0R5DCIpYgQoCMOiqowkKcVo0UExnaT3r4hx2%2FSC6ZXBUwciygBhWS4wf%2Fg9%2FdmsXJCTcpnAR6X2z7YxQI7gKthm1%2FH9t26wQIPANXWsdfawIzn6Q3OlrsCBjYBi6uO5q8B1zuANEnXTIkRwrQ9BeLwPsZfVMeGLoF%2Btbc3tr7OH0AstRV%2BgY4OATGSpS97vHuUHdv%2F55p9%2FcDaOdyoyaJtEEAAA14aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI%2BCiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOmVkNmVmMzUwLWVjZDAtNGIwZC1iZjVlLTUxOTVkZjI4YzRhYiIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpmN2Y5ODViOC0yMjg3LTQxNmQtOTFjMC0zNTY3ZmQ1ZjhmMjAiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzk3YTJiMC0zNDJjLTQ3MWMtYmQzNi0wNjExMTI2MDQwZmEiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3RhbXA9IjE2OTIxNTYzMTc3MjY0NjciCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zNCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjM6MDg6MTVUMjI6MjU6MTctMDU6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIzOjA4OjE1VDIyOjI1OjE3LTA1OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk%2BCiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MzlmYmE1ZjAtZmE4OC00M2ZjLTgyMjQtMGIwYjlhMGRkZDkyIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMy0wOC0xNVQyMjoyNToxNy0wNTowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk%2BCiAgPC9yZGY6RGVzY3JpcHRpb24%2BCiA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz45jkSCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5wgQAxkRVAqqdwAAAchQTFRFAAAAGn%2ByG4CyHICzHX2yHYC1GoC0Gn%2ByGn%2BzGoCzG3%2BzG3%2B0G4CzHICzHIC0HIGzG3%2BzG4CzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzG3%2BzHIC0HIC0G3%2BzHIC0G3%2BzG3%2BzHoK2IIS5IYW5I4e8JIi9JYm%2BJou%2FJovAJ4zBKpDFLJLHLpXKMJjNMZnOMZnPMpnPM5vQM5vRNJzSNJ3TNZ7UNp%2FUN5%2FUOJ%2FUOZ%2FVO6DVPqHVQ6HVRqLWR6PWSKPWSaPWX6rYbK%2Fabq%2Fab7DadrPbd7Pce7Tcgbfdgbjdgrjdhrrfh7rfibvfirzfi7zfjLzfjLzgjb3gjr3gjr7gj77gkL7gkb%2FglMDhnMTjncTjoMfkosfko8jkpMjlpcnlsc%2Fns9HotNHoutXqvtbrv9frwNfswNjsxNrtzN%2Fvzd%2FvzeDvzeDwzuDwzuHw0eLw0uPx1uXy2Oby2Ofy2efz2%2Bjz3ur04u324%2B725O727vT57%2FX68Pb68fb68vb78vf78%2Ff68%2Ff79vn8%2Bfv9%2B%2Fz%2B%2FP3%2B%2Ff7%2B%2F%2F%2F%2FxM3NqwAAADF0Uk5TAAEBAQEBAgMDAwMDAwMDAwgIEBEcJjlUXV5panOEhY2Qra6vt8bO2Nri4%2Bzx9PT8%2FcI6cjwAAAABYktHRJfmbhuvAAAC10lEQVRYw7WX51%2FTUBSGr4KIiIoILaMT6LDL7pG2oSPHDW4FBwpO3CiCigP3QgUB77%2FrbdOkCaTkpsH3Qz7c5Dy%2FJPeec96DUA11GM12p8cfDPo9TrvZ2IG0aIvB6grFmQxb4AC4Apth4iGX1bCNMrzd5I4wLKwRy0TcpnaK8H0WXzILisomfRY1xM4ebyoPNZVPeXubNorvdEQHYUMNRh2dteO7AmlQVTrQXSN8ty2cAwrlwrZmpfi2vlgRqFSM9bcpxA8kOKAUlxhYR2juS4AGJfpb1wBsMQ6G7r94S6FX904AF7PJ47vDRZj4hSn1cxyK4S7Z%2FgdyML6CqbUyDrmA5Dy0OtIwtIDx6vyTx6qaml%2FFeGEI0o7qZvZEAe6S%2BDG6P3iFECYBor1i%2FnjJ%2BZ3B%2BB3tHnzAeJqcaq%2BQWZYUlAEzABc%2Bvxk%2B%2FvzLJbjz7emhmgD%2BWUhZKvnvy4uLnzB%2BdAvjr0e%2BY3xODZD38a9gSlYXn%2BG%2Fl8%2Bu4JcHP%2BI%2Fp9QAkDSV4re6s9XFw9fOA5y5eQxO3j4NqoCsu5EADBHZIo3EZyMGArAywuLsUUrNCgDGSgAuVgAsL1a0xF%2FlEm8uLS4LANZF6n9IfC0tqnxuqAMZ43oAcSMyMyJg7uIo0QjRqIJGqpoTAYwZ2TNQ%2Fy5Axo6crB4A60Segh5AwYP8nB4A50dB0AOAA3oBQf2foPsn6t5G3QdJcpTrAJCjLEmmOgAkmSTpXAeApLOkoGgHlAqKpKRpB5RLmu6i2igt69oAfFmXNRZtAL6xyFqbJoDQ2qTNVRNAaK58e5%2FG%2BH297b1sMCbpDcbVtQYDNYsWZ4rS4vwoWZwmucma0GKyxuQmi7d516lt3u8bxOZ1rzeaww%2BpjObrBwpGE%2B3QanW3b7bZ1mb3%2B%2FYqDQwt9ANHi76Rp%2Bv%2FDV0I7VId%2B3r2qM2t%2BgbPTRh9S2pQHr4bNE3w1fF%2F%2F4bj%2Fz8IjCsoNvb7bgAAAABJRU5ErkJggg%3D%3D%22%3B%0A%0A%20%20function%20getRandomInt(min%2C%20max)%20%7B%0A%20%20%20%20min%20%3D%20Math.ceil(min)%3B%0A%20%20%20%20max%20%3D%20Math.floor(max)%3B%0A%20%20%20%20return%20Math.floor(Math.random()%20*%20(max%20-%20min%20%2B%201))%20%2B%20min%3B%0A%20%20%7D%0A%0A%20%20const%20isFullscreenEnabled%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20if%20(typeof%20document.fullscreenElement%20!%3D%3D%20%22undefined%22)%20%7B%0A%20%20%20%20%20%20return%20document.fullscreenElement%20!%3D%3D%20null%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(typeof%20document.webkitFullscreenElement%20!%3D%3D%20%22undefined%22)%20%7B%0A%20%20%20%20%20%20return%20document.webkitFullscreenElement%20!%3D%3D%20null%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%3B%0A%0A%20%20const%20enterFullscreen%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20if%20(document.documentElement.requestFullscreen)%20%7B%0A%20%20%20%20%20%20document.documentElement.requestFullscreen()%3B%0A%20%20%20%20%7D%20else%20if%20(document.documentElement.webkitRequestFullscreen)%20%7B%0A%20%20%20%20%20%20document.documentElement.webkitRequestFullscreen()%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20const%20exitFullscreen%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20if%20(document.exitFullscreen)%20%7B%0A%20%20%20%20%20%20document.exitFullscreen()%3B%0A%20%20%20%20%7D%20else%20if%20(document.webkitExitFullscreen)%20%7B%0A%20%20%20%20%20%20document.webkitExitFullscreen()%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20class%20WindowControls%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22cubesterWindowControls%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Window%20Controls%22)%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23359ed4%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%23298ec2%22%2C%0A%20%20%20%20%20%20%20%20color3%3A%20%22%232081b3%22%2C%0A%20%20%20%20%20%20%20%20menuIconURI%3A%20icon%2C%0A%20%20%20%20%20%20%20%20docsURI%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2FCubesterYT%2FWindowControls%22%2C%0A%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22May%20not%20work%20in%20normal%20browser%20tabs%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22Refer%20to%20Documentation%20for%20details%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22moveTo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22move%20window%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22moveToPresets%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22move%20window%20to%20the%20%5BPRESETS%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20PRESETS%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22MOVE%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeX%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20window%20x%20by%20%5BX%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2250%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setX%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20window%20x%20to%20%5BX%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22100%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeY%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20window%20y%20by%20%5BY%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2250%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setY%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20window%20y%20to%20%5BY%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22100%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22windowX%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22window%20x%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22windowY%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22window%20y%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22resizeTo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22resize%20window%20to%20width%3A%20%5BW%5D%20height%3A%20%5BH%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20W%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22480%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20H%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22360%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22resizeToPresets%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22resize%20window%20to%20%5BPRESETS%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20PRESETS%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22RESIZE%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeW%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20window%20width%20by%20%5BW%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20W%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2250%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setW%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20window%20width%20to%20%5BW%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20W%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221000%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeH%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22change%20window%20height%20by%20%5BH%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20H%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2250%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setH%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20window%20height%20to%20%5BH%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20H%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%221000%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22matchStageSize%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22match%20stage%20size%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22windowW%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22window%20width%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22windowH%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22window%20height%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isTouchingEdge%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22is%20window%20touching%20screen%20edge%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22screenW%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22screen%20width%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22screenH%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22screen%20height%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isFocused%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22is%20window%20focused%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeTitleTo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20window%20title%20to%20%5BTITLE%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TITLE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.translate(%22Hello%20World!%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22windowTitle%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22window%20title%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22enterFullscreen%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22enter%20fullscreen%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22exitFullscreen%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22exit%20fullscreen%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isFullscreen%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22is%20window%20fullscreen%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22closeWindow%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20isTerminal%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22close%20window%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20MOVE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22center%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22center%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22right%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22right%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22left%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22left%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22top%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22top%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22bottom%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22bottom%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22top%20right%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22top%20right%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22top%20left%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22top%20left%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22bottom%20right%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22bottom%20right%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22bottom%20left%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22bottom%20left%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22random%20position%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22random%20position%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20RESIZE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22480x360%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22640x480%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%221280x720%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%221920x1080%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%222560x1440%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%222048x1080%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%223840x2160%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%227680x4320%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20moveTo(args)%20%7B%0A%20%20%20%20%20%20window.moveTo(args.X%2C%20args.Y)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20moveToPresets(args)%20%7B%0A%20%20%20%20%20%20if%20(args.PRESETS%20%3D%3D%20%22center%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20left%20%3D%20(screen.width%20-%20window.outerWidth)%20%2F%202%3B%0A%20%20%20%20%20%20%20%20const%20top%20%3D%20(screen.height%20-%20window.outerHeight)%20%2F%202%3B%0A%20%20%20%20%20%20%20%20window.moveTo(left%2C%20top)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22right%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20right%20%3D%20screen.width%20-%20window.outerWidth%3B%0A%20%20%20%20%20%20%20%20const%20top%20%3D%20(screen.height%20-%20window.outerHeight)%20%2F%202%3B%0A%20%20%20%20%20%20%20%20window.moveTo(right%2C%20top)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22left%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20top%20%3D%20(screen.height%20-%20window.outerHeight)%20%2F%202%3B%0A%20%20%20%20%20%20%20%20window.moveTo(0%2C%20top)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22top%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20left%20%3D%20(screen.width%20-%20window.outerWidth)%20%2F%202%3B%0A%20%20%20%20%20%20%20%20window.moveTo(left%2C%200)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22bottom%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20left%20%3D%20(screen.width%20-%20window.outerWidth)%20%2F%202%3B%0A%20%20%20%20%20%20%20%20const%20bottom%20%3D%20screen.height%20-%20window.outerHeight%3B%0A%20%20%20%20%20%20%20%20window.moveTo(left%2C%20bottom)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22top%20right%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20right%20%3D%20screen.width%20-%20window.outerWidth%3B%0A%20%20%20%20%20%20%20%20window.moveTo(right%2C%200)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22top%20left%22)%20%7B%0A%20%20%20%20%20%20%20%20window.moveTo(0%2C%200)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22bottom%20right%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20right%20%3D%20screen.width%20-%20window.outerWidth%3B%0A%20%20%20%20%20%20%20%20const%20bottom%20%3D%20screen.height%20-%20window.outerHeight%3B%0A%20%20%20%20%20%20%20%20window.moveTo(right%2C%20bottom)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22bottom%20left%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20bottom%20%3D%20screen.height%20-%20window.outerHeight%3B%0A%20%20%20%20%20%20%20%20window.moveTo(0%2C%20bottom)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22random%20position%22)%20%7B%0A%20%20%20%20%20%20%20%20const%20randomX%20%3D%20getRandomInt(0%2C%20screen.width)%3B%0A%20%20%20%20%20%20%20%20const%20randomY%20%3D%20getRandomInt(0%2C%20screen.height)%3B%0A%20%20%20%20%20%20%20%20window.moveTo(randomX%2C%20randomY)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20changeX(args)%20%7B%0A%20%20%20%20%20%20window.moveBy(args.X%2C%200)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20setX(args)%20%7B%0A%20%20%20%20%20%20const%20currentY%20%3D%20window.screenY%3B%0A%20%20%20%20%20%20window.moveTo(args.X%2C%20currentY)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20changeY(args)%20%7B%0A%20%20%20%20%20%20window.moveBy(0%2C%20args.Y)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20setY(args)%20%7B%0A%20%20%20%20%20%20const%20currentX%20%3D%20window.screenX%3B%0A%20%20%20%20%20%20window.moveTo(currentX%2C%20args.Y)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20windowX()%20%7B%0A%20%20%20%20%20%20return%20window.screenLeft%3B%0A%20%20%20%20%7D%0A%20%20%20%20windowY()%20%7B%0A%20%20%20%20%20%20return%20window.screenTop%3B%0A%20%20%20%20%7D%0A%20%20%20%20resizeTo(args)%20%7B%0A%20%20%20%20%20%20window.resizeTo(args.W%2C%20args.H)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20resizeToPresets(args)%20%7B%0A%20%20%20%20%20%20if%20(args.PRESETS%20%3D%3D%20%22480x360%22)%20%7B%0A%20%20%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20%20%20480%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20%20%20360%20%2B%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%22640x480%22)%20%7B%0A%20%20%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20%20%20640%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20%20%20480%20%2B%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%221280x720%22)%20%7B%0A%20%20%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20%20%201280%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20%20%20720%20%2B%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%221920x1080%22)%20%7B%0A%20%20%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20%20%201920%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20%20%201080%20%2B%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%222560x1440%22)%20%7B%0A%20%20%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20%20%202560%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20%20%201440%20%2B%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%222048x1080%22)%20%7B%0A%20%20%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20%20%202048%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20%20%201080%20%2B%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%223840x2160%22)%20%7B%0A%20%20%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20%20%203840%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20%20%202160%20%2B%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(args.PRESETS%20%3D%3D%20%227680x4320%22)%20%7B%0A%20%20%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20%20%207680%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20%20%204320%20%2B%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20changeW(args)%20%7B%0A%20%20%20%20%20%20window.resizeBy(args.W%2C%200)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20setW(args)%20%7B%0A%20%20%20%20%20%20const%20currentH%20%3D%20window.outerHeight%3B%0A%20%20%20%20%20%20window.resizeTo(args.W%2C%20currentH)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20changeH(args)%20%7B%0A%20%20%20%20%20%20window.resizeBy(0%2C%20args.H)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20setH(args)%20%7B%0A%20%20%20%20%20%20const%20currentW%20%3D%20window.outerWidth%3B%0A%20%20%20%20%20%20window.resizeTo(currentW%2C%20args.H)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20matchStageSize()%20%7B%0A%20%20%20%20%20%20window.resizeTo(%0A%20%20%20%20%20%20%20%20Scratch.vm.runtime.stageWidth%20%2B%20(window.outerWidth%20-%20window.innerWidth)%2C%0A%20%20%20%20%20%20%20%20Scratch.vm.runtime.stageHeight%20%2B%0A%20%20%20%20%20%20%20%20%20%20(window.outerHeight%20-%20window.innerHeight)%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.requestRedraw()%3B%0A%20%20%20%20%7D%0A%20%20%20%20windowW()%20%7B%0A%20%20%20%20%20%20return%20window.outerWidth%3B%0A%20%20%20%20%7D%0A%20%20%20%20windowH()%20%7B%0A%20%20%20%20%20%20return%20window.outerHeight%3B%0A%20%20%20%20%7D%0A%20%20%20%20isTouchingEdge()%20%7B%0A%20%20%20%20%20%20const%20edgeX%20%3D%20screen.width%20-%20window.outerWidth%3B%0A%20%20%20%20%20%20const%20edgeY%20%3D%20screen.height%20-%20window.outerHeight%3B%0A%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20window.screenLeft%20%3C%3D%200%20%7C%7C%0A%20%20%20%20%20%20%20%20window.screenTop%20%3C%3D%200%20%7C%7C%0A%20%20%20%20%20%20%20%20window.screenLeft%20%3E%3D%20edgeX%20%7C%7C%0A%20%20%20%20%20%20%20%20window.screenTop%20%3E%3D%20edgeY%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%20%20%20%20screenW()%20%7B%0A%20%20%20%20%20%20return%20screen.width%3B%0A%20%20%20%20%7D%0A%20%20%20%20screenH()%20%7B%0A%20%20%20%20%20%20return%20screen.height%3B%0A%20%20%20%20%7D%0A%20%20%20%20isFocused()%20%7B%0A%20%20%20%20%20%20return%20document.hasFocus()%3B%0A%20%20%20%20%7D%0A%20%20%20%20changeTitleTo(args)%20%7B%0A%20%20%20%20%20%20document.title%20%3D%20args.TITLE%3B%0A%20%20%20%20%7D%0A%20%20%20%20windowTitle()%20%7B%0A%20%20%20%20%20%20return%20document.title%3B%0A%20%20%20%20%7D%0A%20%20%20%20enterFullscreen()%20%7B%0A%20%20%20%20%20%20if%20(!isFullscreenEnabled())%20%7B%0A%20%20%20%20%20%20%20%20enterFullscreen()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20exitFullscreen()%20%7B%0A%20%20%20%20%20%20if%20(isFullscreenEnabled())%20%7B%0A%20%20%20%20%20%20%20%20exitFullscreen()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isFullscreen()%20%7B%0A%20%20%20%20%20%20return%20isFullscreenEnabled()%3B%0A%20%20%20%20%7D%0A%20%20%20%20closeWindow()%20%7B%0A%20%20%20%20%20%20const%20editorConfirmation%20%3D%20Scratch.translate(%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22editorConfirmation%22%2C%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%22Are%20you%20sure%20you%20want%20to%20close%20this%20window%3F%5Cn%5Cn(This%20message%20will%20not%20appear%20when%20the%20project%20is%20packaged)%22%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%2F%2F%20%40ts-expect-error%0A%20%20%20%20%20%20if%20(typeof%20ScratchBlocks%20%3D%3D%3D%20%22undefined%22%20%7C%7C%20confirm(editorConfirmation))%20%7B%0A%20%20%20%20%20%20%20%20window.close()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20Scratch.extensions.register(new%20WindowControls())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Skins%0A%2F%2F%20ID%3A%20lmsSkins%0A%2F%2F%20Description%3A%20Have%20your%20sprites%20render%20as%20other%20images%20or%20costumes.%0A%2F%2F%20By%3A%20LilyMakesThings%20%3Chttps%3A%2F%2Fscratch.mit.edu%2Fusers%2FLilyMakesThings%2F%3E%0A%2F%2F%20License%3A%20MIT%20AND%20LGPL-3.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22fi%22%3A%7B%22_Skins%22%3A%22Ulkoasu%22%2C%22_%5BATTRIBUTE%5D%20of%20skin%20%5BNAME%5D%22%3A%22ulkoasun%20%5BNAME%5D%20%5BATTRIBUTE%5D%22%2C%22_create%20SVG%20skin%20%5BSVG%5D%20as%20%5BNAME%5D%22%3A%22luo%20SVG-ulkoasu%20%5BSVG%5D%20nimell%C3%A4%20%5BNAME%5D%22%2C%22_current%20skin%20of%20%5BTARGET%5D%22%3A%22hahmon%20%5BTARGET%5D%20nykyinen%20ulkoasu%22%2C%22_delete%20all%20skins%22%3A%22poista%20kaikki%20ulkoasut%22%2C%22_delete%20skin%20%5BNAME%5D%22%3A%22poista%20ulkoasu%20%5BNAME%5D%22%2C%22_height%22%3A%22korkeus%22%2C%22_load%20skin%20from%20URL%20%5BURL%5D%20as%20%5BNAME%5D%22%3A%22lataa%20ulkoasu%20URL-osoitteesta%20%5BURL%5D%20nimell%C3%A4%20%5BNAME%5D%22%2C%22_load%20skin%20from%20%5BCOSTUME%5D%20as%20%5BNAME%5D%22%3A%22lataa%20ulkoasu%20asusteesta%20%5BCOSTUME%5D%20nimell%C3%A4%20%5BNAME%5D%22%2C%22_restore%20skin%20of%20%5BTARGET%5D%22%3A%22palauta%20hahmon%20%5BTARGET%5D%20ulkoasu%22%2C%22_restore%20targets%20with%20skin%20%5BNAME%5D%22%3A%22palauta%20ulkoasua%20%5BNAME%5D%20k%C3%A4ytt%C3%A4v%C3%A4t%20hahmot%22%2C%22_set%20skin%20of%20%5BTARGET%5D%20to%20%5BNAME%5D%22%3A%22aseta%20hahmon%20%5BTARGET%5D%20ulkoasuksi%20%5BNAME%5D%22%2C%22_skin%20%5BNAME%5D%20is%20loaded%3F%22%3A%22onko%20ulkoasu%20%5BNAME%5D%20ladattu%3F%20%22%2C%22_width%22%3A%22leveys%22%7D%2C%22it%22%3A%7B%22_Skins%22%3A%22Altro%20Costumi%20Plus%20%22%2C%22_height%22%3A%22altezza%22%2C%22_width%22%3A%22larghezza%22%7D%2C%22ja%22%3A%7B%22_Skins%22%3A%22%E3%82%B9%E3%82%AD%E3%83%B3%22%2C%22_height%22%3A%22%E9%AB%98%E3%81%95%22%2C%22_width%22%3A%22%E6%A8%AA%E5%B9%85%22%7D%2C%22ko%22%3A%7B%22_Skins%22%3A%22%EC%8A%A4%ED%82%A8%22%2C%22_%5BATTRIBUTE%5D%20of%20skin%20%5BNAME%5D%22%3A%22%EC%8A%A4%ED%82%A8%20%5BNAME%5D%EC%9D%98%20%5BATTRIBUTE%5D%22%2C%22_current%20skin%20of%20%5BTARGET%5D%22%3A%22%ED%98%84%EC%9E%AC%20%EC%8A%A4%ED%82%A8%EC%9D%98%20%5BTARGET%5D%22%2C%22_delete%20all%20skins%22%3A%22%EB%AA%A8%EB%93%A0%20%EC%8A%A4%ED%82%A8%20%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_delete%20skin%20%5BNAME%5D%22%3A%22%EC%8A%A4%ED%82%A8%20%5BNAME%5D%20%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%22%2C%22_height%22%3A%22%EB%86%92%EC%9D%B4%22%2C%22_restore%20skin%20of%20%5BTARGET%5D%22%3A%22%5BTARGET%5D%EC%9D%98%20%EC%8A%A4%ED%82%A8%20%EB%B3%B5%EA%B5%AC%ED%95%98%EA%B8%B0%22%2C%22_set%20skin%20of%20%5BTARGET%5D%20to%20%5BNAME%5D%22%3A%22%5BTARGET%5D%EC%9D%98%20%EC%8A%A4%ED%82%A8%EC%9D%84%20%5BNAME%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_width%22%3A%22%EB%84%93%EC%9D%B4%22%7D%2C%22nb%22%3A%7B%22_Skins%22%3A%22Skinner%22%2C%22_height%22%3A%22h%C3%B8yde%22%2C%22_width%22%3A%22bredde%22%7D%2C%22nl%22%3A%7B%22_%5BATTRIBUTE%5D%20of%20skin%20%5BNAME%5D%22%3A%22%5BATTRIBUTE%5D%20van%20skin%20%5BNAME%5D%22%2C%22_create%20SVG%20skin%20%5BSVG%5D%20as%20%5BNAME%5D%22%3A%22cre%C3%ABer%20SVG-skin%20%5BSVG%5D%20als%20%5BNAME%5D%22%2C%22_current%20skin%20of%20%5BTARGET%5D%22%3A%22huidige%20skin%20van%20%5BTARGET%5D%22%2C%22_delete%20all%20skins%22%3A%22verwijder%20alle%20skins%22%2C%22_delete%20skin%20%5BNAME%5D%22%3A%22verwijder%20skin%20%5BNAME%5D%22%2C%22_height%22%3A%22hoogte%22%2C%22_load%20skin%20from%20URL%20%5BURL%5D%20as%20%5BNAME%5D%22%3A%22laad%20skin%20van%20URL%20%5BURL%5D%20als%20%5BNAME%5D%22%2C%22_load%20skin%20from%20%5BCOSTUME%5D%20as%20%5BNAME%5D%22%3A%22laad%20skin%20van%20%5BCOSTUME%5D%20als%20%5BNAME%5D%22%2C%22_restore%20skin%20of%20%5BTARGET%5D%22%3A%22herstel%20skin%20van%20%5BTARGET%5D%22%2C%22_restore%20targets%20with%20skin%20%5BNAME%5D%22%3A%22herstel%20alle%20met%20skin%20%5BNAME%5D%22%2C%22_set%20skin%20of%20%5BTARGET%5D%20to%20%5BNAME%5D%22%3A%22maak%20skin%20van%20%5BTARGET%5D%20%5BNAME%5D%22%2C%22_skin%20%5BNAME%5D%20is%20loaded%3F%22%3A%22skin%20%5BNAME%5D%20is%20geladen%3F%22%2C%22_width%22%3A%22breedte%22%7D%2C%22pl%22%3A%7B%22_height%22%3A%22wysoko%C5%9B%C4%87%22%2C%22_width%22%3A%22szeroko%C5%9B%C4%87%22%7D%2C%22ru%22%3A%7B%22_Skins%22%3A%22%D0%A1%D0%BA%D0%B8%D0%BD%D1%8B%22%2C%22_%5BATTRIBUTE%5D%20of%20skin%20%5BNAME%5D%22%3A%22%5BATTRIBUTE%5D%20%D1%81%D0%BA%D0%B8%D0%BD%D0%B0%20%5BNAME%5D%22%2C%22_create%20SVG%20skin%20%5BSVG%5D%20as%20%5BNAME%5D%22%3A%22%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C%20SVG%20%D1%81%D0%BA%D0%B8%D0%BD%20%5BSVG%5D%20%D0%BA%D0%B0%D0%BA%20%5BNAME%5D%22%2C%22_current%20skin%20of%20%5BTARGET%5D%22%3A%22%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B9%20%D1%81%D0%BA%D0%B8%D0%BD%20%5BTARGET%5D%22%2C%22_delete%20all%20skins%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D1%81%D0%BA%D0%B8%D0%BD%D1%8B%22%2C%22_delete%20skin%20%5BNAME%5D%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D1%81%D0%BA%D0%B8%D0%BD%20%5BNAME%5D%22%2C%22_height%22%3A%22%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D0%B0%22%2C%22_load%20skin%20from%20URL%20%5BURL%5D%20as%20%5BNAME%5D%22%3A%22%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D1%82%D1%8C%20%D1%81%D0%BA%D0%B8%D0%BD%20%D0%B8%D0%B7%20URL%20%5BURL%5D%20%D0%BA%D0%B0%D0%BA%20%5BNAME%5D%22%2C%22_load%20skin%20from%20%5BCOSTUME%5D%20as%20%5BNAME%5D%22%3A%22%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D1%82%D1%8C%20%D1%81%D0%BA%D0%B8%D0%BD%20%D0%B8%D0%B7%20%5BCOSTUME%5D%20%D0%BA%D0%B0%D0%BA%20%5BNAME%5D%22%2C%22_restore%20skin%20of%20%5BTARGET%5D%22%3A%22%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D0%BA%D0%B8%D0%BD%20%5BTARGET%5D%22%2C%22_restore%20targets%20with%20skin%20%5BNAME%5D%22%3A%22%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%86%D0%B5%D0%BB%D0%B8%20%D1%81%D0%BE%20%D1%81%D0%BA%D0%B8%D0%BD%D0%BE%D0%BC%20%5BNAME%5D%22%2C%22_set%20skin%20of%20%5BTARGET%5D%20to%20%5BNAME%5D%22%3A%22%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D0%BA%D0%B8%D0%BD%20%5BTARGET%5D%20%D0%BD%D0%B0%20%5BNAME%5D%22%2C%22_skin%20%5BNAME%5D%20is%20loaded%3F%22%3A%22%D1%81%D0%BA%D0%B8%D0%BD%20%5BNAME%5D%20%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B5%D0%BD%3F%22%2C%22_width%22%3A%22%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%B0%22%7D%2C%22tr%22%3A%7B%22_Skins%22%3A%22Ciltler%22%7D%2C%22uk%22%3A%7B%22_height%22%3A%22%D0%B2%D0%B8%D1%81%D0%BE%D1%82%D0%B0%22%2C%22_width%22%3A%22%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%B0%22%7D%2C%22zh-cn%22%3A%7B%22_%5BATTRIBUTE%5D%20of%20skin%20%5BNAME%5D%22%3A%22%E7%9A%AE%E8%82%A4%5BNAME%5D%E7%9A%84%5BATTRIBUTE%5D%22%2C%22_create%20SVG%20skin%20%5BSVG%5D%20as%20%5BNAME%5D%22%3A%22%E5%88%9B%E5%BB%BASVG%E7%9A%AE%E8%82%A4%5BSVG%5D%E5%B9%B6%E5%91%BD%E5%90%8D%E4%B8%BA%5BNAME%5D%22%2C%22_current%20skin%20of%20%5BTARGET%5D%22%3A%22%5BTARGET%5D%E7%9A%84%E5%BD%93%E5%89%8D%E7%9A%AE%E8%82%A4%22%2C%22_delete%20all%20skins%22%3A%22%E5%88%A0%E9%99%A4%E6%89%80%E6%9C%89%E7%9A%AE%E8%82%A4%22%2C%22_delete%20skin%20%5BNAME%5D%22%3A%22%E5%88%A0%E9%99%A4%E7%9A%AE%E8%82%A4%5BNAME%5D%22%2C%22_height%22%3A%22%E9%AB%98%E5%BA%A6%22%2C%22_load%20skin%20from%20URL%20%5BURL%5D%20as%20%5BNAME%5D%22%3A%22%E4%BB%8EURL%5BURL%5D%E5%8A%A0%E8%BD%BD%E7%9A%AE%E8%82%A4%E5%B9%B6%E5%91%BD%E5%90%8D%E4%B8%BA%5BNAME%5D%22%2C%22_load%20skin%20from%20%5BCOSTUME%5D%20as%20%5BNAME%5D%22%3A%22%E4%BB%8E%5BCOSTUME%5D%E5%8A%A0%E8%BD%BD%E7%9A%AE%E8%82%A4%E5%B9%B6%E5%91%BD%E5%90%8D%E4%B8%BA%5BNAME%5D%22%2C%22_restore%20skin%20of%20%5BTARGET%5D%22%3A%22%E6%81%A2%E5%A4%8D%5BTARGET%5D%E7%9A%84%E7%9A%AE%E8%82%A4%E4%B8%BA%E5%8E%9F%E9%80%A0%E5%9E%8B%22%2C%22_restore%20targets%20with%20skin%20%5BNAME%5D%22%3A%22%E6%81%A2%E5%A4%8D%E6%89%80%E6%9C%89%E7%9A%AE%E8%82%A4%E4%B8%BA%5BNAME%5D%E7%9A%84%E8%A7%92%E8%89%B2%E9%80%A0%E5%9E%8B%22%2C%22_set%20skin%20of%20%5BTARGET%5D%20to%20%5BNAME%5D%22%3A%22%E5%B0%86%5BTARGET%5D%E7%9A%84%E7%9A%AE%E8%82%A4%E8%AE%BE%E4%B8%BA%5BNAME%5D%22%2C%22_skin%20%5BNAME%5D%20is%20loaded%3F%22%3A%22%E7%9A%AE%E8%82%A4%5BNAME%5D%E5%B7%B2%E5%8A%A0%E8%BD%BD%EF%BC%9F%22%2C%22_width%22%3A%22%E5%AE%BD%E5%BA%A6%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20const%20requireNonPackagedRuntime%20%3D%20(blockName)%20%3D%3E%20%7B%0A%20%20%20%20if%20(Scratch.vm.runtime.isPackaged)%20%7B%0A%20%20%20%20%20%20alert(%0A%20%20%20%20%20%20%20%20%60To%20use%20the%20Skins%20%24%7BblockName%7D%20block%2C%20the%20creator%20of%20the%20packaged%20project%20must%20uncheck%20%22Remove%20raw%20asset%20data%20after%20loading%20to%20save%20RAM%22%20under%20advanced%20settings%20in%20the%20packager.%60%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7BRenderWebGL.SVGSkin%7D%20svgSkin%0A%20%20%20*%20%40returns%20%7BPromise%3Cvoid%3E%7D%0A%20%20%20*%2F%0A%20%20const%20svgSkinFinishedLoading%20%3D%20(svgSkin)%20%3D%3E%0A%20%20%20%20new%20Promise((resolve)%20%3D%3E%20%7B%0A%20%20%20%20%20%20if%20(svgSkin._svgImageLoaded)%20%7B%0A%20%20%20%20%20%20%20%20resolve()%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20svgSkin._svgImage.addEventListener(%22load%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20resolve()%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20svgSkin._svgImage.addEventListener(%22error%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20resolve()%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%0A%20%20const%20vm%20%3D%20Scratch.vm%3B%0A%20%20const%20runtime%20%3D%20vm.runtime%3B%0A%20%20const%20renderer%20%3D%20runtime.renderer%3B%0A%20%20const%20Cast%20%3D%20Scratch.Cast%3B%0A%0A%20%20var%20createdSkins%20%3D%20%5B%5D%3B%0A%0A%20%20class%20Skins%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20runtime.on(%22PROJECT_START%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20this._refreshTargets()%3B%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20runtime.on(%22PROJECT_STOP_ALL%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20this._refreshTargets()%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22lmsSkins%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Skins%22)%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%236b56ff%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%23604de6%22%2C%0A%20%20%20%20%20%20%20%20color3%3A%20%22%235645cc%22%2C%0A%20%20%20%20%20%20%20%20docsURI%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2FLily%2FSkins%22%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22registerSVGSkin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22create%20SVG%20skin%20%5BSVG%5D%20as%20%5BNAME%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SVG%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%3Csvg%20%2F%3E%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20skin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22registerCostumeSkin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22load%20skin%20from%20%5BCOSTUME%5D%20as%20%5BNAME%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COSTUME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COSTUME%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20skin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22registerURLSkin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22load%20skin%20from%20URL%20%5BURL%5D%20as%20%5BNAME%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2Fdango.png%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20skin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getSkinLoaded%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22skin%20%5BNAME%5D%20is%20loaded%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20skin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setSkin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20skin%20of%20%5BTARGET%5D%20to%20%5BNAME%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TARGET%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22targetMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20skin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22restoreSkin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22restore%20skin%20of%20%5BTARGET%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TARGET%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22targetMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22restoreTargets%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22restore%20targets%20with%20skin%20%5BNAME%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20skin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getCurrentSkin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22current%20skin%20of%20%5BTARGET%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TARGET%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22targetMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getSkinAttribute%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22%5BATTRIBUTE%5D%20of%20skin%20%5BNAME%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ATTRIBUTE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22skinAttributes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20skin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deleteSkin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22delete%20skin%20%5BNAME%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20skin%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deleteAllSkins%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22delete%20all%20skins%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20targetMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%22_getTargets%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20skinAttributes%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22width%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22width%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22height%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22height%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20async%20registerSVGSkin(args)%20%7B%0A%20%20%20%20%20%20const%20skinName%20%3D%20%60lms-%24%7BCast.toString(args.NAME)%7D%60%3B%0A%20%20%20%20%20%20const%20svgData%20%3D%20Cast.toString(args.SVG)%3B%0A%0A%20%20%20%20%20%20let%20oldSkinId%20%3D%20null%3B%0A%20%20%20%20%20%20if%20(createdSkins%5BskinName%5D)%20%7B%0A%20%20%20%20%20%20%20%20oldSkinId%20%3D%20createdSkins%5BskinName%5D%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20This%20generally%20takes%20a%20few%20frames%2C%20so%20yield%20the%20block%0A%20%20%20%20%20%20const%20skinId%20%3D%20renderer.createSVGSkin(svgData)%3B%0A%20%20%20%20%20%20createdSkins%5BskinName%5D%20%3D%20skinId%3B%0A%0A%20%20%20%20%20%20await%20svgSkinFinishedLoading(renderer._allSkins%5BskinId%5D)%3B%0A%0A%20%20%20%20%20%20if%20(oldSkinId)%20%7B%0A%20%20%20%20%20%20%20%20this._refreshTargetsFromID(oldSkinId%2C%20false%2C%20skinId)%3B%0A%20%20%20%20%20%20%20%20renderer.destroySkin(oldSkinId)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20async%20registerCostumeSkin(args%2C%20util)%20%7B%0A%20%20%20%20%20%20if%20(!requireNonPackagedRuntime(%22add%20costume%20skin%22))%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20const%20skinName%20%3D%20%60lms-%24%7BCast.toString(args.NAME)%7D%60%3B%0A%20%20%20%20%20%20const%20costumeIndex%20%3D%20util.target.getCostumeIndexByName(args.COSTUME)%3B%0A%20%20%20%20%20%20if%20(costumeIndex%20%3D%3D%3D%20-1)%20return%3B%0A%20%20%20%20%20%20const%20costume%20%3D%20util.target.sprite.costumes%5BcostumeIndex%5D%3B%0A%0A%20%20%20%20%20%20const%20url%20%3D%20costume.asset.encodeDataURI()%3B%0A%20%20%20%20%20%20const%20rotationCenterX%20%3D%20costume.rotationCenterX%3B%0A%20%20%20%20%20%20const%20rotationCenterY%20%3D%20costume.rotationCenterY%3B%0A%0A%20%20%20%20%20%20let%20rotationCenter%20%3D%20%5BrotationCenterX%2C%20rotationCenterY%5D%3B%0A%20%20%20%20%20%20if%20(!rotationCenterX%20%7C%7C%20!rotationCenterY)%20rotationCenter%20%3D%20null%3B%0A%0A%20%20%20%20%20%20let%20oldSkinId%20%3D%20null%3B%0A%20%20%20%20%20%20if%20(createdSkins%5BskinName%5D)%20%7B%0A%20%20%20%20%20%20%20%20oldSkinId%20%3D%20createdSkins%5BskinName%5D%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20const%20skinId%20%3D%20await%20this._createURLSkin(url%2C%20rotationCenter)%3B%0A%20%20%20%20%20%20createdSkins%5BskinName%5D%20%3D%20skinId%3B%0A%0A%20%20%20%20%20%20if%20(oldSkinId)%20%7B%0A%20%20%20%20%20%20%20%20this._refreshTargetsFromID(oldSkinId%2C%20false%2C%20skinId)%3B%0A%20%20%20%20%20%20%20%20renderer.destroySkin(oldSkinId)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20async%20registerURLSkin(args)%20%7B%0A%20%20%20%20%20%20const%20skinName%20%3D%20%60lms-%24%7BCast.toString(args.NAME)%7D%60%3B%0A%20%20%20%20%20%20const%20url%20%3D%20Cast.toString(args.URL)%3B%0A%0A%20%20%20%20%20%20let%20oldSkinId%20%3D%20null%3B%0A%20%20%20%20%20%20if%20(createdSkins%5BskinName%5D)%20%7B%0A%20%20%20%20%20%20%20%20oldSkinId%20%3D%20createdSkins%5BskinName%5D%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20const%20skinId%20%3D%20await%20this._createURLSkin(url)%3B%0A%20%20%20%20%20%20if%20(!skinId)%20return%3B%0A%20%20%20%20%20%20createdSkins%5BskinName%5D%20%3D%20skinId%3B%0A%0A%20%20%20%20%20%20if%20(oldSkinId)%20%7B%0A%20%20%20%20%20%20%20%20this._refreshTargetsFromID(oldSkinId%2C%20false%2C%20skinId)%3B%0A%20%20%20%20%20%20%20%20renderer.destroySkin(oldSkinId)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20getSkinLoaded(args)%20%7B%0A%20%20%20%20%20%20const%20skinName%20%3D%20%60lms-%24%7BCast.toString(args.NAME)%7D%60%3B%0A%20%20%20%20%20%20return%20!!createdSkins%5BskinName%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setSkin(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20skinName%20%3D%20%60lms-%24%7BCast.toString(args.NAME)%7D%60%3B%0A%20%20%20%20%20%20if%20(!createdSkins%5BskinName%5D)%20return%3B%0A%0A%20%20%20%20%20%20const%20targetName%20%3D%20Cast.toString(args.TARGET)%3B%0A%20%20%20%20%20%20const%20target%20%3D%20this._getTargetFromMenu(targetName%2C%20util)%3B%0A%20%20%20%20%20%20if%20(!target)%20return%3B%0A%20%20%20%20%20%20const%20drawableID%20%3D%20target.drawableID%3B%0A%0A%20%20%20%20%20%20const%20skinId%20%3D%20createdSkins%5BskinName%5D%3B%0A%20%20%20%20%20%20renderer._allDrawables%5BdrawableID%5D.skin%20%3D%20renderer._allSkins%5BskinId%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20restoreSkin(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20targetName%20%3D%20Cast.toString(args.TARGET)%3B%0A%20%20%20%20%20%20const%20target%20%3D%20this._getTargetFromMenu(targetName%2C%20util)%3B%0A%20%20%20%20%20%20if%20(!target)%20return%3B%0A%20%20%20%20%20%20target.updateAllDrawableProperties()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getCurrentSkin(args%2C%20util)%20%7B%0A%20%20%20%20%20%20const%20targetName%20%3D%20Cast.toString(args.TARGET)%3B%0A%20%20%20%20%20%20const%20target%20%3D%20this._getTargetFromMenu(targetName%2C%20util)%3B%0A%20%20%20%20%20%20if%20(!target)%20return%3B%0A%20%20%20%20%20%20const%20drawableID%20%3D%20target.drawableID%3B%0A%0A%20%20%20%20%20%20const%20skinId%20%3D%20renderer._allDrawables%5BdrawableID%5D.skin._id%3B%0A%20%20%20%20%20%20const%20skinName%20%3D%20this._getSkinNameFromID(skinId)%3B%0A%20%20%20%20%20%20return%20skinName%20%3F%20skinName.replace(%22lms-%22%2C%20%22%22)%20%3A%20%22%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getSkinAttribute(args)%20%7B%0A%20%20%20%20%20%20const%20skins%20%3D%20renderer._allSkins%3B%0A%20%20%20%20%20%20const%20skinName%20%3D%20%60lms-%24%7BCast.toString(args.NAME)%7D%60%3B%0A%0A%20%20%20%20%20%20if%20(!createdSkins%5BskinName%5D)%20return%200%3B%0A%20%20%20%20%20%20const%20skinId%20%3D%20createdSkins%5BskinName%5D%3B%0A%20%20%20%20%20%20if%20(!skins%5BskinId%5D)%20return%200%3B%0A%0A%20%20%20%20%20%20const%20size%20%3D%20skins%5BskinId%5D.size%3B%0A%20%20%20%20%20%20const%20attribute%20%3D%20Cast.toString(args.ATTRIBUTE).toLowerCase()%3B%0A%0A%20%20%20%20%20%20switch%20(attribute)%20%7B%0A%20%20%20%20%20%20%20%20case%20%22width%22%3A%0A%20%20%20%20%20%20%20%20%20%20return%20Math.ceil(size%5B0%5D)%3B%0A%20%20%20%20%20%20%20%20case%20%22height%22%3A%0A%20%20%20%20%20%20%20%20%20%20return%20Math.ceil(size%5B1%5D)%3B%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20return%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20deleteSkin(args)%20%7B%0A%20%20%20%20%20%20const%20skinName%20%3D%20%60lms-%24%7BCast.toString(args.NAME)%7D%60%3B%0A%20%20%20%20%20%20if%20(!createdSkins%5BskinName%5D)%20return%3B%0A%20%20%20%20%20%20const%20skinId%20%3D%20createdSkins%5BskinName%5D%3B%0A%0A%20%20%20%20%20%20this._refreshTargetsFromID(skinId%2C%20true)%3B%0A%20%20%20%20%20%20renderer.destroySkin(skinId)%3B%0A%20%20%20%20%20%20Reflect.deleteProperty(createdSkins%2C%20skinName)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20deleteAllSkins()%20%7B%0A%20%20%20%20%20%20this._refreshTargets()%3B%0A%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20createdSkins.length%3B%20i%2B%2B)%0A%20%20%20%20%20%20%20%20renderer.destroySkin(createdSkins%5Bi%5D)%3B%0A%20%20%20%20%20%20createdSkins%20%3D%20%5B%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20restoreTargets(args)%20%7B%0A%20%20%20%20%20%20const%20skinName%20%3D%20%60lms-%24%7BCast.toString(args.NAME)%7D%60%3B%0A%20%20%20%20%20%20if%20(!createdSkins%5BskinName%5D)%20return%3B%0A%20%20%20%20%20%20const%20skinId%20%3D%20createdSkins%5BskinName%5D%3B%0A%0A%20%20%20%20%20%20this._refreshTargetsFromID(skinId%2C%20true)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Utility%20Functions%0A%0A%20%20%20%20_refreshTargetsFromID(skinId%2C%20reset%2C%20newId)%20%7B%0A%20%20%20%20%20%20const%20drawables%20%3D%20renderer._allDrawables%3B%0A%20%20%20%20%20%20const%20skins%20%3D%20renderer._allSkins%3B%0A%0A%20%20%20%20%20%20for%20(const%20target%20of%20runtime.targets)%20%7B%0A%20%20%20%20%20%20%20%20const%20drawableID%20%3D%20target.drawableID%3B%0A%20%20%20%20%20%20%20%20const%20targetSkin%20%3D%20drawables%5BdrawableID%5D.skin.id%3B%0A%0A%20%20%20%20%20%20%20%20if%20(targetSkin%20%3D%3D%3D%20skinId)%20%7B%0A%20%20%20%20%20%20%20%20%20%20target.updateAllDrawableProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!reset)%0A%20%20%20%20%20%20%20%20%20%20%20%20drawables%5BdrawableID%5D.skin%20%3D%20newId%20%3F%20skins%5BnewId%5D%20%3A%20skins%5BskinId%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20_refreshTargets()%20%7B%0A%20%20%20%20%20%20for%20(const%20target%20of%20runtime.targets)%20%7B%0A%20%20%20%20%20%20%20%20target.updateAllDrawableProperties()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20_getSkinNameFromID(skinId)%20%7B%0A%20%20%20%20%20%20for%20(const%20skinName%20in%20createdSkins)%20%7B%0A%20%20%20%20%20%20%20%20if%20(createdSkins%5BskinName%5D%20%3D%3D%3D%20skinId)%20return%20skinName%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20_getTargetFromMenu(targetName%2C%20util)%20%7B%0A%20%20%20%20%20%20let%20target%20%3D%20Scratch.vm.runtime.getSpriteTargetByName(targetName)%3B%0A%20%20%20%20%20%20if%20(targetName%20%3D%3D%3D%20%22_myself_%22)%20target%20%3D%20util.target%3B%0A%20%20%20%20%20%20if%20(targetName%20%3D%3D%3D%20%22_stage_%22)%20target%20%3D%20runtime.getTargetForStage()%3B%0A%20%20%20%20%20%20return%20target%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20async%20_createURLSkin(URL%2C%20rotationCenter)%20%7B%0A%20%20%20%20%20%20let%20imageData%3B%0A%20%20%20%20%20%20if%20(await%20Scratch.canFetch(URL))%20%7B%0A%20%20%20%20%20%20%20%20imageData%20%3D%20await%20Scratch.fetch(URL)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20const%20contentType%20%3D%20imageData.headers.get(%22Content-Type%22)%3B%0A%20%20%20%20%20%20if%20(contentType%20%3D%3D%3D%20%22image%2Fsvg%2Bxml%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20renderer.createSVGSkin(await%20imageData.text()%2C%20rotationCenter)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(%0A%20%20%20%20%20%20%20%20contentType%20%3D%3D%3D%20%22image%2Fpng%22%20%7C%7C%0A%20%20%20%20%20%20%20%20contentType%20%3D%3D%3D%20%22image%2Fjpeg%22%20%7C%7C%0A%20%20%20%20%20%20%20%20contentType%20%3D%3D%3D%20%22image%2Fbmp%22%0A%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20eslint-disable-next-line%20no-restricted-syntax%0A%20%20%20%20%20%20%20%20const%20output%20%3D%20new%20Image()%3B%0A%20%20%20%20%20%20%20%20output.src%20%3D%20URL%3B%0A%20%20%20%20%20%20%20%20output.crossOrigin%20%3D%20%22anonymous%22%3B%0A%20%20%20%20%20%20%20%20await%20output.decode()%3B%0A%20%20%20%20%20%20%20%20return%20renderer.createBitmapSkin(output)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20_getTargets()%20%7B%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20%5B%0A%20%20%20%20%20%20%20%20%7B%20text%3A%20%22myself%22%2C%20value%3A%20%22_myself_%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%20text%3A%20%22Stage%22%2C%20value%3A%20%22_stage_%22%20%7D%2C%0A%20%20%20%20%20%20%5D%3B%0A%20%20%20%20%20%20const%20targets%20%3D%20Scratch.vm.runtime.targets%3B%0A%20%20%20%20%20%20for%20(let%20index%20%3D%201%3B%20index%20%3C%20targets.length%3B%20index%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20targets%5Bindex%5D%3B%0A%20%20%20%20%20%20%20%20if%20(target.isOriginal)%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20targetName%20%3D%20target.getName()%3B%0A%20%20%20%20%20%20%20%20%20%20spriteNames.push(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20targetName%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20targetName%2C%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20spriteNames%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20Scratch.extensions.register(new%20Skins())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Navigator%0A%2F%2F%20ID%3A%20navigatorinfo%0A%2F%2F%20Description%3A%20Details%20about%20the%20user's%20browser%20and%20operating%20system.%0A%2F%2F%20Context%3A%20%22Navigator%22%20refers%20to%20someone's%20browser%0A%2F%2F%20License%3A%20MIT%20AND%20MPL-2.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22fi%22%3A%7B%22_Navigator%20Info%22%3A%22J%C3%A4rjestelm%C3%A4n%20tiedot%22%2C%22_browser%22%3A%22selain%22%2C%22_dark%22%3A%22tummaa%22%2C%22_device%20memory%20in%20GB%22%3A%22laitteen%20muisti%20GB%3An%C3%A4%22%2C%22_light%22%3A%22vaaleaa%22%2C%22_operating%20system%22%3A%22k%C3%A4ytt%C3%B6j%C3%A4rjestelm%C3%A4%22%2C%22_user%20prefers%20%5BTHEME%5D%20color%20scheme%3F%22%3A%22k%C3%A4ytt%C3%A4%C3%A4k%C3%B6%20k%C3%A4ytt%C3%A4j%C3%A4%20%5BTHEME%5D%20v%C3%A4riteemaa%3F%22%2C%22_user%20prefers%20more%20contrast%3F%22%3A%22k%C3%A4ytt%C3%A4%C3%A4k%C3%B6%20k%C3%A4ytt%C3%A4j%C3%A4%20korkeaa%20kontrastia%3F%22%2C%22_user%20prefers%20reduced%20motion%3F%22%3A%22k%C3%A4ytt%C3%A4%C3%A4k%C3%B6%20k%C3%A4ytt%C3%A4j%C3%A4%20v%C3%A4hennetty%C3%A4%20liikett%C3%A4%3F%22%7D%2C%22it%22%3A%7B%22_Navigator%20Info%22%3A%22Informazioni%20Browser%20e%20SO%22%2C%22_dark%22%3A%22scuro%22%2C%22_device%20memory%20in%20GB%22%3A%22memoria%20dispositivo%20in%20GB%22%2C%22_light%22%3A%22chiaro%22%2C%22_operating%20system%22%3A%22sistema%20operativo%22%2C%22_user%20prefers%20%5BTHEME%5D%20color%20scheme%3F%22%3A%22l'utente%20preferisce%20il%20tema%20%5BTHEME%5D%22%2C%22_user%20prefers%20more%20contrast%3F%22%3A%22l'utente%20preferisce%20contrasto%20alto%22%2C%22_user%20prefers%20reduced%20motion%3F%22%3A%22l'utente%20preferisce%20movimento%20ridotto%22%7D%2C%22ja%22%3A%7B%22_browser%22%3A%22%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%22%2C%22_dark%22%3A%22%E3%83%80%E3%83%BC%E3%82%AF%22%2C%22_light%22%3A%22%E3%83%A9%E3%82%A4%E3%83%88%22%7D%2C%22ko%22%3A%7B%22_browser%22%3A%22%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%22%2C%22_operating%20system%22%3A%22%EC%9A%B4%EC%98%81%20%EC%B2%B4%EC%A0%9C%22%7D%2C%22nb%22%3A%7B%22_browser%22%3A%22nettleser%22%2C%22_dark%22%3A%22m%C3%B8rk%22%2C%22_device%20memory%20in%20GB%22%3A%22enhetens%20minne%20i%20GB%22%2C%22_light%22%3A%22lys%22%2C%22_operating%20system%22%3A%22operativsystem%22%2C%22_user%20prefers%20%5BTHEME%5D%20color%20scheme%3F%22%3A%22bruker%20foretrekker%20%5BTHEME%5D%20fargeskjema%3F%22%2C%22_user%20prefers%20more%20contrast%3F%22%3A%22brukeren%20foretrekker%20mer%20kontrast%3F%22%2C%22_user%20prefers%20reduced%20motion%3F%22%3A%22bruker%20foretrekker%20redusert%20bevegelse%3F%22%7D%2C%22nl%22%3A%7B%22_Navigator%20Info%22%3A%22Navigator-info%22%2C%22_dark%22%3A%22donker%22%2C%22_device%20memory%20in%20GB%22%3A%22apparaatgeheugen%20in%20GB%22%2C%22_light%22%3A%22licht%22%2C%22_operating%20system%22%3A%22besturingssysteem%22%2C%22_user%20prefers%20%5BTHEME%5D%20color%20scheme%3F%22%3A%22gebruik%20heeft%20voorkeur%20voor%20%5BTHEME%5D%20kleurenschema%3F%22%2C%22_user%20prefers%20more%20contrast%3F%22%3A%22gebruiker%20heeft%20voorkeur%20voor%20meer%20contrast%3F%22%2C%22_user%20prefers%20reduced%20motion%3F%22%3A%22gebruiker%20heeft%20voorkeur%20voor%20verminderde%20beweging%3F%22%7D%2C%22pl%22%3A%7B%22_browser%22%3A%22przegl%C4%85darka%22%2C%22_dark%22%3A%22ciemny%22%2C%22_light%22%3A%22jasny%22%7D%2C%22ru%22%3A%7B%22_Navigator%20Info%22%3A%22%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BE%20%D0%9D%D0%B0%D0%B2%D0%B8%D0%B3%D0%B0%D1%82%D0%BE%D1%80%D0%B5%22%2C%22_browser%22%3A%22%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%22%2C%22_dark%22%3A%22%D1%82%D1%91%D0%BC%D0%BD%D1%83%D1%8E%22%2C%22_device%20memory%20in%20GB%22%3A%22%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C%20%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0%20%D0%B2%20%D0%93%D0%91%22%2C%22_light%22%3A%22%D1%81%D0%B2%D0%B5%D1%82%D0%BB%D1%83%D1%8E%22%2C%22_operating%20system%22%3A%22%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%22%2C%22_user%20prefers%20%5BTHEME%5D%20color%20scheme%3F%22%3A%22%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%20%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D0%B5%D1%82%20%5BTHEME%5D%20%D1%82%D0%B5%D0%BC%D1%83%3F%22%2C%22_user%20prefers%20more%20contrast%3F%22%3A%22%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%20%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D0%B5%D1%82%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D0%B9%20%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D1%81%D1%82%3F%22%2C%22_user%20prefers%20reduced%20motion%3F%22%3A%22%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%20%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D0%B5%D1%82%20%D1%83%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%3F%22%7D%2C%22zh-cn%22%3A%7B%22_Navigator%20Info%22%3A%22Navigator%20API%20%E4%BF%A1%E6%81%AF%22%2C%22_browser%22%3A%22%E6%B5%8F%E8%A7%88%E5%99%A8%E5%90%8D%E7%A7%B0%22%2C%22_dark%22%3A%22%E6%9A%97%E8%89%B2%22%2C%22_device%20memory%20in%20GB%22%3A%22%E8%AE%BE%E5%A4%87%E8%BF%90%E8%A1%8C%E5%86%85%E5%AD%98%22%2C%22_light%22%3A%22%E4%BA%AE%E8%89%B2%22%2C%22_operating%20system%22%3A%22%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%90%8D%E7%A7%B0%22%2C%22_user%20prefers%20%5BTHEME%5D%20color%20scheme%3F%22%3A%22%E5%BC%80%E5%90%AF%E4%BA%86%5BTHEME%5D%E4%B8%BB%E9%A2%98%EF%BC%9F%22%2C%22_user%20prefers%20more%20contrast%3F%22%3A%22%E5%BC%80%E5%90%AF%E4%BA%86%E9%AB%98%E5%AF%B9%E6%AF%94%E5%BA%A6%EF%BC%9F%22%2C%22_user%20prefers%20reduced%20motion%3F%22%3A%22%E5%BC%80%E5%90%AF%E4%BA%86%E5%8A%A8%E7%94%BB%E5%87%8F%E5%BC%B1%E5%8A%9F%E8%83%BD%EF%BC%9F%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20class%20NavigatorInfo%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22navigatorinfo%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Navigator%20Info%22)%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getOS%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22operating%20system%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getBrowser%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22browser%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getMemory%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22device%20memory%20in%20GB%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getPreferredColorScheme%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22user%20prefers%20%5BTHEME%5D%20color%20scheme%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20THEME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22THEME%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22dark%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getPreferredReducedMotion%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22user%20prefers%20reduced%20motion%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getPreferredContrast%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22user%20prefers%20more%20contrast%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20THEME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22light%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22light%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22dark%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22dark%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getOS()%20%7B%0A%20%20%20%20%20%20const%20userAgent%20%3D%20navigator.userAgent%3B%0A%20%20%20%20%20%20if%20(userAgent.includes(%22Windows%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22Windows%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(userAgent.includes(%22Android%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22Android%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(%0A%20%20%20%20%20%20%20%20userAgent.includes(%22iPhone%22)%20%7C%7C%0A%20%20%20%20%20%20%20%20userAgent.includes(%22iPod%22)%20%7C%7C%0A%20%20%20%20%20%20%20%20userAgent.includes(%22iPad%22)%0A%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22iOS%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(userAgent.includes(%22Linux%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22Linux%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(userAgent.includes(%22CrOS%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22ChromeOS%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(userAgent.includes(%22Mac%20OS%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22macOS%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22Other%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getBrowser()%20%7B%0A%20%20%20%20%20%20const%20userAgent%20%3D%20navigator.userAgent%3B%0A%20%20%20%20%20%20if%20(userAgent.includes(%22Chrome%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22Chrome%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(userAgent.includes(%22Firefox%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22Firefox%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(userAgent.includes(%22Safari%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20%22Safari%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22Other%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getMemory()%20%7B%0A%20%20%20%20%20%20%2F%2F%20%40ts-expect-error%0A%20%20%20%20%20%20if%20(navigator.deviceMemory%20%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22Unsupported%22%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20%40ts-expect-error%0A%20%20%20%20%20%20%20%20return%20navigator.deviceMemory%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20getPreferredColorScheme(args)%20%7B%0A%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20window.matchMedia(%22(prefers-color-scheme%3A%20dark)%22).matches%20%3D%3D%3D%0A%20%20%20%20%20%20%20%20(args.THEME%20%3D%3D%3D%20%22dark%22)%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getPreferredReducedMotion()%20%7B%0A%20%20%20%20%20%20return%20!!window.matchMedia(%22(prefers-reduced-motion%3A%20reduce)%22).matches%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getPreferredContrast()%20%7B%0A%20%20%20%20%20%20return%20!!window.matchMedia(%22(prefers-contrast%3A%20more)%22).matches%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20NavigatorInfo())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B",
"data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Fetch%0A%2F%2F%20ID%3A%20fetch%0A%2F%2F%20Description%3A%20Make%20requests%20to%20the%20broader%20internet.%0A%2F%2F%20License%3A%20MIT%20AND%20MPL-2.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_Fetch%22%3A%22Internetquests%22%7D%2C%22fi%22%3A%7B%22_Fetch%22%3A%22Datan%20haku%22%7D%2C%22nb%22%3A%7B%22_Fetch%22%3A%22Hent%22%7D%2C%22ru%22%3A%7B%22_Fetch%22%3A%22%D0%9F%D0%BE%D0%B8%D0%BC%D0%BA%D0%B0%22%7D%2C%22zh-cn%22%3A%7B%22_Fetch%22%3A%22%E8%AF%B7%E6%B1%82API%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20class%20Fetch%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22fetch%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Fetch%22)%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22get%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22GET%20%5BURL%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2Fhello.txt%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20get(args)%20%7B%0A%20%20%20%20%20%20return%20Scratch.fetch(args.URL)%0A%20%20%20%20%20%20%20%20.then((r)%20%3D%3E%20r.text())%0A%20%20%20%20%20%20%20%20.catch(()%20%3D%3E%20%22%22)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20Fetch())%3B%0A%7D)(Scratch)%3B%20%7D)(Scratch)%3B",
]) {
vm.extensionManager.loadExtensionURL(extension);
}
vm.runtime.isProjectPermissionManagerDisabled = true;
} catch (e) {
handleError(e);
}
</script>
<script>
const getProjectData = (function () {
const storage = scaffolding.storage;
storage.onprogress = (total, loaded) => {
setProgress(interpolate(0.2, 0.98, loaded / total));
};
storage.addWebStore(
[
storage.AssetType.ImageVector,
storage.AssetType.ImageBitmap,
storage.AssetType.Sound,
storage.AssetType.Font,
].filter((i) => i),
(asset) =>
new URL(
"./assets/" +
asset.assetId +
"." +
asset.dataFormat,
location,
).href,
);
return () =>
new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = () => {
resolve(xhr.response);
};
xhr.onerror = () => {
if (location.protocol === "file:") {
reject(
new Error(
"Zip environment must be used from a website, not from a file URL.",
),
);
} else {
reject(
new Error(
"Request to load project data failed.",
),
);
}
};
xhr.onprogress = (e) => {
if (e.lengthComputable) {
setProgress(
interpolate(0.1, 0.2, e.loaded / e.total),
);
}
};
xhr.responseType = "arraybuffer";
xhr.open("GET", "./assets/project.json");
xhr.send();
});
})();
</script>
<script>
const run = async () => {
const projectData = await getProjectData();
await scaffolding.loadProject(projectData);
setProgress(1);
loadingScreen.hidden = true;
if (true) {
scaffolding.start();
} else {
launchScreen.hidden = false;
launchScreen.addEventListener("click", () => {
launchScreen.hidden = true;
scaffolding.start();
});
launchScreen.focus();
}
};
run().catch(handleError);
</script>
</body>
</html>