angular-three 2.0.0-beta.31 → 2.0.0-beta.310

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.
Files changed (152) hide show
  1. package/README.md +221 -4
  2. package/esm2022/index.mjs +13 -13
  3. package/esm2022/lib/canvas.mjs +128 -200
  4. package/esm2022/lib/directives/args.mjs +46 -20
  5. package/esm2022/lib/directives/selection.mjs +65 -0
  6. package/esm2022/lib/dom/events.mjs +2 -2
  7. package/esm2022/lib/events.mjs +33 -31
  8. package/esm2022/lib/html.mjs +40 -0
  9. package/esm2022/lib/instance.mjs +43 -36
  10. package/esm2022/lib/loader.mjs +62 -31
  11. package/esm2022/lib/loop.mjs +28 -25
  12. package/esm2022/lib/pipes/hexify.mjs +67 -0
  13. package/esm2022/lib/portal.mjs +173 -193
  14. package/esm2022/lib/renderer/catalogue.mjs +2 -2
  15. package/esm2022/lib/renderer/constants.mjs +5 -6
  16. package/esm2022/lib/renderer/index.mjs +387 -234
  17. package/esm2022/lib/renderer/state.mjs +49 -0
  18. package/esm2022/lib/renderer/utils.mjs +107 -95
  19. package/esm2022/lib/roots.mjs +85 -61
  20. package/esm2022/lib/routed-scene.mjs +6 -7
  21. package/esm2022/lib/store.mjs +170 -194
  22. package/esm2022/lib/three-types.mjs +2 -2
  23. package/esm2022/lib/types.mjs +1 -1
  24. package/esm2022/lib/utils/apply-props.mjs +24 -28
  25. package/esm2022/lib/utils/attach.mjs +12 -9
  26. package/esm2022/lib/utils/before-render.mjs +12 -0
  27. package/esm2022/lib/utils/is.mjs +6 -5
  28. package/esm2022/lib/utils/make.mjs +19 -17
  29. package/esm2022/lib/utils/non-nullish.mjs +7 -0
  30. package/esm2022/lib/utils/object-events.mjs +92 -0
  31. package/esm2022/lib/utils/parameters.mjs +70 -0
  32. package/esm2022/lib/utils/resolve-ref.mjs +8 -0
  33. package/esm2022/lib/utils/signal-store.mjs +52 -58
  34. package/esm2022/lib/utils/update.mjs +8 -4
  35. package/esm2022/testing/angular-three-testing.mjs +5 -0
  36. package/esm2022/testing/index.mjs +3 -0
  37. package/esm2022/testing/lib/test-bed.mjs +130 -0
  38. package/esm2022/testing/lib/test-canvas.mjs +45 -0
  39. package/esm2022/testing/lib/utils/mock-canvas.mjs +37 -0
  40. package/esm2022/testing/lib/utils/web-gl-rendering-context.mjs +752 -0
  41. package/fesm2022/angular-three-testing.mjs +966 -0
  42. package/fesm2022/angular-three-testing.mjs.map +1 -0
  43. package/fesm2022/angular-three.mjs +2506 -2539
  44. package/fesm2022/angular-three.mjs.map +1 -1
  45. package/index.d.ts +14 -12
  46. package/lib/canvas.d.ts +366 -96
  47. package/lib/directives/args.d.ts +14 -7
  48. package/lib/directives/selection.d.ts +17 -0
  49. package/lib/dom/events.d.ts +2 -3
  50. package/lib/events.d.ts +4 -80
  51. package/lib/html.d.ts +17 -0
  52. package/lib/instance.d.ts +3 -35
  53. package/lib/loader.d.ts +18 -6
  54. package/lib/loop.d.ts +11 -59
  55. package/lib/pipes/hexify.d.ts +20 -0
  56. package/lib/portal.d.ts +54 -48
  57. package/lib/renderer/catalogue.d.ts +7 -3
  58. package/lib/renderer/constants.d.ts +4 -5
  59. package/lib/renderer/index.d.ts +64 -4
  60. package/lib/renderer/state.d.ts +24 -0
  61. package/lib/renderer/utils.d.ts +9 -27
  62. package/lib/roots.d.ts +9 -7
  63. package/lib/store.d.ts +13 -141
  64. package/lib/three-types.d.ts +500 -147
  65. package/lib/types.d.ts +291 -0
  66. package/lib/utils/apply-props.d.ts +1 -3
  67. package/lib/utils/attach.d.ts +3 -5
  68. package/lib/{before-render.d.ts → utils/before-render.d.ts} +1 -1
  69. package/lib/utils/is.d.ts +13 -14
  70. package/lib/utils/make.d.ts +7 -13
  71. package/lib/utils/non-nullish.d.ts +4 -0
  72. package/lib/utils/object-events.d.ts +34 -0
  73. package/lib/utils/parameters.d.ts +20 -0
  74. package/lib/utils/resolve-ref.d.ts +2 -0
  75. package/lib/utils/signal-store.d.ts +13 -4
  76. package/lib/utils/update.d.ts +1 -1
  77. package/metadata.json +1 -1
  78. package/package.json +40 -24
  79. package/plugin/generators.json +8 -30
  80. package/plugin/package.json +3 -22
  81. package/plugin/src/generators/add-soba/compat.js.map +1 -0
  82. package/plugin/src/generators/add-soba/generator.d.ts +3 -0
  83. package/plugin/src/generators/add-soba/generator.js +78 -0
  84. package/plugin/src/generators/add-soba/generator.js.map +1 -0
  85. package/plugin/src/generators/add-soba/schema.json +4 -0
  86. package/plugin/src/generators/init/compat.d.ts +1 -3
  87. package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +18 -7
  88. package/plugin/src/generators/init/generator.d.ts +5 -5
  89. package/plugin/src/generators/init/generator.js +100 -106
  90. package/plugin/src/generators/init/generator.js.map +1 -1
  91. package/plugin/src/generators/init/schema.json +8 -12
  92. package/plugin/src/generators/utils.js +4 -3
  93. package/plugin/src/generators/utils.js.map +1 -1
  94. package/plugin/src/generators/version.d.ts +17 -0
  95. package/plugin/src/generators/version.js +21 -0
  96. package/plugin/src/generators/version.js.map +1 -0
  97. package/plugin/src/index.d.ts +0 -3
  98. package/plugin/src/index.js +0 -9
  99. package/plugin/src/index.js.map +1 -1
  100. package/testing/README.md +3 -0
  101. package/testing/index.d.ts +2 -0
  102. package/testing/lib/test-bed.d.ts +38 -0
  103. package/testing/lib/test-canvas.d.ts +11 -0
  104. package/testing/lib/utils/mock-canvas.d.ts +5 -0
  105. package/testing/lib/utils/web-gl-rendering-context.d.ts +16 -0
  106. package/testing/package.json +3 -0
  107. package/web-types.json +1 -1
  108. package/esm2022/lib/before-render.mjs +0 -13
  109. package/esm2022/lib/directives/common.mjs +0 -41
  110. package/esm2022/lib/directives/key.mjs +0 -29
  111. package/esm2022/lib/directives/parent.mjs +0 -35
  112. package/esm2022/lib/ref.mjs +0 -48
  113. package/esm2022/lib/renderer/store.mjs +0 -408
  114. package/esm2022/lib/utils/safe-detect-changes.mjs +0 -17
  115. package/lib/directives/common.d.ts +0 -15
  116. package/lib/directives/key.d.ts +0 -10
  117. package/lib/directives/parent.d.ts +0 -11
  118. package/lib/ref.d.ts +0 -8
  119. package/lib/renderer/store.d.ts +0 -67
  120. package/lib/utils/safe-detect-changes.d.ts +0 -2
  121. package/plugin/migrations.json +0 -16
  122. package/plugin/src/generators/init/files/experience/experience.component.html__tmpl__ +0 -4
  123. package/plugin/src/generators/init-cannon/compat.js.map +0 -1
  124. package/plugin/src/generators/init-cannon/generator.d.ts +0 -2
  125. package/plugin/src/generators/init-cannon/generator.js +0 -23
  126. package/plugin/src/generators/init-cannon/generator.js.map +0 -1
  127. package/plugin/src/generators/init-cannon/schema.json +0 -6
  128. package/plugin/src/generators/init-postprocessing/compat.d.ts +0 -2
  129. package/plugin/src/generators/init-postprocessing/compat.js +0 -6
  130. package/plugin/src/generators/init-postprocessing/compat.js.map +0 -1
  131. package/plugin/src/generators/init-postprocessing/generator.d.ts +0 -2
  132. package/plugin/src/generators/init-postprocessing/generator.js +0 -21
  133. package/plugin/src/generators/init-postprocessing/generator.js.map +0 -1
  134. package/plugin/src/generators/init-postprocessing/schema.json +0 -6
  135. package/plugin/src/generators/init-soba/compat.d.ts +0 -2
  136. package/plugin/src/generators/init-soba/compat.js +0 -6
  137. package/plugin/src/generators/init-soba/compat.js.map +0 -1
  138. package/plugin/src/generators/init-soba/generator.d.ts +0 -2
  139. package/plugin/src/generators/init-soba/generator.js +0 -27
  140. package/plugin/src/generators/init-soba/generator.js.map +0 -1
  141. package/plugin/src/generators/init-soba/schema.json +0 -6
  142. package/plugin/src/generators/versions.d.ts +0 -13
  143. package/plugin/src/generators/versions.js +0 -17
  144. package/plugin/src/generators/versions.js.map +0 -1
  145. package/plugin/src/migrations/migrate-to-ngxtension/compat.d.ts +0 -2
  146. package/plugin/src/migrations/migrate-to-ngxtension/compat.js +0 -6
  147. package/plugin/src/migrations/migrate-to-ngxtension/compat.js.map +0 -1
  148. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.d.ts +0 -2
  149. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js +0 -41
  150. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js.map +0 -1
  151. /package/plugin/src/generators/{init-cannon → add-soba}/compat.d.ts +0 -0
  152. /package/plugin/src/generators/{init-cannon → add-soba}/compat.js +0 -0
