angular-three-soba 2.2.0 → 2.3.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 +148 -148
- package/abstractions/lib/edges.d.ts +166 -166
- package/abstractions/lib/grid.d.ts +30 -30
- package/abstractions/lib/line.d.ts +10 -9
- package/abstractions/lib/prism-geometry.d.ts +4 -4
- package/abstractions/lib/rounded-box.d.ts +3 -3
- package/abstractions/lib/text-3d.d.ts +38 -38
- package/abstractions/lib/text.d.ts +2 -3
- package/cameras/lib/cube-camera.d.ts +2 -2
- package/cameras/lib/orthographic-camera.d.ts +7 -8
- package/cameras/lib/perspective-camera.d.ts +2 -3
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/esm2022/abstractions/lib/billboard.mjs +3 -3
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/edges.mjs +30 -34
- package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
- package/esm2022/abstractions/lib/grid.mjs +3 -3
- package/esm2022/abstractions/lib/helper.mjs +18 -20
- package/esm2022/abstractions/lib/line.mjs +25 -28
- package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
- package/esm2022/abstractions/lib/text-3d.mjs +14 -17
- package/esm2022/abstractions/lib/text.mjs +11 -16
- package/esm2022/cameras/lib/camera-content.mjs +3 -3
- package/esm2022/cameras/lib/cube-camera.mjs +18 -27
- package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
- package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
- package/esm2022/controls/lib/camera-controls.mjs +3 -3
- package/esm2022/controls/lib/orbit-controls.mjs +3 -3
- package/esm2022/controls/lib/scroll-controls.mjs +124 -130
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +6 -6
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +12 -12
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +9 -9
- package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +6 -4
- package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +44 -47
- package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +3 -3
- package/esm2022/gizmos/lib/transform-controls.mjs +3 -3
- package/esm2022/loaders/lib/loader.mjs +3 -3
- package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
- package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
- package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
- package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
- package/esm2022/materials/lib/point-material.mjs +3 -3
- package/esm2022/misc/lib/bake-shadows.mjs +8 -10
- package/esm2022/misc/lib/computed-attribute.mjs +15 -19
- package/esm2022/misc/lib/decal.mjs +56 -53
- package/esm2022/misc/lib/fbo.mjs +10 -10
- package/esm2022/misc/lib/html/html-content.mjs +62 -67
- package/esm2022/misc/lib/html/html.mjs +3 -3
- package/esm2022/misc/lib/intersect.mjs +6 -9
- package/esm2022/misc/lib/sampler.mjs +42 -42
- package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
- package/esm2022/performances/lib/adaptive-events.mjs +12 -16
- package/esm2022/performances/lib/detailed.mjs +14 -18
- package/esm2022/performances/lib/instances/instances.mjs +16 -22
- package/esm2022/performances/lib/points/points.mjs +19 -25
- package/esm2022/performances/lib/segments/segments.mjs +11 -14
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
- package/esm2022/staging/index.mjs +3 -2
- package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
- package/esm2022/staging/lib/backdrop.mjs +19 -23
- package/esm2022/staging/lib/bb-anchor.mjs +3 -3
- package/esm2022/staging/lib/bounds.mjs +39 -43
- package/esm2022/staging/lib/camera-shake.mjs +14 -18
- package/esm2022/staging/lib/caustics.mjs +24 -28
- package/esm2022/staging/lib/center.mjs +28 -32
- package/esm2022/staging/lib/contact-shadows.mjs +3 -3
- package/esm2022/staging/lib/environment/environment.mjs +338 -0
- package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
- package/esm2022/staging/lib/float.mjs +3 -3
- package/esm2022/staging/lib/lightformer.mjs +18 -22
- package/esm2022/staging/lib/mask.mjs +8 -12
- package/esm2022/staging/lib/matcap-texture.mjs +9 -11
- package/esm2022/staging/lib/normal-texture.mjs +9 -11
- package/esm2022/staging/lib/randomized-lights.mjs +9 -13
- package/esm2022/staging/lib/render-texture.mjs +19 -20
- package/esm2022/staging/lib/sky.mjs +3 -3
- package/esm2022/staging/lib/spot-light.mjs +32 -40
- package/esm2022/staging/lib/stage.mjs +13 -17
- package/esm2022/stats/lib/stats.mjs +21 -27
- package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +57 -64
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +129 -135
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +87 -88
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +3 -3
- package/fesm2022/angular-three-soba-materials.mjs +52 -62
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +188 -195
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +90 -114
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +427 -430
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +20 -26
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/materials/lib/custom-shader-material.d.ts +3 -3
- package/materials/lib/mesh-refraction-material.d.ts +3 -3
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +5 -5
- package/misc/lib/decal.d.ts +5 -5
- package/misc/lib/html/html-content.d.ts +6 -6
- package/misc/lib/html/html.d.ts +1 -1
- package/misc/lib/sampler.d.ts +2 -4
- package/package.json +12 -12
- package/performances/lib/instances/instances.d.ts +11 -11
- package/performances/lib/points/points.d.ts +20 -20
- package/performances/lib/segments/segments.d.ts +4 -4
- package/shaders/lib/mesh-refraction-material.d.ts +2 -5
- package/staging/index.d.ts +2 -1
- package/staging/lib/camera-shake.d.ts +0 -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/{environment.d.ts → environment/environment.d.ts} +20 -49
- package/staging/lib/environment/inject-environment.d.ts +33 -0
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/mask.d.ts +1 -1
- package/staging/lib/matcap-texture.d.ts +0 -1
- package/staging/lib/normal-texture.d.ts +0 -1
- package/staging/lib/render-texture.d.ts +1 -1
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +2 -2
- package/staging/lib/stage.d.ts +7 -6
- package/esm2022/staging/lib/environment.mjs +0 -481
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import {
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, Renderer2, untracked, viewChild, } from '@angular/core';
|
|
3
3
|
import { injectBeforeRender, NgtHTML, pick, resolveRef } from 'angular-three';
|
|
4
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
5
4
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
6
5
|
import { Vector3 } from 'three';
|
|
7
6
|
import { NgtsHTML } from './html';
|
|
@@ -51,71 +50,67 @@ export class NgtsHTMLContent extends NgtHTML {
|
|
|
51
50
|
return parent;
|
|
52
51
|
return (this.events().connected || this.gl().domElement.parentNode);
|
|
53
52
|
});
|
|
54
|
-
const autoEffect = injectAutoEffect();
|
|
55
53
|
const renderer = inject(Renderer2);
|
|
56
54
|
let isMeshSizeSet = false;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
target.removeChild(hostEl);
|
|
111
|
-
};
|
|
112
|
-
});
|
|
113
|
-
autoEffect(() => {
|
|
114
|
-
this.options();
|
|
115
|
-
this.html.options();
|
|
116
|
-
isMeshSizeSet = false;
|
|
55
|
+
effect(() => {
|
|
56
|
+
const [occlude, canvasEl, zIndexRange] = [
|
|
57
|
+
this.html.occlude(),
|
|
58
|
+
untracked(this.gl).domElement,
|
|
59
|
+
untracked(this.zIndexRange),
|
|
60
|
+
];
|
|
61
|
+
if (occlude && occlude === 'blending') {
|
|
62
|
+
renderer.setStyle(canvasEl, 'z-index', `${Math.floor(zIndexRange[0] / 2)}`);
|
|
63
|
+
renderer.setStyle(canvasEl, 'position', 'absolute');
|
|
64
|
+
renderer.setStyle(canvasEl, 'pointer-events', 'none');
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
renderer.removeStyle(canvasEl, 'z-index');
|
|
68
|
+
renderer.removeStyle(canvasEl, 'position');
|
|
69
|
+
renderer.removeStyle(canvasEl, 'pointer-events');
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
effect((onCleanup) => {
|
|
73
|
+
const [transform, target, hostEl, prepend, scene, calculatePosition, group, size, camera] = [
|
|
74
|
+
this.html.transform(),
|
|
75
|
+
this.target(),
|
|
76
|
+
this.host.nativeElement,
|
|
77
|
+
untracked(this.prepend),
|
|
78
|
+
untracked(this.scene),
|
|
79
|
+
untracked(this.calculatePosition),
|
|
80
|
+
untracked(this.html.groupRef).nativeElement,
|
|
81
|
+
untracked(this.size),
|
|
82
|
+
untracked(this.camera),
|
|
83
|
+
];
|
|
84
|
+
scene.updateMatrixWorld();
|
|
85
|
+
renderer.setStyle(hostEl, 'position', 'absolute');
|
|
86
|
+
renderer.setStyle(hostEl, 'top', '0');
|
|
87
|
+
renderer.setStyle(hostEl, 'left', '0');
|
|
88
|
+
if (transform) {
|
|
89
|
+
renderer.setStyle(hostEl, 'pointer-events', 'none');
|
|
90
|
+
renderer.setStyle(hostEl, 'overflow', 'hidden');
|
|
91
|
+
renderer.removeStyle(hostEl, 'transform');
|
|
92
|
+
renderer.removeStyle(hostEl, 'transform-origin');
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const vec = calculatePosition(group, camera, size);
|
|
96
|
+
renderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0)`);
|
|
97
|
+
renderer.setStyle(hostEl, 'transform-origin', '0 0');
|
|
98
|
+
renderer.removeStyle(hostEl, 'pointer-events');
|
|
99
|
+
renderer.removeStyle(hostEl, 'overflow');
|
|
100
|
+
}
|
|
101
|
+
if (prepend)
|
|
102
|
+
target.prepend(hostEl);
|
|
103
|
+
else
|
|
104
|
+
target.appendChild(hostEl);
|
|
105
|
+
onCleanup(() => {
|
|
106
|
+
if (target)
|
|
107
|
+
target.removeChild(hostEl);
|
|
117
108
|
});
|
|
118
109
|
});
|
|
110
|
+
effect(() => {
|
|
111
|
+
const _ = [this.options(), this.html.options()];
|
|
112
|
+
isMeshSizeSet = false;
|
|
113
|
+
});
|
|
119
114
|
let visible = true;
|
|
120
115
|
let oldZoom = 0;
|
|
121
116
|
let oldPosition = [0, 0];
|
|
@@ -244,8 +239,8 @@ export class NgtsHTMLContent extends NgtHTML {
|
|
|
244
239
|
}
|
|
245
240
|
});
|
|
246
241
|
}
|
|
247
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
248
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
242
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHTMLContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
243
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsHTMLContent, isStandalone: true, selector: "[ngtsHTMLContent]", inputs: { options: { classPropertyName: "options", publicName: "ngtsHTMLContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { occluded: "occluded" }, host: { attributes: { "data-ngts-html-content": "" } }, viewQueries: [{ propertyName: "transformOuterRef", first: true, predicate: ["transformOuter"], descendants: true, isSignal: true }, { propertyName: "transformInnerRef", first: true, predicate: ["transformInner"], descendants: true, isSignal: true }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
249
244
|
@if (html.transform()) {
|
|
250
245
|
<div
|
|
251
246
|
#transformOuter
|
|
@@ -280,7 +275,7 @@ export class NgtsHTMLContent extends NgtHTML {
|
|
|
280
275
|
</ng-template>
|
|
281
276
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
282
277
|
}
|
|
283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
278
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHTMLContent, decorators: [{
|
|
284
279
|
type: Component,
|
|
285
280
|
args: [{
|
|
286
281
|
selector: '[ngtsHTMLContent]',
|
|
@@ -324,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
324
319
|
host: { 'data-ngts-html-content': '' },
|
|
325
320
|
}]
|
|
326
321
|
}], ctorParameters: () => [] });
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9odG1sL2h0bWwtY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUVSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFnQyxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBRU4sd0JBQXdCLEVBQ3hCLE9BQU8sRUFDUCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksR0FDWixNQUFNLFNBQVMsQ0FBQzs7QUE4QmpCLE1BQU0seUJBQXlCLEdBQTJCO0lBQ3pELEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQixhQUFhLEVBQUUsTUFBTTtJQUNyQixpQkFBaUIsRUFBRSx3QkFBd0I7SUFDM0MsY0FBYyxFQUFFLEVBQUU7SUFDbEIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsTUFBTSxFQUFFLEtBQUs7SUFD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LENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO3dCQUNsQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzt3QkFDbEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7d0JBRW5DLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBRWpDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLENBQUM7b0JBRUQsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQTNRVyxlQUFlO2tHQUFmLGVBQWUsd3JCQXRDakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVCw0REFFUyxnQkFBZ0I7OzJGQUdkLGVBQWU7a0JBekMzQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLElBQUksRUFBRSxFQUFFLHdCQUF3QixFQUFFLEVBQUUsRUFBRTtpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG91dHB1dCxcblx0UmVuZGVyZXIyLFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEhUTUwsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IE9iamVjdDNELCBPcnRob2dyYXBoaWNDYW1lcmEsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzSFRNTCB9IGZyb20gJy4vaHRtbCc7XG5pbXBvcnQge1xuXHRDYWxjdWxhdGVQb3NpdGlvbixcblx0ZGVmYXVsdENhbGN1bGF0ZVBvc2l0aW9uLFxuXHRlcHNpbG9uLFxuXHRnZXRDYW1lcmFDU1NNYXRyaXgsXG5cdGdldE9iamVjdENTU01hdHJpeCxcblx0aXNPYmplY3RCZWhpbmRDYW1lcmEsXG5cdGlzT2JqZWN0VmlzaWJsZSxcblx0b2JqZWN0U2NhbGUsXG5cdG9iamVjdFpJbmRleCxcbn0gZnJvbSAnLi91dGlscyc7XG5cbnR5cGUgUG9pbnRlckV2ZW50c1Byb3BlcnRpZXMgPVxuXHR8ICdhdXRvJ1xuXHR8ICdub25lJ1xuXHR8ICd2aXNpYmxlUGFpbnRlZCdcblx0fCAndmlzaWJsZUZpbGwnXG5cdHwgJ3Zpc2libGVTdHJva2UnXG5cdHwgJ3Zpc2libGUnXG5cdHwgJ3BhaW50ZWQnXG5cdHwgJ2ZpbGwnXG5cdHwgJ3N0cm9rZSdcblx0fCAnYWxsJ1xuXHR8ICdpbmhlcml0JztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzSFRNTENvbnRlbnRPcHRpb25zIHtcblx0ZXBzOiBudW1iZXI7XG5cdHpJbmRleFJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuXHRjZW50ZXI6IGJvb2xlYW47XG5cdHByZXBlbmQ6IGJvb2xlYW47XG5cdGZ1bGxzY3JlZW46IGJvb2xlYW47XG5cdGNvbnRhaW5lckNsYXNzOiBzdHJpbmc7XG5cdGNvbnRhaW5lclN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+O1xuXHRwb2ludGVyRXZlbnRzOiBQb2ludGVyRXZlbnRzUHJvcGVydGllcztcblx0Y2FsY3VsYXRlUG9zaXRpb246IENhbGN1bGF0ZVBvc2l0aW9uO1xuXHRzcHJpdGU6IGJvb2xlYW47XG5cdGRpc3RhbmNlRmFjdG9yPzogbnVtYmVyO1xuXHRwYXJlbnQ/OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xufVxuXG5jb25zdCBkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zOiBOZ3RzSFRNTENvbnRlbnRPcHRpb25zID0ge1xuXHRlcHM6IDAuMDAxLFxuXHR6SW5kZXhSYW5nZTogWzE2Nzc3MjcxLCAwXSxcblx0cG9pbnRlckV2ZW50czogJ2F1dG8nLFxuXHRjYWxjdWxhdGVQb3NpdGlvbjogZGVmYXVsdENhbGN1bGF0ZVBvc2l0aW9uLFxuXHRjb250YWluZXJDbGFzczogJycsXG5cdGNvbnRhaW5lclN0eWxlOiB7fSxcblx0Y2VudGVyOiBmYWxzZSxcblx0cHJlcGVuZDogZmFsc2UsXG5cdGZ1bGxzY3JlZW46IGZhbHNlLFxuXHRzcHJpdGU6IGZhbHNlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnW25ndHNIVE1MQ29udGVudF0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdEBpZiAoaHRtbC50cmFuc2Zvcm0oKSkge1xuXHRcdFx0PGRpdlxuXHRcdFx0XHQjdHJhbnNmb3JtT3V0ZXJcblx0XHRcdFx0c3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsgcG9pbnRlci1ldmVudHM6IG5vbmU7XCJcblx0XHRcdFx0W3N0eWxlLndpZHRoLnB4XT1cInNpemUoKS53aWR0aFwiXG5cdFx0XHRcdFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpLmhlaWdodFwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxkaXYgI3RyYW5zZm9ybUlubmVyIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCIgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cInBvaW50ZXJFdmVudHMoKVwiPlxuXHRcdFx0XHRcdDxkaXYgI2NvbnRhaW5lciBbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtzdHlsZV09XCJjb250YWluZXJTdHlsZSgpXCI+XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIiAvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdH0gQGVsc2Uge1xuXHRcdFx0PGRpdlxuXHRcdFx0XHQjY29udGFpbmVyXG5cdFx0XHRcdHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGVcIlxuXHRcdFx0XHRbc3R5bGUudHJhbnNmb3JtXT1cImNlbnRlcigpID8gJ3RyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKScgOiAnbm9uZSdcIlxuXHRcdFx0XHRbc3R5bGUudG9wXT1cImZ1bGxzY3JlZW4oKSA/IC1zaXplKCkuaGVpZ2h0IC8gMiArICdweCcgOiAndW5zZXQnXCJcblx0XHRcdFx0W3N0eWxlLmxlZnRdPVwiZnVsbHNjcmVlbigpID8gLXNpemUoKS53aWR0aCAvIDIgKyAncHgnIDogJ3Vuc2V0J1wiXG5cdFx0XHRcdFtzdHlsZS53aWR0aF09XCJmdWxsc2NyZWVuKCkgPyBzaXplKCkud2lkdGggOiAndW5zZXQnXCJcblx0XHRcdFx0W3N0eWxlLmhlaWdodF09XCJmdWxsc2NyZWVuKCkgPyBzaXplKCkuaGVpZ2h0IDogJ3Vuc2V0J1wiXG5cdFx0XHRcdFtjbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcblx0XHRcdFx0W3N0eWxlXT1cImNvbnRhaW5lclN0eWxlKClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIiAvPlxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXG5cdFx0PG5nLXRlbXBsYXRlICNjb250ZW50PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuXHRob3N0OiB7ICdkYXRhLW5ndHMtaHRtbC1jb250ZW50JzogJycgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0hUTUxDb250ZW50IGV4dGVuZHMgTmd0SFRNTCB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zLCB7XG5cdFx0dHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zKSxcblx0XHRhbGlhczogJ25ndHNIVE1MQ29udGVudCcsXG5cdH0pO1xuXHRvY2NsdWRlZCA9IG91dHB1dDxib29sZWFuPigpO1xuXG5cdGh0bWwgPSBpbmplY3QoTmd0c0hUTUwpO1xuXG5cdHRyYW5zZm9ybU91dGVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PigndHJhbnNmb3JtT3V0ZXInKTtcblx0dHJhbnNmb3JtSW5uZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCd0cmFuc2Zvcm1Jbm5lcicpO1xuXHRjb250YWluZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjb250YWluZXInKTtcblxuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cdHByaXZhdGUgZXZlbnRzID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2V2ZW50cycpO1xuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBzY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRwcml2YXRlIHBhcmVudCA9IHBpY2sodGhpcy5vcHRpb25zLCAncGFyZW50Jyk7XG5cdHByaXZhdGUgekluZGV4UmFuZ2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3pJbmRleFJhbmdlJyk7XG5cdHByaXZhdGUgY2FsY3VsYXRlUG9zaXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NhbGN1bGF0ZVBvc2l0aW9uJyk7XG5cdHByaXZhdGUgcHJlcGVuZCA9IHBpY2sodGhpcy5vcHRpb25zLCAncHJlcGVuZCcpO1xuXHRjZW50ZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NlbnRlcicpO1xuXHRmdWxsc2NyZWVuID0gcGljayh0aGlzLm9wdGlvbnMsICdmdWxsc2NyZWVuJyk7XG5cdHBvaW50ZXJFdmVudHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BvaW50ZXJFdmVudHMnKTtcblx0Y29udGFpbmVyQ2xhc3MgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbnRhaW5lckNsYXNzJyk7XG5cdGNvbnRhaW5lclN0eWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdjb250YWluZXJTdHlsZScpO1xuXG5cdHByaXZhdGUgdGFyZ2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHBhcmVudCA9IHJlc29sdmVSZWYodGhpcy5wYXJlbnQoKSk7XG5cdFx0aWYgKHBhcmVudCkgcmV0dXJuIHBhcmVudDtcblx0XHRyZXR1cm4gKHRoaXMuZXZlbnRzKCkuY29ubmVjdGVkIHx8IHRoaXMuZ2woKS5kb21FbGVtZW50LnBhcmVudE5vZGUpIGFzIEhUTUxFbGVtZW50O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0Y29uc3QgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0XHRjb25zdCByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG5cdFx0bGV0IGlzTWVzaFNpemVTZXQgPSBmYWxzZTtcblxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgW29jY2x1ZGUsIGNhbnZhc0VsLCB6SW5kZXhSYW5nZV0gPSBbXG5cdFx0XHRcdFx0dGhpcy5odG1sLm9jY2x1ZGUoKSxcblx0XHRcdFx0XHR1bnRyYWNrZWQodGhpcy5nbCkuZG9tRWxlbWVudCxcblx0XHRcdFx0XHR1bnRyYWNrZWQodGhpcy56SW5kZXhSYW5nZSksXG5cdFx0XHRcdF07XG5cblx0XHRcdFx0aWYgKG9jY2x1ZGUgJiYgb2NjbHVkZSA9PT0gJ2JsZW5kaW5nJykge1xuXHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGNhbnZhc0VsLCAnei1pbmRleCcsIGAke01hdGguZmxvb3IoekluZGV4UmFuZ2VbMF0gLyAyKX1gKTtcblx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShjYW52YXNFbCwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG5cdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoY2FudmFzRWwsICdwb2ludGVyLWV2ZW50cycsICdub25lJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVuZGVyZXIucmVtb3ZlU3R5bGUoY2FudmFzRWwsICd6LWluZGV4Jyk7XG5cdFx0XHRcdFx0cmVuZGVyZXIucmVtb3ZlU3R5bGUoY2FudmFzRWwsICdwb3NpdGlvbicpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGNhbnZhc0VsLCAncG9pbnRlci1ldmVudHMnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbdHJhbnNmb3JtLCB0YXJnZXQsIGhvc3RFbCwgcHJlcGVuZCwgc2NlbmUsIGNhbGN1bGF0ZVBvc2l0aW9uLCBncm91cCwgc2l6ZSwgY2FtZXJhXSA9IFtcblx0XHRcdFx0XHR0aGlzLmh0bWwudHJhbnNmb3JtKCksXG5cdFx0XHRcdFx0dGhpcy50YXJnZXQoKSxcblx0XHRcdFx0XHR0aGlzLmhvc3QubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0XHR1bnRyYWNrZWQodGhpcy5wcmVwZW5kKSxcblx0XHRcdFx0XHR1bnRyYWNrZWQodGhpcy5zY2VuZSksXG5cdFx0XHRcdFx0dW50cmFja2VkKHRoaXMuY2FsY3VsYXRlUG9zaXRpb24pLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLmh0bWwuZ3JvdXBSZWYpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdFx0dW50cmFja2VkKHRoaXMuc2l6ZSksXG5cdFx0XHRcdFx0dW50cmFja2VkKHRoaXMuY2FtZXJhKSxcblx0XHRcdFx0XTtcblxuXHRcdFx0XHRzY2VuZS51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuXHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICd0b3AnLCAnMCcpO1xuXHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdsZWZ0JywgJzAnKTtcblxuXHRcdFx0XHRpZiAodHJhbnNmb3JtKSB7XG5cdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAncG9pbnRlci1ldmVudHMnLCAnbm9uZScpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybScpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybS1vcmlnaW4nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCB2ZWMgPSBjYWxjdWxhdGVQb3NpdGlvbihncm91cCwgY2FtZXJhLCBzaXplKTtcblx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlM2QoJHt2ZWNbMF19cHgsJHt2ZWNbMV19cHgsMClgKTtcblx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICd0cmFuc2Zvcm0tb3JpZ2luJywgJzAgMCcpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3BvaW50ZXItZXZlbnRzJyk7XG5cdFx0XHRcdFx0cmVuZGVyZXIucmVtb3ZlU3R5bGUoaG9zdEVsLCAnb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwcmVwZW5kKSB0YXJnZXQucHJlcGVuZChob3N0RWwpO1xuXHRcdFx0XHRlbHNlIHRhcmdldC5hcHBlbmRDaGlsZChob3N0RWwpO1xuXG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRhcmdldCkgdGFyZ2V0LnJlbW92ZUNoaWxkKGhvc3RFbCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblxuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMub3B0aW9ucygpO1xuXHRcdFx0XHR0aGlzLmh0bWwub3B0aW9ucygpO1xuXHRcdFx0XHRpc01lc2hTaXplU2V0ID0gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGxldCB2aXNpYmxlID0gdHJ1ZTtcblx0XHRsZXQgb2xkWm9vbSA9IDA7XG5cdFx0bGV0IG9sZFBvc2l0aW9uID0gWzAsIDBdO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYTogcm9vdENhbWVyYSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbXG5cdFx0XHRcdGhvc3RFbCxcblx0XHRcdFx0dHJhbnNmb3JtT3V0ZXJFbCxcblx0XHRcdFx0dHJhbnNmb3JtSW5uZXJFbCxcblx0XHRcdFx0Z3JvdXAsXG5cdFx0XHRcdG9jY2x1c2lvbk1lc2gsXG5cdFx0XHRcdG9jY2x1c2lvbkdlb21ldHJ5LFxuXHRcdFx0XHRpc1JheWNhc3RPY2NsdXNpb24sXG5cdFx0XHRcdHsgY2FtZXJhLCBzaXplLCB2aWV3cG9ydCwgcmF5Y2FzdGVyLCBzY2VuZSB9LFxuXHRcdFx0XHR7IGNhbGN1bGF0ZVBvc2l0aW9uLCBlcHMsIHpJbmRleFJhbmdlLCBzcHJpdGUsIGRpc3RhbmNlRmFjdG9yIH0sXG5cdFx0XHRcdHsgdHJhbnNmb3JtLCBvY2NsdWRlLCBzY2FsZSB9LFxuXHRcdFx0XSA9IFtcblx0XHRcdFx0dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMudHJhbnNmb3JtT3V0ZXJSZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy50cmFuc2Zvcm1Jbm5lclJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwub2NjbHVzaW9uTWVzaFJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwub2NjbHVzaW9uR2VvbWV0cnlSZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5odG1sLmlzUmF5Y2FzdE9jY2x1c2lvbigpLFxuXHRcdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LFxuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5odG1sLm9wdGlvbnMoKSxcblx0XHRcdF07XG5cblx0XHRcdGlmIChncm91cCkge1xuXHRcdFx0XHRjYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdFx0Z3JvdXAudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRjb25zdCB2ZWMgPSB0cmFuc2Zvcm0gPyBvbGRQb3NpdGlvbiA6IGNhbGN1bGF0ZVBvc2l0aW9uKGdyb3VwLCBjYW1lcmEsIHNpemUpO1xuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0cmFuc2Zvcm0gfHxcblx0XHRcdFx0XHRNYXRoLmFicyhvbGRab29tIC0gY2FtZXJhLnpvb20pID4gZXBzIHx8XG5cdFx0XHRcdFx0TWF0aC5hYnMob2xkUG9zaXRpb25bMF0gLSB2ZWNbMF0pID4gZXBzIHx8XG5cdFx0XHRcdFx0TWF0aC5hYnMob2xkUG9zaXRpb25bMV0gLSB2ZWNbMV0pID4gZXBzXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0IGlzQmVoaW5kQ2FtZXJhID0gaXNPYmplY3RCZWhpbmRDYW1lcmEoZ3JvdXAsIGNhbWVyYSk7XG5cdFx0XHRcdFx0bGV0IHJheXRyYWNlVGFyZ2V0OiBudWxsIHwgdW5kZWZpbmVkIHwgYm9vbGVhbiB8IE9iamVjdDNEW10gPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmIChpc1JheWNhc3RPY2NsdXNpb24pIHtcblx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KG9jY2x1ZGUpKSB7XG5cdFx0XHRcdFx0XHRcdHJheXRyYWNlVGFyZ2V0ID0gb2NjbHVkZS5tYXAoKGl0ZW0pID0+IHJlc29sdmVSZWYoaXRlbSkpIGFzIE9iamVjdDNEW107XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKG9jY2x1ZGUgIT09ICdibGVuZGluZycpIHtcblx0XHRcdFx0XHRcdFx0cmF5dHJhY2VUYXJnZXQgPSBbc2NlbmVdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHByZXZpb3VzbHlWaXNpYmxlID0gdmlzaWJsZTtcblx0XHRcdFx0XHRpZiAocmF5dHJhY2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGlzVmlzaWJsZSA9IGlzT2JqZWN0VmlzaWJsZShncm91cCwgY2FtZXJhLCByYXljYXN0ZXIsIHJheXRyYWNlVGFyZ2V0KTtcblx0XHRcdFx0XHRcdHZpc2libGUgPSBpc1Zpc2libGUgJiYgIWlzQmVoaW5kQ2FtZXJhO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR2aXNpYmxlID0gIWlzQmVoaW5kQ2FtZXJhO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChwcmV2aW91c2x5VmlzaWJsZSAhPT0gdmlzaWJsZSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMub2NjbHVkZWRbJ2xpc3RlbmVycyddKSB0aGlzLm9jY2x1ZGVkLmVtaXQoIXZpc2libGUpO1xuXHRcdFx0XHRcdFx0ZWxzZSByZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdkaXNwbGF5JywgdmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZScpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IGhhbGZSYW5nZSA9IE1hdGguZmxvb3IoekluZGV4UmFuZ2VbMF0gLyAyKTtcblx0XHRcdFx0XHRjb25zdCB6UmFuZ2UgPSBvY2NsdWRlXG5cdFx0XHRcdFx0XHQ/IGlzUmF5Y2FzdE9jY2x1c2lvbiAvL1xuXHRcdFx0XHRcdFx0XHQ/IFt6SW5kZXhSYW5nZVswXSwgaGFsZlJhbmdlXVxuXHRcdFx0XHRcdFx0XHQ6IFtoYWxmUmFuZ2UgLSAxLCAwXVxuXHRcdFx0XHRcdFx0OiB6SW5kZXhSYW5nZTtcblxuXHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3otaW5kZXgnLCBgJHtvYmplY3RaSW5kZXgoZ3JvdXAsIGNhbWVyYSwgelJhbmdlKX1gKTtcblxuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm0pIHtcblx0XHRcdFx0XHRcdGNvbnN0IFt3aWR0aEhhbGYsIGhlaWdodEhhbGZdID0gW3NpemUud2lkdGggLyAyLCBzaXplLmhlaWdodCAvIDJdO1xuXHRcdFx0XHRcdFx0Y29uc3QgZm92ID0gY2FtZXJhLnByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbNV0gKiBoZWlnaHRIYWxmO1xuXHRcdFx0XHRcdFx0Y29uc3QgeyBpc09ydGhvZ3JhcGhpY0NhbWVyYSwgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0IH0gPSBjYW1lcmEgYXMgT3J0aG9ncmFwaGljQ2FtZXJhO1xuXHRcdFx0XHRcdFx0Y29uc3QgY2FtZXJhTWF0cml4ID0gZ2V0Q2FtZXJhQ1NTTWF0cml4KGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuXHRcdFx0XHRcdFx0Y29uc3QgY2FtZXJhVHJhbnNmb3JtID0gaXNPcnRob2dyYXBoaWNDYW1lcmFcblx0XHRcdFx0XHRcdFx0PyBgc2NhbGUoJHtmb3Z9KXRyYW5zbGF0ZSgke2Vwc2lsb24oLShyaWdodCArIGxlZnQpIC8gMil9cHgsJHtlcHNpbG9uKCh0b3AgKyBib3R0b20pIC8gMil9cHgpYFxuXHRcdFx0XHRcdFx0XHQ6IGB0cmFuc2xhdGVaKCR7Zm92fXB4KWA7XG5cdFx0XHRcdFx0XHRsZXQgbWF0cml4ID0gZ3JvdXAubWF0cml4V29ybGQ7XG5cdFx0XHRcdFx0XHRpZiAoc3ByaXRlKSB7XG5cdFx0XHRcdFx0XHRcdG1hdHJpeCA9IGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UuY2xvbmUoKS50cmFuc3Bvc2UoKS5jb3B5UG9zaXRpb24obWF0cml4KS5zY2FsZShncm91cC5zY2FsZSk7XG5cdFx0XHRcdFx0XHRcdG1hdHJpeC5lbGVtZW50c1szXSA9IG1hdHJpeC5lbGVtZW50c1s3XSA9IG1hdHJpeC5lbGVtZW50c1sxMV0gPSAwO1xuXHRcdFx0XHRcdFx0XHRtYXRyaXguZWxlbWVudHNbMTVdID0gMTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAnd2lkdGgnLCBzaXplLndpZHRoICsgJ3B4Jyk7XG5cdFx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdoZWlnaHQnLCBzaXplLmhlaWdodCArICdweCcpO1xuXHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAncGVyc3BlY3RpdmUnLCBpc09ydGhvZ3JhcGhpY0NhbWVyYSA/ICcnIDogYCR7Zm92fXB4YCk7XG5cblx0XHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1PdXRlckVsICYmIHRyYW5zZm9ybUlubmVyRWwpIHtcblx0XHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoXG5cdFx0XHRcdFx0XHRcdFx0dHJhbnNmb3JtT3V0ZXJFbCxcblx0XHRcdFx0XHRcdFx0XHQndHJhbnNmb3JtJyxcblx0XHRcdFx0XHRcdFx0XHRgJHtjYW1lcmFUcmFuc2Zvcm19JHtjYW1lcmFNYXRyaXh9dHJhbnNsYXRlKCR7d2lkdGhIYWxmfXB4LCR7aGVpZ2h0SGFsZn1weClgLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShcblx0XHRcdFx0XHRcdFx0XHR0cmFuc2Zvcm1Jbm5lckVsLFxuXHRcdFx0XHRcdFx0XHRcdCd0cmFuc2Zvcm0nLFxuXHRcdFx0XHRcdFx0XHRcdGdldE9iamVjdENTU01hdHJpeChtYXRyaXgsIDEgLyAoKGRpc3RhbmNlRmFjdG9yIHx8IDEwKSAvIDQwMCkpLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzY2FsZSA9IGRpc3RhbmNlRmFjdG9yID09PSB1bmRlZmluZWQgPyAxIDogb2JqZWN0U2NhbGUoZ3JvdXAsIGNhbWVyYSkgKiBkaXN0YW5jZUZhY3Rvcjtcblx0XHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUzZCgke3ZlY1swXX1weCwke3ZlY1sxXX1weCwwKSBzY2FsZSgke3NjYWxlfSlgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b2xkUG9zaXRpb24gPSB2ZWM7XG5cdFx0XHRcdFx0b2xkWm9vbSA9IGNhbWVyYS56b29tO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICghaXNSYXljYXN0T2NjbHVzaW9uICYmIG9jY2x1c2lvbk1lc2ggJiYgIWlzTWVzaFNpemVTZXQpIHtcblx0XHRcdFx0aWYgKHRyYW5zZm9ybSkge1xuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1PdXRlckVsKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBlbCA9IHRyYW5zZm9ybU91dGVyRWwuY2hpbGRyZW5bMF07XG5cblx0XHRcdFx0XHRcdGlmIChlbD8uY2xpZW50V2lkdGggJiYgZWw/LmNsaWVudEhlaWdodCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB7IGlzT3J0aG9ncmFwaGljQ2FtZXJhIH0gPSBjYW1lcmEgYXMgT3J0aG9ncmFwaGljQ2FtZXJhO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChpc09ydGhvZ3JhcGhpY0NhbWVyYSB8fCBvY2NsdXNpb25HZW9tZXRyeSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHNjYWxlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRvY2NsdXNpb25NZXNoLnNjYWxlLnNldFNjYWxhcigxIC8gKHNjYWxlIGFzIG51bWJlcikpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzY2FsZSBpbnN0YW5jZW9mIFZlY3RvcjMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b2NjbHVzaW9uTWVzaC5zY2FsZS5jb3B5KHNjYWxlLmNsb25lKCkuZGl2aWRlU2NhbGFyKDEpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9jY2x1c2lvbk1lc2guc2NhbGUuc2V0KDEgLyBzY2FsZVswXSwgMSAvIHNjYWxlWzFdLCAxIC8gc2NhbGVbMl0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCByYXRpbyA9IChkaXN0YW5jZUZhY3RvciB8fCAxMCkgLyA0MDA7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdyA9IGVsLmNsaWVudFdpZHRoICogcmF0aW87XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaCA9IGVsLmNsaWVudEhlaWdodCAqIHJhdGlvO1xuXG5cdFx0XHRcdFx0XHRcdFx0b2NjbHVzaW9uTWVzaC5zY2FsZS5zZXQodywgaCwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpc01lc2hTaXplU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgZWxlID0gaG9zdEVsLmNoaWxkcmVuWzBdO1xuXG5cdFx0XHRcdFx0aWYgKGVsZT8uY2xpZW50V2lkdGggJiYgZWxlPy5jbGllbnRIZWlnaHQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJhdGlvID0gMSAvIHZpZXdwb3J0LmZhY3Rvcjtcblx0XHRcdFx0XHRcdGNvbnN0IHcgPSBlbGUuY2xpZW50V2lkdGggKiByYXRpbztcblx0XHRcdFx0XHRcdGNvbnN0IGggPSBlbGUuY2xpZW50SGVpZ2h0ICogcmF0aW87XG5cblx0XHRcdFx0XHRcdG9jY2x1c2lvbk1lc2guc2NhbGUuc2V0KHcsIGgsIDEpO1xuXG5cdFx0XHRcdFx0XHRpc01lc2hTaXplU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvY2NsdXNpb25NZXNoLmxvb2tBdChyb290Q2FtZXJhLnBvc2l0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9odG1sL2h0bWwtY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUVOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFnQyxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBRU4sd0JBQXdCLEVBQ3hCLE9BQU8sRUFDUCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksR0FDWixNQUFNLFNBQVMsQ0FBQzs7QUE4QmpCLE1BQU0seUJBQXlCLEdBQTJCO0lBQ3pELEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQixhQUFhLEVBQUUsTUFBTTtJQUNyQixpQkFBaUIsRUFBRSx3QkFBd0I7SUFDM0MsY0FBYyxFQUFFLEVBQUU7SUFDbEIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsTUFBTSxFQUFFLEtBQUs7SUFDYixPQUFPLEVBQUUsS0FBSztJQUNkLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLE1B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RyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7d0JBRW5DLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBRWpDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLENBQUM7b0JBRUQsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXZRVyxlQUFlO2tHQUFmLGVBQWUsd3JCQXRDakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVCw0REFFUyxnQkFBZ0I7OzJGQUdkLGVBQWU7a0JBekMzQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLElBQUksRUFBRSxFQUFFLHdCQUF3QixFQUFFLEVBQUUsRUFBRTtpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG91dHB1dCxcblx0UmVuZGVyZXIyLFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEhUTUwsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IE9iamVjdDNELCBPcnRob2dyYXBoaWNDYW1lcmEsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzSFRNTCB9IGZyb20gJy4vaHRtbCc7XG5pbXBvcnQge1xuXHRDYWxjdWxhdGVQb3NpdGlvbixcblx0ZGVmYXVsdENhbGN1bGF0ZVBvc2l0aW9uLFxuXHRlcHNpbG9uLFxuXHRnZXRDYW1lcmFDU1NNYXRyaXgsXG5cdGdldE9iamVjdENTU01hdHJpeCxcblx0aXNPYmplY3RCZWhpbmRDYW1lcmEsXG5cdGlzT2JqZWN0VmlzaWJsZSxcblx0b2JqZWN0U2NhbGUsXG5cdG9iamVjdFpJbmRleCxcbn0gZnJvbSAnLi91dGlscyc7XG5cbnR5cGUgUG9pbnRlckV2ZW50c1Byb3BlcnRpZXMgPVxuXHR8ICdhdXRvJ1xuXHR8ICdub25lJ1xuXHR8ICd2aXNpYmxlUGFpbnRlZCdcblx0fCAndmlzaWJsZUZpbGwnXG5cdHwgJ3Zpc2libGVTdHJva2UnXG5cdHwgJ3Zpc2libGUnXG5cdHwgJ3BhaW50ZWQnXG5cdHwgJ2ZpbGwnXG5cdHwgJ3N0cm9rZSdcblx0fCAnYWxsJ1xuXHR8ICdpbmhlcml0JztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzSFRNTENvbnRlbnRPcHRpb25zIHtcblx0ZXBzOiBudW1iZXI7XG5cdHpJbmRleFJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuXHRjZW50ZXI6IGJvb2xlYW47XG5cdHByZXBlbmQ6IGJvb2xlYW47XG5cdGZ1bGxzY3JlZW46IGJvb2xlYW47XG5cdGNvbnRhaW5lckNsYXNzOiBzdHJpbmc7XG5cdGNvbnRhaW5lclN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+O1xuXHRwb2ludGVyRXZlbnRzOiBQb2ludGVyRXZlbnRzUHJvcGVydGllcztcblx0Y2FsY3VsYXRlUG9zaXRpb246IENhbGN1bGF0ZVBvc2l0aW9uO1xuXHRzcHJpdGU6IGJvb2xlYW47XG5cdGRpc3RhbmNlRmFjdG9yPzogbnVtYmVyO1xuXHRwYXJlbnQ/OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xufVxuXG5jb25zdCBkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zOiBOZ3RzSFRNTENvbnRlbnRPcHRpb25zID0ge1xuXHRlcHM6IDAuMDAxLFxuXHR6SW5kZXhSYW5nZTogWzE2Nzc3MjcxLCAwXSxcblx0cG9pbnRlckV2ZW50czogJ2F1dG8nLFxuXHRjYWxjdWxhdGVQb3NpdGlvbjogZGVmYXVsdENhbGN1bGF0ZVBvc2l0aW9uLFxuXHRjb250YWluZXJDbGFzczogJycsXG5cdGNvbnRhaW5lclN0eWxlOiB7fSxcblx0Y2VudGVyOiBmYWxzZSxcblx0cHJlcGVuZDogZmFsc2UsXG5cdGZ1bGxzY3JlZW46IGZhbHNlLFxuXHRzcHJpdGU6IGZhbHNlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnW25ndHNIVE1MQ29udGVudF0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdEBpZiAoaHRtbC50cmFuc2Zvcm0oKSkge1xuXHRcdFx0PGRpdlxuXHRcdFx0XHQjdHJhbnNmb3JtT3V0ZXJcblx0XHRcdFx0c3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsgcG9pbnRlci1ldmVudHM6IG5vbmU7XCJcblx0XHRcdFx0W3N0eWxlLndpZHRoLnB4XT1cInNpemUoKS53aWR0aFwiXG5cdFx0XHRcdFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpLmhlaWdodFwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxkaXYgI3RyYW5zZm9ybUlubmVyIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCIgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cInBvaW50ZXJFdmVudHMoKVwiPlxuXHRcdFx0XHRcdDxkaXYgI2NvbnRhaW5lciBbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtzdHlsZV09XCJjb250YWluZXJTdHlsZSgpXCI+XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIiAvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdH0gQGVsc2Uge1xuXHRcdFx0PGRpdlxuXHRcdFx0XHQjY29udGFpbmVyXG5cdFx0XHRcdHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGVcIlxuXHRcdFx0XHRbc3R5bGUudHJhbnNmb3JtXT1cImNlbnRlcigpID8gJ3RyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKScgOiAnbm9uZSdcIlxuXHRcdFx0XHRbc3R5bGUudG9wXT1cImZ1bGxzY3JlZW4oKSA/IC1zaXplKCkuaGVpZ2h0IC8gMiArICdweCcgOiAndW5zZXQnXCJcblx0XHRcdFx0W3N0eWxlLmxlZnRdPVwiZnVsbHNjcmVlbigpID8gLXNpemUoKS53aWR0aCAvIDIgKyAncHgnIDogJ3Vuc2V0J1wiXG5cdFx0XHRcdFtzdHlsZS53aWR0aF09XCJmdWxsc2NyZWVuKCkgPyBzaXplKCkud2lkdGggOiAndW5zZXQnXCJcblx0XHRcdFx0W3N0eWxlLmhlaWdodF09XCJmdWxsc2NyZWVuKCkgPyBzaXplKCkuaGVpZ2h0IDogJ3Vuc2V0J1wiXG5cdFx0XHRcdFtjbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcblx0XHRcdFx0W3N0eWxlXT1cImNvbnRhaW5lclN0eWxlKClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIiAvPlxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXG5cdFx0PG5nLXRlbXBsYXRlICNjb250ZW50PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuXHRob3N0OiB7ICdkYXRhLW5ndHMtaHRtbC1jb250ZW50JzogJycgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0hUTUxDb250ZW50IGV4dGVuZHMgTmd0SFRNTCB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zLCB7XG5cdFx0dHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zKSxcblx0XHRhbGlhczogJ25ndHNIVE1MQ29udGVudCcsXG5cdH0pO1xuXHRvY2NsdWRlZCA9IG91dHB1dDxib29sZWFuPigpO1xuXG5cdGh0bWwgPSBpbmplY3QoTmd0c0hUTUwpO1xuXG5cdHRyYW5zZm9ybU91dGVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PigndHJhbnNmb3JtT3V0ZXInKTtcblx0dHJhbnNmb3JtSW5uZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCd0cmFuc2Zvcm1Jbm5lcicpO1xuXHRjb250YWluZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjb250YWluZXInKTtcblxuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cdHByaXZhdGUgZXZlbnRzID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2V2ZW50cycpO1xuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBzY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRwcm90ZWN0ZWQgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSBwYXJlbnQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BhcmVudCcpO1xuXHRwcml2YXRlIHpJbmRleFJhbmdlID0gcGljayh0aGlzLm9wdGlvbnMsICd6SW5kZXhSYW5nZScpO1xuXHRwcml2YXRlIGNhbGN1bGF0ZVBvc2l0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdjYWxjdWxhdGVQb3NpdGlvbicpO1xuXHRwcml2YXRlIHByZXBlbmQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ByZXBlbmQnKTtcblx0cHJvdGVjdGVkIGNlbnRlciA9IHBpY2sodGhpcy5vcHRpb25zLCAnY2VudGVyJyk7XG5cdHByb3RlY3RlZCBmdWxsc2NyZWVuID0gcGljayh0aGlzLm9wdGlvbnMsICdmdWxsc2NyZWVuJyk7XG5cdHByb3RlY3RlZCBwb2ludGVyRXZlbnRzID0gcGljayh0aGlzLm9wdGlvbnMsICdwb2ludGVyRXZlbnRzJyk7XG5cdHByb3RlY3RlZCBjb250YWluZXJDbGFzcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29udGFpbmVyQ2xhc3MnKTtcblx0cHJvdGVjdGVkIGNvbnRhaW5lclN0eWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdjb250YWluZXJTdHlsZScpO1xuXG5cdHByaXZhdGUgdGFyZ2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHBhcmVudCA9IHJlc29sdmVSZWYodGhpcy5wYXJlbnQoKSk7XG5cdFx0aWYgKHBhcmVudCkgcmV0dXJuIHBhcmVudDtcblx0XHRyZXR1cm4gKHRoaXMuZXZlbnRzKCkuY29ubmVjdGVkIHx8IHRoaXMuZ2woKS5kb21FbGVtZW50LnBhcmVudE5vZGUpIGFzIEhUTUxFbGVtZW50O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0Y29uc3QgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuXHRcdGxldCBpc01lc2hTaXplU2V0ID0gZmFsc2U7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW29jY2x1ZGUsIGNhbnZhc0VsLCB6SW5kZXhSYW5nZV0gPSBbXG5cdFx0XHRcdHRoaXMuaHRtbC5vY2NsdWRlKCksXG5cdFx0XHRcdHVudHJhY2tlZCh0aGlzLmdsKS5kb21FbGVtZW50LFxuXHRcdFx0XHR1bnRyYWNrZWQodGhpcy56SW5kZXhSYW5nZSksXG5cdFx0XHRdO1xuXG5cdFx0XHRpZiAob2NjbHVkZSAmJiBvY2NsdWRlID09PSAnYmxlbmRpbmcnKSB7XG5cdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGNhbnZhc0VsLCAnei1pbmRleCcsIGAke01hdGguZmxvb3IoekluZGV4UmFuZ2VbMF0gLyAyKX1gKTtcblx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoY2FudmFzRWwsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuXHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShjYW52YXNFbCwgJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGNhbnZhc0VsLCAnei1pbmRleCcpO1xuXHRcdFx0XHRyZW5kZXJlci5yZW1vdmVTdHlsZShjYW52YXNFbCwgJ3Bvc2l0aW9uJyk7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGNhbnZhc0VsLCAncG9pbnRlci1ldmVudHMnKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbdHJhbnNmb3JtLCB0YXJnZXQsIGhvc3RFbCwgcHJlcGVuZCwgc2NlbmUsIGNhbGN1bGF0ZVBvc2l0aW9uLCBncm91cCwgc2l6ZSwgY2FtZXJhXSA9IFtcblx0XHRcdFx0dGhpcy5odG1sLnRyYW5zZm9ybSgpLFxuXHRcdFx0XHR0aGlzLnRhcmdldCgpLFxuXHRcdFx0XHR0aGlzLmhvc3QubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMucHJlcGVuZCksXG5cdFx0XHRcdHVudHJhY2tlZCh0aGlzLnNjZW5lKSxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMuY2FsY3VsYXRlUG9zaXRpb24pLFxuXHRcdFx0XHR1bnRyYWNrZWQodGhpcy5odG1sLmdyb3VwUmVmKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR1bnRyYWNrZWQodGhpcy5zaXplKSxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMuY2FtZXJhKSxcblx0XHRcdF07XG5cblx0XHRcdHNjZW5lLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuXHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAndG9wJywgJzAnKTtcblx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ2xlZnQnLCAnMCcpO1xuXG5cdFx0XHRpZiAodHJhbnNmb3JtKSB7XG5cdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTtcblx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybScpO1xuXHRcdFx0XHRyZW5kZXJlci5yZW1vdmVTdHlsZShob3N0RWwsICd0cmFuc2Zvcm0tb3JpZ2luJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCB2ZWMgPSBjYWxjdWxhdGVQb3NpdGlvbihncm91cCwgY2FtZXJhLCBzaXplKTtcblx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAndHJhbnNmb3JtJywgYHRyYW5zbGF0ZTNkKCR7dmVjWzBdfXB4LCR7dmVjWzFdfXB4LDApYCk7XG5cdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybS1vcmlnaW4nLCAnMCAwJyk7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3BvaW50ZXItZXZlbnRzJyk7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChwcmVwZW5kKSB0YXJnZXQucHJlcGVuZChob3N0RWwpO1xuXHRcdFx0ZWxzZSB0YXJnZXQuYXBwZW5kQ2hpbGQoaG9zdEVsKTtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0aWYgKHRhcmdldCkgdGFyZ2V0LnJlbW92ZUNoaWxkKGhvc3RFbCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBfID0gW3RoaXMub3B0aW9ucygpLCB0aGlzLmh0bWwub3B0aW9ucygpXTtcblx0XHRcdGlzTWVzaFNpemVTZXQgPSBmYWxzZTtcblx0XHR9KTtcblxuXHRcdGxldCB2aXNpYmxlID0gdHJ1ZTtcblx0XHRsZXQgb2xkWm9vbSA9IDA7XG5cdFx0bGV0IG9sZFBvc2l0aW9uID0gWzAsIDBdO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYTogcm9vdENhbWVyYSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbXG5cdFx0XHRcdGhvc3RFbCxcblx0XHRcdFx0dHJhbnNmb3JtT3V0ZXJFbCxcblx0XHRcdFx0dHJhbnNmb3JtSW5uZXJFbCxcblx0XHRcdFx0Z3JvdXAsXG5cdFx0XHRcdG9jY2x1c2lvbk1lc2gsXG5cdFx0XHRcdG9jY2x1c2lvbkdlb21ldHJ5LFxuXHRcdFx0XHRpc1JheWNhc3RPY2NsdXNpb24sXG5cdFx0XHRcdHsgY2FtZXJhLCBzaXplLCB2aWV3cG9ydCwgcmF5Y2FzdGVyLCBzY2VuZSB9LFxuXHRcdFx0XHR7IGNhbGN1bGF0ZVBvc2l0aW9uLCBlcHMsIHpJbmRleFJhbmdlLCBzcHJpdGUsIGRpc3RhbmNlRmFjdG9yIH0sXG5cdFx0XHRcdHsgdHJhbnNmb3JtLCBvY2NsdWRlLCBzY2FsZSB9LFxuXHRcdFx0XSA9IFtcblx0XHRcdFx0dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMudHJhbnNmb3JtT3V0ZXJSZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy50cmFuc2Zvcm1Jbm5lclJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwub2NjbHVzaW9uTWVzaFJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwub2NjbHVzaW9uR2VvbWV0cnlSZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5odG1sLmlzUmF5Y2FzdE9jY2x1c2lvbigpLFxuXHRcdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LFxuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5odG1sLm9wdGlvbnMoKSxcblx0XHRcdF07XG5cblx0XHRcdGlmIChncm91cCkge1xuXHRcdFx0XHRjYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdFx0Z3JvdXAudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRjb25zdCB2ZWMgPSB0cmFuc2Zvcm0gPyBvbGRQb3NpdGlvbiA6IGNhbGN1bGF0ZVBvc2l0aW9uKGdyb3VwLCBjYW1lcmEsIHNpemUpO1xuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0cmFuc2Zvcm0gfHxcblx0XHRcdFx0XHRNYXRoLmFicyhvbGRab29tIC0gY2FtZXJhLnpvb20pID4gZXBzIHx8XG5cdFx0XHRcdFx0TWF0aC5hYnMob2xkUG9zaXRpb25bMF0gLSB2ZWNbMF0pID4gZXBzIHx8XG5cdFx0XHRcdFx0TWF0aC5hYnMob2xkUG9zaXRpb25bMV0gLSB2ZWNbMV0pID4gZXBzXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0IGlzQmVoaW5kQ2FtZXJhID0gaXNPYmplY3RCZWhpbmRDYW1lcmEoZ3JvdXAsIGNhbWVyYSk7XG5cdFx0XHRcdFx0bGV0IHJheXRyYWNlVGFyZ2V0OiBudWxsIHwgdW5kZWZpbmVkIHwgYm9vbGVhbiB8IE9iamVjdDNEW10gPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmIChpc1JheWNhc3RPY2NsdXNpb24pIHtcblx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KG9jY2x1ZGUpKSB7XG5cdFx0XHRcdFx0XHRcdHJheXRyYWNlVGFyZ2V0ID0gb2NjbHVkZS5tYXAoKGl0ZW0pID0+IHJlc29sdmVSZWYoaXRlbSkpIGFzIE9iamVjdDNEW107XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKG9jY2x1ZGUgIT09ICdibGVuZGluZycpIHtcblx0XHRcdFx0XHRcdFx0cmF5dHJhY2VUYXJnZXQgPSBbc2NlbmVdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHByZXZpb3VzbHlWaXNpYmxlID0gdmlzaWJsZTtcblx0XHRcdFx0XHRpZiAocmF5dHJhY2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGlzVmlzaWJsZSA9IGlzT2JqZWN0VmlzaWJsZShncm91cCwgY2FtZXJhLCByYXljYXN0ZXIsIHJheXRyYWNlVGFyZ2V0KTtcblx0XHRcdFx0XHRcdHZpc2libGUgPSBpc1Zpc2libGUgJiYgIWlzQmVoaW5kQ2FtZXJhO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR2aXNpYmxlID0gIWlzQmVoaW5kQ2FtZXJhO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChwcmV2aW91c2x5VmlzaWJsZSAhPT0gdmlzaWJsZSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMub2NjbHVkZWRbJ2xpc3RlbmVycyddKSB0aGlzLm9jY2x1ZGVkLmVtaXQoIXZpc2libGUpO1xuXHRcdFx0XHRcdFx0ZWxzZSByZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdkaXNwbGF5JywgdmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZScpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IGhhbGZSYW5nZSA9IE1hdGguZmxvb3IoekluZGV4UmFuZ2VbMF0gLyAyKTtcblx0XHRcdFx0XHRjb25zdCB6UmFuZ2UgPSBvY2NsdWRlXG5cdFx0XHRcdFx0XHQ/IGlzUmF5Y2FzdE9jY2x1c2lvbiAvL1xuXHRcdFx0XHRcdFx0XHQ/IFt6SW5kZXhSYW5nZVswXSwgaGFsZlJhbmdlXVxuXHRcdFx0XHRcdFx0XHQ6IFtoYWxmUmFuZ2UgLSAxLCAwXVxuXHRcdFx0XHRcdFx0OiB6SW5kZXhSYW5nZTtcblxuXHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3otaW5kZXgnLCBgJHtvYmplY3RaSW5kZXgoZ3JvdXAsIGNhbWVyYSwgelJhbmdlKX1gKTtcblxuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm0pIHtcblx0XHRcdFx0XHRcdGNvbnN0IFt3aWR0aEhhbGYsIGhlaWdodEhhbGZdID0gW3NpemUud2lkdGggLyAyLCBzaXplLmhlaWdodCAvIDJdO1xuXHRcdFx0XHRcdFx0Y29uc3QgZm92ID0gY2FtZXJhLnByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbNV0gKiBoZWlnaHRIYWxmO1xuXHRcdFx0XHRcdFx0Y29uc3QgeyBpc09ydGhvZ3JhcGhpY0NhbWVyYSwgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0IH0gPSBjYW1lcmEgYXMgT3J0aG9ncmFwaGljQ2FtZXJhO1xuXHRcdFx0XHRcdFx0Y29uc3QgY2FtZXJhTWF0cml4ID0gZ2V0Q2FtZXJhQ1NTTWF0cml4KGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuXHRcdFx0XHRcdFx0Y29uc3QgY2FtZXJhVHJhbnNmb3JtID0gaXNPcnRob2dyYXBoaWNDYW1lcmFcblx0XHRcdFx0XHRcdFx0PyBgc2NhbGUoJHtmb3Z9KXRyYW5zbGF0ZSgke2Vwc2lsb24oLShyaWdodCArIGxlZnQpIC8gMil9cHgsJHtlcHNpbG9uKCh0b3AgKyBib3R0b20pIC8gMil9cHgpYFxuXHRcdFx0XHRcdFx0XHQ6IGB0cmFuc2xhdGVaKCR7Zm92fXB4KWA7XG5cdFx0XHRcdFx0XHRsZXQgbWF0cml4ID0gZ3JvdXAubWF0cml4V29ybGQ7XG5cdFx0XHRcdFx0XHRpZiAoc3ByaXRlKSB7XG5cdFx0XHRcdFx0XHRcdG1hdHJpeCA9IGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UuY2xvbmUoKS50cmFuc3Bvc2UoKS5jb3B5UG9zaXRpb24obWF0cml4KS5zY2FsZShncm91cC5zY2FsZSk7XG5cdFx0XHRcdFx0XHRcdG1hdHJpeC5lbGVtZW50c1szXSA9IG1hdHJpeC5lbGVtZW50c1s3XSA9IG1hdHJpeC5lbGVtZW50c1sxMV0gPSAwO1xuXHRcdFx0XHRcdFx0XHRtYXRyaXguZWxlbWVudHNbMTVdID0gMTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAnd2lkdGgnLCBzaXplLndpZHRoICsgJ3B4Jyk7XG5cdFx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdoZWlnaHQnLCBzaXplLmhlaWdodCArICdweCcpO1xuXHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAncGVyc3BlY3RpdmUnLCBpc09ydGhvZ3JhcGhpY0NhbWVyYSA/ICcnIDogYCR7Zm92fXB4YCk7XG5cblx0XHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1PdXRlckVsICYmIHRyYW5zZm9ybUlubmVyRWwpIHtcblx0XHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoXG5cdFx0XHRcdFx0XHRcdFx0dHJhbnNmb3JtT3V0ZXJFbCxcblx0XHRcdFx0XHRcdFx0XHQndHJhbnNmb3JtJyxcblx0XHRcdFx0XHRcdFx0XHRgJHtjYW1lcmFUcmFuc2Zvcm19JHtjYW1lcmFNYXRyaXh9dHJhbnNsYXRlKCR7d2lkdGhIYWxmfXB4LCR7aGVpZ2h0SGFsZn1weClgLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShcblx0XHRcdFx0XHRcdFx0XHR0cmFuc2Zvcm1Jbm5lckVsLFxuXHRcdFx0XHRcdFx0XHRcdCd0cmFuc2Zvcm0nLFxuXHRcdFx0XHRcdFx0XHRcdGdldE9iamVjdENTU01hdHJpeChtYXRyaXgsIDEgLyAoKGRpc3RhbmNlRmFjdG9yIHx8IDEwKSAvIDQwMCkpLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzY2FsZSA9IGRpc3RhbmNlRmFjdG9yID09PSB1bmRlZmluZWQgPyAxIDogb2JqZWN0U2NhbGUoZ3JvdXAsIGNhbWVyYSkgKiBkaXN0YW5jZUZhY3Rvcjtcblx0XHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUzZCgke3ZlY1swXX1weCwke3ZlY1sxXX1weCwwKSBzY2FsZSgke3NjYWxlfSlgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b2xkUG9zaXRpb24gPSB2ZWM7XG5cdFx0XHRcdFx0b2xkWm9vbSA9IGNhbWVyYS56b29tO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICghaXNSYXljYXN0T2NjbHVzaW9uICYmIG9jY2x1c2lvbk1lc2ggJiYgIWlzTWVzaFNpemVTZXQpIHtcblx0XHRcdFx0aWYgKHRyYW5zZm9ybSkge1xuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1PdXRlckVsKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBlbCA9IHRyYW5zZm9ybU91dGVyRWwuY2hpbGRyZW5bMF07XG5cblx0XHRcdFx0XHRcdGlmIChlbD8uY2xpZW50V2lkdGggJiYgZWw/LmNsaWVudEhlaWdodCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB7IGlzT3J0aG9ncmFwaGljQ2FtZXJhIH0gPSBjYW1lcmEgYXMgT3J0aG9ncmFwaGljQ2FtZXJhO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChpc09ydGhvZ3JhcGhpY0NhbWVyYSB8fCBvY2NsdXNpb25HZW9tZXRyeSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHNjYWxlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRvY2NsdXNpb25NZXNoLnNjYWxlLnNldFNjYWxhcigxIC8gKHNjYWxlIGFzIG51bWJlcikpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzY2FsZSBpbnN0YW5jZW9mIFZlY3RvcjMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b2NjbHVzaW9uTWVzaC5zY2FsZS5jb3B5KHNjYWxlLmNsb25lKCkuZGl2aWRlU2NhbGFyKDEpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9jY2x1c2lvbk1lc2guc2NhbGUuc2V0KDEgLyBzY2FsZVswXSwgMSAvIHNjYWxlWzFdLCAxIC8gc2NhbGVbMl0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCByYXRpbyA9IChkaXN0YW5jZUZhY3RvciB8fCAxMCkgLyA0MDA7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdyA9IGVsLmNsaWVudFdpZHRoICogcmF0aW87XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaCA9IGVsLmNsaWVudEhlaWdodCAqIHJhdGlvO1xuXG5cdFx0XHRcdFx0XHRcdFx0b2NjbHVzaW9uTWVzaC5zY2FsZS5zZXQodywgaCwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpc01lc2hTaXplU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgZWxlID0gaG9zdEVsLmNoaWxkcmVuWzBdO1xuXG5cdFx0XHRcdFx0aWYgKGVsZT8uY2xpZW50V2lkdGggJiYgZWxlPy5jbGllbnRIZWlnaHQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJhdGlvID0gMSAvIHZpZXdwb3J0LmZhY3Rvcjtcblx0XHRcdFx0XHRcdGNvbnN0IHcgPSBlbGUuY2xpZW50V2lkdGggKiByYXRpbztcblx0XHRcdFx0XHRcdGNvbnN0IGggPSBlbGUuY2xpZW50SGVpZ2h0ICogcmF0aW87XG5cblx0XHRcdFx0XHRcdG9jY2x1c2lvbk1lc2guc2NhbGUuc2V0KHcsIGgsIDEpO1xuXG5cdFx0XHRcdFx0XHRpc01lc2hTaXplU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvY2NsdXNpb25NZXNoLmxvb2tBdChyb290Q2FtZXJhLnBvc2l0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -75,8 +75,8 @@ export class NgtsHTML {
|
|
|
75
75
|
this.DoubleSide = DoubleSide;
|
|
76
76
|
extend({ Group, Mesh, PlaneGeometry, ShaderMaterial });
|
|
77
77
|
}
|
|
78
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
79
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHTML, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsHTML, isStandalone: true, selector: "ngts-html", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "occlusionMeshRef", first: true, predicate: ["occlusionMesh"], descendants: true, isSignal: true }, { propertyName: "occlusionGeometryRef", first: true, predicate: ["occlusionGeometry"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
80
80
|
<ngt-group #group [parameters]="parameters()">
|
|
81
81
|
@if (occlude() && !isRaycastOcclusion()) {
|
|
82
82
|
<ngt-mesh #occlusionMesh [castShadow]="castShadow()" [receiveShadow]="receiveShadow()">
|
|
@@ -97,7 +97,7 @@ export class NgtsHTML {
|
|
|
97
97
|
<ng-content />
|
|
98
98
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
99
99
|
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHTML, decorators: [{
|
|
101
101
|
type: Component,
|
|
102
102
|
args: [{
|
|
103
103
|
selector: 'ngts-html',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Directive, effect, ElementRef, inject, model, signal } from '@angular/core';
|
|
2
2
|
import { addAfterEffect, addEffect, resolveRef } from 'angular-three';
|
|
3
3
|
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -37,16 +37,13 @@ export class NgtsIntersect {
|
|
|
37
37
|
constructor() {
|
|
38
38
|
this.intersect = model(false);
|
|
39
39
|
const host = inject(ElementRef);
|
|
40
|
-
|
|
41
|
-
afterNextRender(() => {
|
|
42
|
-
injectIntersect(() => host, { source: this.intersect, injector });
|
|
43
|
-
});
|
|
40
|
+
injectIntersect(() => host, { source: this.intersect });
|
|
44
41
|
}
|
|
45
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
46
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsIntersect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
43
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsIntersect, isStandalone: true, selector: "[intersect]", inputs: { intersect: { classPropertyName: "intersect", publicName: "intersect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersect: "intersectChange" }, ngImport: i0 }); }
|
|
47
44
|
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsIntersect, decorators: [{
|
|
49
46
|
type: Directive,
|
|
50
47
|
args: [{ standalone: true, selector: '[intersect]' }]
|
|
51
48
|
}], ctorParameters: () => [] });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9pbnRlcnNlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBWSxLQUFLLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUc1RCxNQUFNLFVBQVUsZUFBZSxDQUM5QixNQUE4RCxFQUM5RCxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFnRSxFQUFFO0lBRXBHLE9BQU8sY0FBYyxDQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3JELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7UUFFakIsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUVqQix3Q0FBd0M7WUFDeEMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDN0IsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDZCxPQUFPLElBQUksQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1lBRUgsK0RBQStEO1lBQy9ELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELEdBQUcsQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFMUMsMEVBQTBFO1lBQzFFLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xDLElBQUksS0FBSyxLQUFLLElBQUk7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLElBQUksQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxHQUFHLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztnQkFDakMsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxFQUFFLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBR0QsTUFBTSxPQUFPLGFBQWE7SUFHekI7UUFGQSxjQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBR3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBdUIsVUFBVSxDQUFDLENBQUM7UUFDdEQsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQU5XLGFBQWE7a0dBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsU0FBUzttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIEluamVjdG9yLCBtb2RlbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWRkQWZ0ZXJFZmZlY3QsIGFkZEVmZmVjdCwgcmVzb2x2ZVJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBPYmplY3QzRCB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEludGVyc2VjdDxUT2JqZWN0IGV4dGVuZHMgT2JqZWN0M0Q+KFxuXHRvYmplY3Q6ICgpID0+IEVsZW1lbnRSZWY8VE9iamVjdD4gfCBUT2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbCxcblx0eyBpbmplY3Rvciwgc291cmNlID0gc2lnbmFsKGZhbHNlKSB9OiB7IGluamVjdG9yPzogSW5qZWN0b3I7IHNvdXJjZT86IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+IH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0SW50ZXJzZWN0LCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGxldCBjaGVjayA9IGZhbHNlO1xuXHRcdGxldCB0ZW1wID0gZmFsc2U7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3Qgb2JqID0gcmVzb2x2ZVJlZihvYmplY3QoKSk7XG5cdFx0XHRpZiAoIW9iaikgcmV0dXJuO1xuXG5cdFx0XHQvLyBTdGFtcCBvdXQgZnJ1c3R1bSBjaGVjayBwcmUtZW1wdGl2ZWx5XG5cdFx0XHRjb25zdCB1bnN1YjEgPSBhZGRFZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjaGVjayA9IGZhbHNlO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBJZiB0aGUgb2JqZWN0IGlzIGluc2lkZSB0aGUgZnJ1c3R1bSB0aHJlZSB3aWxsIGNhbGwgb25SZW5kZXJcblx0XHRcdGNvbnN0IG9sZE9uUmVuZGVyID0gb2JqLm9uQmVmb3JlUmVuZGVyLmJpbmQob2JqKTtcblx0XHRcdG9iai5vbkJlZm9yZVJlbmRlciA9ICgpID0+IChjaGVjayA9IHRydWUpO1xuXG5cdFx0XHQvLyBDb21wYXJlIHRoZSBjaGVjayB2YWx1ZSBhZ2FpbnN0IHRoZSB0ZW1wIHZhbHVlLCBpZiBpdCBkaWZmZXJzIHNldCBzdGF0ZVxuXHRcdFx0Y29uc3QgdW5zdWIyID0gYWRkQWZ0ZXJFZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRpZiAoY2hlY2sgIT09IHRlbXApIHNvdXJjZS5zZXQoKHRlbXAgPSBjaGVjaykpO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0pO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRvYmoub25CZWZvcmVSZW5kZXIgPSBvbGRPblJlbmRlcjtcblx0XHRcdFx0dW5zdWIxKCk7XG5cdFx0XHRcdHVuc3ViMigpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gc291cmNlLmFzUmVhZG9ubHkoKTtcblx0fSk7XG59XG5cbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ1tpbnRlcnNlY3RdJyB9KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnRlcnNlY3Qge1xuXHRpbnRlcnNlY3QgPSBtb2RlbChmYWxzZSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPE9iamVjdDNEPj4oRWxlbWVudFJlZik7XG5cdFx0aW5qZWN0SW50ZXJzZWN0KCgpID0+IGhvc3QsIHsgc291cmNlOiB0aGlzLmludGVyc2VjdCB9KTtcblx0fVxufVxuIl19
|
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { checkUpdate, extend, getLocalState, omit, resolveRef } from 'angular-three';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
|
|
2
|
+
import { checkUpdate, extend, getLocalState, omit, pick, resolveRef } from 'angular-three';
|
|
3
3
|
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
5
4
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
6
5
|
import { Color, Group, InstancedBufferAttribute, Object3D, Vector3 } from 'three';
|
|
7
6
|
import { MeshSurfaceSampler } from 'three-stdlib';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
export function injectSurfaceSampler(mesh, options = () => ({}), { injector } = {}) {
|
|
10
9
|
return assertInjector(injectSurfaceSampler, injector, () => {
|
|
11
|
-
const
|
|
10
|
+
const initialBufferAttribute = (() => {
|
|
12
11
|
const arr = Array.from({ length: options().count ?? 16 }, () => [
|
|
13
12
|
1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
|
|
14
13
|
]).flat();
|
|
15
14
|
return new InstancedBufferAttribute(Float32Array.from(arr), 16);
|
|
16
|
-
})()
|
|
17
|
-
|
|
15
|
+
})();
|
|
16
|
+
return computed(() => {
|
|
18
17
|
const currentMesh = resolveRef(mesh());
|
|
19
18
|
if (!currentMesh)
|
|
20
|
-
return;
|
|
19
|
+
return initialBufferAttribute;
|
|
21
20
|
const localState = getLocalState(currentMesh);
|
|
22
21
|
if (!localState)
|
|
23
|
-
return;
|
|
22
|
+
return initialBufferAttribute;
|
|
24
23
|
const nonObjects = localState.nonObjects();
|
|
25
24
|
if (!nonObjects ||
|
|
26
25
|
!nonObjects.length ||
|
|
27
26
|
nonObjects.every((nonObject) => !nonObject.isBufferGeometry)) {
|
|
28
|
-
return;
|
|
27
|
+
return initialBufferAttribute;
|
|
29
28
|
}
|
|
30
29
|
const sampler = new MeshSurfaceSampler(currentMesh);
|
|
31
30
|
const { weight, count = 16, transform, instanceMesh } = options();
|
|
@@ -51,15 +50,14 @@ export function injectSurfaceSampler(mesh, options = () => ({}), { injector } =
|
|
|
51
50
|
if (instance) {
|
|
52
51
|
instance.setMatrixAt(i, dummy.matrix);
|
|
53
52
|
}
|
|
54
|
-
dummy.matrix.toArray(
|
|
53
|
+
dummy.matrix.toArray(initialBufferAttribute.array, i * 16);
|
|
55
54
|
}
|
|
56
55
|
if (instance) {
|
|
57
56
|
checkUpdate(instance.instanceMatrix);
|
|
58
57
|
}
|
|
59
|
-
checkUpdate(
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
return buffer.asReadonly();
|
|
58
|
+
checkUpdate(initialBufferAttribute);
|
|
59
|
+
return new InstancedBufferAttribute(initialBufferAttribute.array, initialBufferAttribute.itemSize).copy(initialBufferAttribute);
|
|
60
|
+
});
|
|
63
61
|
});
|
|
64
62
|
}
|
|
65
63
|
const defaultOptions = {
|
|
@@ -71,41 +69,43 @@ export class NgtsSampler {
|
|
|
71
69
|
this.instances = input(null);
|
|
72
70
|
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
73
71
|
this.parameters = omit(this.options, ['weight', 'transform', 'count']);
|
|
74
|
-
this
|
|
75
|
-
this.
|
|
76
|
-
this.
|
|
72
|
+
// NOTE: this could have been a viewChild.required, but we need to _try_ to consume
|
|
73
|
+
// this Signal earlier than when a viewChild.required would resolve.
|
|
74
|
+
this.groupRef = viewChild('group');
|
|
77
75
|
extend({ Group });
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
localState
|
|
90
|
-
.objects()
|
|
91
|
-
.find((c) => !!Object.getOwnPropertyDescriptor(c, 'instanceMatrix')));
|
|
92
|
-
}, { allowSignalWrites: true });
|
|
93
|
-
injectSurfaceSampler(this.meshToSample, () => ({
|
|
94
|
-
count: this.options().count,
|
|
95
|
-
transform: this.options().transform,
|
|
96
|
-
weight: this.options().weight,
|
|
97
|
-
instanceMesh: this.instancedToSample(),
|
|
98
|
-
}), { injector });
|
|
76
|
+
const sampleState = computed(() => {
|
|
77
|
+
const group = this.groupRef()?.nativeElement;
|
|
78
|
+
const localState = getLocalState(group);
|
|
79
|
+
if (!localState)
|
|
80
|
+
return { mesh: null, instanced: null };
|
|
81
|
+
const [mesh, instances] = [resolveRef(this.mesh()), resolveRef(this.instances())];
|
|
82
|
+
const objects = localState.objects();
|
|
83
|
+
return {
|
|
84
|
+
mesh: mesh ?? objects.find((c) => c.type === 'Mesh'),
|
|
85
|
+
instanced: instances ?? objects.find((c) => !!Object.getOwnPropertyDescriptor(c, 'instanceMatrix')),
|
|
86
|
+
};
|
|
99
87
|
});
|
|
88
|
+
const meshToSample = pick(sampleState, 'mesh');
|
|
89
|
+
const instancedToSample = pick(sampleState, 'instanced');
|
|
90
|
+
// NOTE: because injectSurfaceSampler returns a computed, we need to consume
|
|
91
|
+
// this computed in a Reactive Context (an effect) to ensure the inner logic of
|
|
92
|
+
// injectSurfaceSampler is run properly.
|
|
93
|
+
const sampler = injectSurfaceSampler(meshToSample, () => ({
|
|
94
|
+
count: this.options().count,
|
|
95
|
+
transform: this.options().transform,
|
|
96
|
+
weight: this.options().weight,
|
|
97
|
+
instanceMesh: instancedToSample(),
|
|
98
|
+
}));
|
|
99
|
+
effect(sampler);
|
|
100
100
|
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSampler, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsSampler, isStandalone: true, selector: "ngts-sampler", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "instances", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
103
103
|
<ngt-group #group [parameters]="parameters()">
|
|
104
104
|
<ng-content />
|
|
105
105
|
</ngt-group>
|
|
106
106
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
107
107
|
}
|
|
108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSampler, decorators: [{
|
|
109
109
|
type: Component,
|
|
110
110
|
args: [{
|
|
111
111
|
selector: 'ngts-sampler',
|
|
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
119
119
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
120
120
|
}]
|
|
121
121
|
}], ctorParameters: () => [] });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9saWIvc2FtcGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQVksSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBdUIsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBa0NsRCxNQUFNLFVBQVUsb0JBQW9CLENBQ25DLElBQXNELEVBQ3RELFVBS0ksR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDZCxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUUxQyxPQUFPLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQzFELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FDcEIsQ0FBQyxHQUFHLEVBQUU7WUFDTCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtB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SyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVM7Z0JBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTTtnQkFDN0IsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTthQUN0QyxDQUFDLEVBQ0YsRUFBRSxRQUFRLEVBQUUsQ0FDWixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQS9DVyxXQUFXO2tHQUFYLFdBQVcsOGpCQVJiOzs7O0VBSVQ7OzJGQUlXLFdBQVc7a0JBWHZCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNoZWNrVXBkYXRlLCBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndEdyb3VwLCBvbWl0LCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJ1ZmZlckdlb21ldHJ5LCBDb2xvciwgR3JvdXAsIEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSwgSW5zdGFuY2VkTWVzaCwgTWVzaCwgT2JqZWN0M0QsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoU3VyZmFjZVNhbXBsZXIgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5pbnRlcmZhY2UgU2FtcGxlUGF5bG9hZCB7XG5cdC8qKlxuXHQgKiBUaGUgcG9zaXRpb24gb2YgdGhlIHNhbXBsZS5cblx0ICovXG5cdHBvc2l0aW9uOiBWZWN0b3IzO1xuXHQvKipcblx0ICogVGhlIG5vcm1hbCBvZiB0aGUgbWVzaCBhdCB0aGUgc2FtcGxlZCBwb3NpdGlvbi5cblx0ICovXG5cdG5vcm1hbDogVmVjdG9yMztcblx0LyoqXG5cdCAqIFRoZSB2ZXJ0ZXggY29sb3Igb2YgdGhlIG1lc2ggYXQgdGhlIHNhbXBsZWQgcG9zaXRpb24uXG5cdCAqL1xuXHRjb2xvcjogQ29sb3I7XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUZuID0gKHBheWxvYWQ6IFRyYW5zZm9ybVBheWxvYWQsIGk6IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFRyYW5zZm9ybVBheWxvYWQgZXh0ZW5kcyBTYW1wbGVQYXlsb2FkIHtcblx0LyoqXG5cdCAqIFRoZSBkdW1teSBvYmplY3QgdXNlZCB0byB0cmFuc2Zvcm0gZWFjaCBpbnN0YW5jZS5cblx0ICogVGhpcyBvYmplY3QncyBtYXRyaXggd2lsbCBiZSB1cGRhdGVkIGFmdGVyIHRyYW5zZm9ybWluZyAmIGl0IHdpbGwgYmUgdXNlZFxuXHQgKiB0byBzZXQgdGhlIGluc3RhbmNlJ3MgbWF0cml4LlxuXHQgKi9cblx0ZHVtbXk6IE9iamVjdDNEO1xuXHQvKipcblx0ICogVGhlIG1lc2ggdGhhdCdzIGluaXRpYWxseSBwYXNzZWQgdG8gdGhlIHNhbXBsZXIuXG5cdCAqIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGFwcGx5IHRyYW5zZm9ybXMgZnJvbSB5b3VyIG1lc2ggdG8geW91ciBpbnN0YW5jZXNcblx0ICogb3IgaWYgeW91IG5lZWQgdG8gZ3JhYiBhdHRyaWJ1dGVzIGZyb20gdGhlIGdlb21ldHJ5LlxuXHQgKi9cblx0c2FtcGxlZE1lc2g6IE1lc2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTdXJmYWNlU2FtcGxlcihcblx0bWVzaDogKCkgPT4gRWxlbWVudFJlZjxNZXNoPiB8IE1lc2ggfCBudWxsIHwgdW5kZWZpbmVkLFxuXHRvcHRpb25zOiAoKSA9PiB7XG5cdFx0Y291bnQ/OiBudW1iZXI7XG5cdFx0dHJhbnNmb3JtPzogVHJhbnNmb3JtRm47XG5cdFx0d2VpZ2h0Pzogc3RyaW5nO1xuXHRcdGluc3RhbmNlTWVzaD86IEVsZW1lbnRSZWY8SW5zdGFuY2VkTWVzaD4gfCBJbnN0YW5jZWRNZXNoIHwgbnVsbDtcblx0fSA9ICgpID0+ICh7fSksXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0U3VyZmFjZVNhbXBsZXIsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgYnVmZmVyID0gc2lnbmFsKFxuXHRcdFx0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgYXJyID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogb3B0aW9ucygpLmNvdW50ID8/IDE2IH0sICgpID0+IFtcblx0XHRcdFx0XHQxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLFxuXHRcdFx0XHRdKS5mbGF0KCk7XG5cdFx0XHRcdHJldHVybiBuZXcgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlKEZsb2F0MzJBcnJheS5mcm9tKGFyciksIDE2KTtcblx0XHRcdH0pKCksXG5cdFx0KTtcblxuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y29uc3QgY3VycmVudE1lc2ggPSByZXNvbHZlUmVmKG1lc2goKSk7XG5cdFx0XHRcdGlmICghY3VycmVudE1lc2gpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShjdXJyZW50TWVzaCk7XG5cdFx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IG5vbk9iamVjdHMgPSBsb2NhbFN0YXRlLm5vbk9iamVjdHMoKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCFub25PYmplY3RzIHx8XG5cdFx0XHRcdFx0IW5vbk9iamVjdHMubGVuZ3RoIHx8XG5cdFx0XHRcdFx0bm9uT2JqZWN0cy5ldmVyeSgobm9uT2JqZWN0KSA9PiAhKG5vbk9iamVjdCBhcyBCdWZmZXJHZW9tZXRyeSkuaXNCdWZmZXJHZW9tZXRyeSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgc2FtcGxlciA9IG5ldyBNZXNoU3VyZmFjZVNhbXBsZXIoY3VycmVudE1lc2gpO1xuXG5cdFx0XHRcdGNvbnN0IHsgd2VpZ2h0LCBjb3VudCA9IDE2LCB0cmFuc2Zvcm0sIGluc3RhbmNlTWVzaCB9ID0gb3B0aW9ucygpO1xuXG5cdFx0XHRcdGlmICh3ZWlnaHQpIHtcblx0XHRcdFx0XHRzYW1wbGVyLnNldFdlaWdodEF0dHJpYnV0ZSh3ZWlnaHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0c2FtcGxlci5idWlsZCgpO1xuXG5cdFx0XHRcdGNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcblx0XHRcdFx0Y29uc3Qgbm9ybWFsID0gbmV3IFZlY3RvcjMoKTtcblx0XHRcdFx0Y29uc3QgY29sb3IgPSBuZXcgQ29sb3IoKTtcblx0XHRcdFx0Y29uc3QgZHVtbXkgPSBuZXcgT2JqZWN0M0QoKTtcblx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSByZXNvbHZlUmVmKGluc3RhbmNlTWVzaCk7XG5cblx0XHRcdFx0Y3VycmVudE1lc2gudXBkYXRlTWF0cml4V29ybGQodHJ1ZSk7XG5cblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0c2FtcGxlci5zYW1wbGUocG9zaXRpb24sIG5vcm1hbCwgY29sb3IpO1xuXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB0cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdHRyYW5zZm9ybSh7IGR1bW15LCBzYW1wbGVkTWVzaDogY3VycmVudE1lc2gsIHBvc2l0aW9uLCBub3JtYWwsIGNvbG9yIH0sIGkpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRkdW1teS5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRkdW1teS51cGRhdGVNYXRyaXgoKTtcblxuXHRcdFx0XHRcdGlmIChpbnN0YW5jZSkge1xuXHRcdFx0XHRcdFx0aW5zdGFuY2Uuc2V0TWF0cml4QXQoaSwgZHVtbXkubWF0cml4KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRkdW1teS5tYXRyaXgudG9BcnJheSh1bnRyYWNrZWQoYnVmZmVyKS5hcnJheSwgaSAqIDE2KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpbnN0YW5jZSkge1xuXHRcdFx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlLmluc3RhbmNlTWF0cml4KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNoZWNrVXBkYXRlKGJ1ZmZlcik7XG5cblx0XHRcdFx0YnVmZmVyLnNldChcblx0XHRcdFx0XHRuZXcgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlKHVudHJhY2tlZChidWZmZXIpLmFycmF5LCB1bnRyYWNrZWQoYnVmZmVyKS5pdGVtU2l6ZSkuY29weSh1bnRyYWNrZWQoYnVmZmVyKSksXG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cblx0XHRyZXR1cm4gYnVmZmVyLmFzUmVhZG9ubHkoKTtcblx0fSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1NhbXBsZXJPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RHcm91cD4ge1xuXHQvKipcblx0ICogVGhlIE5BTUUgb2YgdGhlIHdlaWdodCBhdHRyaWJ1dGUgdG8gdXNlIHdoZW4gc2FtcGxpbmcuXG5cdCAqXG5cdCAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNleGFtcGxlcy9lbi9tYXRoL01lc2hTdXJmYWNlU2FtcGxlci5zZXRXZWlnaHRBdHRyaWJ1dGVcblx0ICovXG5cdHdlaWdodD86IHN0cmluZztcblx0LyoqXG5cdCAqIFRyYW5zZm9ybWF0aW9uIHRvIGJlIGFwcGxpZWQgdG8gZWFjaCBpbnN0YW5jZS5cblx0ICogUmVjZWl2ZXMgYSBkdW1teSBvYmplY3QzRCB3aXRoIGFsbCB0aGUgc2FtcGxlZCBkYXRhICggQHNlZSBUcmFuc2Zvcm1QYXlsb2FkICkuXG5cdCAqIEl0IHNob3VsZCBtdXRhdGUgYHRyYW5zZm9ybVBheWxvYWQuZHVtbXlgLlxuXHQgKlxuXHQgKiBAc2VlICggQHRvZG8gYWRkIGxpbmsgdG8gZXhhbXBsZSApXG5cdCAqXG5cdCAqIFRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSBkdW1teSdzIG1hdHJpeFxuXHQgKi9cblx0dHJhbnNmb3JtPzogVHJhbnNmb3JtRm47XG5cdGNvdW50OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzU2FtcGxlck9wdGlvbnMgPSB7XG5cdGNvdW50OiAxNixcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc2FtcGxlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjZ3JvdXAgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU2FtcGxlciB7XG5cdG1lc2ggPSBpbnB1dDxFbGVtZW50UmVmPE1lc2g+IHwgTWVzaCB8IG51bGw+KG51bGwpO1xuXHRpbnN0YW5jZXMgPSBpbnB1dDxFbGVtZW50UmVmPEluc3RhbmNlZE1lc2g+IHwgSW5zdGFuY2VkTWVzaCB8IG51bGw+KG51bGwpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWyd3ZWlnaHQnLCAndHJhbnNmb3JtJywgJ2NvdW50J10pO1xuXG5cdGdyb3VwUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ3JvdXAnKTtcblxuXHRwcml2YXRlIG1lc2hUb1NhbXBsZSA9IHNpZ25hbDxNZXNoIHwgbnVsbD4obnVsbCk7XG5cdHByaXZhdGUgaW5zdGFuY2VkVG9TYW1wbGUgPSBzaWduYWw8SW5zdGFuY2VkTWVzaCB8IG51bGw+KG51bGwpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdFx0Y29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGdyb3VwKTtcblx0XHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRcdGNvbnN0IFttZXNoLCBpbnN0YW5jZXNdID0gW3Jlc29sdmVSZWYodGhpcy5tZXNoKCkpLCByZXNvbHZlUmVmKHRoaXMuaW5zdGFuY2VzKCkpXTtcblxuXHRcdFx0XHRcdHRoaXMubWVzaFRvU2FtcGxlLnNldChtZXNoID8/IChsb2NhbFN0YXRlLm9iamVjdHMoKS5maW5kKChjKSA9PiBjLnR5cGUgPT09ICdNZXNoJykgYXMgTWVzaCkpO1xuXHRcdFx0XHRcdHRoaXMuaW5zdGFuY2VkVG9TYW1wbGUuc2V0KFxuXHRcdFx0XHRcdFx0aW5zdGFuY2VzID8/XG5cdFx0XHRcdFx0XHRcdChsb2NhbFN0YXRlXG5cdFx0XHRcdFx0XHRcdFx0Lm9iamVjdHMoKVxuXHRcdFx0XHRcdFx0XHRcdC5maW5kKChjKSA9PiAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYywgJ2luc3RhbmNlTWF0cml4JykpIGFzIEluc3RhbmNlZE1lc2gpLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHRcdCk7XG5cblx0XHRcdGluamVjdFN1cmZhY2VTYW1wbGVyKFxuXHRcdFx0XHR0aGlzLm1lc2hUb1NhbXBsZSxcblx0XHRcdFx0KCkgPT4gKHtcblx0XHRcdFx0XHRjb3VudDogdGhpcy5vcHRpb25zKCkuY291bnQsXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0aGlzLm9wdGlvbnMoKS50cmFuc2Zvcm0sXG5cdFx0XHRcdFx0d2VpZ2h0OiB0aGlzLm9wdGlvbnMoKS53ZWlnaHQsXG5cdFx0XHRcdFx0aW5zdGFuY2VNZXNoOiB0aGlzLmluc3RhbmNlZFRvU2FtcGxlKCksXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR7IGluamVjdG9yIH0sXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9saWIvc2FtcGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFHTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBWSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBdUIsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBa0NsRCxNQUFNLFVBQVUsb0JBQW9CLENBQ25DLElBQXNELEVBQ3RELFVBS0ksR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDZCxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUUxQyxPQUFPLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQzFELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQy9ELENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFB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SUFDakIsQ0FBQzs4R0F6Q1csV0FBVztrR0FBWCxXQUFXLDhqQkFSYjs7OztFQUlUOzsyRkFJVyxXQUFXO2tCQVh2QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNoZWNrVXBkYXRlLCBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndEdyb3VwLCBvbWl0LCBwaWNrLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJ1ZmZlckdlb21ldHJ5LCBDb2xvciwgR3JvdXAsIEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSwgSW5zdGFuY2VkTWVzaCwgTWVzaCwgT2JqZWN0M0QsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoU3VyZmFjZVNhbXBsZXIgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5pbnRlcmZhY2UgU2FtcGxlUGF5bG9hZCB7XG5cdC8qKlxuXHQgKiBUaGUgcG9zaXRpb24gb2YgdGhlIHNhbXBsZS5cblx0ICovXG5cdHBvc2l0aW9uOiBWZWN0b3IzO1xuXHQvKipcblx0ICogVGhlIG5vcm1hbCBvZiB0aGUgbWVzaCBhdCB0aGUgc2FtcGxlZCBwb3NpdGlvbi5cblx0ICovXG5cdG5vcm1hbDogVmVjdG9yMztcblx0LyoqXG5cdCAqIFRoZSB2ZXJ0ZXggY29sb3Igb2YgdGhlIG1lc2ggYXQgdGhlIHNhbXBsZWQgcG9zaXRpb24uXG5cdCAqL1xuXHRjb2xvcjogQ29sb3I7XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUZuID0gKHBheWxvYWQ6IFRyYW5zZm9ybVBheWxvYWQsIGk6IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFRyYW5zZm9ybVBheWxvYWQgZXh0ZW5kcyBTYW1wbGVQYXlsb2FkIHtcblx0LyoqXG5cdCAqIFRoZSBkdW1teSBvYmplY3QgdXNlZCB0byB0cmFuc2Zvcm0gZWFjaCBpbnN0YW5jZS5cblx0ICogVGhpcyBvYmplY3QncyBtYXRyaXggd2lsbCBiZSB1cGRhdGVkIGFmdGVyIHRyYW5zZm9ybWluZyAmIGl0IHdpbGwgYmUgdXNlZFxuXHQgKiB0byBzZXQgdGhlIGluc3RhbmNlJ3MgbWF0cml4LlxuXHQgKi9cblx0ZHVtbXk6IE9iamVjdDNEO1xuXHQvKipcblx0ICogVGhlIG1lc2ggdGhhdCdzIGluaXRpYWxseSBwYXNzZWQgdG8gdGhlIHNhbXBsZXIuXG5cdCAqIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGFwcGx5IHRyYW5zZm9ybXMgZnJvbSB5b3VyIG1lc2ggdG8geW91ciBpbnN0YW5jZXNcblx0ICogb3IgaWYgeW91IG5lZWQgdG8gZ3JhYiBhdHRyaWJ1dGVzIGZyb20gdGhlIGdlb21ldHJ5LlxuXHQgKi9cblx0c2FtcGxlZE1lc2g6IE1lc2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTdXJmYWNlU2FtcGxlcihcblx0bWVzaDogKCkgPT4gRWxlbWVudFJlZjxNZXNoPiB8IE1lc2ggfCBudWxsIHwgdW5kZWZpbmVkLFxuXHRvcHRpb25zOiAoKSA9PiB7XG5cdFx0Y291bnQ/OiBudW1iZXI7XG5cdFx0dHJhbnNmb3JtPzogVHJhbnNmb3JtRm47XG5cdFx0d2VpZ2h0Pzogc3RyaW5nO1xuXHRcdGluc3RhbmNlTWVzaD86IEVsZW1lbnRSZWY8SW5zdGFuY2VkTWVzaD4gfCBJbnN0YW5jZWRNZXNoIHwgbnVsbDtcblx0fSA9ICgpID0+ICh7fSksXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0U3VyZmFjZVNhbXBsZXIsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgaW5pdGlhbEJ1ZmZlckF0dHJpYnV0ZSA9ICgoKSA9PiB7XG5cdFx0XHRjb25zdCBhcnIgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBvcHRpb25zKCkuY291bnQgPz8gMTYgfSwgKCkgPT4gW1xuXHRcdFx0XHQxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLFxuXHRcdFx0XSkuZmxhdCgpO1xuXHRcdFx0cmV0dXJuIG5ldyBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUoRmxvYXQzMkFycmF5LmZyb20oYXJyKSwgMTYpO1xuXHRcdH0pKCk7XG5cblx0XHRyZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgY3VycmVudE1lc2ggPSByZXNvbHZlUmVmKG1lc2goKSk7XG5cdFx0XHRpZiAoIWN1cnJlbnRNZXNoKSByZXR1cm4gaW5pdGlhbEJ1ZmZlckF0dHJpYnV0ZTtcblxuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY3VycmVudE1lc2gpO1xuXHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm4gaW5pdGlhbEJ1ZmZlckF0dHJpYnV0ZTtcblxuXHRcdFx0Y29uc3Qgbm9uT2JqZWN0cyA9IGxvY2FsU3RhdGUubm9uT2JqZWN0cygpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHQhbm9uT2JqZWN0cyB8fFxuXHRcdFx0XHQhbm9uT2JqZWN0cy5sZW5ndGggfHxcblx0XHRcdFx0bm9uT2JqZWN0cy5ldmVyeSgobm9uT2JqZWN0KSA9PiAhKG5vbk9iamVjdCBhcyBCdWZmZXJHZW9tZXRyeSkuaXNCdWZmZXJHZW9tZXRyeSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gaW5pdGlhbEJ1ZmZlckF0dHJpYnV0ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgc2FtcGxlciA9IG5ldyBNZXNoU3VyZmFjZVNhbXBsZXIoY3VycmVudE1lc2gpO1xuXHRcdFx0Y29uc3QgeyB3ZWlnaHQsIGNvdW50ID0gMTYsIHRyYW5zZm9ybSwgaW5zdGFuY2VNZXNoIH0gPSBvcHRpb25zKCk7XG5cblx0XHRcdGlmICh3ZWlnaHQpIHtcblx0XHRcdFx0c2FtcGxlci5zZXRXZWlnaHRBdHRyaWJ1dGUod2VpZ2h0KTtcblx0XHRcdH1cblxuXHRcdFx0c2FtcGxlci5idWlsZCgpO1xuXG5cdFx0XHRjb25zdCBwb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XG5cdFx0XHRjb25zdCBub3JtYWwgPSBuZXcgVmVjdG9yMygpO1xuXHRcdFx0Y29uc3QgY29sb3IgPSBuZXcgQ29sb3IoKTtcblx0XHRcdGNvbnN0IGR1bW15ID0gbmV3IE9iamVjdDNEKCk7XG5cdFx0XHRjb25zdCBpbnN0YW5jZSA9IHJlc29sdmVSZWYoaW5zdGFuY2VNZXNoKTtcblxuXHRcdFx0Y3VycmVudE1lc2gudXBkYXRlTWF0cml4V29ybGQodHJ1ZSk7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuXHRcdFx0XHRzYW1wbGVyLnNhbXBsZShwb3NpdGlvbiwgbm9ybWFsLCBjb2xvcik7XG5cblx0XHRcdFx0aWYgKHR5cGVvZiB0cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHR0cmFuc2Zvcm0oeyBkdW1teSwgc2FtcGxlZE1lc2g6IGN1cnJlbnRNZXNoLCBwb3NpdGlvbiwgbm9ybWFsLCBjb2xvciB9LCBpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkdW1teS5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGR1bW15LnVwZGF0ZU1hdHJpeCgpO1xuXG5cdFx0XHRcdGlmIChpbnN0YW5jZSkge1xuXHRcdFx0XHRcdGluc3RhbmNlLnNldE1hdHJpeEF0KGksIGR1bW15Lm1hdHJpeCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkdW1teS5tYXRyaXgudG9BcnJheShpbml0aWFsQnVmZmVyQXR0cmlidXRlLmFycmF5LCBpICogMTYpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaW5zdGFuY2UpIHtcblx0XHRcdFx0Y2hlY2tVcGRhdGUoaW5zdGFuY2UuaW5zdGFuY2VNYXRyaXgpO1xuXHRcdFx0fVxuXG5cdFx0XHRjaGVja1VwZGF0ZShpbml0aWFsQnVmZmVyQXR0cmlidXRlKTtcblxuXHRcdFx0cmV0dXJuIG5ldyBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUoaW5pdGlhbEJ1ZmZlckF0dHJpYnV0ZS5hcnJheSwgaW5pdGlhbEJ1ZmZlckF0dHJpYnV0ZS5pdGVtU2l6ZSkuY29weShcblx0XHRcdFx0aW5pdGlhbEJ1ZmZlckF0dHJpYnV0ZSxcblx0XHRcdCk7XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNTYW1wbGVyT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0R3JvdXA+IHtcblx0LyoqXG5cdCAqIFRoZSBOQU1FIG9mIHRoZSB3ZWlnaHQgYXR0cmlidXRlIHRvIHVzZSB3aGVuIHNhbXBsaW5nLlxuXHQgKlxuXHQgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jZXhhbXBsZXMvZW4vbWF0aC9NZXNoU3VyZmFjZVNhbXBsZXIuc2V0V2VpZ2h0QXR0cmlidXRlXG5cdCAqL1xuXHR3ZWlnaHQ/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm1hdGlvbiB0byBiZSBhcHBsaWVkIHRvIGVhY2ggaW5zdGFuY2UuXG5cdCAqIFJlY2VpdmVzIGEgZHVtbXkgb2JqZWN0M0Qgd2l0aCBhbGwgdGhlIHNhbXBsZWQgZGF0YSAoIEBzZWUgVHJhbnNmb3JtUGF5bG9hZCApLlxuXHQgKiBJdCBzaG91bGQgbXV0YXRlIGB0cmFuc2Zvcm1QYXlsb2FkLmR1bW15YC5cblx0ICpcblx0ICogQHNlZSAoIEB0b2RvIGFkZCBsaW5rIHRvIGV4YW1wbGUgKVxuXHQgKlxuXHQgKiBUaGVyZSBpcyBubyBuZWVkIHRvIHVwZGF0ZSB0aGUgZHVtbXkncyBtYXRyaXhcblx0ICovXG5cdHRyYW5zZm9ybT86IFRyYW5zZm9ybUZuO1xuXHRjb3VudDogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1NhbXBsZXJPcHRpb25zID0ge1xuXHRjb3VudDogMTYsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNhbXBsZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgI2dyb3VwIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1NhbXBsZXIge1xuXHRtZXNoID0gaW5wdXQ8RWxlbWVudFJlZjxNZXNoPiB8IE1lc2ggfCBudWxsPihudWxsKTtcblx0aW5zdGFuY2VzID0gaW5wdXQ8RWxlbWVudFJlZjxJbnN0YW5jZWRNZXNoPiB8IEluc3RhbmNlZE1lc2ggfCBudWxsPihudWxsKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnd2VpZ2h0JywgJ3RyYW5zZm9ybScsICdjb3VudCddKTtcblxuXHQvLyBOT1RFOiB0aGlzIGNvdWxkIGhhdmUgYmVlbiBhIHZpZXdDaGlsZC5yZXF1aXJlZCwgYnV0IHdlIG5lZWQgdG8gX3RyeV8gdG8gY29uc3VtZVxuXHQvLyAgdGhpcyBTaWduYWwgZWFybGllciB0aGFuIHdoZW4gYSB2aWV3Q2hpbGQucmVxdWlyZWQgd291bGQgcmVzb2x2ZS5cblx0Z3JvdXBSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXG5cdFx0Y29uc3Qgc2FtcGxlU3RhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGdyb3VwKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuIHsgbWVzaDogbnVsbCwgaW5zdGFuY2VkOiBudWxsIH07XG5cblx0XHRcdGNvbnN0IFttZXNoLCBpbnN0YW5jZXNdID0gW3Jlc29sdmVSZWYodGhpcy5tZXNoKCkpLCByZXNvbHZlUmVmKHRoaXMuaW5zdGFuY2VzKCkpXTtcblx0XHRcdGNvbnN0IG9iamVjdHMgPSBsb2NhbFN0YXRlLm9iamVjdHMoKTtcblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0bWVzaDogbWVzaCA/PyAob2JqZWN0cy5maW5kKChjKSA9PiBjLnR5cGUgPT09ICdNZXNoJykgYXMgTWVzaCksXG5cdFx0XHRcdGluc3RhbmNlZDpcblx0XHRcdFx0XHRpbnN0YW5jZXMgPz8gKG9iamVjdHMuZmluZCgoYykgPT4gISFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMsICdpbnN0YW5jZU1hdHJpeCcpKSBhcyBJbnN0YW5jZWRNZXNoKSxcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0XHRjb25zdCBtZXNoVG9TYW1wbGUgPSBwaWNrKHNhbXBsZVN0YXRlLCAnbWVzaCcpO1xuXHRcdGNvbnN0IGluc3RhbmNlZFRvU2FtcGxlID0gcGljayhzYW1wbGVTdGF0ZSwgJ2luc3RhbmNlZCcpO1xuXG5cdFx0Ly8gTk9URTogYmVjYXVzZSBpbmplY3RTdXJmYWNlU2FtcGxlciByZXR1cm5zIGEgY29tcHV0ZWQsIHdlIG5lZWQgdG8gY29uc3VtZVxuXHRcdC8vICB0aGlzIGNvbXB1dGVkIGluIGEgUmVhY3RpdmUgQ29udGV4dCAoYW4gZWZmZWN0KSB0byBlbnN1cmUgdGhlIGlubmVyIGxvZ2ljIG9mXG5cdFx0Ly8gIGluamVjdFN1cmZhY2VTYW1wbGVyIGlzIHJ1biBwcm9wZXJseS5cblx0XHRjb25zdCBzYW1wbGVyID0gaW5qZWN0U3VyZmFjZVNhbXBsZXIobWVzaFRvU2FtcGxlLCAoKSA9PiAoe1xuXHRcdFx0Y291bnQ6IHRoaXMub3B0aW9ucygpLmNvdW50LFxuXHRcdFx0dHJhbnNmb3JtOiB0aGlzLm9wdGlvbnMoKS50cmFuc2Zvcm0sXG5cdFx0XHR3ZWlnaHQ6IHRoaXMub3B0aW9ucygpLndlaWdodCxcblx0XHRcdGluc3RhbmNlTWVzaDogaW5zdGFuY2VkVG9TYW1wbGUoKSxcblx0XHR9KSk7XG5cdFx0ZWZmZWN0KHNhbXBsZXIpO1xuXHR9XG59XG4iXX0=
|