shaderkit 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1 +1,3 @@
1
1
  # shaderkit
2
+
3
+ Lightweight compiler for GLSL and WGSL.
@@ -0,0 +1 @@
1
+ export * from '../src'
package/dist/index.js ADDED
@@ -0,0 +1,523 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const GLSL_KEYWORDS = [
4
+ // 3.8 Keywords
5
+ "const",
6
+ "uniform",
7
+ "layout",
8
+ "centroid",
9
+ "flat",
10
+ "smooth",
11
+ "break",
12
+ "continue",
13
+ "do",
14
+ "for",
15
+ "while",
16
+ "switch",
17
+ "case",
18
+ "default",
19
+ "if",
20
+ "else",
21
+ "in",
22
+ "out",
23
+ "inout",
24
+ "float",
25
+ "int",
26
+ "void",
27
+ "bool",
28
+ "true",
29
+ "false",
30
+ "invariant",
31
+ "discard",
32
+ "return",
33
+ "mat2",
34
+ "mat3",
35
+ "mat4",
36
+ "mat2x2",
37
+ "mat2x3",
38
+ "mat2x4",
39
+ "mat3x2",
40
+ "mat3x3",
41
+ "mat3x4",
42
+ "mat4x2",
43
+ "mat4x3",
44
+ "mat4x4",
45
+ "vec2",
46
+ "vec3",
47
+ "vec4",
48
+ "ivec2",
49
+ "ivec3",
50
+ "ivec4",
51
+ "bvec2",
52
+ "bvec3",
53
+ "bvec4",
54
+ "uint",
55
+ "uvec2",
56
+ "uvec3",
57
+ "uvec4",
58
+ "lowp",
59
+ "mediump",
60
+ "highp",
61
+ "precision",
62
+ "sampler2D",
63
+ "sampler3D",
64
+ "samplerCube",
65
+ "sampler2DShadow",
66
+ "samplerCubeShadow",
67
+ "sampler2DArray",
68
+ "sampler2DArrayShadow",
69
+ "isampler2D",
70
+ "isampler3D",
71
+ "isamplerCube",
72
+ "isampler2DArray",
73
+ "usampler2D",
74
+ "usampler3D",
75
+ "usamplerCube",
76
+ "usampler2DArray",
77
+ "struct",
78
+ // 3.8 Keywords - Reserved for future use
79
+ "attribute",
80
+ "varying",
81
+ "coherent",
82
+ "volatile",
83
+ "restrict",
84
+ "readonly",
85
+ "writeonly",
86
+ "resource",
87
+ "atomic_uint",
88
+ "noperspective",
89
+ "patch",
90
+ "sample",
91
+ "subroutine",
92
+ "common",
93
+ "partition",
94
+ "active",
95
+ "asm",
96
+ "class",
97
+ "union",
98
+ "enum",
99
+ "typedef",
100
+ "template",
101
+ "this",
102
+ "goto",
103
+ "inline",
104
+ "noinline",
105
+ "volatile",
106
+ "public",
107
+ "static",
108
+ "extern",
109
+ "external",
110
+ "interface",
111
+ "long",
112
+ "short",
113
+ "double",
114
+ "half",
115
+ "fixed",
116
+ "unsigned",
117
+ "superp",
118
+ "input",
119
+ "output",
120
+ "hvec2",
121
+ "hvec3",
122
+ "hvec4",
123
+ "dvec2",
124
+ "dvec3",
125
+ "dvec4",
126
+ "fvec2",
127
+ "fvec3",
128
+ "fvec4",
129
+ "sampler3DRect",
130
+ "filter",
131
+ "image1D",
132
+ "image2D",
133
+ "image3D",
134
+ "imageCube",
135
+ "iimage1D",
136
+ "iimage2D",
137
+ "iimage3D",
138
+ "iimageCube",
139
+ "uimage1D",
140
+ "uimage2D",
141
+ "uimage3D",
142
+ "uimageCube",
143
+ "image1DArray",
144
+ "image2DArray",
145
+ "iimage1DArray",
146
+ "iimage2DArray",
147
+ "uimage1DArray",
148
+ "uimage2DArray",
149
+ "imageBuffer",
150
+ "iimageBuffer",
151
+ "uimageBuffer",
152
+ "sampler1D",
153
+ "sampler1DShadow",
154
+ "sampler1DArray",
155
+ "sampler1DArrayShadow",
156
+ "isampler1D",
157
+ "isampler1DArray",
158
+ "usampler1D",
159
+ "usampler1DArray",
160
+ "sampler2DRect",
161
+ "sampler2DRectShadow",
162
+ "isampler2DRect",
163
+ "usampler2DRect",
164
+ "samplerBuffer",
165
+ "isamplerBuffer",
166
+ "usamplerBuffer",
167
+ "sampler2DMS",
168
+ "isampler2DMS",
169
+ "usampler2DMS",
170
+ "sampler2DMSArray",
171
+ "isampler2DMSArray",
172
+ "usampler2DMSArray",
173
+ "sizeof",
174
+ "cast",
175
+ "namespace",
176
+ "using",
177
+ // 3.5 Preprocessor
178
+ "#define",
179
+ "#undef",
180
+ "#if",
181
+ "#ifdef",
182
+ "#ifndef",
183
+ "#else",
184
+ "#elif",
185
+ "#endif",
186
+ "#error",
187
+ "#pragma",
188
+ "#extension",
189
+ "#version",
190
+ "#line",
191
+ // 3.5 Preprocessor - Operators
192
+ "defined",
193
+ // 3.5 Preprocessor - Macros
194
+ "__LINE__",
195
+ "__FILE__",
196
+ "__VERSION__",
197
+ "GL_ES",
198
+ // 7.1 Vertex Shader Special Variables
199
+ "gl_VertexID",
200
+ "gl_InstanceID",
201
+ "gl_Position",
202
+ "gl_PointSize",
203
+ // 7.2 Fragment Shader Special Variables
204
+ "gl_FragCoord",
205
+ "gl_FrontFacing",
206
+ "gl_FragDepth",
207
+ "gl_PointCoord",
208
+ // 7.3 Built-in Constants
209
+ "gl_MaxVertexAttribs",
210
+ "gl_MaxVertexUniformVectors",
211
+ "gl_MaxVertexOutputVectors",
212
+ "gl_MaxFragmentInputVectors",
213
+ "gl_MaxVertexTextureImageUnits",
214
+ "gl_MaxCombinedTextureImageUnits",
215
+ "gl_MaxTextureImageUnits",
216
+ "gl_MaxFragmentUniformVectors",
217
+ "gl_MaxDrawBuffers",
218
+ "gl_MinProgramTexelOffset",
219
+ "gl_MaxProgramTexelOffset",
220
+ // 7.4 Built-in Uniform State
221
+ "gl_DepthRangeParameters",
222
+ "gl_DepthRange",
223
+ // 8.1 Angle and Trigonometry Functions
224
+ "radians",
225
+ "degrees",
226
+ "sin",
227
+ "cos",
228
+ "tan",
229
+ "asin",
230
+ "acos",
231
+ "atan",
232
+ "sinh",
233
+ "cosh",
234
+ "tanh",
235
+ "asinh",
236
+ "acosh",
237
+ "atanh",
238
+ // 8.2 Exponential Functions
239
+ "pow",
240
+ "exp",
241
+ "log",
242
+ "exp2",
243
+ "log2",
244
+ "sqrt",
245
+ "inversesqrt",
246
+ // 8.3 Common Functions
247
+ "abs",
248
+ "sign",
249
+ "floor",
250
+ "trunc",
251
+ "round",
252
+ "roundEven",
253
+ "ceil",
254
+ "fract",
255
+ "mod",
256
+ "modf",
257
+ "min",
258
+ "max",
259
+ "clamp",
260
+ "mix",
261
+ "step",
262
+ "smoothstep",
263
+ "isnan",
264
+ "isinf",
265
+ "floatBitsToInt",
266
+ "floatBitsToUint",
267
+ "intBitsToFloat",
268
+ "uintBitsToFloat",
269
+ // 8.4 Floating-Point Pack and Unpack Functions
270
+ "packSnorm2x16",
271
+ "unpackSnorm2x16",
272
+ "packUnorm2x16",
273
+ "unpackUnorm2x16",
274
+ "packHalf2x16",
275
+ "unpackHalf2x16",
276
+ // 8.5 Geometric Functions
277
+ "length",
278
+ "distance",
279
+ "dot",
280
+ "cross",
281
+ "normalize",
282
+ "faceforward",
283
+ "reflect",
284
+ "refract",
285
+ "matrixCompMult",
286
+ "outerProduct",
287
+ "transpose",
288
+ "determinant",
289
+ "inverse",
290
+ // 8.7 Vector Relational Functions
291
+ "lessThan",
292
+ "lessThanEqual",
293
+ "greaterThan",
294
+ "greaterThanEqual",
295
+ "equal",
296
+ "notEqual",
297
+ "any",
298
+ "all",
299
+ "not",
300
+ // 8.8 Texture Lookup Functions
301
+ "textureSize",
302
+ "texture",
303
+ "textureProj",
304
+ "textureLod",
305
+ "textureOffset",
306
+ "texelFetch",
307
+ "texelFetchOffset",
308
+ "textureProjOffset",
309
+ "textureLodOffset",
310
+ "textureProjLod",
311
+ "textureProjLodOffset",
312
+ "textureGrad",
313
+ "textureGradOffset",
314
+ "textureProjGrad",
315
+ "textureProjGradOffset",
316
+ // 8.9 Fragment Processing Functions
317
+ "dFdx",
318
+ "dFdy",
319
+ "fwidth",
320
+ // Additional directives
321
+ "#include",
322
+ // WEBGL_multi_draw https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw
323
+ "gl_DrawID",
324
+ // vertex only
325
+ // OVR_multiview2 https://registry.khronos.org/webgl/extensions/OVR_multiview2
326
+ // OCULUS_multiview https://github.com/KhronosGroup/WebGL/issues/2912
327
+ "gl_ViewID_OVR",
328
+ "GL_OVR_multiview2"
329
+ ];
330
+ const GLSL_SYMBOLS = [
331
+ // Preprocessor
332
+ "#",
333
+ // Line continuation
334
+ "\\",
335
+ // Comments
336
+ "//",
337
+ "/*",
338
+ "*/",
339
+ // Punctuation
340
+ ".",
341
+ ",",
342
+ ";",
343
+ "{",
344
+ "}",
345
+ "(",
346
+ ")",
347
+ "[",
348
+ "]",
349
+ // Comparison
350
+ "?",
351
+ ":",
352
+ "<",
353
+ ">",
354
+ "<=",
355
+ ">=",
356
+ "&&",
357
+ "||",
358
+ // Modifier
359
+ "~",
360
+ "=",
361
+ "!",
362
+ "+",
363
+ "-",
364
+ "/",
365
+ "&",
366
+ "|",
367
+ "^",
368
+ "%",
369
+ "<<",
370
+ ">>",
371
+ // Operators
372
+ "++",
373
+ "--",
374
+ "==",
375
+ "!=",
376
+ "+=",
377
+ "-=",
378
+ "/=",
379
+ "&=",
380
+ "|=",
381
+ "^=",
382
+ "%=",
383
+ "<<=",
384
+ ">>="
385
+ ];
386
+ function tokenize(code, index = 0) {
387
+ var _a;
388
+ const tokens = [];
389
+ while (index < code.length) {
390
+ let char = code[index];
391
+ let value = "";
392
+ if (/\s/.test(char)) {
393
+ index++;
394
+ continue;
395
+ }
396
+ if (char === "#") {
397
+ let j = index;
398
+ while (code[j] !== "\n" && !/\/[\/\*]/.test(code[j] + code[j + 1]))
399
+ j++;
400
+ code = code.substring(0, j) + "\\" + code.substring(j);
401
+ }
402
+ while ((/\d/.test(char) ? /[\d\.\-\w]/ : /\w/).test(code[index]))
403
+ value += code[index++];
404
+ if (!value) {
405
+ value = char;
406
+ for (const symbol of GLSL_SYMBOLS) {
407
+ if (symbol.length > value.length && code.startsWith(symbol, index))
408
+ value = symbol;
409
+ }
410
+ index += value.length;
411
+ }
412
+ if (/\/[\/\*]/.test(value)) {
413
+ const isMultiline = value === "/*";
414
+ while (!value.endsWith(isMultiline ? "*/" : "\n"))
415
+ value += code[index++];
416
+ tokens.push({ type: "comment", value });
417
+ } else if (!/\w/.test(char)) {
418
+ tokens.push({ type: "symbol", value });
419
+ } else if (/\d/.test(char)) {
420
+ if (/[uU]/.test(value))
421
+ tokens.push({ type: "uint", value });
422
+ else if (/\.|[eE]-?\d/.test(value))
423
+ tokens.push({ type: "float", value });
424
+ else
425
+ tokens.push({ type: "int", value });
426
+ } else if (/^(true|false)$/.test(value)) {
427
+ tokens.push({ type: "bool", value });
428
+ } else if (GLSL_KEYWORDS.includes(((_a = tokens[tokens.length - 1]) == null ? void 0 : _a.value) === "#" ? `#${value}` : value)) {
429
+ tokens.push({ type: "keyword", value });
430
+ } else {
431
+ tokens.push({ type: "identifier", value });
432
+ }
433
+ }
434
+ return tokens;
435
+ }
436
+ function minify(code, {
437
+ mangle = false,
438
+ mangleMap = /* @__PURE__ */ new Map(),
439
+ mangleExternals = false,
440
+ mangleProperties = false
441
+ } = {}) {
442
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
443
+ const exclude = new Set(mangleMap.values());
444
+ const tokens = tokenize(code).filter((token) => token.type !== "comment");
445
+ let mangleIndex = 0;
446
+ let blockIndex = null;
447
+ let prefix = null;
448
+ let minified = "";
449
+ for (let i = 0; i < tokens.length; i++) {
450
+ const token = tokens[i];
451
+ if (/keyword|identifier/.test(token.type)) {
452
+ if (/keyword|identifier/.test((_a = tokens[i - 1]) == null ? void 0 : _a.type))
453
+ minified += " ";
454
+ let key = token.value;
455
+ if (prefix) {
456
+ key = `${prefix}.${token.value}`;
457
+ } else if (((_b = tokens[i - 1]) == null ? void 0 : _b.value) === "." && ((_c = tokens[i - 2]) == null ? void 0 : _c.type) !== "symbol") {
458
+ key = `${(_d = tokens[i - 2]) == null ? void 0 : _d.value}.${token.value}`;
459
+ }
460
+ let renamed = mangleMap.get(key);
461
+ if (
462
+ // no-op
463
+ !renamed && // Filter variable names
464
+ key !== "main" && (typeof mangle === "boolean" ? mangle : mangle(token, i, tokens)) && // Is declaration, reference, namespace, or comma-separated list
465
+ token.type === "identifier" && (/keyword|identifier/.test((_e = tokens[i - 1]) == null ? void 0 : _e.type) || /}|,/.test((_f = tokens[i - 1]) == null ? void 0 : _f.value))
466
+ ) {
467
+ if (
468
+ // Skip struct properties when specified
469
+ (!prefix || mangleProperties) && // Skip shader externals when disabled
470
+ (blockIndex != null ? (
471
+ // Struct member
472
+ mangleExternals && mangleProperties || !/(struct|uniform|in|out|attribute|varying)/.test((_g = tokens[blockIndex - 1]) == null ? void 0 : _g.value)
473
+ ) : (
474
+ // Struct header, fully specified uniform, or comma-separated list
475
+ mangleExternals || !/(uniform|in|out|attribute|varying|,)/.test((_h = tokens[i - 1]) == null ? void 0 : _h.value) && !/(uniform|in|out|attribute|varying)/.test((_i = tokens[i - 2]) == null ? void 0 : _i.value)
476
+ ))
477
+ ) {
478
+ while (!renamed || exclude.has(renamed)) {
479
+ renamed = "";
480
+ mangleIndex++;
481
+ let j = mangleIndex;
482
+ while (j > 0) {
483
+ renamed = String.fromCharCode(97 + (j % 26 - 1)) + renamed;
484
+ j = Math.floor(j / 26);
485
+ }
486
+ }
487
+ mangleMap.set(key, renamed);
488
+ }
489
+ if (((_j = tokens[i + 1]) == null ? void 0 : _j.value) === "{") {
490
+ let j = i;
491
+ while (tokens[j].value !== "}")
492
+ j++;
493
+ const suffix = tokens[j + 1].value;
494
+ if (suffix !== ";")
495
+ prefix = suffix;
496
+ blockIndex = i;
497
+ } else if (((_k = tokens[i + 2]) == null ? void 0 : _k.value) === "}") {
498
+ prefix = null;
499
+ blockIndex = null;
500
+ }
501
+ }
502
+ minified += renamed != null ? renamed : token.value;
503
+ } else if (token.value === "#") {
504
+ if (((_l = tokens[i - 1]) == null ? void 0 : _l.value) !== "\\")
505
+ minified += "\n";
506
+ while (tokens[i].value !== "\\") {
507
+ if ((tokens[i].type !== "symbol" || ((_m = tokens[i - 2]) == null ? void 0 : _m.value) === "#") && ((_n = tokens[i - 1]) == null ? void 0 : _n.type) !== "symbol")
508
+ minified += " ";
509
+ minified += tokens[i].value;
510
+ i++;
511
+ }
512
+ minified += "\n";
513
+ } else {
514
+ minified += token.value;
515
+ }
516
+ }
517
+ return minified.trim();
518
+ }
519
+ exports.GLSL_KEYWORDS = GLSL_KEYWORDS;
520
+ exports.GLSL_SYMBOLS = GLSL_SYMBOLS;
521
+ exports.minify = minify;
522
+ exports.tokenize = tokenize;
523
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/constants.ts","../src/tokenizer.ts","../src/minifier.ts"],"sourcesContent":null,"names":[],"mappings":";;AAEO,MAAM,gBAAgB;AAAA;AAAA,EAE3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AACF;AAGO,MAAM,eAAe;AAAA;AAAA,EAE1B;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA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"}