@@ -0,0 +1,752 @@
1
+ const functions = [
2
+ 'activeTexture',
3
+ 'attachShader',
4
+ 'beginQuery',
5
+ 'beginTransformFeedback',
6
+ 'bindAttribLocation',
7
+ 'bindBufferBase',
8
+ 'bindBufferRange',
9
+ 'bindRenderbuffer',
10
+ 'bindSampler',
11
+ 'bindTransformFeedback',
12
+ 'bindVertexArray',
13
+ 'blendColor',
14
+ 'blendEquation',
15
+ 'blendEquationSeparate',
16
+ 'blendFunc',
17
+ 'blendFuncSeparate',
18
+ 'blitFramebuffer',
19
+ 'bufferData',
20
+ 'bufferSubData',
21
+ 'checkFramebufferStatus',
22
+ 'clientWaitSync',
23
+ 'compileShader',
24
+ 'compressedTexImage2D',
25
+ 'compressedTexImage3D',
26
+ 'compressedTexSubImage2D',
27
+ 'compressedTexSubImage3D',
28
+ 'copyBufferSubData',
29
+ 'copyTexImage2D',
30
+ 'copyTexSubImage2D',
31
+ 'copyTexSubImage3D',
32
+ 'createBuffer',
33
+ 'createFramebuffer',
34
+ 'createProgram',
35
+ 'createQuery',
36
+ 'createRenderbuffer',
37
+ 'createSampler',
38
+ 'createShader',
39
+ 'createTexture',
40
+ 'createTransformFeedback',
41
+ 'createVertexArray',
42
+ 'cullFace',
43
+ 'deleteBuffer',
44
+ 'deleteFramebuffer',
45
+ 'deleteProgram',
46
+ 'deleteQuery',
47
+ 'deleteRenderbuffer',
48
+ 'deleteSampler',
49
+ 'deleteShader',
50
+ 'deleteSync',
51
+ 'deleteTexture',
52
+ 'deleteTransformFeedback',
53
+ 'deleteVertexArray',
54
+ 'depthFunc',
55
+ 'depthMask',
56
+ 'depthRange',
57
+ 'detachShader',
58
+ 'disable',
59
+ 'drawArraysInstanced',
60
+ 'drawElementsInstanced',
61
+ 'drawRangeElements',
62
+ 'enable',
63
+ 'endQuery',
64
+ 'endTransformFeedback',
65
+ 'fenceSync',
66
+ 'finish',
67
+ 'flush',
68
+ 'framebufferRenderbuffer',
69
+ 'framebufferTexture2D',
70
+ 'framebufferTextureLayer',
71
+ 'frontFace',
72
+ 'generateMipmap',
73
+ 'getActiveAttrib',
74
+ 'getActiveUniform',
75
+ 'getActiveUniformBlockName',
76
+ 'getActiveUniformBlockParameter',
77
+ 'getActiveUniforms',
78
+ 'getAttachedShaders',
79
+ 'getAttribLocation',
80
+ 'getBufferParameter',
81
+ 'getBufferSubData',
82
+ 'getContextAttributes',
83
+ 'getError',
84
+ 'getExtension',
85
+ 'getFragDataLocation',
86
+ 'getFramebufferAttachmentParameter',
87
+ 'getIndexedParameter',
88
+ 'getInternalformatParameter',
89
+ 'getParameter',
90
+ 'getProgramInfoLog',
91
+ 'getProgramParameter',
92
+ 'getQuery',
93
+ 'getQueryParameter',
94
+ 'getRenderbufferParameter',
95
+ 'getSamplerParameter',
96
+ 'getShaderInfoLog',
97
+ 'getShaderParameter',
98
+ 'getShaderPrecisionFormat',
99
+ 'getShaderSource',
100
+ 'getSupportedExtensions',
101
+ 'getSyncParameter',
102
+ 'getTexParameter',
103
+ 'getTransformFeedbackVarying',
104
+ 'getUniform',
105
+ 'getUniformBlockIndex',
106
+ 'getUniformIndices',
107
+ 'getUniformLocation',
108
+ 'getVertexAttrib',
109
+ 'getVertexAttribOffset',
110
+ 'hint',
111
+ 'invalidateFramebuffer',
112
+ 'invalidateSubFramebuffer',
113
+ 'isBuffer',
114
+ 'isContextLost',
115
+ 'isEnabled',
116
+ 'isFramebuffer',
117
+ 'isProgram',
118
+ 'isQuery',
119
+ 'isRenderbuffer',
120
+ 'isSampler',
121
+ 'isShader',
122
+ 'isSync',
123
+ 'isTexture',
124
+ 'isTransformFeedback',
125
+ 'isVertexArray',
126
+ 'lineWidth',
127
+ 'linkProgram',
128
+ 'pauseTransformFeedback',
129
+ 'pixelStorei',
130
+ 'polygonOffset',
131
+ 'readBuffer',
132
+ 'readPixels',
133
+ 'renderbufferStorage',
134
+ 'renderbufferStorageMultisample',
135
+ 'resumeTransformFeedback',
136
+ 'sampleCoverage',
137
+ 'samplerParameterf',
138
+ 'samplerParameteri',
139
+ 'shaderSource',
140
+ 'stencilFunc',
141
+ 'stencilFuncSeparate',
142
+ 'stencilMask',
143
+ 'stencilMaskSeparate',
144
+ 'stencilOp',
145
+ 'stencilOpSeparate',
146
+ 'texImage2D',
147
+ 'texImage3D',
148
+ 'texParameterf',
149
+ 'texParameteri',
150
+ 'texStorage2D',
151
+ 'texStorage3D',
152
+ 'texSubImage2D',
153
+ 'texSubImage3D',
154
+ 'transformFeedbackVaryings',
155
+ 'uniform1ui',
156
+ 'uniform2ui',
157
+ 'uniform3ui',
158
+ 'uniform4ui',
159
+ 'uniformBlockBinding',
160
+ 'useProgram',
161
+ 'validateProgram',
162
+ 'vertexAttribDivisor',
163
+ 'vertexAttribI4i',
164
+ 'vertexAttribI4ui',
165
+ 'vertexAttribIPointer',
166
+ 'waitSync',
167
+ 'bindBuffer',
168
+ 'bindFramebuffer',
169
+ 'bindTexture',
170
+ 'clear',
171
+ 'clearBufferfi',
172
+ 'clearBufferfv',
173
+ 'clearBufferiv',
174
+ 'clearBufferuiv',
175
+ 'clearColor',
176
+ 'clearDepth',
177
+ 'clearStencil',
178
+ 'colorMask',
179
+ 'disableVertexAttribArray',
180
+ 'drawArrays',
181
+ 'drawBuffers',
182
+ 'drawElements',
183
+ 'enableVertexAttribArray',
184
+ 'scissor',
185
+ 'uniform1f',
186
+ 'uniform1fv',
187
+ 'uniform1i',
188
+ 'uniform1iv',
189
+ 'uniform1uiv',
190
+ 'uniform2f',
191
+ 'uniform2fv',
192
+ 'uniform2i',
193
+ 'uniform2iv',
194
+ 'uniform2uiv',
195
+ 'uniform3f',
196
+ 'uniform3fv',
197
+ 'uniform3i',
198
+ 'uniform3iv',
199
+ 'uniform3uiv',
200
+ 'uniform4f',
201
+ 'uniform4fv',
202
+ 'uniform4i',
203
+ 'uniform4iv',
204
+ 'uniform4uiv',
205
+ 'uniformMatrix2fv',
206
+ 'uniformMatrix2x3fv',
207
+ 'uniformMatrix2x4fv',
208
+ 'uniformMatrix3fv',
209
+ 'uniformMatrix3x2fv',
210
+ 'uniformMatrix3x4fv',
211
+ 'uniformMatrix4fv',
212
+ 'uniformMatrix4x2fv',
213
+ 'uniformMatrix4x3fv',
214
+ 'vertexAttrib1f',
215
+ 'vertexAttrib1fv',
216
+ 'vertexAttrib2f',
217
+ 'vertexAttrib2fv',
218
+ 'vertexAttrib3f',
219
+ 'vertexAttrib3fv',
220
+ 'vertexAttrib4f',
221
+ 'vertexAttrib4fv',
222
+ 'vertexAttribI4iv',
223
+ 'vertexAttribI4uiv',
224
+ 'vertexAttribPointer',
225
+ 'viewport',
226
+ 'makeXRCompatible',
227
+ ];
228
+ const enums = {
229
+ DEPTH_BUFFER_BIT: 256,
230
+ STENCIL_BUFFER_BIT: 1024,
231
+ COLOR_BUFFER_BIT: 16384,
232
+ POINTS: 0,
233
+ LINES: 1,
234
+ LINE_LOOP: 2,
235
+ LINE_STRIP: 3,
236
+ TRIANGLES: 4,
237
+ TRIANGLE_STRIP: 5,
238
+ TRIANGLE_FAN: 6,
239
+ ZERO: 0,
240
+ ONE: 1,
241
+ SRC_COLOR: 768,
242
+ ONE_MINUS_SRC_COLOR: 769,
243
+ SRC_ALPHA: 770,
244
+ ONE_MINUS_SRC_ALPHA: 771,
245
+ DST_ALPHA: 772,
246
+ ONE_MINUS_DST_ALPHA: 773,
247
+ DST_COLOR: 774,
248
+ ONE_MINUS_DST_COLOR: 775,
249
+ SRC_ALPHA_SATURATE: 776,
250
+ FUNC_ADD: 32774,
251
+ BLEND_EQUATION: 32777,
252
+ BLEND_EQUATION_RGB: 32777,
253
+ BLEND_EQUATION_ALPHA: 34877,
254
+ FUNC_SUBTRACT: 32778,
255
+ FUNC_REVERSE_SUBTRACT: 32779,
256
+ BLEND_DST_RGB: 32968,
257
+ BLEND_SRC_RGB: 32969,
258
+ BLEND_DST_ALPHA: 32970,
259
+ BLEND_SRC_ALPHA: 32971,
260
+ CONSTANT_COLOR: 32769,
261
+ ONE_MINUS_CONSTANT_COLOR: 32770,
262
+ CONSTANT_ALPHA: 32771,
263
+ ONE_MINUS_CONSTANT_ALPHA: 32772,
264
+ BLEND_COLOR: 32773,
265
+ ARRAY_BUFFER: 34962,
266
+ ELEMENT_ARRAY_BUFFER: 34963,
267
+ ARRAY_BUFFER_BINDING: 34964,
268
+ ELEMENT_ARRAY_BUFFER_BINDING: 34965,
269
+ STREAM_DRAW: 35040,
270
+ STATIC_DRAW: 35044,
271
+ DYNAMIC_DRAW: 35048,
272
+ BUFFER_SIZE: 34660,
273
+ BUFFER_USAGE: 34661,
274
+ CURRENT_VERTEX_ATTRIB: 34342,
275
+ FRONT: 1028,
276
+ BACK: 1029,
277
+ FRONT_AND_BACK: 1032,
278
+ TEXTURE_2D: 3553,
279
+ CULL_FACE: 2884,
280
+ BLEND: 3042,
281
+ DITHER: 3024,
282
+ STENCIL_TEST: 2960,
283
+ DEPTH_TEST: 2929,
284
+ SCISSOR_TEST: 3089,
285
+ POLYGON_OFFSET_FILL: 32823,
286
+ SAMPLE_ALPHA_TO_COVERAGE: 32926,
287
+ SAMPLE_COVERAGE: 32928,
288
+ NO_ERROR: 0,
289
+ INVALID_ENUM: 1280,
290
+ INVALID_VALUE: 1281,
291
+ INVALID_OPERATION: 1282,
292
+ OUT_OF_MEMORY: 1285,
293
+ CW: 2304,
294
+ CCW: 2305,
295
+ LINE_WIDTH: 2849,
296
+ ALIASED_POINT_SIZE_RANGE: 33901,
297
+ ALIASED_LINE_WIDTH_RANGE: 33902,
298
+ CULL_FACE_MODE: 2885,
299
+ FRONT_FACE: 2886,
300
+ DEPTH_RANGE: 2928,
301
+ DEPTH_WRITEMASK: 2930,
302
+ DEPTH_CLEAR_VALUE: 2931,
303
+ DEPTH_FUNC: 2932,
304
+ STENCIL_CLEAR_VALUE: 2961,
305
+ STENCIL_FUNC: 2962,
306
+ STENCIL_FAIL: 2964,
307
+ STENCIL_PASS_DEPTH_FAIL: 2965,
308
+ STENCIL_PASS_DEPTH_PASS: 2966,
309
+ STENCIL_REF: 2967,
310
+ STENCIL_VALUE_MASK: 2963,
311
+ STENCIL_WRITEMASK: 2968,
312
+ STENCIL_BACK_FUNC: 34816,
313
+ STENCIL_BACK_FAIL: 34817,
314
+ STENCIL_BACK_PASS_DEPTH_FAIL: 34818,
315
+ STENCIL_BACK_PASS_DEPTH_PASS: 34819,
316
+ STENCIL_BACK_REF: 36003,
317
+ STENCIL_BACK_VALUE_MASK: 36004,
318
+ STENCIL_BACK_WRITEMASK: 36005,
319
+ VIEWPORT: 2978,
320
+ SCISSOR_BOX: 3088,
321
+ COLOR_CLEAR_VALUE: 3106,
322
+ COLOR_WRITEMASK: 3107,
323
+ UNPACK_ALIGNMENT: 3317,
324
+ PACK_ALIGNMENT: 3333,
325
+ MAX_TEXTURE_SIZE: 3379,
326
+ MAX_VIEWPORT_DIMS: 3386,
327
+ SUBPIXEL_BITS: 3408,
328
+ RED_BITS: 3410,
329
+ GREEN_BITS: 3411,
330
+ BLUE_BITS: 3412,
331
+ ALPHA_BITS: 3413,
332
+ DEPTH_BITS: 3414,
333
+ STENCIL_BITS: 3415,
334
+ POLYGON_OFFSET_UNITS: 10752,
335
+ POLYGON_OFFSET_FACTOR: 32824,
336
+ TEXTURE_BINDING_2D: 32873,
337
+ SAMPLE_BUFFERS: 32936,
338
+ SAMPLES: 32937,
339
+ SAMPLE_COVERAGE_VALUE: 32938,
340
+ SAMPLE_COVERAGE_INVERT: 32939,
341
+ COMPRESSED_TEXTURE_FORMATS: 34467,
342
+ DONT_CARE: 4352,
343
+ FASTEST: 4353,
344
+ NICEST: 4354,
345
+ GENERATE_MIPMAP_HINT: 33170,
346
+ BYTE: 5120,
347
+ UNSIGNED_BYTE: 5121,
348
+ SHORT: 5122,
349
+ UNSIGNED_SHORT: 5123,
350
+ INT: 5124,
351
+ UNSIGNED_INT: 5125,
352
+ FLOAT: 5126,
353
+ DEPTH_COMPONENT: 6402,
354
+ ALPHA: 6406,
355
+ RGB: 6407,
356
+ RGBA: 6408,
357
+ LUMINANCE: 6409,
358
+ LUMINANCE_ALPHA: 6410,
359
+ UNSIGNED_SHORT_4_4_4_4: 32819,
360
+ UNSIGNED_SHORT_5_5_5_1: 32820,
361
+ UNSIGNED_SHORT_5_6_5: 33635,
362
+ FRAGMENT_SHADER: 35632,
363
+ VERTEX_SHADER: 35633,
364
+ MAX_VERTEX_ATTRIBS: 34921,
365
+ MAX_VERTEX_UNIFORM_VECTORS: 36347,
366
+ MAX_VARYING_VECTORS: 36348,
367
+ MAX_COMBINED_TEXTURE_IMAGE_UNITS: 35661,
368
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS: 35660,
369
+ MAX_TEXTURE_IMAGE_UNITS: 34930,
370
+ MAX_FRAGMENT_UNIFORM_VECTORS: 36349,
371
+ SHADER_TYPE: 35663,
372
+ DELETE_STATUS: 35712,
373
+ LINK_STATUS: 35714,
374
+ VALIDATE_STATUS: 35715,
375
+ ATTACHED_SHADERS: 35717,
376
+ ACTIVE_UNIFORMS: 35718,
377
+ ACTIVE_ATTRIBUTES: 35721,
378
+ SHADING_LANGUAGE_VERSION: 35724,
379
+ CURRENT_PROGRAM: 35725,
380
+ NEVER: 512,
381
+ LESS: 513,
382
+ EQUAL: 514,
383
+ LEQUAL: 515,
384
+ GREATER: 516,
385
+ NOTEQUAL: 517,
386
+ GEQUAL: 518,
387
+ ALWAYS: 519,
388
+ KEEP: 7680,
389
+ REPLACE: 7681,
390
+ INCR: 7682,
391
+ DECR: 7683,
392
+ INVERT: 5386,
393
+ INCR_WRAP: 34055,
394
+ DECR_WRAP: 34056,
395
+ VENDOR: 7936,
396
+ RENDERER: 7937,
397
+ VERSION: 7938,
398
+ NEAREST: 9728,
399
+ LINEAR: 9729,
400
+ NEAREST_MIPMAP_NEAREST: 9984,
401
+ LINEAR_MIPMAP_NEAREST: 9985,
402
+ NEAREST_MIPMAP_LINEAR: 9986,
403
+ LINEAR_MIPMAP_LINEAR: 9987,
404
+ TEXTURE_MAG_FILTER: 10240,
405
+ TEXTURE_MIN_FILTER: 10241,
406
+ TEXTURE_WRAP_S: 10242,
407
+ TEXTURE_WRAP_T: 10243,
408
+ TEXTURE: 5890,
409
+ TEXTURE_CUBE_MAP: 34067,
410
+ TEXTURE_BINDING_CUBE_MAP: 34068,
411
+ TEXTURE_CUBE_MAP_POSITIVE_X: 34069,
412
+ TEXTURE_CUBE_MAP_NEGATIVE_X: 34070,
413
+ TEXTURE_CUBE_MAP_POSITIVE_Y: 34071,
414
+ TEXTURE_CUBE_MAP_NEGATIVE_Y: 34072,
415
+ TEXTURE_CUBE_MAP_POSITIVE_Z: 34073,
416
+ TEXTURE_CUBE_MAP_NEGATIVE_Z: 34074,
417
+ MAX_CUBE_MAP_TEXTURE_SIZE: 34076,
418
+ TEXTURE0: 33984,
419
+ TEXTURE1: 33985,
420
+ TEXTURE2: 33986,
421
+ TEXTURE3: 33987,
422
+ TEXTURE4: 33988,
423
+ TEXTURE5: 33989,
424
+ TEXTURE6: 33990,
425
+ TEXTURE7: 33991,
426
+ TEXTURE8: 33992,
427
+ TEXTURE9: 33993,
428
+ TEXTURE10: 33994,
429
+ TEXTURE11: 33995,
430
+ TEXTURE12: 33996,
431
+ TEXTURE13: 33997,
432
+ TEXTURE14: 33998,
433
+ TEXTURE15: 33999,
434
+ TEXTURE16: 34000,
435
+ TEXTURE17: 34001,
436
+ TEXTURE18: 34002,
437
+ TEXTURE19: 34003,
438
+ TEXTURE20: 34004,
439
+ TEXTURE21: 34005,
440
+ TEXTURE22: 34006,
441
+ TEXTURE23: 34007,
442
+ TEXTURE24: 34008,
443
+ TEXTURE25: 34009,
444
+ TEXTURE26: 34010,
445
+ TEXTURE27: 34011,
446
+ TEXTURE28: 34012,
447
+ TEXTURE29: 34013,
448
+ TEXTURE30: 34014,
449
+ TEXTURE31: 34015,
450
+ ACTIVE_TEXTURE: 34016,
451
+ REPEAT: 10497,
452
+ CLAMP_TO_EDGE: 33071,
453
+ MIRRORED_REPEAT: 33648,
454
+ FLOAT_VEC2: 35664,
455
+ FLOAT_VEC3: 35665,
456
+ FLOAT_VEC4: 35666,
457
+ INT_VEC2: 35667,
458
+ INT_VEC3: 35668,
459
+ INT_VEC4: 35669,
460
+ BOOL: 35670,
461
+ BOOL_VEC2: 35671,
462
+ BOOL_VEC3: 35672,
463
+ BOOL_VEC4: 35673,
464
+ FLOAT_MAT2: 35674,
465
+ FLOAT_MAT3: 35675,
466
+ FLOAT_MAT4: 35676,
467
+ SAMPLER_2D: 35678,
468
+ SAMPLER_CUBE: 35680,
469
+ VERTEX_ATTRIB_ARRAY_ENABLED: 34338,
470
+ VERTEX_ATTRIB_ARRAY_SIZE: 34339,
471
+ VERTEX_ATTRIB_ARRAY_STRIDE: 34340,
472
+ VERTEX_ATTRIB_ARRAY_TYPE: 34341,
473
+ VERTEX_ATTRIB_ARRAY_NORMALIZED: 34922,
474
+ VERTEX_ATTRIB_ARRAY_POINTER: 34373,
475
+ VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 34975,
476
+ IMPLEMENTATION_COLOR_READ_TYPE: 35738,
477
+ IMPLEMENTATION_COLOR_READ_FORMAT: 35739,
478
+ COMPILE_STATUS: 35713,
479
+ LOW_FLOAT: 36336,
480
+ MEDIUM_FLOAT: 36337,
481
+ HIGH_FLOAT: 36338,
482
+ LOW_INT: 36339,
483
+ MEDIUM_INT: 36340,
484
+ HIGH_INT: 36341,
485
+ FRAMEBUFFER: 36160,
486
+ RENDERBUFFER: 36161,
487
+ RGBA4: 32854,
488
+ RGB5_A1: 32855,
489
+ RGB565: 36194,
490
+ DEPTH_COMPONENT16: 33189,
491
+ STENCIL_INDEX: 6401,
492
+ STENCIL_INDEX8: 36168,
493
+ DEPTH_STENCIL: 34041,
494
+ RENDERBUFFER_WIDTH: 36162,
495
+ RENDERBUFFER_HEIGHT: 36163,
496
+ RENDERBUFFER_INTERNAL_FORMAT: 36164,
497
+ RENDERBUFFER_RED_SIZE: 36176,
498
+ RENDERBUFFER_GREEN_SIZE: 36177,
499
+ RENDERBUFFER_BLUE_SIZE: 36178,
500
+ RENDERBUFFER_ALPHA_SIZE: 36179,
501
+ RENDERBUFFER_DEPTH_SIZE: 36180,
502
+ RENDERBUFFER_STENCIL_SIZE: 36181,
503
+ FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 36048,
504
+ FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 36049,
505
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 36050,
506
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 36051,
507
+ COLOR_ATTACHMENT0: 36064,
508
+ DEPTH_ATTACHMENT: 36096,
509
+ STENCIL_ATTACHMENT: 36128,
510
+ DEPTH_STENCIL_ATTACHMENT: 33306,
511
+ NONE: 0,
512
+ FRAMEBUFFER_COMPLETE: 36053,
513
+ FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 36054,
514
+ FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 36055,
515
+ FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 36057,
516
+ FRAMEBUFFER_UNSUPPORTED: 36061,
517
+ FRAMEBUFFER_BINDING: 36006,
518
+ RENDERBUFFER_BINDING: 36007,
519
+ MAX_RENDERBUFFER_SIZE: 34024,
520
+ INVALID_FRAMEBUFFER_OPERATION: 1286,
521
+ UNPACK_FLIP_Y_WEBGL: 37440,
522
+ UNPACK_PREMULTIPLY_ALPHA_WEBGL: 37441,
523
+ CONTEXT_LOST_WEBGL: 37442,
524
+ UNPACK_COLORSPACE_CONVERSION_WEBGL: 37443,
525
+ BROWSER_DEFAULT_WEBGL: 37444,
526
+ READ_BUFFER: 3074,
527
+ UNPACK_ROW_LENGTH: 3314,
528
+ UNPACK_SKIP_ROWS: 3315,
529
+ UNPACK_SKIP_PIXELS: 3316,
530
+ PACK_ROW_LENGTH: 3330,
531
+ PACK_SKIP_ROWS: 3331,
532
+ PACK_SKIP_PIXELS: 3332,
533
+ COLOR: 6144,
534
+ DEPTH: 6145,
535
+ STENCIL: 6146,
536
+ RED: 6403,
537
+ UNPACK_SKIP_IMAGES: 32877,
538
+ UNPACK_IMAGE_HEIGHT: 32878,
539
+ TEXTURE_WRAP_R: 32882,
540
+ MAX_ELEMENTS_VERTICES: 33000,
541
+ MAX_ELEMENTS_INDICES: 33001,
542
+ TEXTURE_MIN_LOD: 33082,
543
+ TEXTURE_MAX_LOD: 33083,
544
+ TEXTURE_BASE_LEVEL: 33084,
545
+ TEXTURE_MAX_LEVEL: 33085,
546
+ MIN: 32775,
547
+ MAX: 32776,
548
+ MAX_TEXTURE_LOD_BIAS: 34045,
549
+ TEXTURE_COMPARE_MODE: 34892,
550
+ TEXTURE_COMPARE_FUNC: 34893,
551
+ CURRENT_QUERY: 34917,
552
+ QUERY_RESULT: 34918,
553
+ QUERY_RESULT_AVAILABLE: 34919,
554
+ STREAM_READ: 35041,
555
+ STREAM_COPY: 35042,
556
+ STATIC_READ: 35045,
557
+ STATIC_COPY: 35046,
558
+ DYNAMIC_READ: 35049,
559
+ DYNAMIC_COPY: 35050,
560
+ MAX_DRAW_BUFFERS: 34852,
561
+ MAX_FRAGMENT_UNIFORM_COMPONENTS: 35657,
562
+ MAX_VERTEX_UNIFORM_COMPONENTS: 35658,
563
+ FRAGMENT_SHADER_DERIVATIVE_HINT: 35723,
564
+ PIXEL_PACK_BUFFER: 35051,
565
+ PIXEL_UNPACK_BUFFER: 35052,
566
+ PIXEL_PACK_BUFFER_BINDING: 35053,
567
+ PIXEL_UNPACK_BUFFER_BINDING: 35055,
568
+ SRGB: 35904,
569
+ COMPARE_REF_TO_TEXTURE: 34894,
570
+ VERTEX_ATTRIB_ARRAY_INTEGER: 35069,
571
+ MAX_ARRAY_TEXTURE_LAYERS: 35071,
572
+ MIN_PROGRAM_TEXEL_OFFSET: 35076,
573
+ MAX_PROGRAM_TEXEL_OFFSET: 35077,
574
+ MAX_VARYING_COMPONENTS: 35659,
575
+ TRANSFORM_FEEDBACK_BUFFER_MODE: 35967,
576
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 35968,
577
+ TRANSFORM_FEEDBACK_VARYINGS: 35971,
578
+ TRANSFORM_FEEDBACK_BUFFER_START: 35972,
579
+ TRANSFORM_FEEDBACK_BUFFER_SIZE: 35973,
580
+ TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 35976,
581
+ RASTERIZER_DISCARD: 35977,
582
+ MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 35978,
583
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 35979,
584
+ INTERLEAVED_ATTRIBS: 35980,
585
+ SEPARATE_ATTRIBS: 35981,
586
+ TRANSFORM_FEEDBACK_BUFFER: 35982,
587
+ TRANSFORM_FEEDBACK_BUFFER_BINDING: 35983,
588
+ RED_INTEGER: 36244,
589
+ RGB_INTEGER: 36248,
590
+ RGBA_INTEGER: 36249,
591
+ SAMPLER_CUBE_SHADOW: 36293,
592
+ INT_SAMPLER_CUBE: 36300,
593
+ UNSIGNED_INT_SAMPLER_CUBE: 36308,
594
+ FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 33296,
595
+ FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 33297,
596
+ FRAMEBUFFER_ATTACHMENT_RED_SIZE: 33298,
597
+ FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 33299,
598
+ FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 33300,
599
+ FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 33301,
600
+ FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 33302,
601
+ FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 33303,
602
+ FRAMEBUFFER_DEFAULT: 33304,
603
+ UNSIGNED_NORMALIZED: 35863,
604
+ DRAW_FRAMEBUFFER_BINDING: 36006,
605
+ READ_FRAMEBUFFER: 36008,
606
+ DRAW_FRAMEBUFFER: 36009,
607
+ READ_FRAMEBUFFER_BINDING: 36010,
608
+ RENDERBUFFER_SAMPLES: 36011,
609
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 36052,
610
+ MAX_COLOR_ATTACHMENTS: 36063,
611
+ FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 36182,
612
+ MAX_SAMPLES: 36183,
613
+ HALF_FLOAT: 5131,
614
+ RG: 33319,
615
+ RG_INTEGER: 33320,
616
+ VERTEX_ARRAY_BINDING: 34229,
617
+ SIGNED_NORMALIZED: 36764,
618
+ COPY_READ_BUFFER: 36662,
619
+ COPY_WRITE_BUFFER: 36663,
620
+ COPY_READ_BUFFER_BINDING: 36662,
621
+ COPY_WRITE_BUFFER_BINDING: 36663,
622
+ UNIFORM_BUFFER: 35345,
623
+ UNIFORM_BUFFER_BINDING: 35368,
624
+ UNIFORM_BUFFER_START: 35369,
625
+ UNIFORM_BUFFER_SIZE: 35370,
626
+ MAX_VERTEX_UNIFORM_BLOCKS: 35371,
627
+ MAX_FRAGMENT_UNIFORM_BLOCKS: 35373,
628
+ MAX_COMBINED_UNIFORM_BLOCKS: 35374,
629
+ MAX_UNIFORM_BUFFER_BINDINGS: 35375,
630
+ MAX_UNIFORM_BLOCK_SIZE: 35376,
631
+ MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 35377,
632
+ MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 35379,
633
+ UNIFORM_BUFFER_OFFSET_ALIGNMENT: 35380,
634
+ ACTIVE_UNIFORM_BLOCKS: 35382,
635
+ UNIFORM_TYPE: 35383,
636
+ UNIFORM_SIZE: 35384,
637
+ UNIFORM_BLOCK_INDEX: 35386,
638
+ UNIFORM_OFFSET: 35387,
639
+ UNIFORM_ARRAY_STRIDE: 35388,
640
+ UNIFORM_MATRIX_STRIDE: 35389,
641
+ UNIFORM_IS_ROW_MAJOR: 35390,
642
+ UNIFORM_BLOCK_BINDING: 35391,
643
+ UNIFORM_BLOCK_DATA_SIZE: 35392,
644
+ UNIFORM_BLOCK_ACTIVE_UNIFORMS: 35394,
645
+ UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 35395,
646
+ UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 35396,
647
+ UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 35398,
648
+ INVALID_INDEX: 4294967295,
649
+ MAX_VERTEX_OUTPUT_COMPONENTS: 37154,
650
+ MAX_FRAGMENT_INPUT_COMPONENTS: 37157,
651
+ MAX_SERVER_WAIT_TIMEOUT: 37137,
652
+ OBJECT_TYPE: 37138,
653
+ SYNC_CONDITION: 37139,
654
+ SYNC_STATUS: 37140,
655
+ SYNC_FLAGS: 37141,
656
+ SYNC_FENCE: 37142,
657
+ SYNC_GPU_COMMANDS_COMPLETE: 37143,
658
+ UNSIGNALED: 37144,
659
+ SIGNALED: 37145,
660
+ ALREADY_SIGNALED: 37146,
661
+ TIMEOUT_EXPIRED: 37147,
662
+ CONDITION_SATISFIED: 37148,
663
+ WAIT_FAILED: 37149,
664
+ SYNC_FLUSH_COMMANDS_BIT: 1,
665
+ VERTEX_ATTRIB_ARRAY_DIVISOR: 35070,
666
+ ANY_SAMPLES_PASSED: 35887,
667
+ ANY_SAMPLES_PASSED_CONSERVATIVE: 36202,
668
+ SAMPLER_BINDING: 35097,
669
+ TRANSFORM_FEEDBACK: 36386,
670
+ TRANSFORM_FEEDBACK_PAUSED: 36387,
671
+ TRANSFORM_FEEDBACK_ACTIVE: 36388,
672
+ TRANSFORM_FEEDBACK_BINDING: 36389,
673
+ TEXTURE_IMMUTABLE_FORMAT: 37167,
674
+ MAX_ELEMENT_INDEX: 36203,
675
+ TEXTURE_IMMUTABLE_LEVELS: 33503,
676
+ TIMEOUT_IGNORED: -1,
677
+ MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 37447,
678
+ };
679
+ const extensions = {
680
+ // ratified
681
+ OES_texture_float: {},
682
+ OES_texture_half_float: {},
683
+ WEBGL_lose_context: {
684
+ loseContext: () => { },
685
+ },
686
+ OES_standard_derivatives: {},
687
+ OES_vertex_array_object: {
688
+ createVertexArrayOES: () => { },
689
+ bindVertexArrayOES: () => { },
690
+ deleteVertexArrayOES: () => { },
691
+ },
692
+ WEBGL_debug_renderer_info: null,
693
+ WEBGL_debug_shaders: null,
694
+ WEBGL_compressed_texture_s3tc: null,
695
+ WEBGL_depth_texture: {},
696
+ OES_element_index_uint: {},
697
+ EXT_texture_filter_anisotropic: null,
698
+ EXT_frag_depth: {},
699
+ WEBGL_draw_buffers: {},
700
+ ANGLE_instanced_arrays: null,
701
+ OES_texture_float_linear: null,
702
+ OES_texture_half_float_linear: null,
703
+ EXT_blend_minmax: { MIN_EXT: 0, MAX_EXT: 0 },
704
+ EXT_shader_texture_lod: null,
705
+ // community
706
+ WEBGL_compressed_texture_atc: null,
707
+ WEBGL_compressed_texture_pvrtc: null,
708
+ EXT_color_buffer_half_float: null,
709
+ WEBGL_color_buffer_float: null,
710
+ EXT_sRGB: null,
711
+ WEBGL_compressed_texture_etc1: null,
712
+ };
713
+ export class WebGL2RenderingContext {
714
+ constructor(canvas) {
715
+ this.getShaderPrecisionFormat = () => {
716
+ return {
717
+ rangeMin: 127,
718
+ rangeMax: 127,
719
+ precision: 23,
720
+ };
721
+ };
722
+ this.GL_VERSION = 7938;
723
+ this.SCISSOR_BOX = 3088;
724
+ this.VIEWPORT = 2978;
725
+ this.getProgramInfoLog = () => '';
726
+ this.getShaderInfoLog = () => '';
727
+ // @ts-ignore
728
+ this.canvas = canvas;
729
+ // @ts-ignore
730
+ this.drawingBufferWidth = canvas.width;
731
+ // @ts-ignore
732
+ this.drawingBufferHeight = canvas.height;
733
+ for (const method of functions) {
734
+ this[method] ??= () => { };
735
+ }
736
+ Object.assign(this, enums);
737
+ }
738
+ // @ts-ignore
739
+ getParameter(paramId) {
740
+ switch (paramId) {
741
+ case this.GL_VERSION:
742
+ return ['WebGL2'];
743
+ case this.SCISSOR_BOX:
744
+ case this.VIEWPORT:
745
+ return [0, 0, 1, 1];
746
+ }
747
+ }
748
+ getExtension(ext) {
749
+ return extensions[ext];
750
+ }
751
+ }
752
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWdsLXJlbmRlcmluZy1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3Rlc3Rpbmcvc3JjL2xpYi91dGlscy93ZWItZ2wtcmVuZGVyaW5nLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxTQUFTLEdBQUc7SUFDakIsZUFBZTtJQUNmLGNBQWM7SUFDZCxZQUFZO0lBQ1osd0JBQXdCO0lBQ3hCLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osZUFBZTtJQUNmLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osZUFBZTtJQUNmLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6QixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsYUFBYTtJQUNiLG9CQUFvQjtJQUNwQixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZix5QkFBeUI7SUFDekIsbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixjQUFjO0lBQ2QsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixhQUFhO0lBQ2Isb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZixjQUFjO0lBQ2QsWUFBWTtJQUNaLGVBQWU7SUFDZix5QkFBeUI7SUFDekIsbUJBQW1CO0lBQ25CLFdBQVc7SUFDWCxXQUFXO0lBQ1gsWUFBWTtJQUNaLGNBQWM7SUFDZCxTQUFTO0lBQ1QscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFD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QixDQUFDO0NBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBmdW5jdGlvbnMgPSBbXG5cdCdhY3RpdmVUZXh0dXJlJyxcblx0J2F0dGFjaFNoYWRlcicsXG5cdCdiZWdpblF1ZXJ5Jyxcblx0J2JlZ2luVHJhbnNmb3JtRmVlZGJhY2snLFxuXHQnYmluZEF0dHJpYkxvY2F0aW9uJyxcblx0J2JpbmRCdWZmZXJCYXNlJyxcblx0J2JpbmRCdWZmZXJSYW5nZScsXG5cdCdiaW5kUmVuZGVyYnVmZmVyJyxcblx0J2JpbmRTYW1wbGVyJyxcblx0J2JpbmRUcmFuc2Zvcm1GZWVkYmFjaycsXG5cdCdiaW5kVmVydGV4QXJyYXknLFxuXHQnYmxlbmRDb2xvcicsXG5cdCdibGVuZEVxdWF0aW9uJyxcblx0J2JsZW5kRXF1YXRpb25TZXBhcmF0ZScsXG5cdCdibGVuZEZ1bmMnLFxuXHQnYmxlbmRGdW5jU2VwYXJhdGUnLFxuXHQnYmxpdEZyYW1lYnVmZmVyJyxcblx0J2J1ZmZlckRhdGEnLFxuXHQnYnVmZmVyU3ViRGF0YScsXG5cdCdjaGVja0ZyYW1lYnVmZmVyU3RhdHVzJyxcblx0J2NsaWVudFdhaXRTeW5jJyxcblx0J2NvbXBpbGVTaGFkZXInLFxuXHQnY29tcHJlc3NlZFRleEltYWdlMkQnLFxuXHQnY29tcHJlc3NlZFRleEltYWdlM0QnLFxuXHQnY29tcHJlc3NlZFRleFN1YkltYWdlMkQnLFxuXHQnY29tcHJlc3NlZFRleFN1YkltYWdlM0QnLFxuXHQnY29weUJ1ZmZlclN1YkRhdGEnLFxuXHQnY29weVRleEltYWdlMkQnLFxuXHQnY29weVRleFN1YkltYWdlMkQnLFxuXHQnY29weVRleFN1YkltYWdlM0QnLFxuXHQnY3JlYXRlQnVmZmVyJyxcblx0J2NyZWF0ZUZyYW1lYnVmZmVyJyxcblx0J2NyZWF0ZVByb2dyYW0nLFxuXHQnY3JlYXRlUXVlcnknLFxuXHQnY3JlYXRlUmVuZGVyYnVmZmVyJyxcblx0J2NyZWF0ZVNhbXBsZXInLFxuXHQnY3JlYXRlU2hhZGVyJyxcblx0J2NyZWF0ZVRleHR1cmUnLFxuXHQnY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2snLFxuXHQnY3JlYXRlVmVydGV4QXJyYXknLFxuXHQnY3VsbEZhY2UnLFxuXHQnZGVsZXRlQnVmZmVyJyxcblx0J2RlbGV0ZUZyYW1lYnVmZmVyJyxcblx0J2RlbGV0ZVByb2dyYW0nLFxuXHQnZGVsZXRlUXVlcnknLFxuXHQnZGVsZXRlUmVuZGVyYnVmZmVyJyxcblx0J2RlbGV0ZVNhbXBsZXInLFxuXHQnZGVsZXRlU2hhZGVyJyxcblx0J2RlbGV0ZVN5bmMnLFxuXHQnZGVsZXRlVGV4dHVyZScsXG5cdCdkZWxldGVUcmFuc2Zvcm1GZWVkYmFjaycsXG5cdCdkZWxldGVWZXJ0ZXhBcnJheScsXG5cdCdkZXB0aEZ1bmMnLFxuXHQnZGVwdGhNYXNrJyxcblx0J2RlcHRoUmFuZ2UnLFxuXHQnZGV0YWNoU2hhZGVyJyxcblx0J2Rpc2FibGUnLFxuXHQnZHJhd0FycmF5c0luc3RhbmNlZCcsXG5cdCdkcmF3RWxlbWVudHNJbnN0YW5jZWQnLFxuXHQnZHJhd1JhbmdlRWxlbWVudHMnLFxuXHQnZW5hYmxlJyxcblx0J2VuZFF1ZXJ5Jyxcblx0J2VuZFRyYW5zZm9ybUZlZWRiYWNrJyxcblx0J2ZlbmNlU3luYycsXG5cdCdmaW5pc2gnLFxuXHQnZmx1c2gnLFxuXHQnZnJhbWVidWZmZXJSZW5kZXJidWZmZXInLFxuXHQnZnJhbWVidWZmZXJUZXh0dXJlMkQnLFxuXHQnZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXInLFxuXHQnZnJvbnRGYWNlJyxcblx0J2dlbmVyYXRlTWlwbWFwJyxcblx0J2dldEFjdGl2ZUF0dHJpYicsXG5cdCdnZXRBY3RpdmVVbmlmb3JtJyxcblx0J2dldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUnLFxuXHQnZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyJyxcblx0J2dldEFjdGl2ZVVuaWZvcm1zJyxcblx0J2dldEF0dGFjaGVkU2hhZGVycycsXG5cdCdnZXRBdHRyaWJMb2NhdGlvbicsXG5cdCdnZXRCdWZmZXJQYXJhbWV0ZXInLFxuXHQnZ2V0QnVmZmVyU3ViRGF0YScsXG5cdCdnZXRDb250ZXh0QXR0cmlidXRlcycsXG5cdCdnZXRFcnJvcicsXG5cdCdnZXRFeHRlbnNpb24nLFxuXHQnZ2V0RnJhZ0RhdGFMb2NhdGlvbicsXG5cdCdnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXInLFxuXHQnZ2V0SW5kZXhlZFBhcmFtZXRlcicsXG5cdCdnZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcicsXG5cdCdnZXRQYXJhbWV0ZXInLFxuXHQnZ2V0UHJvZ3JhbUluZm9Mb2cnLFxuXHQnZ2V0UHJvZ3JhbVBhcmFtZXRlcicsXG5cdCdnZXRRdWVyeScsXG5cdCdnZXRRdWVyeVBhcmFtZXRlcicsXG5cdCdnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXInLFxuXHQnZ2V0U2FtcGxlclBhcmFtZXRlcicsXG5cdCdnZXRTaGFkZXJJbmZvTG9nJyxcblx0J2dldFNoYWRlclBhcmFtZXRlcicsXG5cdCdnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQnLFxuXHQnZ2V0U2hhZGVyU291cmNlJyxcblx0J2dldFN1cHBvcnRlZEV4dGVuc2lvbnMnLFxuXHQnZ2V0U3luY1BhcmFtZXRlcicsXG5cdCdnZXRUZXhQYXJhbWV0ZXInLFxuXHQnZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nJyxcblx0J2dldFVuaWZvcm0nLFxuXHQnZ2V0VW5pZm9ybUJsb2NrSW5kZXgnLFxuXHQnZ2V0VW5pZm9ybUluZGljZXMnLFxuXHQnZ2V0VW5pZm9ybUxvY2F0aW9uJyxcblx0J2dldFZlcnRleEF0dHJpYicsXG5cdCdnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQnLFxuXHQnaGludCcsXG5cdCdpbnZhbGlkYXRlRnJhbWVidWZmZXInLFxuXHQnaW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyJyxcblx0J2lzQnVmZmVyJyxcblx0J2lzQ29udGV4dExvc3QnLFxuXHQnaXNFbmFibGVkJyxcblx0J2lzRnJhbWVidWZmZXInLFxuXHQnaXNQcm9ncmFtJyxcblx0J2lzUXVlcnknLFxuXHQnaXNSZW5kZXJidWZmZXInLFxuXHQnaXNTYW1wbGVyJyxcblx0J2lzU2hhZGVyJyxcblx0J2lzU3luYycsXG5cdCdpc1RleHR1cmUnLFxuXHQnaXNUcmFuc2Zvcm1GZWVkYmFjaycsXG5cdCdpc1ZlcnRleEFycmF5Jyxcblx0J2xpbmVXaWR0aCcsXG5cdCdsaW5rUHJvZ3JhbScsXG5cdCdwYXVzZVRyYW5zZm9ybUZlZWRiYWNrJyxcblx0J3BpeGVsU3RvcmVpJyxcblx0J3BvbHlnb25PZmZzZXQnLFxuXHQncmVhZEJ1ZmZlcicsXG5cdCdyZWFkUGl4ZWxzJyxcblx0J3JlbmRlcmJ1ZmZlclN0b3JhZ2UnLFxuXHQncmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlJyxcblx0J3Jlc3VtZVRyYW5zZm9ybUZlZWRiYWNrJyxcblx0J3NhbXBsZUNvdmVyYWdlJyxcblx0J3NhbXBsZXJQYXJhbWV0ZXJmJyxcblx0J3NhbXBsZXJQYXJhbWV0ZXJpJyxcblx0J3NoYWRlclNvdXJjZScsXG5cdCdzdGVuY2lsRnVuYycsXG5cdCdzdGVuY2lsRnVuY1NlcGFyYXRlJyxcblx0J3N0ZW5jaWxNYXNrJyxcblx0J3N0ZW5jaWxNYXNrU2VwYXJhdGUnLFxuXHQnc3RlbmNpbE9wJyxcblx0J3N0ZW5jaWxPcFNlcGFyYXRlJyxcblx0J3RleEltYWdlMkQnLFxuXHQndGV4SW1hZ2UzRCcsXG5cdCd0ZXhQYXJhbWV0ZXJmJyxcblx0J3RleFBhcmFtZXRlcmknLFxuXHQndGV4U3RvcmFnZTJEJyxcblx0J3RleFN0b3JhZ2UzRCcsXG5cdCd0ZXhTdWJJbWFnZTJEJyxcblx0J3RleFN1YkltYWdlM0QnLFxuXHQndHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncycsXG5cdCd1bmlmb3JtMXVpJyxcblx0J3VuaWZvcm0ydWknLFxuXHQndW5pZm9ybTN1aScsXG5cdCd1bmlmb3JtNHVpJyxcblx0J3VuaWZvcm1CbG9ja0JpbmRpbmcnLFxuXHQndXNlUHJvZ3JhbScsXG5cdCd2YWxpZGF0ZVByb2dyYW0nLFxuXHQndmVydGV4QXR0cmliRGl2aXNvcicsXG5cdCd2ZXJ0ZXhBdHRyaWJJNGknLFxuXHQndmVydGV4QXR0cmliSTR1aScsXG5cdCd2ZXJ0ZXhBdHRyaWJJUG9pbnRlcicsXG5cdCd3YWl0U3luYycsXG5cdCdiaW5kQnVmZmVyJyxcblx0J2JpbmRGcmFtZWJ1ZmZlcicsXG5cdCdiaW5kVGV4dHVyZScsXG5cdCdjbGVhcicsXG5cdCdjbGVhckJ1ZmZlcmZpJyxcblx0J2NsZWFyQnVmZmVyZnYnLFxuXHQnY2xlYXJCdWZmZXJpdicsXG5cdCdjbGVhckJ1ZmZlcnVpdicsXG5cdCdjbGVhckNvbG9yJyxcblx0J2NsZWFyRGVwdGgnLFxuXHQnY2xlYXJTdGVuY2lsJyxcblx0J2NvbG9yTWFzaycsXG5cdCdkaXNhYmxlVmVydGV4QXR0cmliQXJyYXknLFxuXHQnZHJhd0FycmF5cycsXG5cdCdkcmF3QnVmZmVycycsXG5cdCdkcmF3RWxlbWVudHMnLFxuXHQnZW5hYmxlVmVydGV4QXR0cmliQXJyYXknLFxuXHQnc2Npc3NvcicsXG5cdCd1bmlmb3JtMWYnLFxuXHQndW5pZm9ybTFmdicsXG5cdCd1bmlmb3JtMWknLFxuXHQndW5pZm9ybTFpdicsXG5cdCd1bmlmb3JtMXVpdicsXG5cdCd1bmlmb3JtMmYnLFxuXHQndW5pZm9ybTJmdicsXG5cdCd1bmlmb3JtMmknLFxuXHQndW5pZm9ybTJpdicsXG5cdCd1bmlmb3JtMnVpdicsXG5cdCd1bmlmb3JtM2YnLFxuXHQndW5pZm9ybTNmdicsXG5cdCd1bmlmb3JtM2knLFxuXHQndW5pZm9ybTNpdicsXG5cdCd1bmlmb3JtM3VpdicsXG5cdCd1bmlmb3JtNGYnLFxuXHQndW5pZm9ybTRmdicsXG5cdCd1bmlmb3JtNGknLFxuXHQndW5pZm9ybTRpdicsXG5cdCd1bmlmb3JtNHVpdicsXG5cdCd1bmlmb3JtTWF0cml4MmZ2Jyxcblx0J3VuaWZvcm1NYXRyaXgyeDNmdicsXG5cdCd1bmlmb3JtTWF0cml4Mng0ZnYnLFxuXHQndW5pZm9ybU1hdHJpeDNmdicsXG5cdCd1bmlmb3JtTWF0cml4M3gyZnYnLFxuXHQndW5pZm9ybU1hdHJpeDN4NGZ2Jyxcblx0J3VuaWZvcm1NYXRyaXg0ZnYnLFxuXHQndW5pZm9ybU1hdHJpeDR4MmZ2Jyxcblx0J3VuaWZvcm1NYXRyaXg0eDNmdicsXG5cdCd2ZXJ0ZXhBdHRyaWIxZicsXG5cdCd2ZXJ0ZXhBdHRyaWIxZnYnLFxuXHQndmVydGV4QXR0cmliMmYnLFxuXHQndmVydGV4QXR0cmliMmZ2Jyxcblx0J3ZlcnRleEF0dHJpYjNmJyxcblx0J3ZlcnRleEF0dHJpYjNmdicsXG5cdCd2ZXJ0ZXhBdHRyaWI0ZicsXG5cdCd2ZXJ0ZXhBdHRyaWI0ZnYnLFxuXHQndmVydGV4QXR0cmliSTRpdicsXG5cdCd2ZXJ0ZXhBdHRyaWJJNHVpdicsXG5cdCd2ZXJ0ZXhBdHRyaWJQb2ludGVyJyxcblx0J3ZpZXdwb3J0Jyxcblx0J21ha2VYUkNvbXBhdGlibGUnLFxuXTtcblxuY29uc3QgZW51bXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG5cdERFUFRIX0JVRkZFUl9CSVQ6IDI1Nixcblx0U1RFTkNJTF9CVUZGRVJfQklUOiAxMDI0LFxuXHRDT0xPUl9CVUZGRVJfQklUOiAxNjM4NCxcblx0UE9JTlRTOiAwLFxuXHRMSU5FUzogMSxcblx0TElORV9MT09QOiAyLFxuXHRMSU5FX1NUUklQOiAzLFxuXHRUUklBTkdMRVM6IDQsXG5cdFRSSUFOR0xFX1NUUklQOiA1LFxuXHRUUklBTkdMRV9GQU46IDYsXG5cdFpFUk86IDAsXG5cdE9ORTogMSxcblx0U1JDX0NPTE9SOiA3NjgsXG5cdE9ORV9NSU5VU19TUkNfQ09MT1I6IDc2OSxcblx0U1JDX0FMUEhBOiA3NzAsXG5cdE9ORV9NSU5VU19TUkNfQUxQSEE6IDc3MSxcblx0RFNUX0FMUEhBOiA3NzIsXG5cdE9ORV9NSU5VU19EU1RfQUxQSEE6IDc3Myxcblx0RFNUX0NPTE9SOiA3NzQsXG5cdE9ORV9NSU5VU19EU1RfQ09MT1I6IDc3NSxcblx0U1JDX0FMUEhBX1NBVFVSQVRFOiA3NzYsXG5cdEZVTkNfQUREOiAzMjc3NCxcblx0QkxFTkRfRVFVQVRJT046IDMyNzc3LFxuXHRCTEVORF9FUVVBVElPTl9SR0I6IDMyNzc3LFxuXHRCTEVORF9FUVVBVElPTl9BTFBIQTogMzQ4NzcsXG5cdEZVTkNfU1VCVFJBQ1Q6IDMyNzc4LFxuXHRGVU5DX1JFVkVSU0VfU1VCVFJBQ1Q6IDMyNzc5LFxuXHRCTEVORF9EU1RfUkdCOiAzMjk2OCxcblx0QkxFTkRfU1JDX1JHQjogMzI5NjksXG5cdEJMRU5EX0RTVF9BTFBIQTogMzI5NzAsXG5cdEJMRU5EX1NSQ19BTFBIQTogMzI5NzEsXG5cdENPTlNUQU5UX0NPTE9SOiAzMjc2OSxcblx0T05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOiAzMjc3MCxcblx0Q09OU1RBTlRfQUxQSEE6IDMyNzcxLFxuXHRPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6IDMyNzcyLFxuXHRCTEVORF9DT0xPUjogMzI3NzMsXG5cdEFSUkFZX0JVRkZFUjogMzQ5NjIsXG5cdEVMRU1FTlRfQVJSQVlfQlVGRkVSOiAzNDk2Myxcblx0QVJSQVlfQlVGRkVSX0JJTkRJTkc6IDM0OTY0LFxuXHRFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiAzNDk2NSxcblx0U1RSRUFNX0RSQVc6IDM1MDQwLFxuXHRTVEFUSUNfRFJBVzogMzUwNDQsXG5cdERZTkFNSUNfRFJBVzogMzUwNDgsXG5cdEJVRkZFUl9TSVpFOiAzNDY2MCxcblx0QlVGRkVSX1VTQUdFOiAzNDY2MSxcblx0Q1VSUkVOVF9WRVJURVhfQVRUUklCOiAzNDM0Mixcblx0RlJPTlQ6IDEwMjgsXG5cdEJBQ0s6IDEwMjksXG5cdEZST05UX0FORF9CQUNLOiAxMDMyLFxuXHRURVhUVVJFXzJEOiAzNTUzLFxuXHRDVUxMX0ZBQ0U6IDI4ODQsXG5cdEJMRU5EOiAzMDQyLFxuXHRESVRIRVI6IDMwMjQsXG5cdFNURU5DSUxfVEVTVDogMjk2MCxcblx0REVQVEhfVEVTVDogMjkyOSxcblx0U0NJU1NPUl9URVNUOiAzMDg5LFxuXHRQT0xZR09OX09GRlNFVF9GSUxMOiAzMjgyMyxcblx0U0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiAzMjkyNixcblx0U0FNUExFX0NPVkVSQUdFOiAzMjkyOCxcblx0Tk9fRVJST1I6IDAsXG5cdElOVkFMSURfRU5VTTogMTI4MCxcblx0SU5WQUxJRF9WQUxVRTogMTI4MSxcblx0SU5WQUxJRF9PUEVSQVRJT046IDEyODIsXG5cdE9VVF9PRl9NRU1PUlk6IDEyODUsXG5cdENXOiAyMzA0LFxuXHRDQ1c6IDIzMDUsXG5cdExJTkVfV0lEVEg6IDI4NDksXG5cdEFMSUFTRURfUE9JTlRfU0laRV9SQU5HRTogMzM5MDEsXG5cdEFMSUFTRURfTElORV9XSURUSF9SQU5HRTogMzM5MDIsXG5cdENVTExfRkFDRV9NT0RFOiAyODg1LFxuXHRGUk9OVF9GQUNFOiAyODg2LFxuXHRERVBUSF9SQU5HRTogMjkyOCxcblx0REVQVEhfV1JJVEVNQVNLOiAyOTMwLFxuXHRERVBUSF9DTEVBUl9WQUxVRTogMjkzMSxcblx0REVQVEhfRlVOQzogMjkzMixcblx0U1RFTkNJTF9DTEVBUl9WQUxVRTogMjk2MSxcblx0U1RFTkNJTF9GVU5DOiAyOTYyLFxuXHRTVEVOQ0lMX0ZBSUw6IDI5NjQsXG5cdFNURU5DSUxfUEFTU19ERVBUSF9GQUlMOiAyOTY1LFxuXHRTVEVOQ0lMX1BBU1NfREVQVEhfUEFTUzogMjk2Nixcblx0U1RFTkNJTF9SRUY6IDI5NjcsXG5cdFNURU5DSUxfVkFMVUVfTUFTSzogMjk2Myxcblx0U1RFTkNJTF9XUklURU1BU0s6IDI5NjgsXG5cdFNURU5DSUxfQkFDS19GVU5DOiAzNDgxNixcblx0U1RFTkNJTF9CQUNLX0ZBSUw6IDM0ODE3LFxuXHRTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMOiAzNDgxOCxcblx0U1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUzogMzQ4MTksXG5cdFNURU5DSUxfQkFDS19SRUY6IDM2MDAzLFxuXHRTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzogMzYwMDQsXG5cdFNURU5DSUxfQkFDS19XUklURU1BU0s6IDM2MDA1LFxuXHRWSUVXUE9SVDogMjk3OCxcblx0U0NJU1NPUl9CT1g6IDMwODgsXG5cdENPTE9SX0NMRUFSX1ZBTFVFOiAzMTA2LFxuXHRDT0xPUl9XUklURU1BU0s6IDMxMDcsXG5cdFVOUEFDS19BTElHTk1FTlQ6IDMzMTcsXG5cdFBBQ0tfQUxJR05NRU5UOiAzMzMzLFxuXHRNQVhfVEVYVFVSRV9TSVpFOiAzMzc5LFxuXHRNQVhfVklFV1BPUlRfRElNUzogMzM4Nixcblx0U1VCUElYRUxfQklUUzogMzQwOCxcblx0UkVEX0JJVFM6IDM0MTAsXG5cdEdSRUVOX0JJVFM6IDM0MTEsXG5cdEJMVUVfQklUUzogMzQxMixcblx0QUxQSEFfQklUUzogMzQxMyxcblx0REVQVEhfQklUUzogMzQxNCxcblx0U1RFTkNJTF9CSVRTOiAzNDE1LFxuXHRQT0xZR09OX09GRlNFVF9VTklUUzogMTA3NTIsXG5cdFBPTFlHT05fT0ZGU0VUX0ZBQ1RPUjogMzI4MjQsXG5cdFRFWFRVUkVfQklORElOR18yRDogMzI4NzMsXG5cdFNBTVBMRV9CVUZGRVJTOiAzMjkzNixcblx0U0FNUExFUzogMzI5MzcsXG5cdFNBTVBMRV9DT1ZFUkFHRV9WQUxVRTogMzI5MzgsXG5cdFNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6IDMyOTM5LFxuXHRDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzogMzQ0NjcsXG5cdERPTlRfQ0FSRTogNDM1Mixcblx0RkFTVEVTVDogNDM1Myxcblx0TklDRVNUOiA0MzU0LFxuXHRHRU5FUkFURV9NSVBNQVBfSElOVDogMzMxNzAsXG5cdEJZVEU6IDUxMjAsXG5cdFVOU0lHTkVEX0JZVEU6IDUxMjEsXG5cdFNIT1JUOiA1MTIyLFxuXHRVTlNJR05FRF9TSE9SVDogNTEyMyxcblx0SU5UOiA1MTI0LFxuXHRVTlNJR05FRF9JTlQ6IDUxMjUsXG5cdEZMT0FUOiA1MTI2LFxuXHRERVBUSF9DT01QT05FTlQ6IDY0MDIsXG5cdEFMUEhBOiA2NDA2LFxuXHRSR0I6IDY0MDcsXG5cdFJHQkE6IDY0MDgsXG5cdExVTUlOQU5DRTogNjQwOSxcblx0TFVNSU5BTkNFX0FMUEhBOiA2NDEwLFxuXHRVTlNJR05FRF9TSE9SVF80XzRfNF80OiAzMjgxOSxcblx0VU5TSUdORURfU0hPUlRfNV81XzVfMTogMzI4MjAsXG5cdFVOU0lHTkVEX1NIT1JUXzVfNl81OiAzMzYzNSxcblx0RlJBR01FTlRfU0hBREVSOiAzNTYzMixcblx0VkVSVEVYX1NIQURFUjogMzU2MzMsXG5cdE1BWF9WRVJURVhfQVRUUklCUzogMzQ5MjEsXG5cdE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOiAzNjM0Nyxcblx0TUFYX1ZBUllJTkdfVkVDVE9SUzogMzYzNDgsXG5cdE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOiAzNTY2MSxcblx0TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOiAzNTY2MCxcblx0TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM6IDM0OTMwLFxuXHRNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOiAzNjM0OSxcblx0U0hBREVSX1RZUEU6IDM1NjYzLFxuXHRERUxFVEVfU1RBVFVTOiAzNTcxMixcblx0TElOS19TVEFUVVM6IDM1NzE0LFxuXHRWQUxJREFURV9TVEFUVVM6IDM1NzE1LFxuXHRBVFRBQ0hFRF9TSEFERVJTOiAzNTcxNyxcblx0QUNUSVZFX1VOSUZPUk1TOiAzNTcxOCxcblx0QUNUSVZFX0FUVFJJQlVURVM6IDM1NzIxLFxuXHRTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT046IDM1NzI0LFxuXHRDVVJSRU5UX1BST0dSQU06IDM1NzI1LFxuXHRORVZFUjogNTEyLFxuXHRMRVNTOiA1MTMsXG5cdEVRVUFMOiA1MTQsXG5cdExFUVVBTDogNTE1LFxuXHRHUkVBVEVSOiA1MTYsXG5cdE5PVEVRVUFMOiA1MTcsXG5cdEdFUVVBTDogNTE4LFxuXHRBTFdBWVM6IDUxOSxcblx0S0VFUDogNzY4MCxcblx0UkVQTEFDRTogNzY4MSxcblx0SU5DUjogNzY4Mixcblx0REVDUjogNzY4Myxcblx0SU5WRVJUOiA1Mzg2LFxuXHRJTkNSX1dSQVA6IDM0MDU1LFxuXHRERUNSX1dSQVA6IDM0MDU2LFxuXHRWRU5ET1I6IDc5MzYsXG5cdFJFTkRFUkVSOiA3OTM3LFxuXHRWRVJTSU9OOiA3OTM4LFxuXHRORUFSRVNUOiA5NzI4LFxuXHRMSU5FQVI6IDk3MjksXG5cdE5FQVJFU1RfTUlQTUFQX05FQVJFU1Q6IDk5ODQsXG5cdExJTkVBUl9NSVBNQVBfTkVBUkVTVDogOTk4NSxcblx0TkVBUkVTVF9NSVBNQVBfTElORUFSOiA5OTg2LFxuXHRMSU5FQVJfTUlQTUFQX0xJTkVBUjogOTk4Nyxcblx0VEVYVFVSRV9NQUdfRklMVEVSOiAxMDI0MCxcblx0VEVYVFVSRV9NSU5fRklMVEVSOiAxMDI0MSxcblx0VEVYVFVSRV9XUkFQX1M6IDEwMjQyLFxuXHRURVhUVVJFX1dSQVBfVDogMTAyNDMsXG5cdFRFWFRVUkU6IDU4OTAsXG5cdFRFWFRVUkVfQ1VCRV9NQVA6IDM0MDY3LFxuXHRURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6IDM0MDY4LFxuXHRURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6IDM0MDY5LFxuXHRURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6IDM0MDcwLFxuXHRURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6IDM0MDcxLFxuXHRURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6IDM0MDcyLFxuXHRURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6IDM0MDczLFxuXHRURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6IDM0MDc0LFxuXHRNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOiAzNDA3Nixcblx0VEVYVFVSRTA6IDMzOTg0LFxuXHRURVhUVVJFMTogMzM5ODUsXG5cdFRFWFRVUkUyOiAzMzk4Nixcblx0VEVYVFVSRTM6IDMzOTg3LFxuXHRURVhUVVJFNDogMzM5ODgsXG5cdFRFWFRVUkU1OiAzMzk4OSxcblx0VEVYVFVSRTY6IDMzOTkwLFxuXHRURVhUVVJFNzogMzM5OTEsXG5cdFRFWFRVUkU4OiAzMzk5Mixcblx0VEVYVFVSRTk6IDMzOTkzLFxuXHRURVhUVVJFMTA6IDMzOTk0LFxuXHRURVhUVVJFMTE6IDMzOTk1LFxuXHRURVhUVVJFMTI6IDMzOTk2LFxuXHRURVhUVVJFMTM6IDMzOTk3LFxuXHRURVhUVVJFMTQ6IDMzOTk4LFxuXHRURVhUVVJFMTU6IDMzOTk5LFxuXHRURVhUVVJFMTY6IDM0MDAwLFxuXHRURVhUVVJFMTc6IDM0MDAxLFxuXHRURVhUVVJFMTg6IDM0MDAyLFxuXHRURVhUVVJFMTk6IDM0MDAzLFxuXHRURVhUVVJFMjA6IDM0MDA0LFxuXHRURVhUVVJFMjE6IDM0MDA1LFxuXHRURVhUVVJFMjI6IDM0MDA2LFxuXHRURVhUVVJFMjM6IDM0MDA3LFxuXHRURVhUVVJFMjQ6IDM0MDA4LFxuXHRURVhUVVJFMjU6IDM0MDA5LFxuXHRURVhUVVJFMjY6IDM0MDEwLFxuXHRURVhUVVJFMjc6IDM0MDExLFxuXHRURVhUVVJFMjg6IDM0MDEyLFxuXHRURVhUVVJFMjk6IDM0MDEzLFxuXHRURVhUVVJFMzA6IDM0MDE0LFxuXHRURVhUVVJFMzE6IDM0MDE1LFxuXHRBQ1RJVkVfVEVYVFVSRTogMzQwMTYsXG5cdFJFUEVBVDogMTA0OTcsXG5cdENMQU1QX1RPX0VER0U6IDMzMDcxLFxuXHRNSVJST1JFRF9SRVBFQVQ6IDMzNjQ4LFxuXHRGTE9BVF9WRUMyOiAzNTY2NCxcblx0RkxPQVRfVkVDMzogMzU2NjUsXG5cdEZMT0FUX1ZFQzQ6IDM1NjY2LFxuXHRJTlRfVkVDMjogMzU2NjcsXG5cdElOVF9WRUMzOiAzNTY2OCxcblx0SU5UX1ZFQzQ6IDM1NjY5LFxuXHRCT09MOiAzNTY3MCxcblx0Qk9PTF9WRUMyOiAzNTY3MSxcblx0Qk9PTF9WRUMzOiAzNTY3Mixcblx0Qk9PTF9WRUM0OiAzNTY3Myxcblx0RkxPQVRfTUFUMjogMzU2NzQsXG5cdEZMT0FUX01BVDM6IDM1Njc1LFxuXHRGTE9BVF9NQVQ0OiAzNTY3Nixcblx0U0FNUExFUl8yRDogMzU2NzgsXG5cdFNBTVBMRVJfQ1VCRTogMzU2ODAsXG5cdFZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDogMzQzMzgsXG5cdFZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRTogMzQzMzksXG5cdFZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOiAzNDM0MCxcblx0VkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOiAzNDM0MSxcblx0VkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEOiAzNDkyMixcblx0VkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSOiAzNDM3Myxcblx0VkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzogMzQ5NzUsXG5cdElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRTogMzU3MzgsXG5cdElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUOiAzNTczOSxcblx0Q09NUElMRV9TVEFUVVM6IDM1NzEzLFxuXHRMT1dfRkxPQVQ6IDM2MzM2LFxuXHRNRURJVU1fRkxPQVQ6IDM2MzM3LFxuXHRISUdIX0ZMT0FUOiAzNjMzOCxcblx0TE9XX0lOVDogMzYzMzksXG5cdE1FRElVTV9JTlQ6IDM2MzQwLFxuXHRISUdIX0lOVDogMzYzNDEsXG5cdEZSQU1FQlVGRkVSOiAzNjE2MCxcblx0UkVOREVSQlVGRkVSOiAzNjE2MSxcblx0UkdCQTQ6IDMyODU0LFxuXHRSR0I1X0ExOiAzMjg1NSxcblx0UkdCNTY1OiAzNjE5NCxcblx0REVQVEhfQ09NUE9ORU5UMTY6IDMzMTg5LFxuXHRTVEVOQ0lMX0lOREVYOiA2NDAxLFxuXHRTVEVOQ0lMX0lOREVYODogMzYxNjgsXG5cdERFUFRIX1NURU5DSUw6IDM0MDQxLFxuXHRSRU5ERVJCVUZGRVJfV0lEVEg6IDM2MTYyLFxuXHRSRU5ERVJCVUZGRVJfSEVJR0hUOiAzNjE2Myxcblx0UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDogMzYxNjQsXG5cdFJFTkRFUkJVRkZFUl9SRURfU0laRTogMzYxNzYsXG5cdFJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFOiAzNjE3Nyxcblx0UkVOREVSQlVGRkVSX0JMVUVfU0laRTogMzYxNzgsXG5cdFJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOiAzNjE3OSxcblx0UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6IDM2MTgwLFxuXHRSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOiAzNjE4MSxcblx0RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRTogMzYwNDgsXG5cdEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6IDM2MDQ5LFxuXHRGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6IDM2MDUwLFxuXHRGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRTogMzYwNTEsXG5cdENPTE9SX0FUVEFDSE1FTlQwOiAzNjA2NCxcblx0REVQVEhfQVRUQUNITUVOVDogMzYwOTYsXG5cdFNURU5DSUxfQVRUQUNITUVOVDogMzYxMjgsXG5cdERFUFRIX1NURU5DSUxfQVRUQUNITUVOVDogMzMzMDYsXG5cdE5PTkU6IDAsXG5cdEZSQU1FQlVGRkVSX0NPTVBMRVRFOiAzNjA1Myxcblx0RlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOiAzNjA1NCxcblx0RlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQ6IDM2MDU1LFxuXHRGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM6IDM2MDU3LFxuXHRGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDogMzYwNjEsXG5cdEZSQU1FQlVGRkVSX0JJTkRJTkc6IDM2MDA2LFxuXHRSRU5ERVJCVUZGRVJfQklORElORzogMzYwMDcsXG5cdE1BWF9SRU5ERVJCVUZGRVJfU0laRTogMzQwMjQsXG5cdElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OOiAxMjg2LFxuXHRVTlBBQ0tfRkxJUF9ZX1dFQkdMOiAzNzQ0MCxcblx0VU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMOiAzNzQ0MSxcblx0Q09OVEVYVF9MT1NUX1dFQkdMOiAzNzQ0Mixcblx0VU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTDogMzc0NDMsXG5cdEJST1dTRVJfREVGQVVMVF9XRUJHTDogMzc0NDQsXG5cdFJFQURfQlVGRkVSOiAzMDc0LFxuXHRVTlBBQ0tfUk9XX0xFTkdUSDogMzMxNCxcblx0VU5QQUNLX1NLSVBfUk9XUzogMzMxNSxcblx0VU5QQUNLX1NLSVBfUElYRUxTOiAzMzE2LFxuXHRQQUNLX1JPV19MRU5HVEg6IDMzMzAsXG5cdFBBQ0tfU0tJUF9ST1dTOiAzMzMxLFxuXHRQQUNLX1NLSVBfUElYRUxTOiAzMzMyLFxuXHRDT0xPUjogNjE0NCxcblx0REVQVEg6IDYxNDUsXG5cdFNURU5DSUw6IDYxNDYsXG5cdFJFRDogNjQwMyxcblx0VU5QQUNLX1NLSVBfSU1BR0VTOiAzMjg3Nyxcblx0VU5QQUNLX0lNQUdFX0hFSUdIVDogMzI4NzgsXG5cdFRFWFRVUkVfV1JBUF9SOiAzMjg4Mixcblx0TUFYX0VMRU1FTlRTX1ZFUlRJQ0VTOiAzMzAwMCxcblx0TUFYX0VMRU1FTlRTX0lORElDRVM6IDMzMDAxLFxuXHRURVhUVVJFX01JTl9MT0Q6IDMzMDgyLFxuXHRURVhUVVJFX01BWF9MT0Q6IDMzMDgzLFxuXHRURVhUVVJFX0JBU0VfTEVWRUw6IDMzMDg0LFxuXHRURVhUVVJFX01BWF9MRVZFTDogMzMwODUsXG5cdE1JTjogMzI3NzUsXG5cdE1BWDogMzI3NzYsXG5cdE1BWF9URVhUVVJFX0xPRF9CSUFTOiAzNDA0NSxcblx0VEVYVFVSRV9DT01QQVJFX01PREU6IDM0ODkyLFxuXHRURVhUVVJFX0NPTVBBUkVfRlVOQzogMzQ4OTMsXG5cdENVUlJFTlRfUVVFUlk6IDM0OTE3LFxuXHRRVUVSWV9SRVNVTFQ6IDM0OTE4LFxuXHRRVUVSWV9SRVNVTFRfQVZBSUxBQkxFOiAzNDkxOSxcblx0U1RSRUFNX1JFQUQ6IDM1MDQxLFxuXHRTVFJFQU1fQ09QWTogMzUwNDIsXG5cdFNUQVRJQ19SRUFEOiAzNTA0NSxcblx0U1RBVElDX0NPUFk6IDM1MDQ2LFxuXHREWU5BTUlDX1JFQUQ6IDM1MDQ5LFxuXHREWU5BTUlDX0NPUFk6IDM1MDUwLFxuXHRNQVhfRFJBV19CVUZGRVJTOiAzNDg1Mixcblx0TUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUzogMzU2NTcsXG5cdE1BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTOiAzNTY1OCxcblx0RlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVDogMzU3MjMsXG5cdFBJWEVMX1BBQ0tfQlVGRkVSOiAzNTA1MSxcblx0UElYRUxfVU5QQUNLX0JVRkZFUjogMzUwNTIsXG5cdFBJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkc6IDM1MDUzLFxuXHRQSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc6IDM1MDU1LFxuXHRTUkdCOiAzNTkwNCxcblx0Q09NUEFSRV9SRUZfVE9fVEVYVFVSRTogMzQ4OTQsXG5cdFZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUjogMzUwNjksXG5cdE1BWF9BUlJBWV9URVhUVVJFX0xBWUVSUzogMzUwNzEsXG5cdE1JTl9QUk9HUkFNX1RFWEVMX09GRlNFVDogMzUwNzYsXG5cdE1BWF9QUk9HUkFNX1RFWEVMX09GRlNFVDogMzUwNzcsXG5cdE1BWF9WQVJZSU5HX0NPTVBPTkVOVFM6IDM1NjU5LFxuXHRUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6IDM1OTY3LFxuXHRNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFM6IDM1OTY4LFxuXHRUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6IDM1OTcxLFxuXHRUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOiAzNTk3Mixcblx0VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOiAzNTk3Myxcblx0VFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTjogMzU5NzYsXG5cdFJBU1RFUklaRVJfRElTQ0FSRDogMzU5NzcsXG5cdE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUzogMzU5NzgsXG5cdE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUzogMzU5NzksXG5cdElOVEVSTEVBVkVEX0FUVFJJQlM6IDM1OTgwLFxuXHRTRVBBUkFURV9BVFRSSUJTOiAzNTk4MSxcblx0VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjogMzU5ODIsXG5cdFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzogMzU5ODMsXG5cdFJFRF9JTlRFR0VSOiAzNjI0NCxcblx0UkdCX0lOVEVHRVI6IDM2MjQ4LFxuXHRSR0JBX0lOVEVHRVI6IDM2MjQ5LFxuXHRTQU1QTEVSX0NVQkVfU0hBRE9XOiAzNjI5Myxcblx0SU5UX1NBTVBMRVJfQ1VCRTogMzYzMDAsXG5cdFVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6IDM2MzA4LFxuXHRGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HOiAzMzI5Nixcblx0RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRTogMzMyOTcsXG5cdEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfUkVEX1NJWkU6IDMzMjk4LFxuXHRGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkU6IDMzMjk5LFxuXHRGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRTogMzMzMDAsXG5cdEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRTogMzMzMDEsXG5cdEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRTogMzMzMDIsXG5cdEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFOiAzMzMwMyxcblx0RlJBTUVCVUZGRVJfREVGQVVMVDogMzMzMDQsXG5cdFVOU0lHTkVEX05PUk1BTElaRUQ6IDM1ODYzLFxuXHREUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkc6IDM2MDA2LFxuXHRSRUFEX0ZSQU1FQlVGRkVSOiAzNjAwOCxcblx0RFJBV19GUkFNRUJVRkZFUjogMzYwMDksXG5cdFJFQURfRlJBTUVCVUZGRVJfQklORElORzogMzYwMTAsXG5cdFJFTkRFUkJVRkZFUl9TQU1QTEVTOiAzNjAxMSxcblx0RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSOiAzNjA1Mixcblx0TUFYX0NPTE9SX0FUVEFDSE1FTlRTOiAzNjA2Myxcblx0RlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRTogMzYxODIsXG5cdE1BWF9TQU1QTEVTOiAzNjE4Myxcblx0SEFMRl9GTE9BVDogNTEzMSxcblx0Ukc6IDMzMzE5LFxuXHRSR19JTlRFR0VSOiAzMzMyMCxcblx0VkVSVEVYX0FSUkFZX0JJTkRJTkc6IDM0MjI5LFxuXHRTSUdORURfTk9STUFMSVpFRDogMzY3NjQsXG5cdENPUFlfUkVBRF9CVUZGRVI6IDM2NjYyLFxuXHRDT1BZX1dSSVRFX0JVRkZFUjogMzY2NjMsXG5cdENPUFlfUkVBRF9CVUZGRVJfQklORElORzogMzY2NjIsXG5cdENPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkc6IDM2NjYzLFxuXHRVTklGT1JNX0JVRkZFUjogMzUzNDUsXG5cdFVOSUZPUk1fQlVGRkVSX0JJTkRJTkc6IDM1MzY4LFxuXHRVTklGT1JNX0JVRkZFUl9TVEFSVDogMzUzNjksXG5cdFVOSUZPUk1fQlVGRkVSX1NJWkU6IDM1MzcwLFxuXHRNQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTOiAzNTM3MSxcblx0TUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTOiAzNTM3Myxcblx0TUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTOiAzNTM3NCxcblx0TUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTOiAzNTM3NSxcblx0TUFYX1VOSUZPUk1fQkxPQ0tfU0laRTogMzUzNzYsXG5cdE1BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTOiAzNTM3Nyxcblx0TUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUzogMzUzNzksXG5cdFVOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQ6IDM1MzgwLFxuXHRBQ1RJVkVfVU5JRk9STV9CTE9DS1M6IDM1MzgyLFxuXHRVTklGT1JNX1RZUEU6IDM1MzgzLFxuXHRVTklGT1JNX1NJWkU6IDM1Mzg0LFxuXHRVTklGT1JNX0JMT0NLX0lOREVYOiAzNTM4Nixcblx0VU5JRk9STV9PRkZTRVQ6IDM1Mzg3LFxuXHRVTklGT1JNX0FSUkFZX1NUUklERTogMzUzODgsXG5cdFVOSUZPUk1fTUFUUklYX1NUUklERTogMzUzODksXG5cdFVOSUZPUk1fSVNfUk9XX01BSk9SOiAzNTM5MCxcblx0VU5JRk9STV9CTE9DS19CSU5ESU5HOiAzNTM5MSxcblx0VU5JRk9STV9CTE9DS19EQVRBX1NJWkU6IDM1MzkyLFxuXHRVTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUzogMzUzOTQsXG5cdFVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzogMzUzOTUsXG5cdFVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOiAzNTM5Nixcblx0VU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUjogMzUzOTgsXG5cdElOVkFMSURfSU5ERVg6IDQyOTQ5NjcyOTUsXG5cdE1BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFM6IDM3MTU0LFxuXHRNQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUzogMzcxNTcsXG5cdE1BWF9TRVJWRVJfV0FJVF9USU1FT1VUOiAzNzEzNyxcblx0T0JKRUNUX1RZUEU6IDM3MTM4LFxuXHRTWU5DX0NPTkRJVElPTjogMzcxMzksXG5cdFNZTkNfU1RBVFVTOiAzNzE0MCxcblx0U1lOQ19GTEFHUzogMzcxNDEsXG5cdFNZTkNfRkVOQ0U6IDM3MTQyLFxuXHRTWU5DX0dQVV9DT01NQU5EU19DT01QTEVURTogMzcxNDMsXG5cdFVOU0lHTkFMRUQ6IDM3MTQ0LFxuXHRTSUdOQUxFRDogMzcxNDUsXG5cdEFMUkVBRFlfU0lHTkFMRUQ6IDM3MTQ2LFxuXHRUSU1FT1VUX0VYUElSRUQ6IDM3MTQ3LFxuXHRDT05ESVRJT05fU0FUSVNGSUVEOiAzNzE0OCxcblx0V0FJVF9GQUlMRUQ6IDM3MTQ5LFxuXHRTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVDogMSxcblx0VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SOiAzNTA3MCxcblx0QU5ZX1NBTVBMRVNfUEFTU0VEOiAzNTg4Nyxcblx0QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRTogMzYyMDIsXG5cdFNBTVBMRVJfQklORElORzogMzUwOTcsXG5cdFRSQU5TRk9STV9GRUVEQkFDSzogMzYzODYsXG5cdFRSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQ6IDM2Mzg3LFxuXHRUUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFOiAzNjM4OCxcblx0VFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkc6IDM2Mzg5LFxuXHRURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQ6IDM3MTY3LFxuXHRNQVhfRUxFTUVOVF9JTkRFWDogMzYyMDMsXG5cdFRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzogMzM1MDMsXG5cdFRJTUVPVVRfSUdOT1JFRDogLTEsXG5cdE1BWF9DTElFTlRfV0FJVF9USU1FT1VUX1dFQkdMOiAzNzQ0Nyxcbn07XG5cbmNvbnN0IGV4dGVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7XG5cdC8vIHJhdGlmaWVkXG5cdE9FU190ZXh0dXJlX2Zsb2F0OiB7fSxcblx0T0VTX3RleHR1cmVfaGFsZl9mbG9hdDoge30sXG5cdFdFQkdMX2xvc2VfY29udGV4dDoge1xuXHRcdGxvc2VDb250ZXh0OiAoKSA9PiB7fSxcblx0fSxcblx0T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzOiB7fSxcblx0T0VTX3ZlcnRleF9hcnJheV9vYmplY3Q6IHtcblx0XHRjcmVhdGVWZXJ0ZXhBcnJheU9FUzogKCkgPT4ge30sXG5cdFx0YmluZFZlcnRleEFycmF5T0VTOiAoKSA9PiB7fSxcblx0XHRkZWxldGVWZXJ0ZXhBcnJheU9FUzogKCkgPT4ge30sXG5cdH0sXG5cdFdFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm86IG51bGwsXG5cdFdFQkdMX2RlYnVnX3NoYWRlcnM6IG51bGwsXG5cdFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjOiBudWxsLFxuXHRXRUJHTF9kZXB0aF90ZXh0dXJlOiB7fSxcblx0T0VTX2VsZW1lbnRfaW5kZXhfdWludDoge30sXG5cdEVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYzogbnVsbCxcblx0RVhUX2ZyYWdfZGVwdGg6IHt9LFxuXHRXRUJHTF9kcmF3X2J1ZmZlcnM6IHt9LFxuXHRBTkdMRV9pbnN0YW5jZWRfYXJyYXlzOiBudWxsLFxuXHRPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXI6IG51bGwsXG5cdE9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyOiBudWxsLFxuXHRFWFRfYmxlbmRfbWlubWF4OiB7IE1JTl9FWFQ6IDAsIE1BWF9FWFQ6IDAgfSxcblx0RVhUX3NoYWRlcl90ZXh0dXJlX2xvZDogbnVsbCxcblx0Ly8gY29tbXVuaXR5XG5cdFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGM6IG51bGwsXG5cdFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YzogbnVsbCxcblx0RVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0OiBudWxsLFxuXHRXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQ6IG51bGwsXG5cdEVYVF9zUkdCOiBudWxsLFxuXHRXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMTogbnVsbCxcbn07XG5cbmV4cG9ydCBjbGFzcyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IHtcblx0W2tleTogc3RyaW5nXTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQpIHtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0dGhpcy5jYW52YXMgPSBjYW52YXM7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHRoaXMuZHJhd2luZ0J1ZmZlcldpZHRoID0gY2FudmFzLndpZHRoO1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHR0aGlzLmRyYXdpbmdCdWZmZXJIZWlnaHQgPSBjYW52YXMuaGVpZ2h0O1xuXG5cdFx0Zm9yIChjb25zdCBtZXRob2Qgb2YgZnVuY3Rpb25zKSB7XG5cdFx0XHR0aGlzW21ldGhvZF0gPz89ICgpID0+IHt9O1xuXHRcdH1cblxuXHRcdE9iamVjdC5hc3NpZ24odGhpcywgZW51bXMpO1xuXHR9XG5cblx0Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gKCkgPT4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHRyYW5nZU1pbjogMTI3LFxuXHRcdFx0cmFuZ2VNYXg6IDEyNyxcblx0XHRcdHByZWNpc2lvbjogMjMsXG5cdFx0fTtcblx0fTtcblxuXHRwcml2YXRlIEdMX1ZFUlNJT04gPSA3OTM4O1xuXHRwcml2YXRlIFNDSVNTT1JfQk9YID0gMzA4ODtcblx0cHJpdmF0ZSBWSUVXUE9SVCA9IDI5Nzg7XG5cblx0Ly8gQHRzLWlnbm9yZVxuXHRnZXRQYXJhbWV0ZXIocGFyYW1JZDogbnVtYmVyKSB7XG5cdFx0c3dpdGNoIChwYXJhbUlkKSB7XG5cdFx0XHRjYXNlIHRoaXMuR0xfVkVSU0lPTjpcblx0XHRcdFx0cmV0dXJuIFsnV2ViR0wyJ107XG5cdFx0XHRjYXNlIHRoaXMuU0NJU1NPUl9CT1g6XG5cdFx0XHRjYXNlIHRoaXMuVklFV1BPUlQ6XG5cdFx0XHRcdHJldHVybiBbMCwgMCwgMSwgMV07XG5cdFx0fVxuXHR9XG5cblx0Z2V0RXh0ZW5zaW9uKGV4dDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGV4dGVuc2lvbnNbZXh0XTtcblx0fVxuXG5cdGdldFByb2dyYW1JbmZvTG9nID0gKCkgPT4gJyc7XG5cblx0Z2V0U2hhZGVySW5mb0xvZyA9ICgpID0+ICcnO1xufVxuIl19