angular-three-soba 2.11.0 → 2.13.0
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/abstractions/lib/catmull-rom-line.d.ts +87 -87
- package/abstractions/lib/edges.d.ts +111 -111
- package/abstractions/lib/gradient-texture.d.ts +2 -2
- package/abstractions/lib/grid.d.ts +39 -39
- package/abstractions/lib/line.d.ts +1 -1
- package/abstractions/lib/prism-geometry.d.ts +5 -5
- package/abstractions/lib/rounded-box.d.ts +2 -2
- package/abstractions/lib/text-3d.d.ts +57 -46
- package/abstractions/lib/text.d.ts +1 -1
- package/cameras/lib/cube-camera.d.ts +1 -1
- package/cameras/lib/orthographic-camera.d.ts +1 -1
- package/cameras/lib/perspective-camera.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +0 -3
- package/esm2022/abstractions/lib/gradient-texture.mjs +4 -4
- package/esm2022/abstractions/lib/rounded-box.mjs +23 -4
- package/esm2022/abstractions/lib/text-3d.mjs +1 -1
- package/esm2022/cameras/lib/orthographic-camera.mjs +3 -3
- package/esm2022/cameras/lib/perspective-camera.mjs +4 -3
- package/esm2022/controls/lib/camera-controls.mjs +12 -13
- package/esm2022/controls/lib/orbit-controls.mjs +10 -22
- package/esm2022/controls/lib/scroll-controls.mjs +5 -6
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +9 -5
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +77 -61
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +37 -25
- package/esm2022/loaders/lib/loader.mjs +1 -7
- package/esm2022/materials/lib/custom-shader-material.mjs +1 -1
- package/esm2022/materials/lib/mesh-distort-material.mjs +3 -2
- package/esm2022/materials/lib/mesh-portal-material.mjs +10 -10
- package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -2
- package/esm2022/materials/lib/point-material.mjs +4 -3
- package/esm2022/misc/lib/depth-buffer.mjs +2 -6
- package/esm2022/misc/lib/fbo.mjs +3 -3
- package/esm2022/misc/lib/preload.mjs +3 -3
- package/esm2022/staging/lib/accumulative-shadows.mjs +3 -3
- package/esm2022/staging/lib/bb-anchor.mjs +4 -4
- package/esm2022/staging/lib/environment/environment.mjs +21 -15
- package/esm2022/staging/lib/matcap-texture.mjs +3 -3
- package/esm2022/staging/lib/normal-texture.mjs +3 -3
- package/fesm2022/angular-three-soba-abstractions.mjs +25 -6
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +4 -3
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +24 -38
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +120 -88
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +0 -6
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +13 -10
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +4 -8
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +26 -20
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
- package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
- package/loaders/lib/loader.d.ts +0 -2
- package/materials/lib/custom-shader-material.d.ts +1 -1
- package/materials/lib/mesh-portal-material.d.ts +1 -1
- package/materials/lib/mesh-refraction-material.d.ts +2 -2
- package/materials/lib/point-material.d.ts +1 -0
- package/metadata.json +1 -1
- package/misc/lib/computed-attribute.d.ts +2 -2
- package/misc/lib/html/html.d.ts +1 -1
- package/package.json +7 -7
- package/staging/lib/accumulative-shadows.d.ts +1 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/mask.d.ts +1 -1
- package/web-types.json +1 -1
|
@@ -224,43 +224,49 @@ export class NgtsPivotControls {
|
|
|
224
224
|
<ngt-group #group [matrix]="matrix()" [matrixAutoUpdate]="false" [parameters]="parameters()">
|
|
225
225
|
<ngt-group #gizmo [visible]="visible()" [position]="offset()" [rotation]="rotation()">
|
|
226
226
|
@if (enabled()) {
|
|
227
|
-
@
|
|
227
|
+
@let _disableAxes = disableAxes();
|
|
228
|
+
@let _disableSliders = disableSliders();
|
|
229
|
+
@let _disableRotations = disableRotations();
|
|
230
|
+
@let _disableScaling = disableScaling();
|
|
231
|
+
@let _activeAxes = activeAxes();
|
|
232
|
+
|
|
233
|
+
@if (!_disableAxes && _activeAxes[0]) {
|
|
228
234
|
<ngts-axis-arrow [axis]="0" [direction]="xDir" />
|
|
229
235
|
}
|
|
230
|
-
@if (!
|
|
236
|
+
@if (!_disableAxes && _activeAxes[1]) {
|
|
231
237
|
<ngts-axis-arrow [axis]="1" [direction]="yDir" />
|
|
232
238
|
}
|
|
233
|
-
@if (!
|
|
239
|
+
@if (!_disableAxes && _activeAxes[2]) {
|
|
234
240
|
<ngts-axis-arrow [axis]="2" [direction]="zDir" />
|
|
235
241
|
}
|
|
236
242
|
|
|
237
|
-
@if (!
|
|
243
|
+
@if (!_disableSliders && _activeAxes[0] && _activeAxes[1]) {
|
|
238
244
|
<ngts-plane-slider [axis]="2" [dir1]="xDir" [dir2]="yDir" />
|
|
239
245
|
}
|
|
240
|
-
@if (!
|
|
246
|
+
@if (!_disableSliders && _activeAxes[0] && _activeAxes[2]) {
|
|
241
247
|
<ngts-plane-slider [axis]="1" [dir1]="zDir" [dir2]="xDir" />
|
|
242
248
|
}
|
|
243
|
-
@if (!
|
|
249
|
+
@if (!_disableSliders && _activeAxes[2] && _activeAxes[1]) {
|
|
244
250
|
<ngts-plane-slider [axis]="0" [dir1]="yDir" [dir2]="zDir" />
|
|
245
251
|
}
|
|
246
252
|
|
|
247
|
-
@if (!
|
|
253
|
+
@if (!_disableRotations && _activeAxes[0] && _activeAxes[1]) {
|
|
248
254
|
<ngts-axis-rotator [axis]="2" [dir1]="xDir" [dir2]="yDir" />
|
|
249
255
|
}
|
|
250
|
-
@if (!
|
|
256
|
+
@if (!_disableRotations && _activeAxes[0] && _activeAxes[2]) {
|
|
251
257
|
<ngts-axis-rotator [axis]="1" [dir1]="zDir" [dir2]="xDir" />
|
|
252
258
|
}
|
|
253
|
-
@if (!
|
|
259
|
+
@if (!_disableRotations && _activeAxes[2] && _activeAxes[1]) {
|
|
254
260
|
<ngts-axis-rotator [axis]="0" [dir1]="yDir" [dir2]="zDir" />
|
|
255
261
|
}
|
|
256
262
|
|
|
257
|
-
@if (!
|
|
263
|
+
@if (!_disableScaling && _activeAxes[0]) {
|
|
258
264
|
<ngts-scaling-sphere [axis]="0" [direction]="xDir" />
|
|
259
265
|
}
|
|
260
|
-
@if (!
|
|
266
|
+
@if (!_disableScaling && _activeAxes[1]) {
|
|
261
267
|
<ngts-scaling-sphere [axis]="1" [direction]="yDir" />
|
|
262
268
|
}
|
|
263
|
-
@if (!
|
|
269
|
+
@if (!_disableScaling && _activeAxes[2]) {
|
|
264
270
|
<ngts-scaling-sphere [axis]="2" [direction]="zDir" />
|
|
265
271
|
}
|
|
266
272
|
}
|
|
@@ -282,43 +288,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
282
288
|
<ngt-group #group [matrix]="matrix()" [matrixAutoUpdate]="false" [parameters]="parameters()">
|
|
283
289
|
<ngt-group #gizmo [visible]="visible()" [position]="offset()" [rotation]="rotation()">
|
|
284
290
|
@if (enabled()) {
|
|
285
|
-
@
|
|
291
|
+
@let _disableAxes = disableAxes();
|
|
292
|
+
@let _disableSliders = disableSliders();
|
|
293
|
+
@let _disableRotations = disableRotations();
|
|
294
|
+
@let _disableScaling = disableScaling();
|
|
295
|
+
@let _activeAxes = activeAxes();
|
|
296
|
+
|
|
297
|
+
@if (!_disableAxes && _activeAxes[0]) {
|
|
286
298
|
<ngts-axis-arrow [axis]="0" [direction]="xDir" />
|
|
287
299
|
}
|
|
288
|
-
@if (!
|
|
300
|
+
@if (!_disableAxes && _activeAxes[1]) {
|
|
289
301
|
<ngts-axis-arrow [axis]="1" [direction]="yDir" />
|
|
290
302
|
}
|
|
291
|
-
@if (!
|
|
303
|
+
@if (!_disableAxes && _activeAxes[2]) {
|
|
292
304
|
<ngts-axis-arrow [axis]="2" [direction]="zDir" />
|
|
293
305
|
}
|
|
294
306
|
|
|
295
|
-
@if (!
|
|
307
|
+
@if (!_disableSliders && _activeAxes[0] && _activeAxes[1]) {
|
|
296
308
|
<ngts-plane-slider [axis]="2" [dir1]="xDir" [dir2]="yDir" />
|
|
297
309
|
}
|
|
298
|
-
@if (!
|
|
310
|
+
@if (!_disableSliders && _activeAxes[0] && _activeAxes[2]) {
|
|
299
311
|
<ngts-plane-slider [axis]="1" [dir1]="zDir" [dir2]="xDir" />
|
|
300
312
|
}
|
|
301
|
-
@if (!
|
|
313
|
+
@if (!_disableSliders && _activeAxes[2] && _activeAxes[1]) {
|
|
302
314
|
<ngts-plane-slider [axis]="0" [dir1]="yDir" [dir2]="zDir" />
|
|
303
315
|
}
|
|
304
316
|
|
|
305
|
-
@if (!
|
|
317
|
+
@if (!_disableRotations && _activeAxes[0] && _activeAxes[1]) {
|
|
306
318
|
<ngts-axis-rotator [axis]="2" [dir1]="xDir" [dir2]="yDir" />
|
|
307
319
|
}
|
|
308
|
-
@if (!
|
|
320
|
+
@if (!_disableRotations && _activeAxes[0] && _activeAxes[2]) {
|
|
309
321
|
<ngts-axis-rotator [axis]="1" [dir1]="zDir" [dir2]="xDir" />
|
|
310
322
|
}
|
|
311
|
-
@if (!
|
|
323
|
+
@if (!_disableRotations && _activeAxes[2] && _activeAxes[1]) {
|
|
312
324
|
<ngts-axis-rotator [axis]="0" [dir1]="yDir" [dir2]="zDir" />
|
|
313
325
|
}
|
|
314
326
|
|
|
315
|
-
@if (!
|
|
327
|
+
@if (!_disableScaling && _activeAxes[0]) {
|
|
316
328
|
<ngts-scaling-sphere [axis]="0" [direction]="xDir" />
|
|
317
329
|
}
|
|
318
|
-
@if (!
|
|
330
|
+
@if (!_disableScaling && _activeAxes[1]) {
|
|
319
331
|
<ngts-scaling-sphere [axis]="1" [direction]="yDir" />
|
|
320
332
|
}
|
|
321
|
-
@if (!
|
|
333
|
+
@if (!_disableScaling && _activeAxes[2]) {
|
|
322
334
|
<ngts-scaling-sphere [axis]="2" [direction]="zDir" />
|
|
323
335
|
}
|
|
324
336
|
}
|
|
@@ -334,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
334
346
|
imports: [NgtsAxisArrow, NgtsPlaneSlider, NgtsAxisRotator, NgtsScalingSphere],
|
|
335
347
|
}]
|
|
336
348
|
}], ctorParameters: () => [] });
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9saWIvcGl2b3QtY29udHJvbHMvcGl2b3QtY29udHJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQWdCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWdCckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM1QixNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8s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QkFBaUI7bUdBQWpCLGlCQUFpQixxdEJBekRuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbURULDREQUdTLGFBQWEsMkZBQUUsZUFBZSxnR0FBRSxlQUFlLGdHQUFFLGlCQUFpQjs7NEZBR2hFLGlCQUFpQjtrQkE1RDdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbURUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7aUJBQzdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcblx0b3V0cHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBOZ3RBbnlSZWNvcmQsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNhbGN1bGF0ZVNjYWxlRmFjdG9yIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQm94MywgR3JvdXAsIE1hdHJpeDQsIE1lc2gsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzQXhpc0Fycm93IH0gZnJvbSAnLi9heGlzLWFycm93JztcbmltcG9ydCB7IE5ndHNBeGlzUm90YXRvciB9IGZyb20gJy4vYXhpcy1yb3RhdG9yJztcbmltcG9ydCB7IE5ndHNQbGFuZVNsaWRlciB9IGZyb20gJy4vcGxhbmUtc2xpZGVyJztcbmltcG9ydCB7IE5ndHNTY2FsaW5nU3BoZXJlIH0gZnJvbSAnLi9zY2FsaW5nLXNwaGVyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25EcmFnU3RhcnRQYXJhbWV0ZXJzIHtcblx0Y29tcG9uZW50OiAnQXJyb3cnIHwgJ1NsaWRlcicgfCAnUm90YXRvcicgfCAnU3BoZXJlJztcblx0YXhpczogMCB8IDEgfCAyO1xuXHRvcmlnaW46IFZlY3RvcjM7XG5cdGRpcmVjdGlvbnM6IFZlY3RvcjNbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkRyYWdQYXJhbWV0ZXJzIHtcblx0bDogTWF0cml4NDtcblx0ZGVsdGFMOiBNYXRyaXg0O1xuXHR3OiBNYXRyaXg0O1xuXHRkZWx0YVc6IE1hdHJpeDQ7XG59XG5cbmNvbnN0IG1MMCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtVzAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVBJbnYgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVcgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwwSW52ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IG1kTCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtRyA9IG5ldyBNYXRyaXg0KCk7XG5cbmNvbnN0IGJiID0gbmV3IEJveDMoKTtcbmNvbnN0IGJiT2JqID0gbmV3IEJveDMoKTtcbmNvbnN0IHZDZW50ZXIgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNpemUgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdkFuY2hvck9mZnNldCA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2UG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNjYWxlID0gbmV3IFZlY3RvcjMoKTtcblxuY29uc3QgeERpciA9IG5ldyBWZWN0b3IzKDEsIDAsIDApO1xuY29uc3QgeURpciA9IG5ldyBWZWN0b3IzKDAsIDEsIDApO1xuY29uc3QgekRpciA9IG5ldyBWZWN0b3IzKDAsIDAsIDEpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNQaXZvdENvbnRyb2xzT3B0aW9ucyB7XG5cdC8qKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBjb250cm9sLCB0cnVlICovXG5cdGVuYWJsZWQ6IGJvb2xlYW47XG5cdC8qKiBTY2FsZSBvZiB0aGUgZ2l6bW8sIDEgKi9cblx0c2NhbGU6IG51bWJlcjtcblx0LyoqIFdpZHRoIG9mIHRoZSBnaXptbyBsaW5lcywgdGhpcyBpcyBhIFRIUkVFLkxpbmUyIHByb3AsIDIuNSAqL1xuXHRsaW5lV2lkdGg6IG51bWJlcjtcblx0LyoqIElmIGZpeGVkIGlzIHRydWUgaXMgcmVtYWlucyBjb25zdGFudCBpbiBzaXplLCBzY2FsZSBpcyBub3cgaW4gcGl4ZWxzLCBmYWxzZSAqL1xuXHRmaXhlZDogYm9vbGVhbjtcblx0LyoqIFBpdm90IGRvZXMgbm90IGFjdCBhcyBhIGdyb3VwLCBpdCB3b24ndCBzaGlmdCBjb250ZW50cyBidXQgY2FuIG9mZnNldCBpbiBwb3NpdGlvbiAqL1xuXHRvZmZzZXQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIFN0YXJ0aW5nIHJvdGF0aW9uICovXG5cdHJvdGF0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cblx0LyoqIFN0YXJ0aW5nIG1hdHJpeCAqL1xuXHRtYXRyaXg/OiBNYXRyaXg0O1xuXHQvKiogQkJBbmNob3IsIGVhY2ggYXhpcyBjYW4gYmUgYmV0d2VlbiAtMS8wLysxICovXG5cdGFuY2hvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIElmIGF1dG9UcmFuc2Zvcm0gaXMgdHJ1ZSwgYXV0b21hdGljYWxseSBhcHBseSB0aGUgbG9jYWwgdHJhbnNmb3JtIG9uIGRyYWcsIHRydWUgKi9cblx0YXV0b1RyYW5zZm9ybTogYm9vbGVhbjtcblx0LyoqIEFsbG93cyB5b3UgdG8gc3dpdGNoIGluZGl2aWR1YWwgYXhlcyBvZmYgKi9cblx0YWN0aXZlQXhlczogW2Jvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5dO1xuXG5cdC8qKiBBbGxvd3MgeW91IHRvIHN3aXRjaCBpbmRpdmlkdWFsIHRyYW5zZm9ybWF0aW9ucyBvZmYgKi9cblx0ZGlzYWJsZUF4ZXM6IGJvb2xlYW47XG5cdGRpc2FibGVTbGlkZXJzOiBib29sZWFuO1xuXHRkaXNhYmxlUm90YXRpb25zOiBib29sZWFuO1xuXHRkaXNhYmxlU2NhbGluZzogYm9vbGVhbjtcblxuXHQvKiogTGltaXRzICovXG5cdHRyYW5zbGF0aW9uTGltaXRzPzogW1tudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWRdO1xuXHRyb3RhdGlvbkxpbWl0cz86IFtbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkXTtcblx0c2NhbGVMaW1pdHM/OiBbW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZF07XG5cblx0LyoqIFJHQiBjb2xvcnMgKi9cblx0YXhpc0NvbG9yczogW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdO1xuXHQvKiogQ29sb3Igb2YgdGhlIGhvdmVyZWQgaXRlbSAqL1xuXHRob3ZlcmVkQ29sb3I6IHN0cmluZyB8IG51bWJlcjtcblx0LyoqIEhUTUwgdmFsdWUgYW5ub3RhdGlvbnMsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGFubm90YXRpb25zOiBib29sZWFuO1xuXHQvKiogQ1NTIENsYXNzbmFtZSBhcHBsaWVkIHRvIHRoZSBIVE1MIGFubm90YXRpb25zICovXG5cdGFubm90YXRpb25zQ2xhc3M/OiBzdHJpbmc7XG5cdC8qKiBTZXQgdGhpcyB0byBmYWxzZSBpZiB5b3Ugd2FudCB0aGUgZ2l6bW8gdG8gYmUgdmlzaWJsZSB0aHJvdWdoIGZhY2VzICovXG5cdGRlcHRoVGVzdDogYm9vbGVhbjtcblx0b3BhY2l0eT86IG51bWJlcjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0dXNlckRhdGE/OiBOZ3RBbnlSZWNvcmQ7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzUGl2b3RDb250cm9sc09wdGlvbnMgPSB7XG5cdGVuYWJsZWQ6IHRydWUsXG5cdGF1dG9UcmFuc2Zvcm06IHRydWUsXG5cdGRpc2FibGVBeGVzOiBmYWxzZSxcblx0ZGlzYWJsZVNsaWRlcnM6IGZhbHNlLFxuXHRkaXNhYmxlUm90YXRpb25zOiBmYWxzZSxcblx0ZGlzYWJsZVNjYWxpbmc6IGZhbHNlLFxuXHRhY3RpdmVBeGVzOiBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sXG5cdG9mZnNldDogWzAsIDAsIDBdLFxuXHRyb3RhdGlvbjogWzAsIDAsIDBdLFxuXHRzY2FsZTogMSxcblx0bGluZVdpZHRoOiA0LFxuXHRmaXhlZDogZmFsc2UsXG5cdGRlcHRoVGVzdDogdHJ1ZSxcblx0YXhpc0NvbG9yczogWycjZmYyMDYwJywgJyMyMGRmODAnLCAnIzIwODBmZiddLFxuXHRob3ZlcmVkQ29sb3I6ICcjZmZmZjQwJyxcblx0YW5ub3RhdGlvbnM6IGZhbHNlLFxuXHRvcGFjaXR5OiAxLFxuXHR2aXNpYmxlOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1waXZvdC1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjcGFyZW50PlxuXHRcdFx0PG5ndC1ncm91cCAjZ3JvdXAgW21hdHJpeF09XCJtYXRyaXgoKVwiIFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCIgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHRcdDxuZ3QtZ3JvdXAgI2dpem1vIFt2aXNpYmxlXT1cInZpc2libGUoKVwiIFtwb3NpdGlvbl09XCJvZmZzZXQoKVwiIFtyb3RhdGlvbl09XCJyb3RhdGlvbigpXCI+XG5cdFx0XHRcdFx0QGlmIChlbmFibGVkKCkpIHtcblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVBeGVzKCkgJiYgYWN0aXZlQXhlcygpWzBdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtYXJyb3cgW2F4aXNdPVwiMFwiIFtkaXJlY3Rpb25dPVwieERpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlQXhlcygpICYmIGFjdGl2ZUF4ZXMoKVsxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLWFycm93IFtheGlzXT1cIjFcIiBbZGlyZWN0aW9uXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZUF4ZXMoKSAmJiBhY3RpdmVBeGVzKClbMl0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1hcnJvdyBbYXhpc109XCIyXCIgW2RpcmVjdGlvbl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIyXCIgW2RpcjFdPVwieERpclwiIFtkaXIyXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIxXCIgW2RpcjFdPVwiekRpclwiIFtkaXIyXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMl0gJiYgYWN0aXZlQXhlcygpWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIwXCIgW2RpcjFdPVwieURpclwiIFtkaXIyXT1cInpEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlUm90YXRpb25zKCkgJiYgYWN0aXZlQXhlcygpWzBdICYmIGFjdGl2ZUF4ZXMoKVsxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLXJvdGF0b3IgW2F4aXNdPVwiMlwiIFtkaXIxXT1cInhEaXJcIiBbZGlyMl09XCJ5RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVSb3RhdGlvbnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtcm90YXRvciBbYXhpc109XCIxXCIgW2RpcjFdPVwiekRpclwiIFtkaXIyXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVJvdGF0aW9ucygpICYmIGFjdGl2ZUF4ZXMoKVsyXSAmJiBhY3RpdmVBeGVzKClbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1yb3RhdG9yIFtheGlzXT1cIjBcIiBbZGlyMV09XCJ5RGlyXCIgW2RpcjJdPVwiekRpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVTY2FsaW5nKCkgJiYgYWN0aXZlQXhlcygpWzBdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXNjYWxpbmctc3BoZXJlIFtheGlzXT1cIjBcIiBbZGlyZWN0aW9uXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNjYWxpbmcoKSAmJiBhY3RpdmVBeGVzKClbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMVwiIFtkaXJlY3Rpb25dPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlU2NhbGluZygpICYmIGFjdGl2ZUF4ZXMoKVsyXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1zY2FsaW5nLXNwaGVyZSBbYXhpc109XCIyXCIgW2RpcmVjdGlvbl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdFx0XHQ8bmd0LWdyb3VwICNjaGlsZHJlbj5cblx0XHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0XHQ8L25ndC1ncm91cD5cblx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0c0F4aXNBcnJvdywgTmd0c1BsYW5lU2xpZGVyLCBOZ3RzQXhpc1JvdGF0b3IsIE5ndHNTY2FsaW5nU3BoZXJlXSxcbn0pXG4vLyBUT0RPOiBQaXZvdENvbnRyb2xzIGlzIG5vdCB3b3JraW5nIHByb3Blcmx5IHdpdGggY29udHJvbCBmbG93XG5leHBvcnQgY2xhc3MgTmd0c1Bpdm90Q29udHJvbHMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdlbmFibGVkJyxcblx0XHQnbWF0cml4Jyxcblx0XHQnYXV0b1RyYW5zZm9ybScsXG5cdFx0J2FuY2hvcicsXG5cdFx0J2Rpc2FibGVBeGVzJyxcblx0XHQnZGlzYWJsZVNsaWRlcnMnLFxuXHRcdCdkaXNhYmxlUm90YXRpb25zJyxcblx0XHQnZGlzYWJsZVNjYWxpbmcnLFxuXHRcdCdhY3RpdmVBeGVzJyxcblx0XHQnb2Zmc2V0Jyxcblx0XHQncm90YXRpb24nLFxuXHRcdCdzY2FsZScsXG5cdFx0J2xpbmVXaWR0aCcsXG5cdFx0J2ZpeGVkJyxcblx0XHQndHJhbnNsYXRpb25MaW1pdHMnLFxuXHRcdCdyb3RhdGlvbkxpbWl0cycsXG5cdFx0J3NjYWxlTGltaXRzJyxcblx0XHQnZGVwdGhUZXN0Jyxcblx0XHQnYXhpc0NvbG9ycycsXG5cdFx0J2hvdmVyZWRDb2xvcicsXG5cdFx0J2Fubm90YXRpb25zJyxcblx0XHQnYW5ub3RhdGlvbnNDbGFzcycsXG5cdFx0J29wYWNpdHknLFxuXHRcdCd2aXNpYmxlJyxcblx0XHQndXNlckRhdGEnLFxuXHRdKTtcblxuXHRkcmFnU3RhcnRlZCA9IG91dHB1dDxPbkRyYWdTdGFydFBhcmFtZXRlcnM+KCk7XG5cdGRyYWdFbmRlZCA9IG91dHB1dDx2b2lkPigpO1xuXHRkcmFnZ2VkID0gb3V0cHV0PE9uRHJhZ1BhcmFtZXRlcnM+KCk7XG5cblx0bWF0cml4ID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXRyaXgnKTtcblx0YW5ub3RhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Fubm90YXRpb25zJyk7XG5cdGFubm90YXRpb25zQ2xhc3MgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Fubm90YXRpb25zQ2xhc3MnKTtcblx0dHJhbnNsYXRpb25MaW1pdHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3RyYW5zbGF0aW9uTGltaXRzJyk7XG5cdHJvdGF0aW9uTGltaXRzID0gcGljayh0aGlzLm9wdGlvbnMsICdyb3RhdGlvbkxpbWl0cycpO1xuXHRzY2FsZUxpbWl0cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGVMaW1pdHMnKTtcblx0YXV0b1RyYW5zZm9ybSA9IHBpY2sodGhpcy5vcHRpb25zLCAnYXV0b1RyYW5zZm9ybScpO1xuXHRmaXhlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZml4ZWQnKTtcblx0aG92ZXJlZENvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdob3ZlcmVkQ29sb3InKTtcblx0YXhpc0NvbG9ycyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYXhpc0NvbG9ycycpO1xuXHRsaW5lV2lkdGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbmVXaWR0aCcpO1xuXHRzY2FsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGUnKTtcblx0dXNlckRhdGEgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3VzZXJEYXRhJyk7XG5cdG9wYWNpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ29wYWNpdHknKTtcblx0ZGVwdGhUZXN0ID0gcGljayh0aGlzLm9wdGlvbnMsICdkZXB0aFRlc3QnKTtcblx0b2Zmc2V0ID0gcGljayh0aGlzLm9wdGlvbnMsICdvZmZzZXQnKTtcblx0cm90YXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JvdGF0aW9uJyk7XG5cdHZpc2libGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3Zpc2libGUnKTtcblx0ZW5hYmxlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZW5hYmxlZCcpO1xuXHRkaXNhYmxlQXhlcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGlzYWJsZUF4ZXMnKTtcblx0ZGlzYWJsZVNsaWRlcnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVTbGlkZXJzJyk7XG5cdGRpc2FibGVSb3RhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVSb3RhdGlvbnMnKTtcblx0ZGlzYWJsZVNjYWxpbmcgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVTY2FsaW5nJyk7XG5cdGFjdGl2ZUF4ZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FjdGl2ZUF4ZXMnKTtcblxuXHR4RGlyID0geERpcjtcblx0eURpciA9IHlEaXI7XG5cdHpEaXIgPSB6RGlyO1xuXG5cdHBhcmVudFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ3BhcmVudCcpO1xuXHRncm91cFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dyb3VwJyk7XG5cdGdpem1vUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ2l6bW8nKTtcblx0Y2hpbGRyZW5SZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdjaGlsZHJlbicpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGludmFsaWRhdGUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnaW52YWxpZGF0ZScpO1xuXG5cdHRyYW5zbGF0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMCwgMCwgMF07XG5cblx0cHJpdmF0ZSBhbmNob3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuY2hvcicpO1xuXHRwcml2YXRlIGNhbWVyYVNjYWxlID0gbmV3IFZlY3RvcjMoMSwgMSwgMSk7XG5cdHByaXZhdGUgZ2l6bW9TY2FsZSA9IG5ldyBWZWN0b3IzKDEsIDEsIDEpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGFuY2hvciA9IHRoaXMuYW5jaG9yKCk7XG5cdFx0XHRpZiAoIWFuY2hvcikgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBjaGlsZHJlbkNvbnRhaW5lciA9IHRoaXMuY2hpbGRyZW5SZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY2hpbGRyZW5Db250YWluZXIpO1xuXHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IFtnaXptbywgb2Zmc2V0LCBpbnZhbGlkYXRlXSA9IFtcblx0XHRcdFx0dGhpcy5naXptb1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMub2Zmc2V0KCksXG5cdFx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpLFxuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0W2xvY2FsU3RhdGUub2JqZWN0cygpLCBsb2NhbFN0YXRlLm5vbk9iamVjdHMoKV0sXG5cdFx0XHRdO1xuXHRcdFx0Y2hpbGRyZW5Db250YWluZXIudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgdHJ1ZSk7XG5cblx0XHRcdG1QSW52LmNvcHkoY2hpbGRyZW5Db250YWluZXIubWF0cml4V29ybGQpLmludmVydCgpO1xuXHRcdFx0YmIubWFrZUVtcHR5KCk7XG5cblx0XHRcdGNoaWxkcmVuQ29udGFpbmVyLnRyYXZlcnNlKChvYmopID0+IHtcblx0XHRcdFx0aWYgKCEob2JqIGFzIE1lc2gpLmdlb21ldHJ5KSByZXR1cm47XG5cdFx0XHRcdGlmICghKG9iaiBhcyBNZXNoKS5nZW9tZXRyeS5ib3VuZGluZ0JveCkgKG9iaiBhcyBNZXNoKS5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTtcblx0XHRcdFx0bUwuY29weShvYmoubWF0cml4V29ybGQpLnByZW11bHRpcGx5KG1QSW52KTtcblx0XHRcdFx0Y29uc3QgYm91bmRpbmdCb3ggPSAob2JqIGFzIE1lc2gpLmdlb21ldHJ5LmJvdW5kaW5nQm94O1xuXHRcdFx0XHRpZiAoYm91bmRpbmdCb3gpIHtcblx0XHRcdFx0XHRiYk9iai5jb3B5KGJvdW5kaW5nQm94KTtcblx0XHRcdFx0XHRiYk9iai5hcHBseU1hdHJpeDQobUwpO1xuXHRcdFx0XHRcdGJiLnVuaW9uKGJiT2JqKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHZDZW50ZXIuY29weShiYi5tYXgpLmFkZChiYi5taW4pLm11bHRpcGx5U2NhbGFyKDAuNSk7XG5cdFx0XHR2U2l6ZS5jb3B5KGJiLm1heCkuc3ViKGJiLm1pbikubXVsdGlwbHlTY2FsYXIoMC41KTtcblx0XHRcdHZBbmNob3JPZmZzZXRcblx0XHRcdFx0LmNvcHkodlNpemUpXG5cdFx0XHRcdC5tdWx0aXBseShuZXcgVmVjdG9yMyguLi5hbmNob3IpKVxuXHRcdFx0XHQuYWRkKHZDZW50ZXIpO1xuXHRcdFx0dlBvc2l0aW9uLnNldCguLi5vZmZzZXQpLmFkZCh2QW5jaG9yT2Zmc2V0KTtcblx0XHRcdGdpem1vLnBvc2l0aW9uLmNvcHkodlBvc2l0aW9uKTtcblx0XHRcdGludmFsaWRhdGUoKTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IHZlYyA9IG5ldyBWZWN0b3IzKCk7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYSwgc2l6ZSwgaW52YWxpZGF0ZSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbeyBmaXhlZCwgc2NhbGUsIG1hdHJpeCB9LCBnaXptbywgZ3JvdXBdID0gW1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5naXptb1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XTtcblxuXHRcdFx0aWYgKGZpeGVkKSB7XG5cdFx0XHRcdGNvbnN0IHNmID0gY2FsY3VsYXRlU2NhbGVGYWN0b3IoZ2l6bW8uZ2V0V29ybGRQb3NpdGlvbih2ZWMpLCBzY2FsZSwgY2FtZXJhLCBzaXplKTtcblx0XHRcdFx0dGhpcy5jYW1lcmFTY2FsZS5zZXRTY2FsYXIoc2YpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWF0cml4ICYmIG1hdHJpeCBpbnN0YW5jZW9mIE1hdHJpeDQpIHtcblx0XHRcdFx0Z3JvdXAubWF0cml4ID0gbWF0cml4O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBVcGRhdGUgZ2l6bW8gc2NhbGUgaW4gYWNjb3JkYW5jZSB3aXRoIG1hdHJpeCBjaGFuZ2VzXG5cdFx0XHQvLyBXaXRob3V0IHRoaXMsIHRoZXJlIG1pZ2h0IGJlIG5vdGljZWFibGUgdHVyYnVsZW5jZSBpZiBzY2FsaW5nIGhhcHBlbnMgZmFzdCBlbm91Z2hcblx0XHRcdGdpem1vLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIHRydWUpO1xuXG5cdFx0XHRtRy5tYWtlUm90YXRpb25Gcm9tRXVsZXIoZ2l6bW8ucm90YXRpb24pLnNldFBvc2l0aW9uKGdpem1vLnBvc2l0aW9uKS5wcmVtdWx0aXBseShncm91cC5tYXRyaXhXb3JsZCk7XG5cdFx0XHR0aGlzLmdpem1vU2NhbGUuc2V0RnJvbU1hdHJpeFNjYWxlKG1HKTtcblxuXHRcdFx0dlNjYWxlLmNvcHkodGhpcy5jYW1lcmFTY2FsZSkuZGl2aWRlKHRoaXMuZ2l6bW9TY2FsZSk7XG5cblx0XHRcdGlmIChcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueCAtIHZTY2FsZS54KSA+IDFlLTQgfHxcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueSAtIHZTY2FsZS55KSA+IDFlLTQgfHxcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueiAtIHZTY2FsZS56KSA+IDFlLTRcblx0XHRcdCkge1xuXHRcdFx0XHRnaXptby5zY2FsZS5jb3B5KHZTY2FsZSk7XG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG9uRHJhZ1N0YXJ0KHBhcmFtZXRlcnM6IE9uRHJhZ1N0YXJ0UGFyYW1ldGVycykge1xuXHRcdGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0bUwwLmNvcHkoZ3JvdXAubWF0cml4KTtcblx0XHRtVzAuY29weShncm91cC5tYXRyaXhXb3JsZCk7XG5cdFx0dGhpcy5kcmFnU3RhcnRlZC5lbWl0KHBhcmFtZXRlcnMpO1xuXHRcdHRoaXMuc3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHR9XG5cblx0b25EcmFnKG1kVzogTWF0cml4NCkge1xuXHRcdGNvbnN0IFtwYXJlbnQsIGdyb3VwLCBhdXRvVHJhbnNmb3JtXSA9IFtcblx0XHRcdHRoaXMucGFyZW50UmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0dGhpcy5hdXRvVHJhbnNmb3JtKCksXG5cdFx0XTtcblxuXHRcdG1QLmNvcHkocGFyZW50Lm1hdHJpeFdvcmxkKTtcblx0XHRtUEludi5jb3B5KG1QKS5pbnZlcnQoKTtcblx0XHQvLyBBZnRlciBhcHBseWluZyB0aGUgZGVsdGFcblx0XHRtVy5jb3B5KG1XMCkucHJlbXVsdGlwbHkobWRXKTtcblx0XHRtTC5jb3B5KG1XKS5wcmVtdWx0aXBseShtUEludik7XG5cdFx0bUwwSW52LmNvcHkobUwwKS5pbnZlcnQoKTtcblx0XHRtZEwuY29weShtTCkubXVsdGlwbHkobUwwSW52KTtcblxuXHRcdGlmIChhdXRvVHJhbnNmb3JtKSB7XG5cdFx0XHRncm91cC5tYXRyaXguY29weShtTCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kcmFnZ2VkLmVtaXQoeyBsOiBtTCwgZGVsdGFMOiBtZEwsIHc6IG1XLCBkZWx0YVc6IG1kVyB9KTtcblx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0fVxuXG5cdG9uRHJhZ0VuZCgpIHtcblx0XHR0aGlzLmRyYWdFbmRlZC5lbWl0KCk7XG5cdFx0dGhpcy5zdG9yZS5zbmFwc2hvdC5pbnZhbGlkYXRlKCk7XG5cdH1cbn1cbiJdfQ==
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9saWIvcGl2b3QtY29udHJvbHMvcGl2b3QtY29udHJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQWdCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWdCckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM1QixNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8s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QkFBaUI7bUdBQWpCLGlCQUFpQixxdEJBL0RuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeURULDREQUdTLGFBQWEsMkZBQUUsZUFBZSxnR0FBRSxlQUFlLGdHQUFFLGlCQUFpQjs7NEZBR2hFLGlCQUFpQjtrQkFsRTdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeURUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7aUJBQzdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcblx0b3V0cHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBOZ3RBbnlSZWNvcmQsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNhbGN1bGF0ZVNjYWxlRmFjdG9yIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQm94MywgR3JvdXAsIE1hdHJpeDQsIE1lc2gsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzQXhpc0Fycm93IH0gZnJvbSAnLi9heGlzLWFycm93JztcbmltcG9ydCB7IE5ndHNBeGlzUm90YXRvciB9IGZyb20gJy4vYXhpcy1yb3RhdG9yJztcbmltcG9ydCB7IE5ndHNQbGFuZVNsaWRlciB9IGZyb20gJy4vcGxhbmUtc2xpZGVyJztcbmltcG9ydCB7IE5ndHNTY2FsaW5nU3BoZXJlIH0gZnJvbSAnLi9zY2FsaW5nLXNwaGVyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25EcmFnU3RhcnRQYXJhbWV0ZXJzIHtcblx0Y29tcG9uZW50OiAnQXJyb3cnIHwgJ1NsaWRlcicgfCAnUm90YXRvcicgfCAnU3BoZXJlJztcblx0YXhpczogMCB8IDEgfCAyO1xuXHRvcmlnaW46IFZlY3RvcjM7XG5cdGRpcmVjdGlvbnM6IFZlY3RvcjNbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkRyYWdQYXJhbWV0ZXJzIHtcblx0bDogTWF0cml4NDtcblx0ZGVsdGFMOiBNYXRyaXg0O1xuXHR3OiBNYXRyaXg0O1xuXHRkZWx0YVc6IE1hdHJpeDQ7XG59XG5cbmNvbnN0IG1MMCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtVzAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVBJbnYgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVcgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwwSW52ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IG1kTCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtRyA9IG5ldyBNYXRyaXg0KCk7XG5cbmNvbnN0IGJiID0gbmV3IEJveDMoKTtcbmNvbnN0IGJiT2JqID0gbmV3IEJveDMoKTtcbmNvbnN0IHZDZW50ZXIgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNpemUgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdkFuY2hvck9mZnNldCA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2UG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNjYWxlID0gbmV3IFZlY3RvcjMoKTtcblxuY29uc3QgeERpciA9IG5ldyBWZWN0b3IzKDEsIDAsIDApO1xuY29uc3QgeURpciA9IG5ldyBWZWN0b3IzKDAsIDEsIDApO1xuY29uc3QgekRpciA9IG5ldyBWZWN0b3IzKDAsIDAsIDEpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNQaXZvdENvbnRyb2xzT3B0aW9ucyB7XG5cdC8qKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBjb250cm9sLCB0cnVlICovXG5cdGVuYWJsZWQ6IGJvb2xlYW47XG5cdC8qKiBTY2FsZSBvZiB0aGUgZ2l6bW8sIDEgKi9cblx0c2NhbGU6IG51bWJlcjtcblx0LyoqIFdpZHRoIG9mIHRoZSBnaXptbyBsaW5lcywgdGhpcyBpcyBhIFRIUkVFLkxpbmUyIHByb3AsIDIuNSAqL1xuXHRsaW5lV2lkdGg6IG51bWJlcjtcblx0LyoqIElmIGZpeGVkIGlzIHRydWUgaXMgcmVtYWlucyBjb25zdGFudCBpbiBzaXplLCBzY2FsZSBpcyBub3cgaW4gcGl4ZWxzLCBmYWxzZSAqL1xuXHRmaXhlZDogYm9vbGVhbjtcblx0LyoqIFBpdm90IGRvZXMgbm90IGFjdCBhcyBhIGdyb3VwLCBpdCB3b24ndCBzaGlmdCBjb250ZW50cyBidXQgY2FuIG9mZnNldCBpbiBwb3NpdGlvbiAqL1xuXHRvZmZzZXQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIFN0YXJ0aW5nIHJvdGF0aW9uICovXG5cdHJvdGF0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cblx0LyoqIFN0YXJ0aW5nIG1hdHJpeCAqL1xuXHRtYXRyaXg/OiBNYXRyaXg0O1xuXHQvKiogQkJBbmNob3IsIGVhY2ggYXhpcyBjYW4gYmUgYmV0d2VlbiAtMS8wLysxICovXG5cdGFuY2hvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIElmIGF1dG9UcmFuc2Zvcm0gaXMgdHJ1ZSwgYXV0b21hdGljYWxseSBhcHBseSB0aGUgbG9jYWwgdHJhbnNmb3JtIG9uIGRyYWcsIHRydWUgKi9cblx0YXV0b1RyYW5zZm9ybTogYm9vbGVhbjtcblx0LyoqIEFsbG93cyB5b3UgdG8gc3dpdGNoIGluZGl2aWR1YWwgYXhlcyBvZmYgKi9cblx0YWN0aXZlQXhlczogW2Jvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5dO1xuXG5cdC8qKiBBbGxvd3MgeW91IHRvIHN3aXRjaCBpbmRpdmlkdWFsIHRyYW5zZm9ybWF0aW9ucyBvZmYgKi9cblx0ZGlzYWJsZUF4ZXM6IGJvb2xlYW47XG5cdGRpc2FibGVTbGlkZXJzOiBib29sZWFuO1xuXHRkaXNhYmxlUm90YXRpb25zOiBib29sZWFuO1xuXHRkaXNhYmxlU2NhbGluZzogYm9vbGVhbjtcblxuXHQvKiogTGltaXRzICovXG5cdHRyYW5zbGF0aW9uTGltaXRzPzogW1tudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWRdO1xuXHRyb3RhdGlvbkxpbWl0cz86IFtbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkXTtcblx0c2NhbGVMaW1pdHM/OiBbW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZF07XG5cblx0LyoqIFJHQiBjb2xvcnMgKi9cblx0YXhpc0NvbG9yczogW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdO1xuXHQvKiogQ29sb3Igb2YgdGhlIGhvdmVyZWQgaXRlbSAqL1xuXHRob3ZlcmVkQ29sb3I6IHN0cmluZyB8IG51bWJlcjtcblx0LyoqIEhUTUwgdmFsdWUgYW5ub3RhdGlvbnMsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGFubm90YXRpb25zOiBib29sZWFuO1xuXHQvKiogQ1NTIENsYXNzbmFtZSBhcHBsaWVkIHRvIHRoZSBIVE1MIGFubm90YXRpb25zICovXG5cdGFubm90YXRpb25zQ2xhc3M/OiBzdHJpbmc7XG5cdC8qKiBTZXQgdGhpcyB0byBmYWxzZSBpZiB5b3Ugd2FudCB0aGUgZ2l6bW8gdG8gYmUgdmlzaWJsZSB0aHJvdWdoIGZhY2VzICovXG5cdGRlcHRoVGVzdDogYm9vbGVhbjtcblx0b3BhY2l0eT86IG51bWJlcjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0dXNlckRhdGE/OiBOZ3RBbnlSZWNvcmQ7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzUGl2b3RDb250cm9sc09wdGlvbnMgPSB7XG5cdGVuYWJsZWQ6IHRydWUsXG5cdGF1dG9UcmFuc2Zvcm06IHRydWUsXG5cdGRpc2FibGVBeGVzOiBmYWxzZSxcblx0ZGlzYWJsZVNsaWRlcnM6IGZhbHNlLFxuXHRkaXNhYmxlUm90YXRpb25zOiBmYWxzZSxcblx0ZGlzYWJsZVNjYWxpbmc6IGZhbHNlLFxuXHRhY3RpdmVBeGVzOiBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sXG5cdG9mZnNldDogWzAsIDAsIDBdLFxuXHRyb3RhdGlvbjogWzAsIDAsIDBdLFxuXHRzY2FsZTogMSxcblx0bGluZVdpZHRoOiA0LFxuXHRmaXhlZDogZmFsc2UsXG5cdGRlcHRoVGVzdDogdHJ1ZSxcblx0YXhpc0NvbG9yczogWycjZmYyMDYwJywgJyMyMGRmODAnLCAnIzIwODBmZiddLFxuXHRob3ZlcmVkQ29sb3I6ICcjZmZmZjQwJyxcblx0YW5ub3RhdGlvbnM6IGZhbHNlLFxuXHRvcGFjaXR5OiAxLFxuXHR2aXNpYmxlOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1waXZvdC1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjcGFyZW50PlxuXHRcdFx0PG5ndC1ncm91cCAjZ3JvdXAgW21hdHJpeF09XCJtYXRyaXgoKVwiIFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCIgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHRcdDxuZ3QtZ3JvdXAgI2dpem1vIFt2aXNpYmxlXT1cInZpc2libGUoKVwiIFtwb3NpdGlvbl09XCJvZmZzZXQoKVwiIFtyb3RhdGlvbl09XCJyb3RhdGlvbigpXCI+XG5cdFx0XHRcdFx0QGlmIChlbmFibGVkKCkpIHtcblx0XHRcdFx0XHRcdEBsZXQgX2Rpc2FibGVBeGVzID0gZGlzYWJsZUF4ZXMoKTtcblx0XHRcdFx0XHRcdEBsZXQgX2Rpc2FibGVTbGlkZXJzID0gZGlzYWJsZVNsaWRlcnMoKTtcblx0XHRcdFx0XHRcdEBsZXQgX2Rpc2FibGVSb3RhdGlvbnMgPSBkaXNhYmxlUm90YXRpb25zKCk7XG5cdFx0XHRcdFx0XHRAbGV0IF9kaXNhYmxlU2NhbGluZyA9IGRpc2FibGVTY2FsaW5nKCk7XG5cdFx0XHRcdFx0XHRAbGV0IF9hY3RpdmVBeGVzID0gYWN0aXZlQXhlcygpO1xuXG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZUF4ZXMgJiYgX2FjdGl2ZUF4ZXNbMF0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1hcnJvdyBbYXhpc109XCIwXCIgW2RpcmVjdGlvbl09XCJ4RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlQXhlcyAmJiBfYWN0aXZlQXhlc1sxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLWFycm93IFtheGlzXT1cIjFcIiBbZGlyZWN0aW9uXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghX2Rpc2FibGVBeGVzICYmIF9hY3RpdmVBeGVzWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtYXJyb3cgW2F4aXNdPVwiMlwiIFtkaXJlY3Rpb25dPVwiekRpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlU2xpZGVycyAmJiBfYWN0aXZlQXhlc1swXSAmJiBfYWN0aXZlQXhlc1sxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1wbGFuZS1zbGlkZXIgW2F4aXNdPVwiMlwiIFtkaXIxXT1cInhEaXJcIiBbZGlyMl09XCJ5RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlU2xpZGVycyAmJiBfYWN0aXZlQXhlc1swXSAmJiBfYWN0aXZlQXhlc1syXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1wbGFuZS1zbGlkZXIgW2F4aXNdPVwiMVwiIFtkaXIxXT1cInpEaXJcIiBbZGlyMl09XCJ4RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlU2xpZGVycyAmJiBfYWN0aXZlQXhlc1syXSAmJiBfYWN0aXZlQXhlc1sxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1wbGFuZS1zbGlkZXIgW2F4aXNdPVwiMFwiIFtkaXIxXT1cInlEaXJcIiBbZGlyMl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0QGlmICghX2Rpc2FibGVSb3RhdGlvbnMgJiYgX2FjdGl2ZUF4ZXNbMF0gJiYgX2FjdGl2ZUF4ZXNbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1yb3RhdG9yIFtheGlzXT1cIjJcIiBbZGlyMV09XCJ4RGlyXCIgW2RpcjJdPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZVJvdGF0aW9ucyAmJiBfYWN0aXZlQXhlc1swXSAmJiBfYWN0aXZlQXhlc1syXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLXJvdGF0b3IgW2F4aXNdPVwiMVwiIFtkaXIxXT1cInpEaXJcIiBbZGlyMl09XCJ4RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlUm90YXRpb25zICYmIF9hY3RpdmVBeGVzWzJdICYmIF9hY3RpdmVBeGVzWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtcm90YXRvciBbYXhpc109XCIwXCIgW2RpcjFdPVwieURpclwiIFtkaXIyXT1cInpEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZVNjYWxpbmcgJiYgX2FjdGl2ZUF4ZXNbMF0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMFwiIFtkaXJlY3Rpb25dPVwieERpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZVNjYWxpbmcgJiYgX2FjdGl2ZUF4ZXNbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMVwiIFtkaXJlY3Rpb25dPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZVNjYWxpbmcgJiYgX2FjdGl2ZUF4ZXNbMl0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMlwiIFtkaXJlY3Rpb25dPVwiekRpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L25ndC1ncm91cD5cblx0XHRcdFx0PG5ndC1ncm91cCAjY2hpbGRyZW4+XG5cdFx0XHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRcdFx0PC9uZ3QtZ3JvdXA+XG5cdFx0XHQ8L25ndC1ncm91cD5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHNBeGlzQXJyb3csIE5ndHNQbGFuZVNsaWRlciwgTmd0c0F4aXNSb3RhdG9yLCBOZ3RzU2NhbGluZ1NwaGVyZV0sXG59KVxuLy8gVE9ETzogUGl2b3RDb250cm9scyBpcyBub3Qgd29ya2luZyBwcm9wZXJseSB3aXRoIGNvbnRyb2wgZmxvd1xuZXhwb3J0IGNsYXNzIE5ndHNQaXZvdENvbnRyb2xzIHtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFtcblx0XHQnZW5hYmxlZCcsXG5cdFx0J21hdHJpeCcsXG5cdFx0J2F1dG9UcmFuc2Zvcm0nLFxuXHRcdCdhbmNob3InLFxuXHRcdCdkaXNhYmxlQXhlcycsXG5cdFx0J2Rpc2FibGVTbGlkZXJzJyxcblx0XHQnZGlzYWJsZVJvdGF0aW9ucycsXG5cdFx0J2Rpc2FibGVTY2FsaW5nJyxcblx0XHQnYWN0aXZlQXhlcycsXG5cdFx0J29mZnNldCcsXG5cdFx0J3JvdGF0aW9uJyxcblx0XHQnc2NhbGUnLFxuXHRcdCdsaW5lV2lkdGgnLFxuXHRcdCdmaXhlZCcsXG5cdFx0J3RyYW5zbGF0aW9uTGltaXRzJyxcblx0XHQncm90YXRpb25MaW1pdHMnLFxuXHRcdCdzY2FsZUxpbWl0cycsXG5cdFx0J2RlcHRoVGVzdCcsXG5cdFx0J2F4aXNDb2xvcnMnLFxuXHRcdCdob3ZlcmVkQ29sb3InLFxuXHRcdCdhbm5vdGF0aW9ucycsXG5cdFx0J2Fubm90YXRpb25zQ2xhc3MnLFxuXHRcdCdvcGFjaXR5Jyxcblx0XHQndmlzaWJsZScsXG5cdFx0J3VzZXJEYXRhJyxcblx0XSk7XG5cblx0ZHJhZ1N0YXJ0ZWQgPSBvdXRwdXQ8T25EcmFnU3RhcnRQYXJhbWV0ZXJzPigpO1xuXHRkcmFnRW5kZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblx0ZHJhZ2dlZCA9IG91dHB1dDxPbkRyYWdQYXJhbWV0ZXJzPigpO1xuXG5cdG1hdHJpeCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWF0cml4Jyk7XG5cdGFubm90YXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdhbm5vdGF0aW9ucycpO1xuXHRhbm5vdGF0aW9uc0NsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdhbm5vdGF0aW9uc0NsYXNzJyk7XG5cdHRyYW5zbGF0aW9uTGltaXRzID0gcGljayh0aGlzLm9wdGlvbnMsICd0cmFuc2xhdGlvbkxpbWl0cycpO1xuXHRyb3RhdGlvbkxpbWl0cyA9IHBpY2sodGhpcy5vcHRpb25zLCAncm90YXRpb25MaW1pdHMnKTtcblx0c2NhbGVMaW1pdHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NjYWxlTGltaXRzJyk7XG5cdGF1dG9UcmFuc2Zvcm0gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2F1dG9UcmFuc2Zvcm0nKTtcblx0Zml4ZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZpeGVkJyk7XG5cdGhvdmVyZWRDb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnaG92ZXJlZENvbG9yJyk7XG5cdGF4aXNDb2xvcnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2F4aXNDb2xvcnMnKTtcblx0bGluZVdpZHRoID0gcGljayh0aGlzLm9wdGlvbnMsICdsaW5lV2lkdGgnKTtcblx0c2NhbGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NjYWxlJyk7XG5cdHVzZXJEYXRhID0gcGljayh0aGlzLm9wdGlvbnMsICd1c2VyRGF0YScpO1xuXHRvcGFjaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdvcGFjaXR5Jyk7XG5cdGRlcHRoVGVzdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVwdGhUZXN0Jyk7XG5cdG9mZnNldCA9IHBpY2sodGhpcy5vcHRpb25zLCAnb2Zmc2V0Jyk7XG5cdHJvdGF0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdyb3RhdGlvbicpO1xuXHR2aXNpYmxlID0gcGljayh0aGlzLm9wdGlvbnMsICd2aXNpYmxlJyk7XG5cdGVuYWJsZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2VuYWJsZWQnKTtcblx0ZGlzYWJsZUF4ZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVBeGVzJyk7XG5cdGRpc2FibGVTbGlkZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXNhYmxlU2xpZGVycycpO1xuXHRkaXNhYmxlUm90YXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXNhYmxlUm90YXRpb25zJyk7XG5cdGRpc2FibGVTY2FsaW5nID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXNhYmxlU2NhbGluZycpO1xuXHRhY3RpdmVBeGVzID0gcGljayh0aGlzLm9wdGlvbnMsICdhY3RpdmVBeGVzJyk7XG5cblx0eERpciA9IHhEaXI7XG5cdHlEaXIgPSB5RGlyO1xuXHR6RGlyID0gekRpcjtcblxuXHRwYXJlbnRSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdwYXJlbnQnKTtcblx0Z3JvdXBSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXHRnaXptb1JlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dpem1vJyk7XG5cdGNoaWxkcmVuUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignY2hpbGRyZW4nKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblxuXHR0cmFuc2xhdGlvbjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzAsIDAsIDBdO1xuXG5cdHByaXZhdGUgYW5jaG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdhbmNob3InKTtcblx0cHJpdmF0ZSBjYW1lcmFTY2FsZSA9IG5ldyBWZWN0b3IzKDEsIDEsIDEpO1xuXHRwcml2YXRlIGdpem1vU2NhbGUgPSBuZXcgVmVjdG9yMygxLCAxLCAxKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBHcm91cCB9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcigpO1xuXHRcdFx0aWYgKCFhbmNob3IpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgY2hpbGRyZW5Db250YWluZXIgPSB0aGlzLmNoaWxkcmVuUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNoaWxkcmVuQ29udGFpbmVyKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBbZ2l6bW8sIG9mZnNldCwgaW52YWxpZGF0ZV0gPSBbXG5cdFx0XHRcdHRoaXMuZ2l6bW9SZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLm9mZnNldCgpLFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdFtsb2NhbFN0YXRlLm9iamVjdHMoKSwgbG9jYWxTdGF0ZS5ub25PYmplY3RzKCldLFxuXHRcdFx0XTtcblx0XHRcdGNoaWxkcmVuQ29udGFpbmVyLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIHRydWUpO1xuXG5cdFx0XHRtUEludi5jb3B5KGNoaWxkcmVuQ29udGFpbmVyLm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtcblx0XHRcdGJiLm1ha2VFbXB0eSgpO1xuXG5cdFx0XHRjaGlsZHJlbkNvbnRhaW5lci50cmF2ZXJzZSgob2JqKSA9PiB7XG5cdFx0XHRcdGlmICghKG9iaiBhcyBNZXNoKS5nZW9tZXRyeSkgcmV0dXJuO1xuXHRcdFx0XHRpZiAoIShvYmogYXMgTWVzaCkuZ2VvbWV0cnkuYm91bmRpbmdCb3gpIChvYmogYXMgTWVzaCkuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk7XG5cdFx0XHRcdG1MLmNvcHkob2JqLm1hdHJpeFdvcmxkKS5wcmVtdWx0aXBseShtUEludik7XG5cdFx0XHRcdGNvbnN0IGJvdW5kaW5nQm94ID0gKG9iaiBhcyBNZXNoKS5nZW9tZXRyeS5ib3VuZGluZ0JveDtcblx0XHRcdFx0aWYgKGJvdW5kaW5nQm94KSB7XG5cdFx0XHRcdFx0YmJPYmouY29weShib3VuZGluZ0JveCk7XG5cdFx0XHRcdFx0YmJPYmouYXBwbHlNYXRyaXg0KG1MKTtcblx0XHRcdFx0XHRiYi51bmlvbihiYk9iaik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHR2Q2VudGVyLmNvcHkoYmIubWF4KS5hZGQoYmIubWluKS5tdWx0aXBseVNjYWxhcigwLjUpO1xuXHRcdFx0dlNpemUuY29weShiYi5tYXgpLnN1YihiYi5taW4pLm11bHRpcGx5U2NhbGFyKDAuNSk7XG5cdFx0XHR2QW5jaG9yT2Zmc2V0XG5cdFx0XHRcdC5jb3B5KHZTaXplKVxuXHRcdFx0XHQubXVsdGlwbHkobmV3IFZlY3RvcjMoLi4uYW5jaG9yKSlcblx0XHRcdFx0LmFkZCh2Q2VudGVyKTtcblx0XHRcdHZQb3NpdGlvbi5zZXQoLi4ub2Zmc2V0KS5hZGQodkFuY2hvck9mZnNldCk7XG5cdFx0XHRnaXptby5wb3NpdGlvbi5jb3B5KHZQb3NpdGlvbik7XG5cdFx0XHRpbnZhbGlkYXRlKCk7XG5cdFx0fSk7XG5cblx0XHRjb25zdCB2ZWMgPSBuZXcgVmVjdG9yMygpO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjYW1lcmEsIHNpemUsIGludmFsaWRhdGUgfSkgPT4ge1xuXHRcdFx0Y29uc3QgW3sgZml4ZWQsIHNjYWxlLCBtYXRyaXggfSwgZ2l6bW8sIGdyb3VwXSA9IFtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdHRoaXMuZ2l6bW9SZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmdyb3VwUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdF07XG5cblx0XHRcdGlmIChmaXhlZCkge1xuXHRcdFx0XHRjb25zdCBzZiA9IGNhbGN1bGF0ZVNjYWxlRmFjdG9yKGdpem1vLmdldFdvcmxkUG9zaXRpb24odmVjKSwgc2NhbGUsIGNhbWVyYSwgc2l6ZSk7XG5cdFx0XHRcdHRoaXMuY2FtZXJhU2NhbGUuc2V0U2NhbGFyKHNmKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1hdHJpeCAmJiBtYXRyaXggaW5zdGFuY2VvZiBNYXRyaXg0KSB7XG5cdFx0XHRcdGdyb3VwLm1hdHJpeCA9IG1hdHJpeDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVXBkYXRlIGdpem1vIHNjYWxlIGluIGFjY29yZGFuY2Ugd2l0aCBtYXRyaXggY2hhbmdlc1xuXHRcdFx0Ly8gV2l0aG91dCB0aGlzLCB0aGVyZSBtaWdodCBiZSBub3RpY2VhYmxlIHR1cmJ1bGVuY2UgaWYgc2NhbGluZyBoYXBwZW5zIGZhc3QgZW5vdWdoXG5cdFx0XHRnaXptby51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCB0cnVlKTtcblxuXHRcdFx0bUcubWFrZVJvdGF0aW9uRnJvbUV1bGVyKGdpem1vLnJvdGF0aW9uKS5zZXRQb3NpdGlvbihnaXptby5wb3NpdGlvbikucHJlbXVsdGlwbHkoZ3JvdXAubWF0cml4V29ybGQpO1xuXHRcdFx0dGhpcy5naXptb1NjYWxlLnNldEZyb21NYXRyaXhTY2FsZShtRyk7XG5cblx0XHRcdHZTY2FsZS5jb3B5KHRoaXMuY2FtZXJhU2NhbGUpLmRpdmlkZSh0aGlzLmdpem1vU2NhbGUpO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnggLSB2U2NhbGUueCkgPiAxZS00IHx8XG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnkgLSB2U2NhbGUueSkgPiAxZS00IHx8XG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnogLSB2U2NhbGUueikgPiAxZS00XG5cdFx0XHQpIHtcblx0XHRcdFx0Z2l6bW8uc2NhbGUuY29weSh2U2NhbGUpO1xuXHRcdFx0XHRpbnZhbGlkYXRlKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRvbkRyYWdTdGFydChwYXJhbWV0ZXJzOiBPbkRyYWdTdGFydFBhcmFtZXRlcnMpIHtcblx0XHRjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdG1MMC5jb3B5KGdyb3VwLm1hdHJpeCk7XG5cdFx0bVcwLmNvcHkoZ3JvdXAubWF0cml4V29ybGQpO1xuXHRcdHRoaXMuZHJhZ1N0YXJ0ZWQuZW1pdChwYXJhbWV0ZXJzKTtcblx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0fVxuXG5cdG9uRHJhZyhtZFc6IE1hdHJpeDQpIHtcblx0XHRjb25zdCBbcGFyZW50LCBncm91cCwgYXV0b1RyYW5zZm9ybV0gPSBbXG5cdFx0XHR0aGlzLnBhcmVudFJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHR0aGlzLmdyb3VwUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuYXV0b1RyYW5zZm9ybSgpLFxuXHRcdF07XG5cblx0XHRtUC5jb3B5KHBhcmVudC5tYXRyaXhXb3JsZCk7XG5cdFx0bVBJbnYuY29weShtUCkuaW52ZXJ0KCk7XG5cdFx0Ly8gQWZ0ZXIgYXBwbHlpbmcgdGhlIGRlbHRhXG5cdFx0bVcuY29weShtVzApLnByZW11bHRpcGx5KG1kVyk7XG5cdFx0bUwuY29weShtVykucHJlbXVsdGlwbHkobVBJbnYpO1xuXHRcdG1MMEludi5jb3B5KG1MMCkuaW52ZXJ0KCk7XG5cdFx0bWRMLmNvcHkobUwpLm11bHRpcGx5KG1MMEludik7XG5cblx0XHRpZiAoYXV0b1RyYW5zZm9ybSkge1xuXHRcdFx0Z3JvdXAubWF0cml4LmNvcHkobUwpO1xuXHRcdH1cblxuXHRcdHRoaXMuZHJhZ2dlZC5lbWl0KHsgbDogbUwsIGRlbHRhTDogbWRMLCB3OiBtVywgZGVsdGFXOiBtZFcgfSk7XG5cdFx0dGhpcy5zdG9yZS5zbmFwc2hvdC5pbnZhbGlkYXRlKCk7XG5cdH1cblxuXHRvbkRyYWdFbmQoKSB7XG5cdFx0dGhpcy5kcmFnRW5kZWQuZW1pdCgpO1xuXHRcdHRoaXMuc3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHR9XG59XG4iXX0=
|
|
@@ -26,10 +26,6 @@ export class NgtsLoader {
|
|
|
26
26
|
this.dataInterpolation = pick(this.options, 'dataInterpolation');
|
|
27
27
|
this.progressSpanRef = viewChild('progressSpanRef');
|
|
28
28
|
this.shown = signal(this.initialState()(this.active()));
|
|
29
|
-
this.setShown();
|
|
30
|
-
this.updateProgress();
|
|
31
|
-
}
|
|
32
|
-
setShown() {
|
|
33
29
|
effect((onCleanup) => {
|
|
34
30
|
const [active, lastShown] = [this.active(), untracked(this.shown)];
|
|
35
31
|
if (lastShown !== active) {
|
|
@@ -39,8 +35,6 @@ export class NgtsLoader {
|
|
|
39
35
|
onCleanup(() => clearTimeout(timeoutId));
|
|
40
36
|
}
|
|
41
37
|
});
|
|
42
|
-
}
|
|
43
|
-
updateProgress() {
|
|
44
38
|
let progressRef = 0;
|
|
45
39
|
let rafId;
|
|
46
40
|
effect((onCleanup) => {
|
|
@@ -106,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
106
100
|
}
|
|
107
101
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"] }]
|
|
108
102
|
}], ctorParameters: () => [] });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2xvYWRlcnMvc3JjL2xpYi9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFFNUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFXM0UsTUFBTSxjQUFjLEdBQXNCO0lBQ3pDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsUUFBUSxFQUFFLEVBQUU7SUFDWixTQUFTLEVBQUUsRUFBRTtJQUNiLGlCQUFpQixFQUFFLHdCQUF3QjtJQUMzQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Q0FDOUIsQ0FBQztBQTRCRixNQUFNLE9BQU8sVUFBVTtJQW1CdEI7UUFsQlEsa0JBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUV6QyxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxZQUFPLEdBQUcsS0FBSyxD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WUFDTjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdEVsZW1lbnRSZWYsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGlucHV0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IGluamVjdFByb2dyZXNzIH0gZnJvbSAnLi9wcm9ncmVzcyc7XG5cbmNvbnN0IGRlZmF1bHREYXRhSW50ZXJwb2xhdGlvbiA9IChwOiBudW1iZXIpID0+IGBMb2FkaW5nICR7cC50b0ZpeGVkKDIpfSVgO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNMb2FkZXJPcHRpb25zIHtcblx0Y29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG5cdGlubmVyQ2xhc3M/OiBzdHJpbmc7XG5cdGJhckNsYXNzPzogc3RyaW5nO1xuXHRkYXRhQ2xhc3M/OiBzdHJpbmc7XG5cdGRhdGFJbnRlcnBvbGF0aW9uOiAodmFsdWU6IG51bWJlcikgPT4gc3RyaW5nO1xuXHRpbml0aWFsU3RhdGU6ICh2YWx1ZTogYm9vbGVhbikgPT4gYm9vbGVhbjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNMb2FkZXJPcHRpb25zID0ge1xuXHRjb250YWluZXJDbGFzczogJycsXG5cdGlubmVyQ2xhc3M6ICcnLFxuXHRiYXJDbGFzczogJycsXG5cdGRhdGFDbGFzczogJycsXG5cdGRhdGFJbnRlcnBvbGF0aW9uOiBkZWZhdWx0RGF0YUludGVycG9sYXRpb24sXG5cdGluaXRpYWxTdGF0ZTogKHZhbHVlKSA9PiB2YWx1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbG9hZGVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHRAaWYgKHNob3duKCkpIHtcblx0XHRcdDxkaXZcblx0XHRcdFx0Y2xhc3M9XCJuZ3RzLWxvYWRlci1jb250YWluZXJcIlxuXHRcdFx0XHRbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKSB8fCAnJ1wiXG5cdFx0XHRcdFtzdHlsZS4tLW5ndHMtbG9hZGVyLWNvbnRhaW5lci1vcGFjaXR5XT1cImFjdGl2ZSgpID8gMSA6IDBcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJuZ3RzLWxvYWRlci1pbm5lclwiIFtjbGFzc109XCJpbm5lckNsYXNzKCkgfHwgJydcIj5cblx0XHRcdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJuZ3RzLWxvYWRlci1iYXJcIlxuXHRcdFx0XHRcdFx0XHRbY2xhc3NdPVwiYmFyQ2xhc3MoKSB8fCAnJ1wiXG5cdFx0XHRcdFx0XHRcdFtzdHlsZS4tLW5ndHMtbG9hZGVyLWJhci1zY2FsZV09XCJwcm9ncmVzcygpIC8gMTAwXCJcblx0XHRcdFx0XHRcdD48L2Rpdj5cblx0XHRcdFx0XHRcdDxzcGFuICNwcm9ncmVzc1NwYW5SZWYgY2xhc3M9XCJuZ3RzLWxvYWRlci1kYXRhXCIgW2NsYXNzXT1cImRhdGFDbGFzcygpIHx8ICcnXCI+PC9zcGFuPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdH1cblx0YCxcblx0c3R5bGVVcmxzOiBbJy4vbG9hZGVyLmNzcyddLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0xvYWRlciB7XG5cdHByaXZhdGUgcHJvZ3Jlc3NTdGF0ZSA9IGluamVjdFByb2dyZXNzKCk7XG5cblx0YWN0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9ncmVzc1N0YXRlKCkuYWN0aXZlKTtcblx0cHJvZ3Jlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb2dyZXNzU3RhdGUoKS5wcm9ncmVzcyk7XG5cblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdGNvbnRhaW5lckNsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdjb250YWluZXJDbGFzcycpO1xuXHRpbm5lckNsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdpbm5lckNsYXNzJyk7XG5cdGJhckNsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdiYXJDbGFzcycpO1xuXHRkYXRhQ2xhc3MgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2RhdGFDbGFzcycpO1xuXHRpbml0aWFsU3RhdGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2luaXRpYWxTdGF0ZScpO1xuXHRkYXRhSW50ZXJwb2xhdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGF0YUludGVycG9sYXRpb24nKTtcblxuXHRwcm9ncmVzc1NwYW5SZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MU3BhbkVsZW1lbnQ+PigncHJvZ3Jlc3NTcGFuUmVmJyk7XG5cblx0c2hvd24gPSBzaWduYWwodGhpcy5pbml0aWFsU3RhdGUoKSh0aGlzLmFjdGl2ZSgpKSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFthY3RpdmUsIGxhc3RTaG93bl0gPSBbdGhpcy5hY3RpdmUoKSwgdW50cmFja2VkKHRoaXMuc2hvd24pXTtcblx0XHRcdGlmIChsYXN0U2hvd24gIT09IGFjdGl2ZSkge1xuXHRcdFx0XHRjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3duLnNldChhY3RpdmUpO1xuXHRcdFx0XHR9LCAzMDApO1xuXHRcdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0bGV0IHByb2dyZXNzUmVmID0gMDtcblx0XHRsZXQgcmFmSWQ6IFJldHVyblR5cGU8dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT47XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtkYXRhSW50ZXJwb2xhdGlvbiwgcHJvZ3Jlc3NdID0gW3RoaXMuZGF0YUludGVycG9sYXRpb24oKSwgdGhpcy5wcm9ncmVzcygpXTtcblx0XHRcdGNvbnN0IHVwZGF0ZVByb2dyZXNzID0gKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwcm9ncmVzc1NwYW4gPSB0aGlzLnByb2dyZXNzU3BhblJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoIXByb2dyZXNzU3BhbikgcmV0dXJuO1xuXHRcdFx0XHRwcm9ncmVzc1JlZiArPSAocHJvZ3Jlc3MgLSBwcm9ncmVzc1JlZikgLyAyO1xuXHRcdFx0XHRpZiAocHJvZ3Jlc3NSZWYgPiAwLjk1ICogcHJvZ3Jlc3MgfHwgcHJvZ3Jlc3MgPT09IDEwMCkgcHJvZ3Jlc3NSZWYgPSBwcm9ncmVzcztcblx0XHRcdFx0cHJvZ3Jlc3NTcGFuLmlubmVyVGV4dCA9IGRhdGFJbnRlcnBvbGF0aW9uKHByb2dyZXNzUmVmKTtcblx0XHRcdFx0aWYgKHByb2dyZXNzUmVmIDwgcHJvZ3Jlc3MpIHtcblx0XHRcdFx0XHRyYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVQcm9ncmVzcyk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR1cGRhdGVQcm9ncmVzcygpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
64
64
|
imports: [NgtArgs],
|
|
65
65
|
}]
|
|
66
66
|
}], ctorParameters: () => [] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNoYWRlci1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9jdXN0b20tc2hhZGVyLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsTUFBTSxFQUVOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsRUFBRSxFQUFnQixPQUFPLEVBQWlCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckYsT0FBTyxvQkFBb0IsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFjeEUsTUFBTSxPQUFPLHdCQUF3QjtJQXdDcEM7UUF2Q0EsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxRCxDQUFDO1FBQ25GLFdBQU0sR0FBRyxLQUFLLENBQWdCLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBaUYsQ0FBQyxDQUFDO1FBQ25HLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVwRixTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFFSyxtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsaUJBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNsRCxhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUc7Z0JBQ2hFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxFQUFFO2FBQ2YsQ0FBQztZQUVGLDBDQUEwQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBUSxJQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QyxPQUFRLElBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFDO2dCQUMvQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsY0FBYztnQkFDZCxZQUFZO2dCQUNaLFFBQVE7Z0JBQ1IsUUFBUTthQUNSLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBR0YsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBN0NXLHdCQUF3QjttR0FBeEIsd0JBQXdCLHdlQVQxQjs7OztFQUlULDREQUdTLE9BQU87OzRGQUVMLHdCQUF3QjtrQkFacEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXMsIE5ndEFueVJlY29yZCwgTmd0QXJncywgTmd0QXR0YWNoYWJsZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTWF0ZXJpYWwgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgQ3VzdG9tU2hhZGVyTWF0ZXJpYWwgZnJvbSAndGhyZWUtY3VzdG9tLXNoYWRlci1tYXRlcmlhbC92YW5pbGxhJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jdXN0b20tc2hhZGVyLW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbCgpXVwiIFthdHRhY2hdPVwiYXR0YWNoKClcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDdXN0b21TaGFkZXJNYXRlcmlhbCB7XG5cdGJhc2VNYXRlcmlhbCA9IGlucHV0LnJlcXVpcmVkPE1hdGVyaWFsIHwgdHlwZW9mIE1hdGVyaWFsIHwgRWxlbWVudFJlZjxNYXRlcmlhbD4+KCk7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgT21pdDxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEN1c3RvbVNoYWRlck1hdGVyaWFsPlswXSwgJ2Jhc2VNYXRlcmlhbCc+KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2ZyYWdtZW50U2hhZGVyJywgJ3ZlcnRleFNoYWRlcicsICd1bmlmb3JtcycsICdjYWNoZUtleSddKTtcblxuXHRwcml2YXRlIGJhc2UgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgYmFzZU1hdGVyaWFsID0gdGhpcy5iYXNlTWF0ZXJpYWwoKTtcblx0XHRyZXR1cm4gaXMucmVmKGJhc2VNYXRlcmlhbCkgPyBiYXNlTWF0ZXJpYWwubmF0aXZlRWxlbWVudCA6IGJhc2VNYXRlcmlhbDtcblx0fSk7XG5cblx0cHJpdmF0ZSBmcmFnbWVudFNoYWRlciA9IHBpY2sodGhpcy5vcHRpb25zLCAnZnJhZ21lbnRTaGFkZXInKTtcblx0cHJpdmF0ZSB2ZXJ0ZXhTaGFkZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ZlcnRleFNoYWRlcicpO1xuXHRwcml2YXRlIHVuaWZvcm1zID0gcGljayh0aGlzLm9wdGlvbnMsICd1bmlmb3JtcycpO1xuXHRwcml2YXRlIGNhY2hlS2V5ID0gcGljayh0aGlzLm9wdGlvbnMsICdjYWNoZUtleScpO1xuXG5cdG1hdGVyaWFsID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtiYXNlLCBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyLCB1bmlmb3JtcywgY2FjaGVLZXldID0gW1xuXHRcdFx0dGhpcy5iYXNlKCksXG5cdFx0XHR0aGlzLmZyYWdtZW50U2hhZGVyKCksXG5cdFx0XHR0aGlzLnZlcnRleFNoYWRlcigpLFxuXHRcdFx0dGhpcy51bmlmb3JtcygpLFxuXHRcdFx0dGhpcy5jYWNoZUtleSgpLFxuXHRcdF07XG5cblx0XHQvLyBOT1RFOiB0aGlzIGlzIHNwZWNpZmljIHRvIGFuZ3VsYXItdGhyZWVcblx0XHRpZiAoaXMuaW5zdGFuY2UoYmFzZSkpIHtcblx0XHRcdGRlbGV0ZSAoYmFzZSBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHRkZWxldGUgKGJhc2UgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfcmVuZGVyZXJfXyddO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgQ3VzdG9tU2hhZGVyTWF0ZXJpYWwoe1xuXHRcdFx0YmFzZU1hdGVyaWFsOiBiYXNlLFxuXHRcdFx0ZnJhZ21lbnRTaGFkZXIsXG5cdFx0XHR2ZXJ0ZXhTaGFkZXIsXG5cdFx0XHR1bmlmb3Jtcyxcblx0XHRcdGNhY2hlS2V5LFxuXHRcdH0pO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsKCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gbWF0ZXJpYWwuZGlzcG9zZSgpKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input } from '@angular/core';
|
|
2
2
|
import { injectBeforeRender, NgtArgs, omit, pick } from 'angular-three';
|
|
3
3
|
import { MeshDistortMaterial } from 'angular-three-soba/vanilla-exports';
|
|
4
4
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
@@ -13,6 +13,7 @@ export class NgtsMeshDistortMaterial {
|
|
|
13
13
|
this.parameters = omit(this.options, ['speed']);
|
|
14
14
|
this.material = new MeshDistortMaterial();
|
|
15
15
|
this.speed = pick(this.options, 'speed');
|
|
16
|
+
inject(DestroyRef).onDestroy(() => this.material.dispose());
|
|
16
17
|
injectBeforeRender(({ clock }) => {
|
|
17
18
|
this.material.time = clock.getElapsedTime() * this.speed();
|
|
18
19
|
});
|
|
@@ -39,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
39
40
|
imports: [NgtArgs],
|
|
40
41
|
}]
|
|
41
42
|
}], ctorParameters: () => [] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1kaXN0b3J0LW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21hdGVyaWFscy9zcmMvbGliL21lc2gtZGlzdG9ydC1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQTBDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLG1CQUFtQixFQUFpQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFTdkQsTUFBTSxjQUFjLEdBQW1DO0lBQ3RELEtBQUssRUFBRSxDQUFDO0NBQ1IsQ0FBQztBQWNGLE1BQU0sT0FBTyx1QkFBdUI7SUFTbkM7UUFSQSxXQUFNLEdBQUcsS0FBSyxDQUFnQixVQUFVLENBQUMsQ0FBQztRQUMxQyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFM0MsYUFBUSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUU3QixVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFHM0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFNUQsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBZlcsdUJBQXVCO21HQUF2Qix1QkFBdUIsMlZBVHpCOzs7O0VBSVQsNERBR1MsT0FBTzs7NEZBRUwsdUJBQXVCO2tCQVpuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBEZXN0cm95UmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEFyZ3MsIE5ndEF0dGFjaGFibGUsIE5ndE1lc2hQaHlzaWNhbE1hdGVyaWFsLCBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBNZXNoRGlzdG9ydE1hdGVyaWFsLCBNZXNoRGlzdG9ydE1hdGVyaWFsUGFyYW1ldGVycyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS92YW5pbGxhLWV4cG9ydHMnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNNZXNoRGlzdG9ydE1hdGVyaWFsT3B0aW9uc1xuXHRleHRlbmRzIFBhcnRpYWw8TWVzaERpc3RvcnRNYXRlcmlhbFBhcmFtZXRlcnM+LFxuXHRcdFBhcnRpYWw8Tmd0TWVzaFBoeXNpY2FsTWF0ZXJpYWw+IHtcblx0c3BlZWQ6IG51bWJlcjtcblx0ZmFjdG9yPzogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxPcHRpb25zID0ge1xuXHRzcGVlZDogMSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbWVzaC1kaXN0b3J0LW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbF1cIiBbYXR0YWNoXT1cImF0dGFjaCgpXCIgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTWVzaERpc3RvcnRNYXRlcmlhbCB7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydzcGVlZCddKTtcblxuXHRtYXRlcmlhbCA9IG5ldyBNZXNoRGlzdG9ydE1hdGVyaWFsKCk7XG5cblx0cHJpdmF0ZSBzcGVlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnc3BlZWQnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHRoaXMubWF0ZXJpYWwuZGlzcG9zZSgpKTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjbG9jayB9KSA9PiB7XG5cdFx0XHR0aGlzLm1hdGVyaWFsLnRpbWUgPSBjbG9jay5nZXRFbGFwc2VkVGltZSgpICogdGhpcy5zcGVlZCgpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import {
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, Directive, effect, inject, Injector, input, signal, TemplateRef, viewChild, } from '@angular/core';
|
|
3
3
|
import { extend, getLocalState, injectBeforeRender, injectStore, omit, pick, } from 'angular-three';
|
|
4
4
|
import { getVersion, injectFBO, injectIntersect } from 'angular-three-soba/misc';
|
|
5
5
|
import { NgtsRenderTexture, NgtsRenderTextureContent } from 'angular-three-soba/staging';
|
|
@@ -55,16 +55,17 @@ export class ManagePortalScene {
|
|
|
55
55
|
}));
|
|
56
56
|
return [quad, blend];
|
|
57
57
|
});
|
|
58
|
+
effect(() => {
|
|
59
|
+
portalScene().matrixAutoUpdate = false;
|
|
60
|
+
});
|
|
58
61
|
effect(() => {
|
|
59
62
|
const [events, setEvents] = [this.events(), portalSetEvents()];
|
|
60
63
|
if (!events)
|
|
61
64
|
return;
|
|
62
65
|
setEvents({ enabled: events });
|
|
63
66
|
});
|
|
64
|
-
afterNextRender(() => {
|
|
65
|
-
portalScene().matrixAutoUpdate = false;
|
|
66
|
-
});
|
|
67
67
|
effect((onCleanup) => {
|
|
68
|
+
const priority = this.priority();
|
|
68
69
|
// we start the before render in effect because we need the priority input to be resolved
|
|
69
70
|
const sub = injectBeforeRender(({ gl, camera }) => {
|
|
70
71
|
const material = this.material();
|
|
@@ -75,9 +76,8 @@ export class ManagePortalScene {
|
|
|
75
76
|
if (!parent)
|
|
76
77
|
return;
|
|
77
78
|
const materialBlend = 'blend' in material && typeof material.blend === 'number' ? material.blend : 0;
|
|
78
|
-
const [worldUnits,
|
|
79
|
+
const [worldUnits, rootScene, scene, [quad, blend]] = [
|
|
79
80
|
this.worldUnits(),
|
|
80
|
-
this.priority(),
|
|
81
81
|
this.rootScene(),
|
|
82
82
|
portalScene(),
|
|
83
83
|
fullScreenQuad(),
|
|
@@ -111,7 +111,7 @@ export class ManagePortalScene {
|
|
|
111
111
|
gl.render(scene, camera);
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
}, { injector, priority
|
|
114
|
+
}, { injector, priority });
|
|
115
115
|
onCleanup(() => sub());
|
|
116
116
|
});
|
|
117
117
|
}
|
|
@@ -179,7 +179,7 @@ export class NgtsMeshPortalMaterial {
|
|
|
179
179
|
});
|
|
180
180
|
this.priority = signal(0);
|
|
181
181
|
extend({ MeshPortalMaterial });
|
|
182
|
-
|
|
182
|
+
effect(() => {
|
|
183
183
|
const material = this.materialRef().nativeElement;
|
|
184
184
|
const localState = getLocalState(material);
|
|
185
185
|
if (!localState)
|
|
@@ -190,7 +190,7 @@ export class NgtsMeshPortalMaterial {
|
|
|
190
190
|
// Since the ref above is not tied to a mesh directly (we're inside a material),
|
|
191
191
|
// it has to be tied to the parent mesh here
|
|
192
192
|
this.parent.set(materialParent);
|
|
193
|
-
});
|
|
193
|
+
}, { allowSignalWrites: true });
|
|
194
194
|
effect(() => {
|
|
195
195
|
const events = this.events();
|
|
196
196
|
if (!events)
|
|
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
291
291
|
imports: [NgtsRenderTexture, NgtsRenderTextureContent, ManagePortalScene, NgTemplateOutlet],
|
|
292
292
|
}]
|
|
293
293
|
}], ctorParameters: () => [] });
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1wb3J0YWwtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWF0ZXJpYWxzL3NyYy9saWIvbWVzaC1wb3J0YWwtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxNQUFNLEVBRU4sTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNOLE1BQU0sRUFDTixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFdBQVcsRUFJWCxJQUFJLEVBQ0osSUFBSSxHQUNKLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pGLE9BQU8sRUFDTixrQkFBa0IsRUFDbEIsMEJBQTBCLEdBRTFCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQVMsY0FBYyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQU83QjtRQU5BLFdBQU0sR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUMxQixjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEs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Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFTixvRkFBb0Y7WUFDcEYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBN0dXLHNCQUFzQjttR0FBdEIsc0JBQXNCLCtYQVlGLFdBQVcseUxBOUNqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QlQsNERBR1MsaUJBQWlCLCtGQUFFLHdCQUF3Qiw4RUFsTHpDLGlCQUFpQiw0SUFrTDZDLGdCQUFnQjs7NEZBRTlFLHNCQUFzQjtrQkFyQ2xDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDM0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRzaWduYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRnZXRMb2NhbFN0YXRlLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdFN0b3JlLFxuXHROZ3RBdHRhY2hhYmxlLFxuXHROZ3RDb21wdXRlRnVuY3Rpb24sXG5cdE5ndFNoYWRlck1hdGVyaWFsLFxuXHRvbWl0LFxuXHRwaWNrLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGdldFZlcnNpb24sIGluamVjdEZCTywgaW5qZWN0SW50ZXJzZWN0IH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgTmd0c1JlbmRlclRleHR1cmUsIE5ndHNSZW5kZXJUZXh0dXJlQ29udGVudCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nJztcbmltcG9ydCB7XG5cdE1lc2hQb3J0YWxNYXRlcmlhbCxcblx0bWVzaFBvcnRhbE1hdGVyaWFsQXBwbHlTREYsXG5cdE5ndE1lc2hQb3J0YWxNYXRlcmlhbCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3ZhbmlsbGEtZXhwb3J0cyc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBNZXNoLCBTY2VuZSwgU2hhZGVyTWF0ZXJpYWwgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBGdWxsU2NyZWVuUXVhZCB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgaXMgdXNlZCBpbnNpZGUgb2YgdGhlIHJlbmRlciB0ZXh0dXJlLCBoZW5jZSBoYXMgYWNjZXNzIHRvIHRoZSByZW5kZXIgdGV4dHVyZSBzdG9yZSAoYSBwb3J0YWwgc3RvcmUpXG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndHMtbWFuYWdlLXBvcnRhbC1zY2VuZScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBNYW5hZ2VQb3J0YWxTY2VuZSB7XG5cdGV2ZW50cyA9IGlucHV0PGJvb2xlYW4+KCk7XG5cdHJvb3RTY2VuZSA9IGlucHV0LnJlcXVpcmVkPFNjZW5lPigpO1xuXHRtYXRlcmlhbCA9IGlucHV0LnJlcXVpcmVkPE5ndE1lc2hQb3J0YWxNYXRlcmlhbD4oKTtcblx0cHJpb3JpdHkgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG5cdHdvcmxkVW5pdHMgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0XHRjb25zdCByZW5kZXJUZXh0dXJlU3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IHBvcnRhbFNjZW5lID0gcmVuZGVyVGV4dHVyZVN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblx0XHRjb25zdCBwb3J0YWxTZXRFdmVudHMgPSByZW5kZXJUZXh0dXJlU3RvcmUuc2VsZWN0KCdzZXRFdmVudHMnKTtcblxuXHRcdGNvbnN0IGJ1ZmZlcjEgPSBpbmplY3RGQk8oKTtcblx0XHRjb25zdCBidWZmZXIyID0gaW5qZWN0RkJPKCk7XG5cblx0XHRjb25zdCBmdWxsU2NyZWVuUXVhZCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdC8vIFRoaXMgZnVsbHNjcmVlbi1xdWFkIGlzIHVzZWQgdG8gYmxlbmQgdGhlIHR3byB0ZXh0dXJlc1xuXHRcdFx0Y29uc3QgYmxlbmQgPSB7IHZhbHVlOiAwIH07XG5cdFx0XHRjb25zdCBxdWFkID0gbmV3IEZ1bGxTY3JlZW5RdWFkKFxuXHRcdFx0XHRuZXcgU2hhZGVyTWF0ZXJpYWwoe1xuXHRcdFx0XHRcdHVuaWZvcm1zOiB7XG5cdFx0XHRcdFx0XHRhOiB7IHZhbHVlOiBidWZmZXIxKCkudGV4dHVyZSB9LFxuXHRcdFx0XHRcdFx0YjogeyB2YWx1ZTogYnVmZmVyMigpLnRleHR1cmUgfSxcblx0XHRcdFx0XHRcdGJsZW5kLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dmVydGV4U2hhZGVyOiAvKmdsc2wqLyBgXG5cdFx0ICAgICAgdmFyeWluZyB2ZWMyIHZVdjtcblx0XHQgICAgICB2b2lkIG1haW4oKSB7XG5cdFx0ICAgICAgICB2VXYgPSB1djtcblx0XHQgICAgICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblx0XHQgICAgICB9YCxcblx0XHRcdFx0XHRmcmFnbWVudFNoYWRlcjogLypnbHNsKi8gYFxuXHRcdCAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGE7XG5cdFx0ICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgYjtcblx0XHQgICAgICB1bmlmb3JtIGZsb2F0IGJsZW5kO1xuXHRcdCAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG5cdFx0ICAgICAgI2luY2x1ZGUgPHBhY2tpbmc+XG5cdFx0ICAgICAgdm9pZCBtYWluKCkge1xuXHRcdCAgICAgICAgdmVjNCB0YSA9IHRleHR1cmUyRChhLCB2VXYpO1xuXHRcdCAgICAgICAgdmVjNCB0YiA9IHRleHR1cmUyRChiLCB2VXYpO1xuXHRcdCAgICAgICAgZ2xfRnJhZ0NvbG9yID0gbWl4KHRiLCB0YSwgYmxlbmQpO1xuXHRcdCAgICAgICAgI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHRcdCAgICAgICAgI2luY2x1ZGUgPCR7Z2V0VmVyc2lvbigpID49IDE1NCA/ICdjb2xvcnNwYWNlX2ZyYWdtZW50JyA6ICdlbmNvZGluZ3NfZnJhZ21lbnQnfT5cblx0XHQgICAgICB9YCxcblx0XHRcdFx0fSksXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIFtxdWFkLCBibGVuZF0gYXMgY29uc3Q7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW2V2ZW50cywgc2V0RXZlbnRzXSA9IFt0aGlzLmV2ZW50cygpLCBwb3J0YWxTZXRFdmVudHMoKV07XG5cdFx0XHRpZiAoIWV2ZW50cykgcmV0dXJuO1xuXHRcdFx0c2V0RXZlbnRzKHsgZW5hYmxlZDogZXZlbnRzIH0pO1xuXHRcdH0pO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHBvcnRhbFNjZW5lKCkubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdC8vIHdlIHN0YXJ0IHRoZSBiZWZvcmUgcmVuZGVyIGluIGVmZmVjdCBiZWNhdXNlIHdlIG5lZWQgdGhlIHByaW9yaXR5IGlucHV0IHRvIGJlIHJlc29sdmVkXG5cdFx0XHRjb25zdCBzdWIgPSBpbmplY3RCZWZvcmVSZW5kZXIoXG5cdFx0XHRcdCh7IGdsLCBjYW1lcmEgfSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbCgpO1xuXG5cdFx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobWF0ZXJpYWwpO1xuXHRcdFx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Y29uc3QgcGFyZW50ID0gbG9jYWxTdGF0ZS5wYXJlbnQoKTtcblx0XHRcdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Y29uc3QgbWF0ZXJpYWxCbGVuZCA9ICdibGVuZCcgaW4gbWF0ZXJpYWwgJiYgdHlwZW9mIG1hdGVyaWFsLmJsZW5kID09PSAnbnVtYmVyJyA/IG1hdGVyaWFsLmJsZW5kIDogMDtcblx0XHRcdFx0XHRjb25zdCBbd29ybGRVbml0cywgcHJpb3JpdHksIHJvb3RTY2VuZSwgc2NlbmUsIFtxdWFkLCBibGVuZF1dID0gW1xuXHRcdFx0XHRcdFx0dGhpcy53b3JsZFVuaXRzKCksXG5cdFx0XHRcdFx0XHR0aGlzLnByaW9yaXR5KCksXG5cdFx0XHRcdFx0XHR0aGlzLnJvb3RTY2VuZSgpLFxuXHRcdFx0XHRcdFx0cG9ydGFsU2NlbmUoKSxcblx0XHRcdFx0XHRcdGZ1bGxTY3JlZW5RdWFkKCksXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHQvLyBNb3ZlIHBvcnRhbCBjb250ZW50cyBhbG9uZyB3aXRoIHRoZSBwYXJlbnQgaWYgd29ybGRVbml0cyBpcyB0cnVlXG5cdFx0XHRcdFx0aWYgKCF3b3JsZFVuaXRzKSB7XG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgcG9ydGFsIHJlbmRlcnMgZXhjbHVzaXZlbHkgdGhlIG9yaWdpbmFsIHNjZW5lIG5lZWRzIHRvIGJlIHVwZGF0ZWRcblx0XHRcdFx0XHRcdGlmIChwcmlvcml0eSAmJiBtYXRlcmlhbEJsZW5kID09PSAxKSBwYXJlbnQudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0c2NlbmUubWF0cml4V29ybGQuY29weShwYXJlbnQubWF0cml4V29ybGQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzY2VuZS5tYXRyaXhXb3JsZC5pZGVudGl0eSgpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFRoaXMgYml0IGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZSBwb3J0YWwgaXMgYmxlbmRlZCwgbm93IGl0IGhhcyBhIHJlbmRlci1wcmlvcml0eVxuXHRcdFx0XHRcdC8vIGFuZCB3aWxsIHRha2Ugb3ZlciB0aGUgcmVuZGVyIGxvb3Bcblx0XHRcdFx0XHRpZiAocHJpb3JpdHkpIHtcblx0XHRcdFx0XHRcdGlmIChtYXRlcmlhbEJsZW5kID4gMCAmJiBtYXRlcmlhbEJsZW5kIDwgMSkge1xuXHRcdFx0XHRcdFx0XHQvLyBJZiBibGVuZCBpcyBvbmdvaW5nICg+IDAgYW5kIDwgMSkgdGhlbiB3ZSBuZWVkIHRvIHJlbmRlciBib3RoIHRoZSByb290IHNjZW5lXG5cdFx0XHRcdFx0XHRcdC8vIGFuZCB0aGUgcG9ydGFsIHNjZW5lLCBib3RoIHdpbGwgdGhlbiBiZSBtaXhlZCBpbiB0aGUgcXVhZCBmcm9tIGFib3ZlXG5cdFx0XHRcdFx0XHRcdGJsZW5kLnZhbHVlID0gbWF0ZXJpYWxCbGVuZDtcblx0XHRcdFx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KGJ1ZmZlcjEoKSk7XG5cdFx0XHRcdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KGJ1ZmZlcjIoKSk7XG5cdFx0XHRcdFx0XHRcdGdsLnJlbmRlcihyb290U2NlbmUsIGNhbWVyYSk7XG5cdFx0XHRcdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChudWxsKTtcblx0XHRcdFx0XHRcdFx0cXVhZC5yZW5kZXIoZ2wpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChtYXRlcmlhbEJsZW5kID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdC8vIEhvd2V2ZXIgaWYgYmxlbmQgaXMgMSB3ZSBvbmx5IG5lZWQgdG8gcmVuZGVyIHRoZSBwb3J0YWwgc2NlbmVcblx0XHRcdFx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0eyBpbmplY3RvciwgcHJpb3JpdHk6IHRoaXMucHJpb3JpdHkoKSB9LFxuXHRcdFx0KTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBzdWIoKSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzTWVzaFBvcnRhbE1hdGVyaWFsT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0U2hhZGVyTWF0ZXJpYWw+IHtcblx0LyoqIE1peCB0aGUgcG9ydGFscyBvd24gc2NlbmUgd2l0aCB0aGUgd29ybGQgc2NlbmUsIDAgPSB3b3JsZCBzY2VuZSByZW5kZXIsXG5cdCAqICAwLjUgPSBib3RoIHNjZW5lcyByZW5kZXIsIDEgPSBwb3J0YWwgc2NlbmUgcmVuZGVycywgZGVmYXVsdHMgdG8gMC4gICAqL1xuXHRibGVuZDogbnVtYmVyO1xuXHQvKiogRWRnZSBmYWRlIGJsdXIsIDAgPSBubyBibHVyIChkZWZhdWx0KSAqL1xuXHRibHVyOiBudW1iZXI7XG5cdC8qKiBTREYgcmVzb2x1dGlvbiwgdGhlIHNtYWxsZXIgdGhlIGZhc3RlciBpcyB0aGUgc3RhcnQtdXAgdGltZSAoZGVmYXVsdDogNTEyKSAqL1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdC8qKiBCeSBkZWZhdWx0IHBvcnRhbHMgdXNlIHJlbGF0aXZlIGNvb3JkaW5hdGVzLCBjb250ZW50cyBhcmUgYWZmZWN0cyBieSB0aGUgbG9jYWwgbWF0cml4IHRyYW5zZm9ybSAqL1xuXHR3b3JsZFVuaXRzOiBib29sZWFuO1xuXHQvKiogT3B0aW9uYWwgZXZlbnQgcHJpb3JpdHksIGRlZmF1bHRzIHRvIDAgKi9cblx0ZXZlbnRQcmlvcml0eTogbnVtYmVyO1xuXHQvKiogT3B0aW9uYWwgcmVuZGVyIHByaW9yaXR5LCBkZWZhdWx0cyB0byAwICovXG5cdHJlbmRlclByaW9yaXR5OiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbGx5IGRpYWJsZSBldmVudHMgaW5zaWRlIHRoZSBwb3J0YWwsIGRlZmF1bHRzIHRvIGZhbHNlICovXG5cdGV2ZW50czogYm9vbGVhbjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNNZXNoUG9ydGFsTWF0ZXJpYWxPcHRpb25zID0ge1xuXHRibGVuZDogMCxcblx0Ymx1cjogMCxcblx0cmVzb2x1dGlvbjogNTEyLFxuXHR3b3JsZFVuaXRzOiBmYWxzZSxcblx0ZXZlbnRQcmlvcml0eTogMCxcblx0cmVuZGVyUHJpb3JpdHk6IDAsXG5cdGV2ZW50czogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLW1lc2gtcG9ydGFsLW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2gtcG9ydGFsLW1hdGVyaWFsXG5cdFx0XHQjbWF0ZXJpYWxcblx0XHRcdFthdHRhY2hdPVwiYXR0YWNoKClcIlxuXHRcdFx0W2JsdXJdPVwiYmx1cigpXCJcblx0XHRcdFtibGVuZF09XCIwXCJcblx0XHRcdFtyZXNvbHV0aW9uXT1cIm1hdGVyaWFsUmVzb2x1dGlvbigpXCJcblx0XHRcdFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiXG5cdFx0PlxuXHRcdFx0PG5ndHMtcmVuZGVyLXRleHR1cmVcblx0XHRcdFx0W29wdGlvbnNdPVwie1xuXHRcdFx0XHRcdGZyYW1lczogcmVuZGVyVGV4dHVyZUZyYW1lcygpLFxuXHRcdFx0XHRcdGV2ZW50UHJpb3JpdHk6IGV2ZW50UHJpb3JpdHkoKSxcblx0XHRcdFx0XHRyZW5kZXJQcmlvcml0eTogcmVuZGVyUHJpb3JpdHkoKSxcblx0XHRcdFx0XHRjb21wdXRlOiByZW5kZXJUZXh0dXJlQ29tcHV0ZSgpLFxuXHRcdFx0XHR9XCJcblx0XHRcdD5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIHJlbmRlclRleHR1cmVDb250ZW50IGxldC1pbmplY3Rvcj1cImluamVjdG9yXCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnQoKTsgaW5qZWN0b3I6IGluamVjdG9yXCIgLz5cblx0XHRcdFx0XHQ8bmd0cy1tYW5hZ2UtcG9ydGFsLXNjZW5lXG5cdFx0XHRcdFx0XHRbZXZlbnRzXT1cImV2ZW50cygpXCJcblx0XHRcdFx0XHRcdFtyb290U2NlbmVdPVwicm9vdFNjZW5lKClcIlxuXHRcdFx0XHRcdFx0W3ByaW9yaXR5XT1cInByaW9yaXR5KClcIlxuXHRcdFx0XHRcdFx0W21hdGVyaWFsXT1cIm1hdGVyaWFsXCJcblx0XHRcdFx0XHRcdFt3b3JsZFVuaXRzXT1cIndvcmxkVW5pdHMoKVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvbmd0cy1yZW5kZXItdGV4dHVyZT5cblx0XHQ8L25ndC1tZXNoLXBvcnRhbC1tYXRlcmlhbD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHNSZW5kZXJUZXh0dXJlLCBOZ3RzUmVuZGVyVGV4dHVyZUNvbnRlbnQsIE1hbmFnZVBvcnRhbFNjZW5lLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c01lc2hQb3J0YWxNYXRlcmlhbCB7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydibHVyJywgJ3Jlc29sdXRpb24nLCAnd29ybGRVbml0cycsICdldmVudFByaW9yaXR5JywgJ3JlbmRlclByaW9yaXR5JywgJ2V2ZW50cyddKTtcblxuXHRibHVyID0gcGljayh0aGlzLm9wdGlvbnMsICdibHVyJyk7XG5cdGV2ZW50UHJpb3JpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2V2ZW50UHJpb3JpdHknKTtcblx0cmVuZGVyUHJpb3JpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JlbmRlclByaW9yaXR5Jyk7XG5cdGV2ZW50cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZXZlbnRzJyk7XG5cdHdvcmxkVW5pdHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3dvcmxkVW5pdHMnKTtcblxuXHRtYXRlcmlhbFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEluc3RhbmNlVHlwZTx0eXBlb2YgTWVzaFBvcnRhbE1hdGVyaWFsPj4+KCdtYXRlcmlhbCcpO1xuXHRjb250ZW50ID0gY29udGVudENoaWxkLnJlcXVpcmVkKFRlbXBsYXRlUmVmKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0cHJpdmF0ZSB2aWV3cG9ydCA9IHRoaXMuc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcpO1xuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cdHByaXZhdGUgc2V0RXZlbnRzID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NldEV2ZW50cycpO1xuXHRyb290U2NlbmUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblxuXHRtYXRlcmlhbFJlc29sdXRpb24gPSBjb21wdXRlZCgoKSA9PiBbXG5cdFx0dGhpcy5zaXplKCkud2lkdGggKiB0aGlzLnZpZXdwb3J0KCkuZHByLFxuXHRcdHRoaXMuc2l6ZSgpLmhlaWdodCAqIHRoaXMudmlld3BvcnQoKS5kcHIsXG5cdF0pO1xuXHRwcml2YXRlIHJlc29sdXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ3Jlc29sdXRpb24nKTtcblxuXHRwcml2YXRlIHBhcmVudCA9IHNpZ25hbDxNZXNoIHwgbnVsbD4obnVsbCk7XG5cdHByaXZhdGUgdmlzaWJsZSA9IGluamVjdEludGVyc2VjdCh0aGlzLnBhcmVudCwgeyBzb3VyY2U6IHNpZ25hbCh0cnVlKSB9KTtcblxuXHRyZW5kZXJUZXh0dXJlRnJhbWVzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMudmlzaWJsZSgpID8gSW5maW5pdHkgOiAwKSk7XG5cdHJlbmRlclRleHR1cmVDb21wdXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtwYXJlbnQsIG1hdGVyaWFsXSA9IFt0aGlzLnBhcmVudCgpLCB0aGlzLm1hdGVyaWFsUmVmKCkubmF0aXZlRWxlbWVudF07XG5cblx0XHRjb25zdCBjb21wdXRlRm46ICguLi5hcmdzOiBQYXJhbWV0ZXJzPE5ndENvbXB1dGVGdW5jdGlvbj4pID0+IGZhbHNlIHwgdW5kZWZpbmVkID0gKGV2ZW50LCBzdGF0ZSkgPT4ge1xuXHRcdFx0aWYgKCFwYXJlbnQpIHJldHVybiBmYWxzZTtcblx0XHRcdHN0YXRlLnNuYXBzaG90LnBvaW50ZXIuc2V0KFxuXHRcdFx0XHQoZXZlbnQub2Zmc2V0WCAvIHN0YXRlLnNuYXBzaG90LnNpemUud2lkdGgpICogMiAtIDEsXG5cdFx0XHRcdC0oZXZlbnQub2Zmc2V0WSAvIHN0YXRlLnNuYXBzaG90LnNpemUuaGVpZ2h0KSAqIDIgKyAxLFxuXHRcdFx0KTtcblx0XHRcdHN0YXRlLnNuYXBzaG90LnJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKHN0YXRlLnNuYXBzaG90LnBvaW50ZXIsIHN0YXRlLnNuYXBzaG90LmNhbWVyYSk7XG5cblx0XHRcdGlmICgnYmxlbmQnIGluIG1hdGVyaWFsICYmIG1hdGVyaWFsLmJsZW5kID09PSAwKSB7XG5cdFx0XHRcdC8vIFdlIHJ1biBhIHF1aWNrIGNoZWNrIGFnYWluc3QgdGhlIHBhcmVudCwgaWYgaXQgaXNuJ3QgaGl0IHRoZXJlJ3Mgbm8gbmVlZCB0byByYXljYXN0IGF0IGFsbFxuXHRcdFx0XHRjb25zdCBbaW50ZXJzZWN0aW9uXSA9IHN0YXRlLnNuYXBzaG90LnJheWNhc3Rlci5pbnRlcnNlY3RPYmplY3QocGFyZW50KTtcblx0XHRcdFx0aWYgKCFpbnRlcnNlY3Rpb24pIHtcblx0XHRcdFx0XHQvLyBDYW5jZWwgb3V0IHRoZSByYXljYXN0IGNhbWVyYSBpZiB0aGUgcGFyZW50IG1lc2ggaXNuJ3QgaGl0XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihzdGF0ZS5zbmFwc2hvdC5yYXljYXN0ZXIsIHsgY2FtZXJhOiB1bmRlZmluZWQgfSk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9O1xuXG5cdFx0cmV0dXJuIGNvbXB1dGVGbjtcblx0fSk7XG5cblx0cHJpb3JpdHkgPSBzaWduYWwoMCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTWVzaFBvcnRhbE1hdGVyaWFsIH0pO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKG1hdGVyaWFsKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBtYXRlcmlhbFBhcmVudCA9IGxvY2FsU3RhdGUucGFyZW50KCk7XG5cdFx0XHRpZiAoIW1hdGVyaWFsUGFyZW50IHx8ICEobWF0ZXJpYWxQYXJlbnQgaW5zdGFuY2VvZiBNZXNoKSkgcmV0dXJuO1xuXG5cdFx0XHQvLyBTaW5jZSB0aGUgcmVmIGFib3ZlIGlzIG5vdCB0aWVkIHRvIGEgbWVzaCBkaXJlY3RseSAod2UncmUgaW5zaWRlIGEgbWF0ZXJpYWwpLFxuXHRcdFx0Ly8gaXQgaGFzIHRvIGJlIHRpZWQgdG8gdGhlIHBhcmVudCBtZXNoIGhlcmVcblx0XHRcdHRoaXMucGFyZW50LnNldChtYXRlcmlhbFBhcmVudCk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZXZlbnRzID0gdGhpcy5ldmVudHMoKTtcblx0XHRcdGlmICghZXZlbnRzKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IHNldEV2ZW50cyA9IHRoaXMuc2V0RXZlbnRzKCk7XG5cdFx0XHRzZXRFdmVudHMoeyBlbmFibGVkOiAhZXZlbnRzIH0pO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFttYXRlcmlhbCwgcGFyZW50XSA9IFt0aGlzLm1hdGVyaWFsUmVmKCkubmF0aXZlRWxlbWVudCwgdGhpcy5wYXJlbnQoKV07XG5cdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBbcmVzb2x1dGlvbiwgYmx1ciwgZ2xdID0gW3RoaXMucmVzb2x1dGlvbigpLCB0aGlzLmJsdXIoKSwgdGhpcy5nbCgpXTtcblxuXHRcdFx0Ly8gYXBwbHkgdGhlIFNERiBtYXNrIG9uY2Vcblx0XHRcdGlmIChibHVyICYmIG1hdGVyaWFsLnNkZiA9PSBudWxsKSB7XG5cdFx0XHRcdG1lc2hQb3J0YWxNYXRlcmlhbEFwcGx5U0RGKHBhcmVudCwgcmVzb2x1dGlvbiwgZ2wpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRjb25zdCBwcmlvcml0eSA9XG5cdFx0XHRcdCdibGVuZCcgaW4gbWF0ZXJpYWwgJiYgdHlwZW9mIG1hdGVyaWFsLmJsZW5kID09PSAnbnVtYmVyJyAmJiBtYXRlcmlhbC5ibGVuZCA+IDBcblx0XHRcdFx0XHQ/IE1hdGgubWF4KDEsIHRoaXMucmVuZGVyUHJpb3JpdHkoKSlcblx0XHRcdFx0XHQ6IDA7XG5cblx0XHRcdC8vIElmIGJsZW5kIGlzID4gMCB0aGVuIHRoZSBwb3J0YWwgaXMgYmVpbmcgZW50ZXJlZCwgdGhlIHJlbmRlci1wcmlvcml0eSBtdXN0IGNoYW5nZVxuXHRcdFx0aWYgKHRoaXMucHJpb3JpdHkoKSAhPT0gcHJpb3JpdHkpIHtcblx0XHRcdFx0dGhpcy5wcmlvcml0eS5zZXQocHJpb3JpdHkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1wb3J0YWwtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWF0ZXJpYWxzL3NyYy9saWIvbWVzaC1wb3J0YWwtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sTUFBTSxFQUNOLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsV0FBVyxFQUlYLElBQUksRUFDSixJQUFJLEdBQ0osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekYsT0FBTyxFQUNOLGtCQUFrQixFQUNsQiwwQkFBMEIsR0FFMUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBUyxjQUFjLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFOUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWlCO0lBTzdCO1FBTkEsV0FBTSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzFCLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFTLENBQUM7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LENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFTixvRkFBb0Y7WUFDcEYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBaEhXLHNCQUFzQjttR0FBdEIsc0JBQXNCLCtYQVlGLFdBQVcseUxBOUNqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QlQsNERBR1MsaUJBQWlCLCtGQUFFLHdCQUF3Qiw4RUFuTHpDLGlCQUFpQiw0SUFtTDZDLGdCQUFnQjs7NEZBRTlFLHNCQUFzQjtrQkFyQ2xDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDM0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRjb250ZW50Q2hpbGQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERpcmVjdGl2ZSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHRUZW1wbGF0ZVJlZixcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGV4dGVuZCxcblx0Z2V0TG9jYWxTdGF0ZSxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3RTdG9yZSxcblx0Tmd0QXR0YWNoYWJsZSxcblx0Tmd0Q29tcHV0ZUZ1bmN0aW9uLFxuXHROZ3RTaGFkZXJNYXRlcmlhbCxcblx0b21pdCxcblx0cGljayxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBnZXRWZXJzaW9uLCBpbmplY3RGQk8sIGluamVjdEludGVyc2VjdCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9taXNjJztcbmltcG9ydCB7IE5ndHNSZW5kZXJUZXh0dXJlLCBOZ3RzUmVuZGVyVGV4dHVyZUNvbnRlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZyc7XG5pbXBvcnQge1xuXHRNZXNoUG9ydGFsTWF0ZXJpYWwsXG5cdG1lc2hQb3J0YWxNYXRlcmlhbEFwcGx5U0RGLFxuXHROZ3RNZXNoUG9ydGFsTWF0ZXJpYWwsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS92YW5pbGxhLWV4cG9ydHMnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgTWVzaCwgU2NlbmUsIFNoYWRlck1hdGVyaWFsIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgRnVsbFNjcmVlblF1YWQgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIHVzZWQgaW5zaWRlIG9mIHRoZSByZW5kZXIgdGV4dHVyZSwgaGVuY2UgaGFzIGFjY2VzcyB0byB0aGUgcmVuZGVyIHRleHR1cmUgc3RvcmUgKGEgcG9ydGFsIHN0b3JlKVxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZ3RzLW1hbmFnZS1wb3J0YWwtc2NlbmUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTWFuYWdlUG9ydGFsU2NlbmUge1xuXHRldmVudHMgPSBpbnB1dDxib29sZWFuPigpO1xuXHRyb290U2NlbmUgPSBpbnB1dC5yZXF1aXJlZDxTY2VuZT4oKTtcblx0bWF0ZXJpYWwgPSBpbnB1dC5yZXF1aXJlZDxOZ3RNZXNoUG9ydGFsTWF0ZXJpYWw+KCk7XG5cdHByaW9yaXR5ID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuXHR3b3JsZFVuaXRzID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdFx0Y29uc3QgcmVuZGVyVGV4dHVyZVN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBwb3J0YWxTY2VuZSA9IHJlbmRlclRleHR1cmVTdG9yZS5zZWxlY3QoJ3NjZW5lJyk7XG5cdFx0Y29uc3QgcG9ydGFsU2V0RXZlbnRzID0gcmVuZGVyVGV4dHVyZVN0b3JlLnNlbGVjdCgnc2V0RXZlbnRzJyk7XG5cblx0XHRjb25zdCBidWZmZXIxID0gaW5qZWN0RkJPKCk7XG5cdFx0Y29uc3QgYnVmZmVyMiA9IGluamVjdEZCTygpO1xuXG5cdFx0Y29uc3QgZnVsbFNjcmVlblF1YWQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHQvLyBUaGlzIGZ1bGxzY3JlZW4tcXVhZCBpcyB1c2VkIHRvIGJsZW5kIHRoZSB0d28gdGV4dHVyZXNcblx0XHRcdGNvbnN0IGJsZW5kID0geyB2YWx1ZTogMCB9O1xuXHRcdFx0Y29uc3QgcXVhZCA9IG5ldyBGdWxsU2NyZWVuUXVhZChcblx0XHRcdFx0bmV3IFNoYWRlck1hdGVyaWFsKHtcblx0XHRcdFx0XHR1bmlmb3Jtczoge1xuXHRcdFx0XHRcdFx0YTogeyB2YWx1ZTogYnVmZmVyMSgpLnRleHR1cmUgfSxcblx0XHRcdFx0XHRcdGI6IHsgdmFsdWU6IGJ1ZmZlcjIoKS50ZXh0dXJlIH0sXG5cdFx0XHRcdFx0XHRibGVuZCxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHZlcnRleFNoYWRlcjogLypnbHNsKi8gYFxuXHRcdCAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG5cdFx0ICAgICAgdm9pZCBtYWluKCkge1xuXHRcdCAgICAgICAgdlV2ID0gdXY7XG5cdFx0ICAgICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG5cdFx0ICAgICAgfWAsXG5cdFx0XHRcdFx0ZnJhZ21lbnRTaGFkZXI6IC8qZ2xzbCovIGBcblx0XHQgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBhO1xuXHRcdCAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGI7XG5cdFx0ICAgICAgdW5pZm9ybSBmbG9hdCBibGVuZDtcblx0XHQgICAgICB2YXJ5aW5nIHZlYzIgdlV2O1xuXHRcdCAgICAgICNpbmNsdWRlIDxwYWNraW5nPlxuXHRcdCAgICAgIHZvaWQgbWFpbigpIHtcblx0XHQgICAgICAgIHZlYzQgdGEgPSB0ZXh0dXJlMkQoYSwgdlV2KTtcblx0XHQgICAgICAgIHZlYzQgdGIgPSB0ZXh0dXJlMkQoYiwgdlV2KTtcblx0XHQgICAgICAgIGdsX0ZyYWdDb2xvciA9IG1peCh0YiwgdGEsIGJsZW5kKTtcblx0XHQgICAgICAgICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0XHQgICAgICAgICNpbmNsdWRlIDwke2dldFZlcnNpb24oKSA+PSAxNTQgPyAnY29sb3JzcGFjZV9mcmFnbWVudCcgOiAnZW5jb2RpbmdzX2ZyYWdtZW50J30+XG5cdFx0ICAgICAgfWAsXG5cdFx0XHRcdH0pLFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBbcXVhZCwgYmxlbmRdIGFzIGNvbnN0O1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHBvcnRhbFNjZW5lKCkubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtldmVudHMsIHNldEV2ZW50c10gPSBbdGhpcy5ldmVudHMoKSwgcG9ydGFsU2V0RXZlbnRzKCldO1xuXHRcdFx0aWYgKCFldmVudHMpIHJldHVybjtcblx0XHRcdHNldEV2ZW50cyh7IGVuYWJsZWQ6IGV2ZW50cyB9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBwcmlvcml0eSA9IHRoaXMucHJpb3JpdHkoKTtcblxuXHRcdFx0Ly8gd2Ugc3RhcnQgdGhlIGJlZm9yZSByZW5kZXIgaW4gZWZmZWN0IGJlY2F1c2Ugd2UgbmVlZCB0aGUgcHJpb3JpdHkgaW5wdXQgdG8gYmUgcmVzb2x2ZWRcblx0XHRcdGNvbnN0IHN1YiA9IGluamVjdEJlZm9yZVJlbmRlcihcblx0XHRcdFx0KHsgZ2wsIGNhbWVyYSB9KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsKCk7XG5cblx0XHRcdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShtYXRlcmlhbCk7XG5cdFx0XHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdFx0XHRjb25zdCBwYXJlbnQgPSBsb2NhbFN0YXRlLnBhcmVudCgpO1xuXHRcdFx0XHRcdGlmICghcGFyZW50KSByZXR1cm47XG5cblx0XHRcdFx0XHRjb25zdCBtYXRlcmlhbEJsZW5kID0gJ2JsZW5kJyBpbiBtYXRlcmlhbCAmJiB0eXBlb2YgbWF0ZXJpYWwuYmxlbmQgPT09ICdudW1iZXInID8gbWF0ZXJpYWwuYmxlbmQgOiAwO1xuXHRcdFx0XHRcdGNvbnN0IFt3b3JsZFVuaXRzLCByb290U2NlbmUsIHNjZW5lLCBbcXVhZCwgYmxlbmRdXSA9IFtcblx0XHRcdFx0XHRcdHRoaXMud29ybGRVbml0cygpLFxuXHRcdFx0XHRcdFx0dGhpcy5yb290U2NlbmUoKSxcblx0XHRcdFx0XHRcdHBvcnRhbFNjZW5lKCksXG5cdFx0XHRcdFx0XHRmdWxsU2NyZWVuUXVhZCgpLFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0Ly8gTW92ZSBwb3J0YWwgY29udGVudHMgYWxvbmcgd2l0aCB0aGUgcGFyZW50IGlmIHdvcmxkVW5pdHMgaXMgdHJ1ZVxuXHRcdFx0XHRcdGlmICghd29ybGRVbml0cykge1xuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHBvcnRhbCByZW5kZXJzIGV4Y2x1c2l2ZWx5IHRoZSBvcmlnaW5hbCBzY2VuZSBuZWVkcyB0byBiZSB1cGRhdGVkXG5cdFx0XHRcdFx0XHRpZiAocHJpb3JpdHkgJiYgbWF0ZXJpYWxCbGVuZCA9PT0gMSkgcGFyZW50LnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0XHRcdHNjZW5lLm1hdHJpeFdvcmxkLmNvcHkocGFyZW50Lm1hdHJpeFdvcmxkKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c2NlbmUubWF0cml4V29ybGQuaWRlbnRpdHkoKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBUaGlzIGJpdCBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGUgcG9ydGFsIGlzIGJsZW5kZWQsIG5vdyBpdCBoYXMgYSByZW5kZXItcHJpb3JpdHlcblx0XHRcdFx0XHQvLyBhbmQgd2lsbCB0YWtlIG92ZXIgdGhlIHJlbmRlciBsb29wXG5cdFx0XHRcdFx0aWYgKHByaW9yaXR5KSB7XG5cdFx0XHRcdFx0XHRpZiAobWF0ZXJpYWxCbGVuZCA+IDAgJiYgbWF0ZXJpYWxCbGVuZCA8IDEpIHtcblx0XHRcdFx0XHRcdFx0Ly8gSWYgYmxlbmQgaXMgb25nb2luZyAoPiAwIGFuZCA8IDEpIHRoZW4gd2UgbmVlZCB0byByZW5kZXIgYm90aCB0aGUgcm9vdCBzY2VuZVxuXHRcdFx0XHRcdFx0XHQvLyBhbmQgdGhlIHBvcnRhbCBzY2VuZSwgYm90aCB3aWxsIHRoZW4gYmUgbWl4ZWQgaW4gdGhlIHF1YWQgZnJvbSBhYm92ZVxuXHRcdFx0XHRcdFx0XHRibGVuZC52YWx1ZSA9IG1hdGVyaWFsQmxlbmQ7XG5cdFx0XHRcdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChidWZmZXIxKCkpO1xuXHRcdFx0XHRcdFx0XHRnbC5yZW5kZXIoc2NlbmUsIGNhbWVyYSk7XG5cdFx0XHRcdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChidWZmZXIyKCkpO1xuXHRcdFx0XHRcdFx0XHRnbC5yZW5kZXIocm9vdFNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0XHRcdFx0XHRcdHF1YWQucmVuZGVyKGdsKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAobWF0ZXJpYWxCbGVuZCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0XHQvLyBIb3dldmVyIGlmIGJsZW5kIGlzIDEgd2Ugb25seSBuZWVkIHRvIHJlbmRlciB0aGUgcG9ydGFsIHNjZW5lXG5cdFx0XHRcdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgaW5qZWN0b3IsIHByaW9yaXR5IH0sXG5cdFx0XHQpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IHN1YigpKTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNNZXNoUG9ydGFsTWF0ZXJpYWxPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RTaGFkZXJNYXRlcmlhbD4ge1xuXHQvKiogTWl4IHRoZSBwb3J0YWxzIG93biBzY2VuZSB3aXRoIHRoZSB3b3JsZCBzY2VuZSwgMCA9IHdvcmxkIHNjZW5lIHJlbmRlcixcblx0ICogIDAuNSA9IGJvdGggc2NlbmVzIHJlbmRlciwgMSA9IHBvcnRhbCBzY2VuZSByZW5kZXJzLCBkZWZhdWx0cyB0byAwLiAgICovXG5cdGJsZW5kOiBudW1iZXI7XG5cdC8qKiBFZGdlIGZhZGUgYmx1ciwgMCA9IG5vIGJsdXIgKGRlZmF1bHQpICovXG5cdGJsdXI6IG51bWJlcjtcblx0LyoqIFNERiByZXNvbHV0aW9uLCB0aGUgc21hbGxlciB0aGUgZmFzdGVyIGlzIHRoZSBzdGFydC11cCB0aW1lIChkZWZhdWx0OiA1MTIpICovXG5cdHJlc29sdXRpb246IG51bWJlcjtcblx0LyoqIEJ5IGRlZmF1bHQgcG9ydGFscyB1c2UgcmVsYXRpdmUgY29vcmRpbmF0ZXMsIGNvbnRlbnRzIGFyZSBhZmZlY3RzIGJ5IHRoZSBsb2NhbCBtYXRyaXggdHJhbnNmb3JtICovXG5cdHdvcmxkVW5pdHM6IGJvb2xlYW47XG5cdC8qKiBPcHRpb25hbCBldmVudCBwcmlvcml0eSwgZGVmYXVsdHMgdG8gMCAqL1xuXHRldmVudFByaW9yaXR5OiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCByZW5kZXIgcHJpb3JpdHksIGRlZmF1bHRzIHRvIDAgKi9cblx0cmVuZGVyUHJpb3JpdHk6IG51bWJlcjtcblx0LyoqIE9wdGlvbmFsbHkgZGlhYmxlIGV2ZW50cyBpbnNpZGUgdGhlIHBvcnRhbCwgZGVmYXVsdHMgdG8gZmFsc2UgKi9cblx0ZXZlbnRzOiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c01lc2hQb3J0YWxNYXRlcmlhbE9wdGlvbnMgPSB7XG5cdGJsZW5kOiAwLFxuXHRibHVyOiAwLFxuXHRyZXNvbHV0aW9uOiA1MTIsXG5cdHdvcmxkVW5pdHM6IGZhbHNlLFxuXHRldmVudFByaW9yaXR5OiAwLFxuXHRyZW5kZXJQcmlvcml0eTogMCxcblx0ZXZlbnRzOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbWVzaC1wb3J0YWwtbWF0ZXJpYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaC1wb3J0YWwtbWF0ZXJpYWxcblx0XHRcdCNtYXRlcmlhbFxuXHRcdFx0W2F0dGFjaF09XCJhdHRhY2goKVwiXG5cdFx0XHRbYmx1cl09XCJibHVyKClcIlxuXHRcdFx0W2JsZW5kXT1cIjBcIlxuXHRcdFx0W3Jlc29sdXRpb25dPVwibWF0ZXJpYWxSZXNvbHV0aW9uKClcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHQ+XG5cdFx0XHQ8bmd0cy1yZW5kZXItdGV4dHVyZVxuXHRcdFx0XHRbb3B0aW9uc109XCJ7XG5cdFx0XHRcdFx0ZnJhbWVzOiByZW5kZXJUZXh0dXJlRnJhbWVzKCksXG5cdFx0XHRcdFx0ZXZlbnRQcmlvcml0eTogZXZlbnRQcmlvcml0eSgpLFxuXHRcdFx0XHRcdHJlbmRlclByaW9yaXR5OiByZW5kZXJQcmlvcml0eSgpLFxuXHRcdFx0XHRcdGNvbXB1dGU6IHJlbmRlclRleHR1cmVDb21wdXRlKCksXG5cdFx0XHRcdH1cIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgcmVuZGVyVGV4dHVyZUNvbnRlbnQgbGV0LWluamVjdG9yPVwiaW5qZWN0b3JcIj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudCgpOyBpbmplY3RvcjogaW5qZWN0b3JcIiAvPlxuXHRcdFx0XHRcdDxuZ3RzLW1hbmFnZS1wb3J0YWwtc2NlbmVcblx0XHRcdFx0XHRcdFtldmVudHNdPVwiZXZlbnRzKClcIlxuXHRcdFx0XHRcdFx0W3Jvb3RTY2VuZV09XCJyb290U2NlbmUoKVwiXG5cdFx0XHRcdFx0XHRbcHJpb3JpdHldPVwicHJpb3JpdHkoKVwiXG5cdFx0XHRcdFx0XHRbbWF0ZXJpYWxdPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRcdFx0W3dvcmxkVW5pdHNdPVwid29ybGRVbml0cygpXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9uZ3RzLXJlbmRlci10ZXh0dXJlPlxuXHRcdDwvbmd0LW1lc2gtcG9ydGFsLW1hdGVyaWFsPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0c1JlbmRlclRleHR1cmUsIE5ndHNSZW5kZXJUZXh0dXJlQ29udGVudCwgTWFuYWdlUG9ydGFsU2NlbmUsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTWVzaFBvcnRhbE1hdGVyaWFsIHtcblx0YXR0YWNoID0gaW5wdXQ8Tmd0QXR0YWNoYWJsZT4oJ21hdGVyaWFsJyk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2JsdXInLCAncmVzb2x1dGlvbicsICd3b3JsZFVuaXRzJywgJ2V2ZW50UHJpb3JpdHknLCAncmVuZGVyUHJpb3JpdHknLCAnZXZlbnRzJ10pO1xuXG5cdGJsdXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2JsdXInKTtcblx0ZXZlbnRQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZXZlbnRQcmlvcml0eScpO1xuXHRyZW5kZXJQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVuZGVyUHJpb3JpdHknKTtcblx0ZXZlbnRzID0gcGljayh0aGlzLm9wdGlvbnMsICdldmVudHMnKTtcblx0d29ybGRVbml0cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnd29ybGRVbml0cycpO1xuXG5cdG1hdGVyaWFsUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SW5zdGFuY2VUeXBlPHR5cGVvZiBNZXNoUG9ydGFsTWF0ZXJpYWw+Pj4oJ21hdGVyaWFsJyk7XG5cdGNvbnRlbnQgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoVGVtcGxhdGVSZWYpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXHRwcml2YXRlIHZpZXdwb3J0ID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0Jyk7XG5cdHByaXZhdGUgZ2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblx0cHJpdmF0ZSBzZXRFdmVudHMgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2V0RXZlbnRzJyk7XG5cdHJvb3RTY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXG5cdG1hdGVyaWFsUmVzb2x1dGlvbiA9IGNvbXB1dGVkKCgpID0+IFtcblx0XHR0aGlzLnNpemUoKS53aWR0aCAqIHRoaXMudmlld3BvcnQoKS5kcHIsXG5cdFx0dGhpcy5zaXplKCkuaGVpZ2h0ICogdGhpcy52aWV3cG9ydCgpLmRwcixcblx0XSk7XG5cdHByaXZhdGUgcmVzb2x1dGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVzb2x1dGlvbicpO1xuXG5cdHByaXZhdGUgcGFyZW50ID0gc2lnbmFsPE1lc2ggfCBudWxsPihudWxsKTtcblx0cHJpdmF0ZSB2aXNpYmxlID0gaW5qZWN0SW50ZXJzZWN0KHRoaXMucGFyZW50LCB7IHNvdXJjZTogc2lnbmFsKHRydWUpIH0pO1xuXG5cdHJlbmRlclRleHR1cmVGcmFtZXMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy52aXNpYmxlKCkgPyBJbmZpbml0eSA6IDApKTtcblx0cmVuZGVyVGV4dHVyZUNvbXB1dGUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW3BhcmVudCwgbWF0ZXJpYWxdID0gW3RoaXMucGFyZW50KCksIHRoaXMubWF0ZXJpYWxSZWYoKS5uYXRpdmVFbGVtZW50XTtcblxuXHRcdGNvbnN0IGNvbXB1dGVGbjogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8Tmd0Q29tcHV0ZUZ1bmN0aW9uPikgPT4gZmFsc2UgfCB1bmRlZmluZWQgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG5cdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0c3RhdGUuc25hcHNob3QucG9pbnRlci5zZXQoXG5cdFx0XHRcdChldmVudC5vZmZzZXRYIC8gc3RhdGUuc25hcHNob3Quc2l6ZS53aWR0aCkgKiAyIC0gMSxcblx0XHRcdFx0LShldmVudC5vZmZzZXRZIC8gc3RhdGUuc25hcHNob3Quc2l6ZS5oZWlnaHQpICogMiArIDEsXG5cdFx0XHQpO1xuXHRcdFx0c3RhdGUuc25hcHNob3QucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEoc3RhdGUuc25hcHNob3QucG9pbnRlciwgc3RhdGUuc25hcHNob3QuY2FtZXJhKTtcblxuXHRcdFx0aWYgKCdibGVuZCcgaW4gbWF0ZXJpYWwgJiYgbWF0ZXJpYWwuYmxlbmQgPT09IDApIHtcblx0XHRcdFx0Ly8gV2UgcnVuIGEgcXVpY2sgY2hlY2sgYWdhaW5zdCB0aGUgcGFyZW50LCBpZiBpdCBpc24ndCBoaXQgdGhlcmUncyBubyBuZWVkIHRvIHJheWNhc3QgYXQgYWxsXG5cdFx0XHRcdGNvbnN0IFtpbnRlcnNlY3Rpb25dID0gc3RhdGUuc25hcHNob3QucmF5Y2FzdGVyLmludGVyc2VjdE9iamVjdChwYXJlbnQpO1xuXHRcdFx0XHRpZiAoIWludGVyc2VjdGlvbikge1xuXHRcdFx0XHRcdC8vIENhbmNlbCBvdXQgdGhlIHJheWNhc3QgY2FtZXJhIGlmIHRoZSBwYXJlbnQgbWVzaCBpc24ndCBoaXRcblx0XHRcdFx0XHRPYmplY3QuYXNzaWduKHN0YXRlLnNuYXBzaG90LnJheWNhc3RlciwgeyBjYW1lcmE6IHVuZGVmaW5lZCB9KTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH07XG5cblx0XHRyZXR1cm4gY29tcHV0ZUZuO1xuXHR9KTtcblxuXHRwcmlvcml0eSA9IHNpZ25hbCgwKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoUG9ydGFsTWF0ZXJpYWwgfSk7XG5cblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobWF0ZXJpYWwpO1xuXHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBtYXRlcmlhbFBhcmVudCA9IGxvY2FsU3RhdGUucGFyZW50KCk7XG5cdFx0XHRcdGlmICghbWF0ZXJpYWxQYXJlbnQgfHwgIShtYXRlcmlhbFBhcmVudCBpbnN0YW5jZW9mIE1lc2gpKSByZXR1cm47XG5cblx0XHRcdFx0Ly8gU2luY2UgdGhlIHJlZiBhYm92ZSBpcyBub3QgdGllZCB0byBhIG1lc2ggZGlyZWN0bHkgKHdlJ3JlIGluc2lkZSBhIG1hdGVyaWFsKSxcblx0XHRcdFx0Ly8gaXQgaGFzIHRvIGJlIHRpZWQgdG8gdGhlIHBhcmVudCBtZXNoIGhlcmVcblx0XHRcdFx0dGhpcy5wYXJlbnQuc2V0KG1hdGVyaWFsUGFyZW50KTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBldmVudHMgPSB0aGlzLmV2ZW50cygpO1xuXHRcdFx0aWYgKCFldmVudHMpIHJldHVybjtcblxuXHRcdFx0Y29uc3Qgc2V0RXZlbnRzID0gdGhpcy5zZXRFdmVudHMoKTtcblx0XHRcdHNldEV2ZW50cyh7IGVuYWJsZWQ6ICFldmVudHMgfSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW21hdGVyaWFsLCBwYXJlbnRdID0gW3RoaXMubWF0ZXJpYWxSZWYoKS5uYXRpdmVFbGVtZW50LCB0aGlzLnBhcmVudCgpXTtcblx0XHRcdGlmICghcGFyZW50KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IFtyZXNvbHV0aW9uLCBibHVyLCBnbF0gPSBbdGhpcy5yZXNvbHV0aW9uKCksIHRoaXMuYmx1cigpLCB0aGlzLmdsKCldO1xuXG5cdFx0XHQvLyBhcHBseSB0aGUgU0RGIG1hc2sgb25jZVxuXHRcdFx0aWYgKGJsdXIgJiYgbWF0ZXJpYWwuc2RmID09IG51bGwpIHtcblx0XHRcdFx0bWVzaFBvcnRhbE1hdGVyaWFsQXBwbHlTREYocGFyZW50LCByZXNvbHV0aW9uLCBnbCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IHByaW9yaXR5ID1cblx0XHRcdFx0J2JsZW5kJyBpbiBtYXRlcmlhbCAmJiB0eXBlb2YgbWF0ZXJpYWwuYmxlbmQgPT09ICdudW1iZXInICYmIG1hdGVyaWFsLmJsZW5kID4gMFxuXHRcdFx0XHRcdD8gTWF0aC5tYXgoMSwgdGhpcy5yZW5kZXJQcmlvcml0eSgpKVxuXHRcdFx0XHRcdDogMDtcblxuXHRcdFx0Ly8gSWYgYmxlbmQgaXMgPiAwIHRoZW4gdGhlIHBvcnRhbCBpcyBiZWluZyBlbnRlcmVkLCB0aGUgcmVuZGVyLXByaW9yaXR5IG11c3QgY2hhbmdlXG5cdFx0XHRpZiAodGhpcy5wcmlvcml0eSgpICE9PSBwcmlvcml0eSkge1xuXHRcdFx0XHR0aGlzLnByaW9yaXR5LnNldChwcmlvcml0eSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|