angular-three-soba 2.0.0-beta.4 → 2.0.0-beta.6
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/edges/edges.d.ts +1 -1
- package/abstractions/grid/grid.d.ts +1 -1
- package/abstractions/text-3d/text-3d.d.ts +1 -1
- package/controls/orbit-controls/orbit-controls.d.ts +4 -2
- package/esm2022/abstractions/billboard/billboard.mjs +3 -3
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +3 -3
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/edges/edges.mjs +3 -3
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +6 -6
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +3 -3
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +6 -6
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +3 -3
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +6 -6
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +6 -6
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +3 -3
- package/esm2022/abstractions/grid/grid.mjs +3 -3
- package/esm2022/abstractions/line/line-input.mjs +3 -3
- package/esm2022/abstractions/line/line.mjs +6 -6
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/text/text.mjs +3 -3
- package/esm2022/abstractions/text-3d/text-3d.mjs +3 -3
- package/esm2022/cameras/camera/camera-content.mjs +3 -3
- package/esm2022/cameras/camera/camera.mjs +6 -6
- package/esm2022/cameras/cube-camera/cube-camera.mjs +3 -3
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +3 -3
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +3 -3
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +20 -8
- package/esm2022/loaders/loader/loader.mjs +3 -3
- package/esm2022/loaders/progress/progress.mjs +4 -11
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +3 -3
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +3 -3
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +3 -3
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +3 -3
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +3 -3
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +3 -3
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +3 -3
- package/esm2022/performance/adaptive/adaptive-events.mjs +3 -3
- package/esm2022/performance/detailed/detailed.mjs +3 -3
- package/esm2022/performance/instances/instance.mjs +6 -6
- package/esm2022/performance/instances/instances.mjs +6 -6
- package/esm2022/performance/stats/stats.mjs +3 -3
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +6 -6
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +6 -6
- package/esm2022/staging/bounds/bounds.mjs +6 -6
- package/esm2022/staging/camera-shake/camera-shake.mjs +3 -3
- package/esm2022/staging/caustics/caustisc.mjs +6 -6
- package/esm2022/staging/center/center.mjs +7 -7
- package/esm2022/staging/cloud/cloud.mjs +3 -3
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +3 -3
- package/esm2022/staging/environment/environment-cube.mjs +6 -6
- package/esm2022/staging/environment/environment-ground.mjs +3 -3
- package/esm2022/staging/environment/environment-input.mjs +3 -3
- package/esm2022/staging/environment/environment-map.mjs +6 -6
- package/esm2022/staging/environment/environment-portal.mjs +6 -6
- package/esm2022/staging/environment/environment.mjs +6 -6
- package/esm2022/staging/float/float.mjs +3 -3
- package/esm2022/staging/sky/sky.mjs +3 -3
- package/esm2022/staging/sparkles/sparkles.mjs +3 -3
- package/esm2022/staging/spot-light/spot-light-input.mjs +3 -3
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +3 -3
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +17 -15
- package/esm2022/staging/spot-light/spot-light.mjs +3 -3
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +3 -3
- package/esm2022/staging/stage/stage.mjs +10 -10
- package/esm2022/staging/stars/stars.mjs +3 -3
- package/fesm2022/angular-three-soba-abstractions.mjs +63 -63
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +17 -17
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +18 -6
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +6 -13
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +15 -15
- package/fesm2022/angular-three-soba-misc.mjs +3 -3
- package/fesm2022/angular-three-soba-performance.mjs +21 -21
- package/fesm2022/angular-three-soba-performance.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +102 -100
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/package.json +21 -19
- package/performance/instances/instances.d.ts +2 -2
- package/performance/instances/position-mesh.d.ts +1 -1
- package/plugin/package.json +2 -2
- package/plugin/src/generators/init/init.d.ts +1 -1
- package/plugin/src/generators/init/init.js +1 -1
- package/staging/caustics/caustisc.d.ts +1 -1
- package/staging/sparkles/sparkles.d.ts +1 -1
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +2 -2
- package/staging/spot-light/volumetric-mesh.d.ts +1 -1
- package/staging/stage/stage.d.ts +0 -1
- package/staging/stars/stars.d.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CUSTOM_ELEMENTS_SCHEMA, Component, effect, inject } from '@angular/core';
|
|
2
|
-
import { extend, injectNgtRef,
|
|
2
|
+
import { extend, injectNgtRef, requestAnimationFrameInInjectionContext } from 'angular-three';
|
|
3
3
|
import { NGTS_INSTANCES_API } from './instances';
|
|
4
4
|
import { PositionMesh } from './position-mesh';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -8,14 +8,14 @@ class NgtsInstance {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
this.positionMeshRef = injectNgtRef();
|
|
10
10
|
this.instancesApi = inject(NGTS_INSTANCES_API);
|
|
11
|
-
|
|
11
|
+
requestAnimationFrameInInjectionContext(() => {
|
|
12
12
|
effect((onCleanup) => {
|
|
13
13
|
onCleanup(this.instancesApi().subscribe(this.positionMeshRef));
|
|
14
14
|
});
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", ngImport: i0, template: `
|
|
19
19
|
<ngt-position-mesh
|
|
20
20
|
ngtCompound
|
|
21
21
|
[ref]="positionMeshRef"
|
|
@@ -27,7 +27,7 @@ class NgtsInstance {
|
|
|
27
27
|
`, isInline: true }); }
|
|
28
28
|
}
|
|
29
29
|
export { NgtsInstance };
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsInstance, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{
|
|
33
33
|
selector: 'ngts-instance',
|
|
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
45
45
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
46
46
|
}]
|
|
47
47
|
}], ctorParameters: function () { return []; } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2Uvc3JjL2luc3RhbmNlcy9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFL0MsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUV6QixNQWVhLFlBQVk7SUFJckI7UUFIbUIsb0JBQWUsR0FBRyxZQUFZLEVBQWdCLENBQUM7UUFDL0MsaUJBQVksR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUd6RCx1Q0FBdUMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ25FLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQVZRLFlBQVk7a0dBQVosWUFBWSx5RUFaWDs7Ozs7Ozs7O0tBU1Q7O1NBR1EsWUFBWTsyRkFBWixZQUFZO2tCQWZ4QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7S0FTVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdE5ndFJlZiwgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOR1RTX0lOU1RBTkNFU19BUEkgfSBmcm9tICcuL2luc3RhbmNlcyc7XG5pbXBvcnQgeyBQb3NpdGlvbk1lc2ggfSBmcm9tICcuL3Bvc2l0aW9uLW1lc2gnO1xuXG5leHRlbmQoeyBQb3NpdGlvbk1lc2ggfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1pbnN0YW5jZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LXBvc2l0aW9uLW1lc2hcbiAgICAgICAgICAgIG5ndENvbXBvdW5kXG4gICAgICAgICAgICBbcmVmXT1cInBvc2l0aW9uTWVzaFJlZlwiXG4gICAgICAgICAgICBbaW5zdGFuY2VLZXldPVwicG9zaXRpb25NZXNoUmVmXCJcbiAgICAgICAgICAgIFtpbnN0YW5jZV09XCJpbnN0YW5jZXNBcGkoKS5nZXRQYXJlbnQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvbmd0LXBvc2l0aW9uLW1lc2g+XG4gICAgYCxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnN0YW5jZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvc2l0aW9uTWVzaFJlZiA9IGluamVjdE5ndFJlZjxQb3NpdGlvbk1lc2g+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGluc3RhbmNlc0FwaSA9IGluamVjdChOR1RTX0lOU1RBTkNFU19BUEkpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZUluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQ2xlYW51cCh0aGlzLmluc3RhbmNlc0FwaSgpLnN1YnNjcmliZSh0aGlzLnBvc2l0aW9uTWVzaFJlZikpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CUSTOM_ELEMENTS_SCHEMA, Component, InjectionToken, Input, computed, effect, signal, } from '@angular/core';
|
|
2
|
-
import { NgtArgs, NgtSignalStore, checkUpdate, extend, injectBeforeRender, injectNgtRef,
|
|
2
|
+
import { NgtArgs, NgtSignalStore, checkUpdate, extend, injectBeforeRender, injectNgtRef, requestAnimationFrameInInjectionContext, } from 'angular-three';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { InstancedBufferAttribute, InstancedMesh } from 'three';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -53,7 +53,7 @@ class NgtsInstances extends NgtSignalStore {
|
|
|
53
53
|
return () => this.instances.update((prev) => prev.filter((instance) => instance.nativeElement !== ref.nativeElement));
|
|
54
54
|
},
|
|
55
55
|
}));
|
|
56
|
-
|
|
56
|
+
requestAnimationFrameInInjectionContext(() => {
|
|
57
57
|
this.#checkUpdate();
|
|
58
58
|
this.#setBeforeRender();
|
|
59
59
|
});
|
|
@@ -106,8 +106,8 @@ class NgtsInstances extends NgtSignalStore {
|
|
|
106
106
|
}
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { instancesRef: "instancesRef", range: "range", limit: "limit", frames: "frames" }, providers: [
|
|
111
111
|
{ provide: NGTS_INSTANCES_API, useFactory: (instances) => instances.api, deps: [NgtsInstances] },
|
|
112
112
|
], usesInheritance: true, ngImport: i0, template: `
|
|
113
113
|
<ngt-instanced-mesh
|
|
@@ -138,7 +138,7 @@ class NgtsInstances extends NgtSignalStore {
|
|
|
138
138
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
|
|
139
139
|
}
|
|
140
140
|
export { NgtsInstances };
|
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsInstances, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
143
|
args: [{
|
|
144
144
|
selector: 'ngts-instances',
|
|
@@ -186,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
186
186
|
}], frames: [{
|
|
187
187
|
type: Input
|
|
188
188
|
}] } });
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlL3NyYy9pbnN0YW5jZXMvaW5zdGFuY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsU0FBUyxFQUVULGNBQWMsRUFDZCxLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxjQUFjLEVBQ2QsV0FBVyxFQUNYLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGtDQUFrQyxHQUNyQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUdoRSxNQUFNLENBQUMsRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO0FBYXBELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUEyQixtQkFBbUIsQ0FBQyxDQUFDO0FBRXBHLE1Bb0NhLGFBQWMsU0FBUSxjQUFrQztJQU1qRSxJQUErQixLQUFLLENBQUMsS0FBYTtRQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRVEsYUFBYSxDQUF1QjtJQUNwQyxlQUFlLENBQXVCO0lB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QUFDO2FBQ1g7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBNUdRLGFBQWE7a0dBQWIsYUFBYSx5SkFMWDtZQUNQLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxDQUFDLFNBQXdCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUU7U0FDbEgsaURBOUJTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCVCw0REFDUyxPQUFPOztTQU1SLGFBQWE7MkZBQWIsYUFBYTtrQkFwQ3pCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EwQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLENBQUMsU0FBd0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFO3FCQUNsSDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBS1ksWUFBWTtzQkFBcEIsS0FBSztnQkFFeUIsS0FBSztzQkFBbkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSVosS0FBSztzQkFBakIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIFNpZ25hbCxcbiAgICBjb21wdXRlZCxcbiAgICBlZmZlY3QsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgTmd0QXJncyxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBjaGVja1VwZGF0ZSxcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyLFxuICAgIGluamVjdE5ndFJlZixcbiAgICByZXF1ZXN0QW5pbWF0aW9uSW5JbmplY3Rpb25Db250ZXh0LFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSwgSW5zdGFuY2VkTWVzaCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFBvc2l0aW9uTWVzaCB9IGZyb20gJy4vcG9zaXRpb24tbWVzaCc7XG5cbmV4dGVuZCh7IEluc3RhbmNlZE1lc2gsIEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzSW5zdGFuY2VzU3RhdGUge1xuICAgIHJhbmdlOiBudW1iZXI7XG4gICAgbGltaXQ6IG51bWJlcjtcbiAgICBmcmFtZXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzSW5zdGFuY2VzQXBpIHtcbiAgICBnZXRQYXJlbnQ6ICgpID0+IEVsZW1lbnRSZWY8SW5zdGFuY2VkTWVzaD47XG4gICAgc3Vic2NyaWJlOiAocmVmOiBFbGVtZW50UmVmPFBvc2l0aW9uTWVzaD4pID0+ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBOR1RTX0lOU1RBTkNFU19BUEkgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2lnbmFsPE5ndHNJbnN0YW5jZXNBcGk+PignTmd0c0luc3RhbmNlcyBBUEknKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWluc3RhbmNlcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LWluc3RhbmNlZC1tZXNoXG4gICAgICAgICAgICAqYXJncz1cIlt1bmRlZmluZWQsIHVuZGVmaW5lZCwgMF1cIlxuICAgICAgICAgICAgbmd0Q29tcG91bmRcbiAgICAgICAgICAgIFtyZWZdPVwiaW5zdGFuY2VzUmVmXCJcbiAgICAgICAgICAgIFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtyYXljYXN0XT1cIm51bGxSYXljYXN0XCJcbiAgICAgICAgICAgIFt1c2VyRGF0YV09XCJ7IGluc3RhbmNlcyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgIGF0dGFjaD1cImluc3RhbmNlTWF0cml4XCJcbiAgICAgICAgICAgICAgICBbY291bnRdPVwibWF0cmljZXMoKS5sZW5ndGggLyAxNlwiXG4gICAgICAgICAgICAgICAgW2FycmF5XT1cIm1hdHJpY2VzKClcIlxuICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgICAgW3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICBhdHRhY2g9XCJpbnN0YW5jZUNvbG9yXCJcbiAgICAgICAgICAgICAgICBbY291bnRdPVwiY29sb3JzKCkubGVuZ3RoIC8gM1wiXG4gICAgICAgICAgICAgICAgW2FycmF5XT1cImNvbG9ycygpXCJcbiAgICAgICAgICAgICAgICBbaXRlbVNpemVdPVwiM1wiXG4gICAgICAgICAgICAgICAgW3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPC9uZ3QtaW5zdGFuY2VkLW1lc2g+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0QXJnc10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTkdUU19JTlNUQU5DRVNfQVBJLCB1c2VGYWN0b3J5OiAoaW5zdGFuY2VzOiBOZ3RzSW5zdGFuY2VzKSA9PiBpbnN0YW5jZXMuYXBpLCBkZXBzOiBbTmd0c0luc3RhbmNlc10gfSxcbiAgICBdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0luc3RhbmNlcyBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndHNJbnN0YW5jZXNTdGF0ZT4ge1xuICAgIHJlYWRvbmx5IG51bGxSYXljYXN0ID0gKCkgPT4gbnVsbDtcbiAgICByZWFkb25seSBEeW5hbWljRHJhd1VzYWdlID0gVEhSRUUuRHluYW1pY0RyYXdVc2FnZTtcblxuICAgIEBJbnB1dCgpIGluc3RhbmNlc1JlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5JbnN0YW5jZWRNZXNoPigpO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2V0IHJhbmdlKHJhbmdlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYW5nZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbGltaXQobGltaXQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGxpbWl0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZXMgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgI3BhcmVudE1hdHJpeCA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG4gICAgcmVhZG9ubHkgI2luc3RhbmNlTWF0cml4ID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbiAgICByZWFkb25seSAjdGVtcE1hdHJpeCA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG4gICAgcmVhZG9ubHkgI3RyYW5zbGF0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICByZWFkb25seSAjcm90YXRpb24gPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuICAgIHJlYWRvbmx5ICNzY2FsZSA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cbiAgICByZWFkb25seSAjbGltaXQgPSB0aGlzLnNlbGVjdCgnbGltaXQnKTtcblxuICAgIHJlYWRvbmx5IG1hdHJpY2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBsaW1pdCA9IHRoaXMuI2xpbWl0KCk7XG4gICAgICAgIGNvbnN0IG1BcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkobGltaXQgKiAxNik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykgdGhpcy4jdGVtcE1hdHJpeC5pZGVudGl0eSgpLnRvQXJyYXkobUFycmF5LCBpICogMTYpO1xuICAgICAgICByZXR1cm4gbUFycmF5O1xuICAgIH0pO1xuICAgIHJlYWRvbmx5IGNvbG9ycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbGltaXQgPSB0aGlzLiNsaW1pdCgpO1xuICAgICAgICByZXR1cm4gbmV3IEZsb2F0MzJBcnJheShbLi4ubmV3IEFycmF5KGxpbWl0ICogMyldLm1hcCgoKSA9PiAxKSk7XG4gICAgfSk7XG5cbiAgICByZWFkb25seSBpbnN0YW5jZXMgPSBzaWduYWw8QXJyYXk8RWxlbWVudFJlZjxQb3NpdGlvbk1lc2g+Pj4oW10pO1xuXG4gICAgcmVhZG9ubHkgYXBpID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgICAgZ2V0UGFyZW50OiAoKSA9PiB0aGlzLmluc3RhbmNlc1JlZixcbiAgICAgICAgc3Vic2NyaWJlOiAocmVmOiBFbGVtZW50UmVmPFBvc2l0aW9uTWVzaD4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VzLnVwZGF0ZSgocHJldikgPT4gWy4uLnByZXYsIHJlZl0pO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZXMudXBkYXRlKChwcmV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBwcmV2LmZpbHRlcigoaW5zdGFuY2UpID0+IGluc3RhbmNlLm5hdGl2ZUVsZW1lbnQgIT09IHJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgfSkpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHsgbGltaXQ6IDEwMDAsIGZyYW1lczogSW5maW5pdHkgfSk7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25JbkluamVjdGlvbkNvbnRleHQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jY2hlY2tVcGRhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuI3NldEJlZm9yZVJlbmRlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjY2hlY2tVcGRhdGUoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZXMgPSB0aGlzLmluc3RhbmNlc1JlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZXMpIHJldHVybjtcbiAgICAgICAgICAgIGNoZWNrVXBkYXRlKGluc3RhbmNlcy5pbnN0YW5jZU1hdHJpeCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICNzZXRCZWZvcmVSZW5kZXIoKSB7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGxldCB1cGRhdGVSYW5nZSA9IDA7XG4gICAgICAgIGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZXMgPSB0aGlzLmluc3RhbmNlc1JlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZXMpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgeyBmcmFtZXMsIHJhbmdlLCBsaW1pdCB9ID0gdGhpcy5nZXQoKTtcbiAgICAgICAgICAgIGNvbnN0IG1lc2hlcyA9IHRoaXMuaW5zdGFuY2VzKCk7XG4gICAgICAgICAgICBjb25zdCBjb2xvcnMgPSB0aGlzLmNvbG9ycygpO1xuICAgICAgICAgICAgY29uc3QgbWF0cmljZXMgPSB0aGlzLm1hdHJpY2VzKCk7XG4gICAgICAgICAgICBpZiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBjb3VudCA8IGZyYW1lcykge1xuICAgICAgICAgICAgICAgIGluc3RhbmNlcy51cGRhdGVNYXRyaXgoKTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZXMudXBkYXRlTWF0cml4V29ybGQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLiNwYXJlbnRNYXRyaXguY29weShpbnN0YW5jZXMubWF0cml4V29ybGQpLmludmVydCgpO1xuXG4gICAgICAgICAgICAgICAgdXBkYXRlUmFuZ2UgPSBNYXRoLm1pbihsaW1pdCwgcmFuZ2UgIT09IHVuZGVmaW5lZCA/IHJhbmdlIDogbGltaXQsIG1lc2hlcy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlcy5jb3VudCA9IHVwZGF0ZVJhbmdlO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlcy5pbnN0YW5jZU1hdHJpeC51cGRhdGVSYW5nZS5jb3VudCA9IHVwZGF0ZVJhbmdlICogMTY7XG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlcy5pbnN0YW5jZUNvbG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlcy5pbnN0YW5jZUNvbG9yLnVwZGF0ZVJhbmdlLmNvdW50ID0gdXBkYXRlUmFuZ2UgKiAzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVzaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gbWVzaGVzW2ldLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIE11bHRpcGx5IHRoZSBpbnZlcnNlIG9mIHRoZSBJbnN0YW5jZWRNZXNoIHdvcmxkIG1hdHJpeCBvciBlbHNlXG4gICAgICAgICAgICAgICAgICAgIC8vIEluc3RhbmNlcyB3aWxsIGJlIGRvdWJsZS10cmFuc2Zvcm1lZCBpZiA8SW5zdGFuY2VzPiBpc24ndCBhdCBpZGVudGl0eVxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodGhpcy4jdHJhbnNsYXRpb24sIHRoaXMuI3JvdGF0aW9uLCB0aGlzLiNzY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2luc3RhbmNlTWF0cml4XG4gICAgICAgICAgICAgICAgICAgICAgICAuY29tcG9zZSh0aGlzLiN0cmFuc2xhdGlvbiwgdGhpcy4jcm90YXRpb24sIHRoaXMuI3NjYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnByZW11bHRpcGx5KHRoaXMuI3BhcmVudE1hdHJpeCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2luc3RhbmNlTWF0cml4LnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlcy5pbnN0YW5jZU1hdHJpeC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbG9yLnRvQXJyYXkoY29sb3JzLCBpICogMyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZXMuaW5zdGFuY2VDb2xvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVcGRhdGUoaW5zdGFuY2VzLmluc3RhbmNlQ29sb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlL3NyYy9pbnN0YW5jZXMvaW5zdGFuY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsU0FBUyxFQUVULGNBQWMsRUFDZCxLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxjQUFjLEVBQ2QsV0FBVyxFQUNYLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLHVDQUF1QyxHQUMxQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUdoRSxNQUFNLENBQUMsRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO0FBYXBELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUEyQixtQkFBbUIsQ0FBQyxDQUFDO0FBRXBHLE1Bb0NhLGFBQWMsU0FBUSxjQUFrQztJQU1qRSxJQUErQixLQUFLLENBQUMsS0FBYTtRQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRVEsYUFBYSxDQUF1QjtJQUNwQyxlQUFlLENBQXVCO0lB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QUFDO2FBQ1g7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBNUdRLGFBQWE7a0dBQWIsYUFBYSx5SkFMWDtZQUNQLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxDQUFDLFNBQXdCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUU7U0FDbEgsaURBOUJTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCVCw0REFDUyxPQUFPOztTQU1SLGFBQWE7MkZBQWIsYUFBYTtrQkFwQ3pCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EwQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLENBQUMsU0FBd0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFO3FCQUNsSDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBS1ksWUFBWTtzQkFBcEIsS0FBSztnQkFFeUIsS0FBSztzQkFBbkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSVosS0FBSztzQkFBakIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIFNpZ25hbCxcbiAgICBjb21wdXRlZCxcbiAgICBlZmZlY3QsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgTmd0QXJncyxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBjaGVja1VwZGF0ZSxcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyLFxuICAgIGluamVjdE5ndFJlZixcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbkluamVjdGlvbkNvbnRleHQsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlLCBJbnN0YW5jZWRNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUG9zaXRpb25NZXNoIH0gZnJvbSAnLi9wb3NpdGlvbi1tZXNoJztcblxuZXh0ZW5kKHsgSW5zdGFuY2VkTWVzaCwgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNJbnN0YW5jZXNTdGF0ZSB7XG4gICAgcmFuZ2U6IG51bWJlcjtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIGZyYW1lczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNJbnN0YW5jZXNBcGkge1xuICAgIGdldFBhcmVudDogKCkgPT4gRWxlbWVudFJlZjxJbnN0YW5jZWRNZXNoPjtcbiAgICBzdWJzY3JpYmU6IChyZWY6IEVsZW1lbnRSZWY8UG9zaXRpb25NZXNoPikgPT4gKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IE5HVFNfSU5TVEFOQ0VTX0FQSSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTaWduYWw8Tmd0c0luc3RhbmNlc0FwaT4+KCdOZ3RzSW5zdGFuY2VzIEFQSScpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2VzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtaW5zdGFuY2VkLW1lc2hcbiAgICAgICAgICAgICphcmdzPVwiW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCAwXVwiXG4gICAgICAgICAgICBuZ3RDb21wb3VuZFxuICAgICAgICAgICAgW3JlZl09XCJpbnN0YW5jZXNSZWZcIlxuICAgICAgICAgICAgW21hdHJpeEF1dG9VcGRhdGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3JheWNhc3RdPVwibnVsbFJheWNhc3RcIlxuICAgICAgICAgICAgW3VzZXJEYXRhXT1cInsgaW5zdGFuY2VzIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmd0LWluc3RhbmNlZC1idWZmZXItYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgYXR0YWNoPVwiaW5zdGFuY2VNYXRyaXhcIlxuICAgICAgICAgICAgICAgIFtjb3VudF09XCJtYXRyaWNlcygpLmxlbmd0aCAvIDE2XCJcbiAgICAgICAgICAgICAgICBbYXJyYXldPVwibWF0cmljZXMoKVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cIjE2XCJcbiAgICAgICAgICAgICAgICBbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgIGF0dGFjaD1cImluc3RhbmNlQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtjb3VudF09XCJjb2xvcnMoKS5sZW5ndGggLyAzXCJcbiAgICAgICAgICAgICAgICBbYXJyYXldPVwiY29sb3JzKClcIlxuICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCIzXCJcbiAgICAgICAgICAgICAgICBbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L25ndC1pbnN0YW5jZWQtbWVzaD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBOR1RTX0lOU1RBTkNFU19BUEksIHVzZUZhY3Rvcnk6IChpbnN0YW5jZXM6IE5ndHNJbnN0YW5jZXMpID0+IGluc3RhbmNlcy5hcGksIGRlcHM6IFtOZ3RzSW5zdGFuY2VzXSB9LFxuICAgIF0sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzSW5zdGFuY2VzIGV4dGVuZHMgTmd0U2lnbmFsU3RvcmU8Tmd0c0luc3RhbmNlc1N0YXRlPiB7XG4gICAgcmVhZG9ubHkgbnVsbFJheWNhc3QgPSAoKSA9PiBudWxsO1xuICAgIHJlYWRvbmx5IER5bmFtaWNEcmF3VXNhZ2UgPSBUSFJFRS5EeW5hbWljRHJhd1VzYWdlO1xuXG4gICAgQElucHV0KCkgaW5zdGFuY2VzUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLkluc3RhbmNlZE1lc2g+KCk7XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgcmFuZ2UocmFuZ2U6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJhbmdlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsaW1pdChsaW1pdDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGltaXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGZyYW1lcyB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSAjcGFyZW50TWF0cml4ID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbiAgICByZWFkb25seSAjaW5zdGFuY2VNYXRyaXggPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuICAgIHJlYWRvbmx5ICN0ZW1wTWF0cml4ID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbiAgICByZWFkb25seSAjdHJhbnNsYXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHJlYWRvbmx5ICNyb3RhdGlvbiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG4gICAgcmVhZG9ubHkgI3NjYWxlID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgIHJlYWRvbmx5ICNsaW1pdCA9IHRoaXMuc2VsZWN0KCdsaW1pdCcpO1xuXG4gICAgcmVhZG9ubHkgbWF0cmljZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbWl0ID0gdGhpcy4jbGltaXQoKTtcbiAgICAgICAgY29uc3QgbUFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShsaW1pdCAqIDE2KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW1pdDsgaSsrKSB0aGlzLiN0ZW1wTWF0cml4LmlkZW50aXR5KCkudG9BcnJheShtQXJyYXksIGkgKiAxNik7XG4gICAgICAgIHJldHVybiBtQXJyYXk7XG4gICAgfSk7XG4gICAgcmVhZG9ubHkgY29sb3JzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBsaW1pdCA9IHRoaXMuI2xpbWl0KCk7XG4gICAgICAgIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KFsuLi5uZXcgQXJyYXkobGltaXQgKiAzKV0ubWFwKCgpID0+IDEpKTtcbiAgICB9KTtcblxuICAgIHJlYWRvbmx5IGluc3RhbmNlcyA9IHNpZ25hbDxBcnJheTxFbGVtZW50UmVmPFBvc2l0aW9uTWVzaD4+PihbXSk7XG5cbiAgICByZWFkb25seSBhcGkgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgICBnZXRQYXJlbnQ6ICgpID0+IHRoaXMuaW5zdGFuY2VzUmVmLFxuICAgICAgICBzdWJzY3JpYmU6IChyZWY6IEVsZW1lbnRSZWY8UG9zaXRpb25NZXNoPikgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZXMudXBkYXRlKChwcmV2KSA9PiBbLi4ucHJldiwgcmVmXSk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlcy51cGRhdGUoKHByZXYpID0+XG4gICAgICAgICAgICAgICAgICAgIHByZXYuZmlsdGVyKChpbnN0YW5jZSkgPT4gaW5zdGFuY2UubmF0aXZlRWxlbWVudCAhPT0gcmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoeyBsaW1pdDogMTAwMCwgZnJhbWVzOiBJbmZpbml0eSB9KTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW5JbmplY3Rpb25Db250ZXh0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI2NoZWNrVXBkYXRlKCk7XG4gICAgICAgICAgICB0aGlzLiNzZXRCZWZvcmVSZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI2NoZWNrVXBkYXRlKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2VzID0gdGhpcy5pbnN0YW5jZXNSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2VzKSByZXR1cm47XG4gICAgICAgICAgICBjaGVja1VwZGF0ZShpbnN0YW5jZXMuaW5zdGFuY2VNYXRyaXgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjc2V0QmVmb3JlUmVuZGVyKCkge1xuICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICBsZXQgdXBkYXRlUmFuZ2UgPSAwO1xuICAgICAgICBpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2VzID0gdGhpcy5pbnN0YW5jZXNSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2VzKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IHsgZnJhbWVzLCByYW5nZSwgbGltaXQgfSA9IHRoaXMuZ2V0KCk7XG4gICAgICAgICAgICBjb25zdCBtZXNoZXMgPSB0aGlzLmluc3RhbmNlcygpO1xuICAgICAgICAgICAgY29uc3QgY29sb3JzID0gdGhpcy5jb2xvcnMoKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdHJpY2VzID0gdGhpcy5tYXRyaWNlcygpO1xuICAgICAgICAgICAgaWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZXMudXBkYXRlTWF0cml4KCk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2VzLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy4jcGFyZW50TWF0cml4LmNvcHkoaW5zdGFuY2VzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtcblxuICAgICAgICAgICAgICAgIHVwZGF0ZVJhbmdlID0gTWF0aC5taW4obGltaXQsIHJhbmdlICE9PSB1bmRlZmluZWQgPyByYW5nZSA6IGxpbWl0LCBtZXNoZXMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZXMuY291bnQgPSB1cGRhdGVSYW5nZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZXMuaW5zdGFuY2VNYXRyaXgudXBkYXRlUmFuZ2UuY291bnQgPSB1cGRhdGVSYW5nZSAqIDE2O1xuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZXMuaW5zdGFuY2VDb2xvcikge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMuaW5zdGFuY2VDb2xvci51cGRhdGVSYW5nZS5jb3VudCA9IHVwZGF0ZVJhbmdlICogMztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lc2hlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG1lc2hlc1tpXS5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAvLyBNdWx0aXBseSB0aGUgaW52ZXJzZSBvZiB0aGUgSW5zdGFuY2VkTWVzaCB3b3JsZCBtYXRyaXggb3IgZWxzZVxuICAgICAgICAgICAgICAgICAgICAvLyBJbnN0YW5jZXMgd2lsbCBiZSBkb3VibGUtdHJhbnNmb3JtZWQgaWYgPEluc3RhbmNlcz4gaXNuJ3QgYXQgaWRlbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UubWF0cml4V29ybGQuZGVjb21wb3NlKHRoaXMuI3RyYW5zbGF0aW9uLCB0aGlzLiNyb3RhdGlvbiwgdGhpcy4jc2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNpbnN0YW5jZU1hdHJpeFxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbXBvc2UodGhpcy4jdHJhbnNsYXRpb24sIHRoaXMuI3JvdGF0aW9uLCB0aGlzLiNzY2FsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wcmVtdWx0aXBseSh0aGlzLiNwYXJlbnRNYXRyaXgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNpbnN0YW5jZU1hdHJpeC50b0FycmF5KG1hdHJpY2VzLCBpICogMTYpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMuaW5zdGFuY2VNYXRyaXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb2xvci50b0FycmF5KGNvbG9ycywgaSAqIDMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2VzLmluc3RhbmNlQ29sb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVXBkYXRlKGluc3RhbmNlcy5pbnN0YW5jZUNvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -57,11 +57,11 @@ class NgtsStats extends NgtSignalStore {
|
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
61
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsStats, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
61
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: NgtsStats, isStandalone: true, selector: "ngts-stats", inputs: { showPanel: "showPanel", parent: "parent", classes: "classes", right: "right" }, usesInheritance: true, ngImport: i0 }); }
|
|
62
62
|
}
|
|
63
63
|
export { NgtsStats };
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsStats, decorators: [{
|
|
65
65
|
type: Directive,
|
|
66
66
|
args: [{
|
|
67
67
|
selector: 'ngts-stats',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CUSTOM_ELEMENTS_SCHEMA, Component, InjectionToken, Input, computed, effect, inject, untracked, } from '@angular/core';
|
|
2
|
-
import { NgtSignalStore, NgtStore, extend, getLocalState, injectBeforeRender, injectNgtRef,
|
|
2
|
+
import { NgtSignalStore, NgtStore, extend, getLocalState, injectBeforeRender, injectNgtRef, requestAnimationFrameInInjectionContext, } from 'angular-three';
|
|
3
3
|
import { SoftShadowMaterial } from 'angular-three-soba/shaders';
|
|
4
4
|
import { Group, Mesh, PlaneGeometry } from 'three';
|
|
5
5
|
import { ProgressiveLightMap } from './progressive-light-map';
|
|
@@ -145,7 +145,7 @@ class NgtsAccumulativeShadows extends NgtSignalStore {
|
|
|
145
145
|
},
|
|
146
146
|
};
|
|
147
147
|
});
|
|
148
|
-
|
|
148
|
+
requestAnimationFrameInInjectionContext(() => {
|
|
149
149
|
this.#configure();
|
|
150
150
|
this.#resetAndUpdate();
|
|
151
151
|
});
|
|
@@ -188,8 +188,8 @@ class NgtsAccumulativeShadows extends NgtSignalStore {
|
|
|
188
188
|
api.update(api.blend);
|
|
189
189
|
});
|
|
190
190
|
}
|
|
191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsAccumulativeShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
192
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsAccumulativeShadows, isStandalone: true, selector: "ngts-accumulative-shadows", inputs: { frames: "frames", blend: "blend", limit: "limit", scale: "scale", temporal: "temporal", opacity: "opacity", alphaTest: "alphaTest", color: "color", colorBlend: "colorBlend", resolution: "resolution", toneMapped: "toneMapped" }, providers: [
|
|
193
193
|
{
|
|
194
194
|
provide: NGTS_ACCUMULATIVE_SHADOWS_API,
|
|
195
195
|
useFactory: (shadows) => shadows.api,
|
|
@@ -220,7 +220,7 @@ class NgtsAccumulativeShadows extends NgtSignalStore {
|
|
|
220
220
|
`, isInline: true }); }
|
|
221
221
|
}
|
|
222
222
|
export { NgtsAccumulativeShadows };
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsAccumulativeShadows, decorators: [{
|
|
224
224
|
type: Component,
|
|
225
225
|
args: [{
|
|
226
226
|
selector: 'ngts-accumulative-shadows',
|
|
@@ -280,4 +280,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
280
280
|
}], toneMapped: [{
|
|
281
281
|
type: Input
|
|
282
282
|
}] } });
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW11bGF0aXZlLXNoYWRvd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGNBQWMsRUFDZCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGtDQUFrQyxHQUVyQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQTRCLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUU5RCxNQUFNLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUF3QzNELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksY0FBYyxDQUMzRCw2QkFBNkIsQ0FDaEMsQ0FBQztBQVFGLE1BbUNhLHVCQUF3QixTQUFRLGNBQTRDO0lBSXJGLHlGQUF5RjtJQUN6RixJQUFhLE1BQU0sQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FB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QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzQlQ7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSw2QkFBNkI7NEJBQ3RDLFVBQVUsRUFBRSxDQUFDLE9BQWdDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHOzRCQUM3RCxJQUFJLEVBQUUseUJBQXlCO3lCQUNsQztxQkFDSjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBTWdCLE1BQU07c0JBQWxCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS08sUUFBUTtzQkFBcEIsS0FBSztnQkFLTyxPQUFPO3NCQUFuQixLQUFLO2dCQUtPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxVQUFVO3NCQUF0QixLQUFLO2dCQUtPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgU2lnbmFsLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgTmd0U2lnbmFsU3RvcmUsXG4gICAgTmd0U3RvcmUsXG4gICAgZXh0ZW5kLFxuICAgIGdldExvY2FsU3RhdGUsXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyLFxuICAgIGluamVjdE5ndFJlZixcbiAgICByZXF1ZXN0QW5pbWF0aW9uSW5JbmplY3Rpb25Db250ZXh0LFxuICAgIHR5cGUgTmd0R3JvdXAsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgU29mdFNoYWRvd01hdGVyaWFsLCBTb2Z0U2hhZG93TWF0ZXJpYWxJbnB1dHMgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgeyBHcm91cCwgTWVzaCwgUGxhbmVHZW9tZXRyeSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFByb2dyZXNzaXZlTGlnaHRNYXAgfSBmcm9tICcuL3Byb2dyZXNzaXZlLWxpZ2h0LW1hcCc7XG5cbmV4dGVuZCh7IFNvZnRTaGFkb3dNYXRlcmlhbCwgR3JvdXAsIE1lc2gsIFBsYW5lR2VvbWV0cnkgfSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NTdGF0ZSB7XG4gICAgLyoqIEhvdyBtYW55IGZyYW1lcyBpdCBjYW4gcmVuZGVyLCBtb3JlIHlpZWxkcyBjbGVhbmVyIHJlc3VsdHMgYnV0IHRha2VzIG1vcmUgdGltZSwgNDAgKi9cbiAgICBmcmFtZXM6IG51bWJlcjtcbiAgICAvKiogSWYgZnJhbWVzID09PSBJbmZpbml0eSBibGVuZCBjb250cm9scyB0aGUgcmVmcmVzaCByYXRpbywgMTAwICovXG4gICAgYmxlbmQ6IG51bWJlcjtcbiAgICAvKiogQ2FuIGxpbWl0IHRoZSBhbW91bnQgb2YgZnJhbWVzIHJlbmRlcmVkIGlmIGZyYW1lcyA9PT0gSW5maW5pdHksIHVzdWFsbHkgdG8gZ2V0IHNvbWUgcGVyZm9ybWFuY2UgYmFjayBvbmNlIGEgbW92YWJsZSBzY2VuZSBoYXMgc2V0dGxlZCwgSW5maW5pdHkgKi9cbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIC8qKiBTY2FsZSBvZiB0aGUgcGxhbmUsICAqL1xuICAgIHNjYWxlOiBudW1iZXI7XG4gICAgLyoqIFRlbXBvcmFsIGFjY3VtdWxhdGVzIHNoYWRvd3Mgb3ZlciB0aW1lIHdoaWNoIGlzIG1vcmUgcGVyZm9ybWFudCBidXQgaGFzIGEgdmlzdWFsIHJlZ3Jlc3Npb24gb3ZlciBpbnN0YW50IHJlc3VsdHMsIGZhbHNlICAqL1xuICAgIHRlbXBvcmFsOiBib29sZWFuO1xuICAgIC8qKiBPcGFjaXR5IG9mIHRoZSBwbGFuZSwgMSAqL1xuICAgIG9wYWNpdHk6IG51bWJlcjtcbiAgICAvKiogRGlzY2FyZHMgYWxwaGEgcGl4ZWxzLCAwLjY1ICovXG4gICAgYWxwaGFUZXN0OiBudW1iZXI7XG4gICAgLyoqIFNoYWRvdyBjb2xvciwgYmxhY2sgKi9cbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIC8qKiBDb2xvcmJsZW5kLCBob3cgbXVjaCBjb2xvcnMgdHVybiB0byBibGFjaywgMCBpcyBibGFjaywgMiAqL1xuICAgIGNvbG9yQmxlbmQ6IG51bWJlcjtcbiAgICAvKiogQnVmZmVyIHJlc29sdXRpb24sIDEwMjQgKi9cbiAgICByZXNvbHV0aW9uOiBudW1iZXI7XG4gICAgLyoqIFRleHR1cmUgdG9uZW1hcHBpbmcgKi9cbiAgICB0b25lTWFwcGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RzQWNjdW11bGF0aXZlU2hhZG93c0xpZ2h0QXBpID0geyB1cGRhdGU6ICgpID0+IHZvaWQgfTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzQWNjdW11bGF0aXZlU2hhZG93c0FwaSB7XG4gICAgbGlnaHRzOiBNYXA8c3RyaW5nLCBTaWduYWw8Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NMaWdodEFwaT4+O1xuICAgIHRlbXBvcmFsOiBib29sZWFuO1xuICAgIGZyYW1lczogbnVtYmVyO1xuICAgIGJsZW5kOiBudW1iZXI7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBnZXRNZXNoOiAoKSA9PiBUSFJFRS5NZXNoPFRIUkVFLlBsYW5lR2VvbWV0cnksIFNvZnRTaGFkb3dNYXRlcmlhbElucHV0cyAmIFRIUkVFLlNoYWRlck1hdGVyaWFsPjtcbiAgICByZXNldDogKCkgPT4gdm9pZDtcbiAgICB1cGRhdGU6IChmcmFtZXM/OiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBOR1RTX0FDQ1VNVUxBVElWRV9TSEFET1dTX0FQSSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTaWduYWw8Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NBcGk+PihcbiAgICAnTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3MgQVBJJ1xuKTtcblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgICAgICAnbmd0cy1hY2N1bXVsYXRpdmUtc2hhZG93cyc6IE5ndEdyb3VwICYgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NTdGF0ZTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1hY2N1bXVsYXRpdmUtc2hhZG93cycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LWdyb3VwIG5ndENvbXBvdW5kPlxuICAgICAgICAgICAgPG5ndC1ncm91cCBbcmVmXT1cImFjY3VtdWxhdGl2ZVNoYWRvd3NSZWZcIiBbdHJhdmVyc2VdPVwibnVsbFRyYXZlcnNlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgICAgIDwvbmd0LWdyb3VwPlxuICAgICAgICAgICAgPG5ndC1tZXNoXG4gICAgICAgICAgICAgICAgW3JlZl09XCJtZXNoUmVmXCJcbiAgICAgICAgICAgICAgICBbcmVjZWl2ZVNoYWRvd109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2NhbGVdPVwiYWNjdW11bGF0aXZlU2hhZG93c1NjYWxlKClcIlxuICAgICAgICAgICAgICAgIFtyb3RhdGlvbl09XCJbLU1hdGguUEkgLyAyLCAwLCAwXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndC1wbGFuZS1nZW9tZXRyeSAvPlxuICAgICAgICAgICAgICAgIDxuZ3Qtc29mdC1zaGFkb3ctbWF0ZXJpYWxcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbZGVwdGhXcml0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0b25lTWFwcGVkXT1cImFjY3VtdWxhdGl2ZVNoYWRvd3NUb25lTWFwcGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiYWNjdW11bGF0aXZlU2hhZG93c0NvbG9yKClcIlxuICAgICAgICAgICAgICAgICAgICBbYmxlbmRdPVwiYWNjdW11bGF0aXZlU2hhZG93c0NvbG9yQmxlbmQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXBdPVwicExNKCkucHJvZ3Jlc3NpdmVMaWdodE1hcDIudGV4dHVyZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbmd0LW1lc2g+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HVFNfQUNDVU1VTEFUSVZFX1NIQURPV1NfQVBJLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKHNoYWRvd3M6IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzKSA9PiBzaGFkb3dzLmFwaSxcbiAgICAgICAgICAgIGRlcHM6IFtOZ3RzQWNjdW11bGF0aXZlU2hhZG93c10sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzIGV4dGVuZHMgTmd0U2lnbmFsU3RvcmU8Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NTdGF0ZT4ge1xuICAgIHJlYWRvbmx5IG51bGxUcmF2ZXJzZSA9ICgpID0+IG51bGw7XG4gICAgcmVhZG9ubHkgTWF0aCA9IE1hdGg7XG5cbiAgICAvKiogSG93IG1hbnkgZnJhbWVzIGl0IGNhbiByZW5kZXIsIG1vcmUgeWllbGRzIGNsZWFuZXIgcmVzdWx0cyBidXQgdGFrZXMgbW9yZSB0aW1lLCA0MCAqL1xuICAgIEBJbnB1dCgpIHNldCBmcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIElmIGZyYW1lcyA9PT0gSW5maW5pdHkgYmxlbmQgY29udHJvbHMgdGhlIHJlZnJlc2ggcmF0aW8sIDEwMCAqL1xuICAgIEBJbnB1dCgpIHNldCBibGVuZChibGVuZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmxlbmQgfSk7XG4gICAgfVxuXG4gICAgLyoqIENhbiBsaW1pdCB0aGUgYW1vdW50IG9mIGZyYW1lcyByZW5kZXJlZCBpZiBmcmFtZXMgPT09IEluZmluaXR5LCB1c3VhbGx5IHRvIGdldCBzb21lIHBlcmZvcm1hbmNlIGJhY2sgb25jZSBhIG1vdmFibGUgc2NlbmUgaGFzIHNldHRsZWQsIEluZmluaXR5ICovXG4gICAgQElucHV0KCkgc2V0IGxpbWl0KGxpbWl0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsaW1pdCB9KTtcbiAgICB9XG5cbiAgICAvKiogU2NhbGUgb2YgdGhlIHBsYW5lLCAgKi9cbiAgICBASW5wdXQoKSBzZXQgc2NhbGUoc2NhbGU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNjYWxlIH0pO1xuICAgIH1cblxuICAgIC8qKiBUZW1wb3JhbCBhY2N1bXVsYXRlcyBzaGFkb3dzIG92ZXIgdGltZSB3aGljaCBpcyBtb3JlIHBlcmZvcm1hbnQgYnV0IGhhcyBhIHZpc3VhbCByZWdyZXNzaW9uIG92ZXIgaW5zdGFudCByZXN1bHRzLCBmYWxzZSAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGVtcG9yYWwodGVtcG9yYWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0ZW1wb3JhbCB9KTtcbiAgICB9XG5cbiAgICAvKiogT3BhY2l0eSBvZiB0aGUgcGxhbmUsIDEgKi9cbiAgICBASW5wdXQoKSBzZXQgb3BhY2l0eShvcGFjaXR5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBvcGFjaXR5IH0pO1xuICAgIH1cblxuICAgIC8qKiBEaXNjYXJkcyBhbHBoYSBwaXhlbHMsIDAuNjUgKi9cbiAgICBASW5wdXQoKSBzZXQgYWxwaGFUZXN0KGFscGhhVGVzdDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYWxwaGFUZXN0IH0pO1xuICAgIH1cblxuICAgIC8qKiBTaGFkb3cgY29sb3IsIGJsYWNrICovXG4gICAgQElucHV0KCkgc2V0IGNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb2xvciB9KTtcbiAgICB9XG5cbiAgICAvKiogQ29sb3JibGVuZCwgaG93IG11Y2ggY29sb3JzIHR1cm4gdG8gYmxhY2ssIDAgaXMgYmxhY2ssIDIgKi9cbiAgICBASW5wdXQoKSBzZXQgY29sb3JCbGVuZChjb2xvckJsZW5kOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb2xvckJsZW5kIH0pO1xuICAgIH1cblxuICAgIC8qKiBCdWZmZXIgcmVzb2x1dGlvbiwgMTAyNCAqL1xuICAgIEBJbnB1dCgpIHNldCByZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlc29sdXRpb24gfSk7XG4gICAgfVxuXG4gICAgLyoqIFRleHR1cmUgdG9uZW1hcHBpbmcgKi9cbiAgICBASW5wdXQoKSBzZXQgdG9uZU1hcHBlZCh0b25lTWFwcGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgdG9uZU1hcHBlZCB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSAjc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIHJlYWRvbmx5ICNnbCA9IHRoaXMuI3N0b3JlLnNlbGVjdCgnZ2wnKTtcbiAgICByZWFkb25seSAjc2NlbmUgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ3NjZW5lJyk7XG4gICAgcmVhZG9ubHkgI2NhbWVyYSA9IHRoaXMuI3N0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cbiAgICByZWFkb25seSAjcmVzb2x1dGlvbiA9IHRoaXMuc2VsZWN0KCdyZXNvbHV0aW9uJyk7XG4gICAgcmVhZG9ubHkgI3RlbXBvcmFsID0gdGhpcy5zZWxlY3QoJ3RlbXBvcmFsJyk7XG4gICAgcmVhZG9ubHkgI2JsZW5kID0gdGhpcy5zZWxlY3QoJ2JsZW5kJyk7XG4gICAgcmVhZG9ubHkgI2ZyYW1lcyA9IHRoaXMuc2VsZWN0KCdmcmFtZXMnKTtcbiAgICByZWFkb25seSAjb3BhY2l0eSA9IHRoaXMuc2VsZWN0KCdvcGFjaXR5Jyk7XG4gICAgcmVhZG9ubHkgI2FscGhhVGVzdCA9IHRoaXMuc2VsZWN0KCdhbHBoYVRlc3QnKTtcblxuICAgIHJlYWRvbmx5IGFjY3VtdWxhdGl2ZVNoYWRvd3NTY2FsZSA9IHRoaXMuc2VsZWN0KCdzY2FsZScpO1xuICAgIHJlYWRvbmx5IGFjY3VtdWxhdGl2ZVNoYWRvd3NUb25lTWFwcGVkID0gdGhpcy5zZWxlY3QoJ3RvbmVNYXBwZWQnKTtcbiAgICByZWFkb25seSBhY2N1bXVsYXRpdmVTaGFkb3dzQ29sb3IgPSB0aGlzLnNlbGVjdCgnY29sb3InKTtcbiAgICByZWFkb25seSBhY2N1bXVsYXRpdmVTaGFkb3dzQ29sb3JCbGVuZCA9IHRoaXMuc2VsZWN0KCdjb2xvckJsZW5kJyk7XG5cbiAgICByZWFkb25seSBtZXNoUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLk1lc2g8VEhSRUUuUGxhbmVHZW9tZXRyeSwgU29mdFNoYWRvd01hdGVyaWFsSW5wdXRzICYgVEhSRUUuU2hhZGVyTWF0ZXJpYWw+PigpO1xuICAgIHJlYWRvbmx5IGFjY3VtdWxhdGl2ZVNoYWRvd3NSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuR3JvdXA+KCk7XG5cbiAgICByZWFkb25seSBwTE0gPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gbmV3IFByb2dyZXNzaXZlTGlnaHRNYXAodW50cmFja2VkKHRoaXMuI2dsKSwgdW50cmFja2VkKHRoaXMuI3NjZW5lKSwgdGhpcy4jcmVzb2x1dGlvbigpKVxuICAgICk7XG5cbiAgICByZWFkb25seSBhcGkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBMTSA9IHRoaXMucExNKCk7XG4gICAgICAgIGNvbnN0IGFscGhhVGVzdCA9IHRoaXMuI2FscGhhVGVzdCgpO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gdGhpcy4jb3BhY2l0eSgpO1xuICAgICAgICBjb25zdCBjYW1lcmEgPSB0aGlzLiNjYW1lcmEoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlnaHRzOiBuZXcgTWFwKCksXG4gICAgICAgICAgICB0ZW1wb3JhbDogdGhpcy4jdGVtcG9yYWwoKSxcbiAgICAgICAgICAgIGZyYW1lczogTWF0aC5tYXgoMiwgdGhpcy4jZnJhbWVzKCkpLFxuICAgICAgICAgICAgYmxlbmQ6IE1hdGgubWF4KDIsIHRoaXMuI2ZyYW1lcygpID09PSBJbmZpbml0eSA/IHRoaXMuI2JsZW5kKCkgOiB0aGlzLiNmcmFtZXMoKSksXG4gICAgICAgICAgICBjb3VudDogMCxcbiAgICAgICAgICAgIGdldE1lc2g6ICgpID0+IHRoaXMubWVzaFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgcmVzZXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWVzaFJlZi5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgLy8gQ2xlYXIgYnVmZmVycywgcmVzZXQgb3BhY2l0aWVzLCBzZXQgZnJhbWUgY291bnQgdG8gMFxuICAgICAgICAgICAgICAgIHBMTS5jbGVhcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tZXNoUmVmLm5hdGl2ZUVsZW1lbnQubWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwub3BhY2l0eSA9IDA7XG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwuYWxwaGFUZXN0ID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmFwaSgpLmNvdW50ID0gMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGU6IChmcmFtZXMgPSAxKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1lc2hSZWYubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIC8vIEFkYXB0IHRoZSBvcGFjaXR5LWJsZW5kIHJhdGlvIHRvIHRoZSBudW1iZXIgb2YgZnJhbWVzXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1lc2hSZWYubmF0aXZlRWxlbWVudC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYXBpKCkudGVtcG9yYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwub3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLmFscGhhVGVzdCA9IGFscGhhVGVzdDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbC5vcGFjaXR5ID0gTWF0aC5taW4ob3BhY2l0eSwgbWF0ZXJpYWwub3BhY2l0eSArIG9wYWNpdHkgLyB0aGlzLmFwaSgpLmJsZW5kKTtcbiAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwuYWxwaGFUZXN0ID0gTWF0aC5taW4oYWxwaGFUZXN0LCBtYXRlcmlhbC5hbHBoYVRlc3QgKyBhbHBoYVRlc3QgLyB0aGlzLmFwaSgpLmJsZW5kKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggYWNjdW11bGF0aXZlIGxpZ2h0cyBvblxuICAgICAgICAgICAgICAgIHRoaXMuYWNjdW11bGF0aXZlU2hhZG93c1JlZi5uYXRpdmVFbGVtZW50LnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vIENvbGxlY3Qgc2NlbmUgbGlnaHRzIGFuZCBtZXNoZXNcbiAgICAgICAgICAgICAgICBwTE0ucHJlcGFyZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsaWdodG1hcCBhbmQgdGhlIGFjY3VtdWxhdGl2ZSBsaWdodHNcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpKCkubGlnaHRzLmZvckVhY2goKGxpZ2h0KSA9PiBsaWdodCgpLnVwZGF0ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcExNLnVwZGF0ZShjYW1lcmEsIHRoaXMuYXBpKCkuYmxlbmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggbGlnaHRzIG9mZlxuICAgICAgICAgICAgICAgIHRoaXMuYWNjdW11bGF0aXZlU2hhZG93c1JlZi5uYXRpdmVFbGVtZW50LnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIGxpZ2h0cyBhbmQgbWVzaGVzXG4gICAgICAgICAgICAgICAgcExNLmZpbmlzaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBmcmFtZXM6IDQwLFxuICAgICAgICAgICAgbGltaXQ6IEluZmluaXR5LFxuICAgICAgICAgICAgYmxlbmQ6IDIwLFxuICAgICAgICAgICAgc2NhbGU6IDEwLFxuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIGFscGhhVGVzdDogMC43NSxcbiAgICAgICAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgICAgICAgY29sb3JCbGVuZDogMixcbiAgICAgICAgICAgIHJlc29sdXRpb246IDEwMjQsXG4gICAgICAgICAgICB0b25lTWFwcGVkOiB0cnVlLFxuICAgICAgICAgICAgdGVtcG9yYWw6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNjb25maWd1cmUoKTtcbiAgICAgICAgICAgIHRoaXMuI3Jlc2V0QW5kVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpbmplY3RCZWZvcmVSZW5kZXIodGhpcy4jb25CZWZvcmVSZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgI29uQmVmb3JlUmVuZGVyKCkge1xuICAgICAgICBjb25zdCBpbnZhbGlkYXRlID0gdGhpcy4jc3RvcmUuZ2V0KCdpbnZhbGlkYXRlJyk7XG4gICAgICAgIGNvbnN0IGxpbWl0ID0gdGhpcy5nZXQoJ2xpbWl0Jyk7XG4gICAgICAgIGNvbnN0IGFwaSA9IHRoaXMuYXBpKCk7XG4gICAgICAgIGlmICgoYXBpLnRlbXBvcmFsIHx8IGFwaS5mcmFtZXMgPT09IEluZmluaXR5KSAmJiBhcGkuY291bnQgPCBhcGkuZnJhbWVzICYmIGFwaS5jb3VudCA8IGxpbWl0KSB7XG4gICAgICAgICAgICBpbnZhbGlkYXRlKCk7XG4gICAgICAgICAgICBhcGkudXBkYXRlKCk7XG4gICAgICAgICAgICBhcGkuY291bnQrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNjb25maWd1cmUoKSB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXIgPSBjb21wdXRlZCgoKSA9PiAoeyBwTE06IHRoaXMucExNKCksIG1lc2g6IHRoaXMubWVzaFJlZi5uYXRpdmVFbGVtZW50IH0pKTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcExNLCBtZXNoIH0gPSB0cmlnZ2VyKCk7XG4gICAgICAgICAgICBpZiAoIW1lc2gpIHJldHVybjtcbiAgICAgICAgICAgIHBMTS5jb25maWd1cmUobWVzaCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICNyZXNldEFuZFVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSgpLFxuICAgICAgICAgICAgb2JqZWN0czogZ2V0TG9jYWxTdGF0ZSh0aGlzLiNzdG9yZS5nZXQoJ3NjZW5lJykpLm9iamVjdHMoKSxcbiAgICAgICAgICAgIG1lc2g6IHRoaXMubWVzaFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWVzaCB9ID0gdHJpZ2dlcigpO1xuICAgICAgICAgICAgaWYgKCFtZXNoKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBhcGkgPSB1bnRyYWNrZWQodGhpcy5hcGkpO1xuICAgICAgICAgICAgLy8gUmVzZXQgaW50ZXJuYWxzLCBidWZmZXJzLCAuLi5cbiAgICAgICAgICAgIGFwaS5yZXNldCgpO1xuICAgICAgICAgICAgLy8gVXBkYXRlIGxpZ2h0bWFwXG4gICAgICAgICAgICBpZiAoIWFwaS50ZW1wb3JhbCAmJiBhcGkuZnJhbWVzICE9PSBJbmZpbml0eSkgYXBpLnVwZGF0ZShhcGkuYmxlbmQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW11bGF0aXZlLXNoYWRvd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGNBQWMsRUFDZCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLHVDQUF1QyxHQUUxQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQTRCLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUU5RCxNQUFNLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUF3QzNELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksY0FBYyxDQUMzRCw2QkFBNkIsQ0FDaEMsQ0FBQztBQVFGLE1BbUNhLHVCQUF3QixTQUFRLGNBQTRDO0lBSXJGLHlGQUF5RjtJQUN6RixJQUFhLE1BQU0sQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FB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QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzQlQ7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSw2QkFBNkI7NEJBQ3RDLFVBQVUsRUFBRSxDQUFDLE9BQWdDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHOzRCQUM3RCxJQUFJLEVBQUUseUJBQXlCO3lCQUNsQztxQkFDSjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBTWdCLE1BQU07c0JBQWxCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS08sUUFBUTtzQkFBcEIsS0FBSztnQkFLTyxPQUFPO3NCQUFuQixLQUFLO2dCQUtPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxVQUFVO3NCQUF0QixLQUFLO2dCQUtPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgU2lnbmFsLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgTmd0U2lnbmFsU3RvcmUsXG4gICAgTmd0U3RvcmUsXG4gICAgZXh0ZW5kLFxuICAgIGdldExvY2FsU3RhdGUsXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyLFxuICAgIGluamVjdE5ndFJlZixcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbkluamVjdGlvbkNvbnRleHQsXG4gICAgdHlwZSBOZ3RHcm91cCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTb2Z0U2hhZG93TWF0ZXJpYWwsIFNvZnRTaGFkb3dNYXRlcmlhbElucHV0cyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoLCBQbGFuZUdlb21ldHJ5IH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NpdmVMaWdodE1hcCB9IGZyb20gJy4vcHJvZ3Jlc3NpdmUtbGlnaHQtbWFwJztcblxuZXh0ZW5kKHsgU29mdFNoYWRvd01hdGVyaWFsLCBHcm91cCwgTWVzaCwgUGxhbmVHZW9tZXRyeSB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzQWNjdW11bGF0aXZlU2hhZG93c1N0YXRlIHtcbiAgICAvKiogSG93IG1hbnkgZnJhbWVzIGl0IGNhbiByZW5kZXIsIG1vcmUgeWllbGRzIGNsZWFuZXIgcmVzdWx0cyBidXQgdGFrZXMgbW9yZSB0aW1lLCA0MCAqL1xuICAgIGZyYW1lczogbnVtYmVyO1xuICAgIC8qKiBJZiBmcmFtZXMgPT09IEluZmluaXR5IGJsZW5kIGNvbnRyb2xzIHRoZSByZWZyZXNoIHJhdGlvLCAxMDAgKi9cbiAgICBibGVuZDogbnVtYmVyO1xuICAgIC8qKiBDYW4gbGltaXQgdGhlIGFtb3VudCBvZiBmcmFtZXMgcmVuZGVyZWQgaWYgZnJhbWVzID09PSBJbmZpbml0eSwgdXN1YWxseSB0byBnZXQgc29tZSBwZXJmb3JtYW5jZSBiYWNrIG9uY2UgYSBtb3ZhYmxlIHNjZW5lIGhhcyBzZXR0bGVkLCBJbmZpbml0eSAqL1xuICAgIGxpbWl0OiBudW1iZXI7XG4gICAgLyoqIFNjYWxlIG9mIHRoZSBwbGFuZSwgICovXG4gICAgc2NhbGU6IG51bWJlcjtcbiAgICAvKiogVGVtcG9yYWwgYWNjdW11bGF0ZXMgc2hhZG93cyBvdmVyIHRpbWUgd2hpY2ggaXMgbW9yZSBwZXJmb3JtYW50IGJ1dCBoYXMgYSB2aXN1YWwgcmVncmVzc2lvbiBvdmVyIGluc3RhbnQgcmVzdWx0cywgZmFsc2UgICovXG4gICAgdGVtcG9yYWw6IGJvb2xlYW47XG4gICAgLyoqIE9wYWNpdHkgb2YgdGhlIHBsYW5lLCAxICovXG4gICAgb3BhY2l0eTogbnVtYmVyO1xuICAgIC8qKiBEaXNjYXJkcyBhbHBoYSBwaXhlbHMsIDAuNjUgKi9cbiAgICBhbHBoYVRlc3Q6IG51bWJlcjtcbiAgICAvKiogU2hhZG93IGNvbG9yLCBibGFjayAqL1xuICAgIGNvbG9yOiBzdHJpbmc7XG4gICAgLyoqIENvbG9yYmxlbmQsIGhvdyBtdWNoIGNvbG9ycyB0dXJuIHRvIGJsYWNrLCAwIGlzIGJsYWNrLCAyICovXG4gICAgY29sb3JCbGVuZDogbnVtYmVyO1xuICAgIC8qKiBCdWZmZXIgcmVzb2x1dGlvbiwgMTAyNCAqL1xuICAgIHJlc29sdXRpb246IG51bWJlcjtcbiAgICAvKiogVGV4dHVyZSB0b25lbWFwcGluZyAqL1xuICAgIHRvbmVNYXBwZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzTGlnaHRBcGkgPSB7IHVwZGF0ZTogKCkgPT4gdm9pZCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzQXBpIHtcbiAgICBsaWdodHM6IE1hcDxzdHJpbmcsIFNpZ25hbDxOZ3RzQWNjdW11bGF0aXZlU2hhZG93c0xpZ2h0QXBpPj47XG4gICAgdGVtcG9yYWw6IGJvb2xlYW47XG4gICAgZnJhbWVzOiBudW1iZXI7XG4gICAgYmxlbmQ6IG51bWJlcjtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIGdldE1lc2g6ICgpID0+IFRIUkVFLk1lc2g8VEhSRUUuUGxhbmVHZW9tZXRyeSwgU29mdFNoYWRvd01hdGVyaWFsSW5wdXRzICYgVEhSRUUuU2hhZGVyTWF0ZXJpYWw+O1xuICAgIHJlc2V0OiAoKSA9PiB2b2lkO1xuICAgIHVwZGF0ZTogKGZyYW1lcz86IG51bWJlcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IE5HVFNfQUNDVU1VTEFUSVZFX1NIQURPV1NfQVBJID0gbmV3IEluamVjdGlvblRva2VuPFNpZ25hbDxOZ3RzQWNjdW11bGF0aXZlU2hhZG93c0FwaT4+KFxuICAgICdOZ3RzQWNjdW11bGF0aXZlU2hhZG93cyBBUEknXG4pO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgICAgICduZ3RzLWFjY3VtdWxhdGl2ZS1zaGFkb3dzJzogTmd0R3JvdXAgJiBOZ3RzQWNjdW11bGF0aXZlU2hhZG93c1N0YXRlO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWFjY3VtdWxhdGl2ZS1zaGFkb3dzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQ+XG4gICAgICAgICAgICA8bmd0LWdyb3VwIFtyZWZdPVwiYWNjdW11bGF0aXZlU2hhZG93c1JlZlwiIFt0cmF2ZXJzZV09XCJudWxsVHJhdmVyc2VcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgICAgICAgICA8bmd0LW1lc2hcbiAgICAgICAgICAgICAgICBbcmVmXT1cIm1lc2hSZWZcIlxuICAgICAgICAgICAgICAgIFtyZWNlaXZlU2hhZG93XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzY2FsZV09XCJhY2N1bXVsYXRpdmVTaGFkb3dzU2NhbGUoKVwiXG4gICAgICAgICAgICAgICAgW3JvdGF0aW9uXT1cIlstTWF0aC5QSSAvIDIsIDAsIDBdXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmd0LXBsYW5lLWdlb21ldHJ5IC8+XG4gICAgICAgICAgICAgICAgPG5ndC1zb2Z0LXNoYWRvdy1tYXRlcmlhbFxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXB0aFdyaXRlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3RvbmVNYXBwZWRdPVwiYWNjdW11bGF0aXZlU2hhZG93c1RvbmVNYXBwZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJhY2N1bXVsYXRpdmVTaGFkb3dzQ29sb3IoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtibGVuZF09XCJhY2N1bXVsYXRpdmVTaGFkb3dzQ29sb3JCbGVuZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW21hcF09XCJwTE0oKS5wcm9ncmVzc2l2ZUxpZ2h0TWFwMi50ZXh0dXJlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9uZ3QtbWVzaD5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdUU19BQ0NVTVVMQVRJVkVfU0hBRE9XU19BUEksXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoc2hhZG93czogTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3MpID0+IHNoYWRvd3MuYXBpLFxuICAgICAgICAgICAgZGVwczogW05ndHNBY2N1bXVsYXRpdmVTaGFkb3dzXSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3MgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RzQWNjdW11bGF0aXZlU2hhZG93c1N0YXRlPiB7XG4gICAgcmVhZG9ubHkgbnVsbFRyYXZlcnNlID0gKCkgPT4gbnVsbDtcbiAgICByZWFkb25seSBNYXRoID0gTWF0aDtcblxuICAgIC8qKiBIb3cgbWFueSBmcmFtZXMgaXQgY2FuIHJlbmRlciwgbW9yZSB5aWVsZHMgY2xlYW5lciByZXN1bHRzIGJ1dCB0YWtlcyBtb3JlIHRpbWUsIDQwICovXG4gICAgQElucHV0KCkgc2V0IGZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGZyYW1lcyB9KTtcbiAgICB9XG5cbiAgICAvKiogSWYgZnJhbWVzID09PSBJbmZpbml0eSBibGVuZCBjb250cm9scyB0aGUgcmVmcmVzaCByYXRpbywgMTAwICovXG4gICAgQElucHV0KCkgc2V0IGJsZW5kKGJsZW5kOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBibGVuZCB9KTtcbiAgICB9XG5cbiAgICAvKiogQ2FuIGxpbWl0IHRoZSBhbW91bnQgb2YgZnJhbWVzIHJlbmRlcmVkIGlmIGZyYW1lcyA9PT0gSW5maW5pdHksIHVzdWFsbHkgdG8gZ2V0IHNvbWUgcGVyZm9ybWFuY2UgYmFjayBvbmNlIGEgbW92YWJsZSBzY2VuZSBoYXMgc2V0dGxlZCwgSW5maW5pdHkgKi9cbiAgICBASW5wdXQoKSBzZXQgbGltaXQobGltaXQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGxpbWl0IH0pO1xuICAgIH1cblxuICAgIC8qKiBTY2FsZSBvZiB0aGUgcGxhbmUsICAqL1xuICAgIEBJbnB1dCgpIHNldCBzY2FsZShzY2FsZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NhbGUgfSk7XG4gICAgfVxuXG4gICAgLyoqIFRlbXBvcmFsIGFjY3VtdWxhdGVzIHNoYWRvd3Mgb3ZlciB0aW1lIHdoaWNoIGlzIG1vcmUgcGVyZm9ybWFudCBidXQgaGFzIGEgdmlzdWFsIHJlZ3Jlc3Npb24gb3ZlciBpbnN0YW50IHJlc3VsdHMsIGZhbHNlICAqL1xuICAgIEBJbnB1dCgpIHNldCB0ZW1wb3JhbCh0ZW1wb3JhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IHRlbXBvcmFsIH0pO1xuICAgIH1cblxuICAgIC8qKiBPcGFjaXR5IG9mIHRoZSBwbGFuZSwgMSAqL1xuICAgIEBJbnB1dCgpIHNldCBvcGFjaXR5KG9wYWNpdHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG9wYWNpdHkgfSk7XG4gICAgfVxuXG4gICAgLyoqIERpc2NhcmRzIGFscGhhIHBpeGVscywgMC42NSAqL1xuICAgIEBJbnB1dCgpIHNldCBhbHBoYVRlc3QoYWxwaGFUZXN0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBhbHBoYVRlc3QgfSk7XG4gICAgfVxuXG4gICAgLyoqIFNoYWRvdyBjb2xvciwgYmxhY2sgKi9cbiAgICBASW5wdXQoKSBzZXQgY29sb3IoY29sb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCh7IGNvbG9yIH0pO1xuICAgIH1cblxuICAgIC8qKiBDb2xvcmJsZW5kLCBob3cgbXVjaCBjb2xvcnMgdHVybiB0byBibGFjaywgMCBpcyBibGFjaywgMiAqL1xuICAgIEBJbnB1dCgpIHNldCBjb2xvckJsZW5kKGNvbG9yQmxlbmQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGNvbG9yQmxlbmQgfSk7XG4gICAgfVxuXG4gICAgLyoqIEJ1ZmZlciByZXNvbHV0aW9uLCAxMDI0ICovXG4gICAgQElucHV0KCkgc2V0IHJlc29sdXRpb24ocmVzb2x1dGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcmVzb2x1dGlvbiB9KTtcbiAgICB9XG5cbiAgICAvKiogVGV4dHVyZSB0b25lbWFwcGluZyAqL1xuICAgIEBJbnB1dCgpIHNldCB0b25lTWFwcGVkKHRvbmVNYXBwZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0b25lTWFwcGVkIH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcmVhZG9ubHkgI2dsID0gdGhpcy4jc3RvcmUuc2VsZWN0KCdnbCcpO1xuICAgIHJlYWRvbmx5ICNzY2VuZSA9IHRoaXMuI3N0b3JlLnNlbGVjdCgnc2NlbmUnKTtcbiAgICByZWFkb25seSAjY2FtZXJhID0gdGhpcy4jc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblxuICAgIHJlYWRvbmx5ICNyZXNvbHV0aW9uID0gdGhpcy5zZWxlY3QoJ3Jlc29sdXRpb24nKTtcbiAgICByZWFkb25seSAjdGVtcG9yYWwgPSB0aGlzLnNlbGVjdCgndGVtcG9yYWwnKTtcbiAgICByZWFkb25seSAjYmxlbmQgPSB0aGlzLnNlbGVjdCgnYmxlbmQnKTtcbiAgICByZWFkb25seSAjZnJhbWVzID0gdGhpcy5zZWxlY3QoJ2ZyYW1lcycpO1xuICAgIHJlYWRvbmx5ICNvcGFjaXR5ID0gdGhpcy5zZWxlY3QoJ29wYWNpdHknKTtcbiAgICByZWFkb25seSAjYWxwaGFUZXN0ID0gdGhpcy5zZWxlY3QoJ2FscGhhVGVzdCcpO1xuXG4gICAgcmVhZG9ubHkgYWNjdW11bGF0aXZlU2hhZG93c1NjYWxlID0gdGhpcy5zZWxlY3QoJ3NjYWxlJyk7XG4gICAgcmVhZG9ubHkgYWNjdW11bGF0aXZlU2hhZG93c1RvbmVNYXBwZWQgPSB0aGlzLnNlbGVjdCgndG9uZU1hcHBlZCcpO1xuICAgIHJlYWRvbmx5IGFjY3VtdWxhdGl2ZVNoYWRvd3NDb2xvciA9IHRoaXMuc2VsZWN0KCdjb2xvcicpO1xuICAgIHJlYWRvbmx5IGFjY3VtdWxhdGl2ZVNoYWRvd3NDb2xvckJsZW5kID0gdGhpcy5zZWxlY3QoJ2NvbG9yQmxlbmQnKTtcblxuICAgIHJlYWRvbmx5IG1lc2hSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuTWVzaDxUSFJFRS5QbGFuZUdlb21ldHJ5LCBTb2Z0U2hhZG93TWF0ZXJpYWxJbnB1dHMgJiBUSFJFRS5TaGFkZXJNYXRlcmlhbD4+KCk7XG4gICAgcmVhZG9ubHkgYWNjdW11bGF0aXZlU2hhZG93c1JlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5Hcm91cD4oKTtcblxuICAgIHJlYWRvbmx5IHBMTSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiBuZXcgUHJvZ3Jlc3NpdmVMaWdodE1hcCh1bnRyYWNrZWQodGhpcy4jZ2wpLCB1bnRyYWNrZWQodGhpcy4jc2NlbmUpLCB0aGlzLiNyZXNvbHV0aW9uKCkpXG4gICAgKTtcblxuICAgIHJlYWRvbmx5IGFwaSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgcExNID0gdGhpcy5wTE0oKTtcbiAgICAgICAgY29uc3QgYWxwaGFUZXN0ID0gdGhpcy4jYWxwaGFUZXN0KCk7XG4gICAgICAgIGNvbnN0IG9wYWNpdHkgPSB0aGlzLiNvcGFjaXR5KCk7XG4gICAgICAgIGNvbnN0IGNhbWVyYSA9IHRoaXMuI2NhbWVyYSgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaWdodHM6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIHRlbXBvcmFsOiB0aGlzLiN0ZW1wb3JhbCgpLFxuICAgICAgICAgICAgZnJhbWVzOiBNYXRoLm1heCgyLCB0aGlzLiNmcmFtZXMoKSksXG4gICAgICAgICAgICBibGVuZDogTWF0aC5tYXgoMiwgdGhpcy4jZnJhbWVzKCkgPT09IEluZmluaXR5ID8gdGhpcy4jYmxlbmQoKSA6IHRoaXMuI2ZyYW1lcygpKSxcbiAgICAgICAgICAgIGNvdW50OiAwLFxuICAgICAgICAgICAgZ2V0TWVzaDogKCkgPT4gdGhpcy5tZXNoUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tZXNoUmVmLm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyBDbGVhciBidWZmZXJzLCByZXNldCBvcGFjaXRpZXMsIHNldCBmcmFtZSBjb3VudCB0byAwXG4gICAgICAgICAgICAgICAgcExNLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1lc2hSZWYubmF0aXZlRWxlbWVudC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5vcGFjaXR5ID0gMDtcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5hbHBoYVRlc3QgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBpKCkuY291bnQgPSAwO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZTogKGZyYW1lcyA9IDEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWVzaFJlZi5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgLy8gQWRhcHQgdGhlIG9wYWNpdHktYmxlbmQgcmF0aW8gdG8gdGhlIG51bWJlciBvZiBmcmFtZXNcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IHRoaXMubWVzaFJlZi5uYXRpdmVFbGVtZW50Lm1hdGVyaWFsO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5hcGkoKS50ZW1wb3JhbCkge1xuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbC5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwuYWxwaGFUZXN0ID0gYWxwaGFUZXN0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLm9wYWNpdHkgPSBNYXRoLm1pbihvcGFjaXR5LCBtYXRlcmlhbC5vcGFjaXR5ICsgb3BhY2l0eSAvIHRoaXMuYXBpKCkuYmxlbmQpO1xuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbC5hbHBoYVRlc3QgPSBNYXRoLm1pbihhbHBoYVRlc3QsIG1hdGVyaWFsLmFscGhhVGVzdCArIGFscGhhVGVzdCAvIHRoaXMuYXBpKCkuYmxlbmQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFN3aXRjaCBhY2N1bXVsYXRpdmUgbGlnaHRzIG9uXG4gICAgICAgICAgICAgICAgdGhpcy5hY2N1bXVsYXRpdmVTaGFkb3dzUmVmLm5hdGl2ZUVsZW1lbnQudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgLy8gQ29sbGVjdCBzY2VuZSBsaWdodHMgYW5kIG1lc2hlc1xuICAgICAgICAgICAgICAgIHBMTS5wcmVwYXJlKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxpZ2h0bWFwIGFuZCB0aGUgYWNjdW11bGF0aXZlIGxpZ2h0c1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhbWVzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcGkoKS5saWdodHMuZm9yRWFjaCgobGlnaHQpID0+IGxpZ2h0KCkudXBkYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICBwTE0udXBkYXRlKGNhbWVyYSwgdGhpcy5hcGkoKS5ibGVuZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFN3aXRjaCBsaWdodHMgb2ZmXG4gICAgICAgICAgICAgICAgdGhpcy5hY2N1bXVsYXRpdmVTaGFkb3dzUmVmLm5hdGl2ZUVsZW1lbnQudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgbGlnaHRzIGFuZCBtZXNoZXNcbiAgICAgICAgICAgICAgICBwTE0uZmluaXNoKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIGZyYW1lczogNDAsXG4gICAgICAgICAgICBsaW1pdDogSW5maW5pdHksXG4gICAgICAgICAgICBibGVuZDogMjAsXG4gICAgICAgICAgICBzY2FsZTogMTAsXG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgYWxwaGFUZXN0OiAwLjc1LFxuICAgICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgICAgICBjb2xvckJsZW5kOiAyLFxuICAgICAgICAgICAgcmVzb2x1dGlvbjogMTAyNCxcbiAgICAgICAgICAgIHRvbmVNYXBwZWQ6IHRydWUsXG4gICAgICAgICAgICB0ZW1wb3JhbDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbkluamVjdGlvbkNvbnRleHQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jY29uZmlndXJlKCk7XG4gICAgICAgICAgICB0aGlzLiNyZXNldEFuZFVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMuI29uQmVmb3JlUmVuZGVyLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgICNvbkJlZm9yZVJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgaW52YWxpZGF0ZSA9IHRoaXMuI3N0b3JlLmdldCgnaW52YWxpZGF0ZScpO1xuICAgICAgICBjb25zdCBsaW1pdCA9IHRoaXMuZ2V0KCdsaW1pdCcpO1xuICAgICAgICBjb25zdCBhcGkgPSB0aGlzLmFwaSgpO1xuICAgICAgICBpZiAoKGFwaS50ZW1wb3JhbCB8fCBhcGkuZnJhbWVzID09PSBJbmZpbml0eSkgJiYgYXBpLmNvdW50IDwgYXBpLmZyYW1lcyAmJiBhcGkuY291bnQgPCBsaW1pdCkge1xuICAgICAgICAgICAgaW52YWxpZGF0ZSgpO1xuICAgICAgICAgICAgYXBpLnVwZGF0ZSgpO1xuICAgICAgICAgICAgYXBpLmNvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjY29uZmlndXJlKCkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyID0gY29tcHV0ZWQoKCkgPT4gKHsgcExNOiB0aGlzLnBMTSgpLCBtZXNoOiB0aGlzLm1lc2hSZWYubmF0aXZlRWxlbWVudCB9KSk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHBMTSwgbWVzaCB9ID0gdHJpZ2dlcigpO1xuICAgICAgICAgICAgaWYgKCFtZXNoKSByZXR1cm47XG4gICAgICAgICAgICBwTE0uY29uZmlndXJlKG1lc2gpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjcmVzZXRBbmRVcGRhdGUoKSB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXIgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUoKSxcbiAgICAgICAgICAgIG9iamVjdHM6IGdldExvY2FsU3RhdGUodGhpcy4jc3RvcmUuZ2V0KCdzY2VuZScpKS5vYmplY3RzKCksXG4gICAgICAgICAgICBtZXNoOiB0aGlzLm1lc2hSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG1lc2ggfSA9IHRyaWdnZXIoKTtcbiAgICAgICAgICAgIGlmICghbWVzaCkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgYXBpID0gdW50cmFja2VkKHRoaXMuYXBpKTtcbiAgICAgICAgICAgIC8vIFJlc2V0IGludGVybmFscywgYnVmZmVycywgLi4uXG4gICAgICAgICAgICBhcGkucmVzZXQoKTtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBsaWdodG1hcFxuICAgICAgICAgICAgaWYgKCFhcGkudGVtcG9yYWwgJiYgYXBpLmZyYW1lcyAhPT0gSW5maW5pdHkpIGFwaS51cGRhdGUoYXBpLmJsZW5kKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect, inject } from '@angular/core';
|
|
2
|
-
import { NgtArgs, NgtRepeat, NgtSignalStore, extend, injectNgtRef,
|
|
2
|
+
import { NgtArgs, NgtRepeat, NgtSignalStore, extend, injectNgtRef, requestAnimationFrameInInjectionContext, } from 'angular-three';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';
|
|
5
5
|
import { NGTS_ACCUMULATIVE_SHADOWS_API } from './accumulative-shadows';
|
|
@@ -125,7 +125,7 @@ class NgtsRandomizedLights extends NgtSignalStore {
|
|
|
125
125
|
};
|
|
126
126
|
return { update };
|
|
127
127
|
});
|
|
128
|
-
|
|
128
|
+
requestAnimationFrameInInjectionContext(() => {
|
|
129
129
|
this.#updateLightsMap();
|
|
130
130
|
});
|
|
131
131
|
}
|
|
@@ -141,8 +141,8 @@ class NgtsRandomizedLights extends NgtSignalStore {
|
|
|
141
141
|
}
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
145
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsRandomizedLights, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsRandomizedLights, isStandalone: true, selector: "ngts-randomized-lights", inputs: { lightsRef: "lightsRef", frames: "frames", position: "position", radius: "radius", amount: "amount", intensity: "intensity", ambient: "ambient", castShadow: "castShadow", bias: "bias", mapSize: "mapSize", size: "size", near: "near", far: "far" }, usesInheritance: true, ngImport: i0, template: `
|
|
146
146
|
<ngt-group ngtCompound [ref]="lightsRef">
|
|
147
147
|
<ngt-directional-light
|
|
148
148
|
*ngFor="let i; repeat: lightsAmount()"
|
|
@@ -157,7 +157,7 @@ class NgtsRandomizedLights extends NgtSignalStore {
|
|
|
157
157
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "directive", type: NgtRepeat, selector: "[ngFor][ngForRepeat]", inputs: ["ngForRepeat"] }] }); }
|
|
158
158
|
}
|
|
159
159
|
export { NgtsRandomizedLights };
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsRandomizedLights, decorators: [{
|
|
161
161
|
type: Component,
|
|
162
162
|
args: [{
|
|
163
163
|
selector: 'ngts-randomized-lights',
|
|
@@ -205,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
205
205
|
}], far: [{
|
|
206
206
|
type: Input
|
|
207
207
|
}] } });
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9taXplZC1saWdodHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvYWNjdW11bGF0aXZlLXNoYWRvd3MvcmFuZG9taXplZC1saWdodHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUNILE9BQU8sRUFDUCxTQUFTLEVBQ1QsY0FBYyxFQUNkLE1BQU0sRUFDTixZQUFZLEVBQ1osa0NBQWtDLEdBRXJDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUV2RSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQW9DakUsTUFtQmEsb0JBQXFCLFNBQVEsY0FBeUM7SUFFL0U7b0hBQ2dIO0lBQ2hILElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUFhLFFBQVEsQ0FBQyxRQUEyQztRQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsK0RBQStEO0lBQy9ELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixJQUFhLE1BQU0sQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsSUFBYSxTQUFTLENBQUMsU0FBaUI7UUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELDBHQUEwRztJQUMxRyxJQUFhLE9BQU8sQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsSUFBYSxVQUFVLENBQUMsVUFBbUI7UUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixJQUFhLElBQUksQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsSUFBYSxPQUFPLENBQUMsT0FBZTtRQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsNENBQTRDO0lBQzVDLElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxJQUFhLElBQUksQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsSUFBYSxHQUFHLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRVEsT0FBTyxDQUF5QztJQUVoRCxLQUFLLENBQXVCO0lBQzVCLEtBQUssQ0FBdUI7SUFDNUIsSUFBSSxDQUFzQjtJQUMxQixRQUFRLENBQTBCO0lBQ2xDLFFBQVEsQ0FBMEI7SUFDbEMsU0FBUyxDQUEyQjtJQUNwQyxPQUFPLENBQXlCO0lBcUR6QztRQUNJLEtBQUssQ0FBQztZQUNGLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUksRUFBRSxLQUFLO1lBQ1gsT0FBTyxFQUFFLEdBQUc7WUFDWixJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxHQUFHO1lBQ1QsR0FBRyxFQUFFLEdBQUc7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25CLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxFQUFFLENBQUM7WUFDVCxTQUFTLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxHQUFHO1NBQ2YsQ0FBQyxDQUFDO1FBeklFLGNBQVMsR0FBRyxZQUFZLEVBQWUsQ0FBQztRQThEeEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRWhELFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLGFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLFlBQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxlQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVqQyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDYixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksRUFBRTtTQUNkLENBQUMsQ0FBQztRQUVNLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUV6RSxRQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7WUFFNUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNoQixJQUFJLEtBQXlDLENBQUM7Z0JBQzlDLElBQUksTUFBTSxFQUFFO29CQUNSLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDN0MsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUEyQixDQUFDO3dCQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUU7NEJBQ3pCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUNkLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFDckQsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUNyRCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQ3hELENBQUM7eUJBQ0w7NkJBQU07NEJBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDOzRCQUNoRSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ3hDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FDNUIsQ0FBQzt5QkFDTDtxQkFDSjtpQkFDSjtZQUNMLENBQUMsQ0FBQztZQUVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQWlCQyxrQ0FBa0MsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUN0RDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0ExSlEsb0JBQW9CO2tHQUFwQixvQkFBb0IseVdBaEJuQjs7Ozs7Ozs7Ozs7O0tBWVQsNERBQ1MsT0FBTyxxRUFBRSxTQUFTOztTQUduQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFuQmhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7O0tBWVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR08sTUFBTTtzQkFBbEIsS0FBSztnQkFLTyxRQUFRO3NCQUFwQixLQUFLO2dCQUtPLE1BQU07c0JBQWxCLEtBQUs7Z0JBS08sTUFBTTtzQkFBbEIsS0FBSztnQkFLTyxTQUFTO3NCQUFyQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sSUFBSTtzQkFBaEIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtPLEdBQUc7c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBOZ3RBcmdzLFxuICAgIE5ndFJlcGVhdCxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0Tmd0UmVmLFxuICAgIHJlcXVlc3RBbmltYXRpb25JbkluamVjdGlvbkNvbnRleHQsXG4gICAgdHlwZSBOZ3RHcm91cCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbExpZ2h0LCBHcm91cCwgT3J0aG9ncmFwaGljQ2FtZXJhLCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTkdUU19BQ0NVTVVMQVRJVkVfU0hBRE9XU19BUEkgfSBmcm9tICcuL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcblxuZXh0ZW5kKHsgR3JvdXAsIERpcmVjdGlvbmFsTGlnaHQsIE9ydGhvZ3JhcGhpY0NhbWVyYSwgVmVjdG9yMiB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzUmFuZG9taXplZExpZ2h0c1N0YXRlIHtcbiAgICAvKiogSG93IG1hbnkgZnJhbWVzIGl0IHdpbGwgamlnZ2xlIHRoZSBsaWdodHMsIDEuXG4gICAgICogIEZyYW1lcyBpcyBjb250ZXh0IGF3YXJlLCBpZiBhIHByb3ZpZGVyIGxpa2UgQWNjdW11bGF0aXZlU2hhZG93cyBleGlzdHMsIGZyYW1lcyB3aWxsIGJlIHRha2VuIGZyb20gdGhlcmUhICAqL1xuICAgIGZyYW1lczogbnVtYmVyO1xuICAgIC8qKiBMaWdodCBwb3NpdGlvbiwgWzAsIDAsIDBdICovXG4gICAgcG9zaXRpb246IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXTtcbiAgICAvKiogUmFkaXVzIG9mIHRoZSBqaWdnbGUsIGhpZ2hlciB2YWx1ZXMgbWFrZSBzb2Z0ZXIgbGlnaHQsIDUgKi9cbiAgICByYWRpdXM6IG51bWJlcjtcbiAgICAvKiogQW1vdW50IG9mIGxpZ2h0cywgOCAqL1xuICAgIGFtb3VudDogbnVtYmVyO1xuICAgIC8qKiBMaWdodCBpbnRlbnNpdHksIDEgKi9cbiAgICBpbnRlbnNpdHk6IG51bWJlcjtcbiAgICAvKiogQW1iaWVudCBvY2NsdXNpb24sIGxvd2VyIHZhbHVlcyBtZWFuIGxlc3MgQU8sIGhpZ2h0IG1vcmUsIHlvdSBjYW4gbWl4IEFPIGFuZCBkaXJlY3Rpb25hbCBsaWdodCwgMC41ICovXG4gICAgYW1iaWVudDogbnVtYmVyO1xuICAgIC8qKiBJZiB0aGUgbGlnaHRzIGNhc3Qgc2hhZG93cywgdGhpcyBpcyB0cnVlIGJ5IGRlZmF1bHQgKi9cbiAgICBjYXN0U2hhZG93OiBib29sZWFuO1xuICAgIC8qKiBEZWZhdWx0IHNoYWRvdyBiaWFzLCAwICovXG4gICAgYmlhczogbnVtYmVyO1xuICAgIC8qKiBEZWZhdWx0IG1hcCBzaXplLCA1MTIgKi9cbiAgICBtYXBTaXplOiBudW1iZXI7XG4gICAgLyoqIERlZmF1bHQgc2l6ZSBvZiB0aGUgc2hhZG93IGNhbWVyYSwgMTAgKi9cbiAgICBzaXplOiBudW1iZXI7XG4gICAgLyoqIERlZmF1bHQgc2hhZG93IGNhbWVyYSBuZWFyLCAwLjUgKi9cbiAgICBuZWFyOiBudW1iZXI7XG4gICAgLyoqIERlZmF1bHQgc2hhZG93IGNhbWVyYSBmYXIsIDUwMCAqL1xuICAgIGZhcjogbnVtYmVyO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgICAgICduZ3RzLXJhbmRvbWl6ZWQtbGlnaHRzJzogTmd0R3JvdXAgJiBOZ3RzUmFuZG9taXplZExpZ2h0c1N0YXRlO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXJhbmRvbWl6ZWQtbGlnaHRzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQgW3JlZl09XCJsaWdodHNSZWZcIj5cbiAgICAgICAgICAgIDxuZ3QtZGlyZWN0aW9uYWwtbGlnaHRcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaTsgcmVwZWF0OiBsaWdodHNBbW91bnQoKVwiXG4gICAgICAgICAgICAgICAgW2Nhc3RTaGFkb3ddPVwibGlnaHRzQ2FzdFNoYWRvdygpXCJcbiAgICAgICAgICAgICAgICBbaW50ZW5zaXR5XT1cImxpZ2h0c0ludGVuc2l0eSgpIC8gbGlnaHRzQW1vdW50KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImxpZ2h0c0JpYXMoKVwiIGF0dGFjaD1cInNoYWRvdy5iaWFzXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LXZlY3RvcjIgKmFyZ3M9XCJzaGFkb3dNYXBTaXplKClcIiBhdHRhY2g9XCJzaGFkb3cubWFwU2l6ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC1vcnRob2dyYXBoaWMtY2FtZXJhICphcmdzPVwiY2FtZXJhQXJncygpXCIgYXR0YWNoPVwic2hhZG93LmNhbWVyYVwiIC8+XG4gICAgICAgICAgICA8L25ndC1kaXJlY3Rpb25hbC1saWdodD5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0QXJncywgTmd0UmVwZWF0XSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNSYW5kb21pemVkTGlnaHRzIGV4dGVuZHMgTmd0U2lnbmFsU3RvcmU8Tmd0c1JhbmRvbWl6ZWRMaWdodHNTdGF0ZT4ge1xuICAgIEBJbnB1dCgpIGxpZ2h0c1JlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5Hcm91cD4oKTtcbiAgICAvKiogSG93IG1hbnkgZnJhbWVzIGl0IHdpbGwgamlnZ2xlIHRoZSBsaWdodHMsIDEuXG4gICAgICogIEZyYW1lcyBpcyBjb250ZXh0IGF3YXJlLCBpZiBhIHByb3ZpZGVyIGxpa2UgQWNjdW11bGF0aXZlU2hhZG93cyBleGlzdHMsIGZyYW1lcyB3aWxsIGJlIHRha2VuIGZyb20gdGhlcmUhICAqL1xuICAgIEBJbnB1dCgpIHNldCBmcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIExpZ2h0IHBvc2l0aW9uLCBbMCwgMCwgMF0gKi9cbiAgICBASW5wdXQoKSBzZXQgcG9zaXRpb24ocG9zaXRpb246IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXSkge1xuICAgICAgICB0aGlzLnNldCh7IHBvc2l0aW9uIH0pO1xuICAgIH1cblxuICAgIC8qKiBSYWRpdXMgb2YgdGhlIGppZ2dsZSwgaGlnaGVyIHZhbHVlcyBtYWtlIHNvZnRlciBsaWdodCwgNSAqL1xuICAgIEBJbnB1dCgpIHNldCByYWRpdXMocmFkaXVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYWRpdXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIEFtb3VudCBvZiBsaWdodHMsIDggKi9cbiAgICBASW5wdXQoKSBzZXQgYW1vdW50KGFtb3VudDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYW1vdW50IH0pO1xuICAgIH1cblxuICAgIC8qKiBMaWdodCBpbnRlbnNpdHksIDEgKi9cbiAgICBASW5wdXQoKSBzZXQgaW50ZW5zaXR5KGludGVuc2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW50ZW5zaXR5IH0pO1xuICAgIH1cblxuICAgIC8qKiBBbWJpZW50IG9jY2x1c2lvbiwgbG93ZXIgdmFsdWVzIG1lYW4gbGVzcyBBTywgaGlnaHQgbW9yZSwgeW91IGNhbiBtaXggQU8gYW5kIGRpcmVjdGlvbmFsIGxpZ2h0LCAwLjUgKi9cbiAgICBASW5wdXQoKSBzZXQgYW1iaWVudChhbWJpZW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBhbWJpZW50IH0pO1xuICAgIH1cblxuICAgIC8qKiBJZiB0aGUgbGlnaHRzIGNhc3Qgc2hhZG93cywgdGhpcyBpcyB0cnVlIGJ5IGRlZmF1bHQgKi9cbiAgICBASW5wdXQoKSBzZXQgY2FzdFNoYWRvdyhjYXN0U2hhZG93OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2FzdFNoYWRvdyB9KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBzaGFkb3cgYmlhcywgMCAqL1xuICAgIEBJbnB1dCgpIHNldCBiaWFzKGJpYXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGJpYXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgbWFwIHNpemUsIDUxMiAqL1xuICAgIEBJbnB1dCgpIHNldCBtYXBTaXplKG1hcFNpemU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1hcFNpemUgfSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgc2l6ZSBvZiB0aGUgc2hhZG93IGNhbWVyYSwgMTAgKi9cbiAgICBASW5wdXQoKSBzZXQgc2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzaXplIH0pO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHNoYWRvdyBjYW1lcmEgbmVhciwgMC41ICovXG4gICAgQElucHV0KCkgc2V0IG5lYXIobmVhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbmVhciB9KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBzaGFkb3cgY2FtZXJhIGZhciwgNTAwICovXG4gICAgQElucHV0KCkgc2V0IGZhcihmYXI6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGZhciB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSAjcGFyZW50ID0gaW5qZWN0KE5HVFNfQUNDVU1VTEFUSVZFX1NIQURPV1NfQVBJKTtcblxuICAgIHJlYWRvbmx5ICNzaXplID0gdGhpcy5zZWxlY3QoJ3NpemUnKTtcbiAgICByZWFkb25seSAjbmVhciA9IHRoaXMuc2VsZWN0KCduZWFyJyk7XG4gICAgcmVhZG9ubHkgI2ZhciA9IHRoaXMuc2VsZWN0KCdmYXInKTtcbiAgICByZWFkb25seSAjbWFwU2l6ZSA9IHRoaXMuc2VsZWN0KCdtYXBTaXplJyk7XG4gICAgcmVhZG9ubHkgI2FtYmllbnQgPSB0aGlzLnNlbGVjdCgnYW1iaWVudCcpO1xuICAgIHJlYWRvbmx5ICNwb3NpdGlvbiA9IHRoaXMuc2VsZWN0KCdwb3NpdGlvbicpO1xuICAgIHJlYWRvbmx5ICNyYWRpdXMgPSB0aGlzLnNlbGVjdCgncmFkaXVzJyk7XG5cbiAgICByZWFkb25seSBsaWdodHNBbW91bnQgPSB0aGlzLnNlbGVjdCgnYW1vdW50Jyk7XG4gICAgcmVhZG9ubHkgbGlnaHRzQ2FzdFNoYWRvdyA9IHRoaXMuc2VsZWN0KCdjYXN0U2hhZG93Jyk7XG4gICAgcmVhZG9ubHkgbGlnaHRzSW50ZW5zaXR5ID0gdGhpcy5zZWxlY3QoJ2ludGVuc2l0eScpO1xuICAgIHJlYWRvbmx5IGxpZ2h0c0JpYXMgPSB0aGlzLnNlbGVjdCgnYmlhcycpO1xuXG4gICAgcmVhZG9ubHkgc2hhZG93TWFwU2l6ZSA9IGNvbXB1dGVkKCgpID0+IFt0aGlzLiNtYXBTaXplKCksIHRoaXMuI21hcFNpemUoKV0pO1xuICAgIHJlYWRvbmx5IGNhbWVyYUFyZ3MgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAgICAgIC10aGlzLiNzaXplKCksXG4gICAgICAgIHRoaXMuI3NpemUoKSxcbiAgICAgICAgdGhpcy4jc2l6ZSgpLFxuICAgICAgICAtdGhpcy4jc2l6ZSgpLFxuICAgICAgICB0aGlzLiNuZWFyKCksXG4gICAgICAgIHRoaXMuI2ZhcigpLFxuICAgIF0pO1xuXG4gICAgcmVhZG9ubHkgbGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gbmV3IFRIUkVFLlZlY3RvcjMoLi4udGhpcy4jcG9zaXRpb24oKSkubGVuZ3RoKCkpO1xuXG4gICAgcmVhZG9ubHkgYXBpID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCByYWRpdXMgPSB0aGlzLiNyYWRpdXMoKTtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLiNwb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBhbWJpZW50ID0gdGhpcy4jYW1iaWVudCgpO1xuICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLmxlbmd0aCgpO1xuICAgICAgICBjb25zdCBsaWdodHMgPSB0aGlzLmxpZ2h0c1JlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBsaWdodDogVEhSRUUuRGlyZWN0aW9uYWxMaWdodCB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChsaWdodHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBsID0gMDsgbCA8IGxpZ2h0cy5jaGlsZHJlbi5sZW5ndGg7IGwrKykge1xuICAgICAgICAgICAgICAgICAgICBsaWdodCA9IGxpZ2h0cy5jaGlsZHJlbltsXSBhcyBUSFJFRS5EaXJlY3Rpb25hbExpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IGFtYmllbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0LnBvc2l0aW9uLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblswXSArIFRIUkVFLk1hdGhVdGlscy5yYW5kRmxvYXRTcHJlYWQocmFkaXVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblsxXSArIFRIUkVFLk1hdGhVdGlscy5yYW5kRmxvYXRTcHJlYWQocmFkaXVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblsyXSArIFRIUkVFLk1hdGhVdGlscy5yYW5kRmxvYXRTcHJlYWQocmFkaXVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhbWJkYSA9IE1hdGguYWNvcygyICogTWF0aC5yYW5kb20oKSAtIDEpIC0gTWF0aC5QSSAvIDIuMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBoaSA9IDIgKiBNYXRoLlBJICogTWF0aC5yYW5kb20oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0LnBvc2l0aW9uLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmNvcyhsYW1iZGEpICogTWF0aC5jb3MocGhpKSAqIGxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhNYXRoLmNvcyhsYW1iZGEpICogTWF0aC5zaW4ocGhpKSAqIGxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5zaW4obGFtYmRhKSAqIGxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4geyB1cGRhdGUgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBjYXN0U2hhZG93OiB0cnVlLFxuICAgICAgICAgICAgYmlhczogMC4wMDEsXG4gICAgICAgICAgICBtYXBTaXplOiA1MTIsXG4gICAgICAgICAgICBzaXplOiA1LFxuICAgICAgICAgICAgbmVhcjogMC41LFxuICAgICAgICAgICAgZmFyOiA1MDAsXG4gICAgICAgICAgICBmcmFtZXM6IDEsXG4gICAgICAgICAgICBwb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgcmFkaXVzOiAxLFxuICAgICAgICAgICAgYW1vdW50OiA4LFxuICAgICAgICAgICAgaW50ZW5zaXR5OiAxLFxuICAgICAgICAgICAgYW1iaWVudDogMC41LFxuICAgICAgICB9KTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVMaWdodHNNYXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI3VwZGF0ZUxpZ2h0c01hcCgpIHtcbiAgICAgICAgZWZmZWN0KChvbkNsZWFudXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpZ2h0cyA9IHRoaXMubGlnaHRzUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIWxpZ2h0cykgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy4jcGFyZW50KCk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LmxpZ2h0cy5zZXQobGlnaHRzLnV1aWQsIHRoaXMuYXBpKTtcbiAgICAgICAgICAgICAgICBvbkNsZWFudXAoKCkgPT4gcGFyZW50LmxpZ2h0cy5kZWxldGUobGlnaHRzLnV1aWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9taXplZC1saWdodHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvYWNjdW11bGF0aXZlLXNoYWRvd3MvcmFuZG9taXplZC1saWdodHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUNILE9BQU8sRUFDUCxTQUFTLEVBQ1QsY0FBYyxFQUNkLE1BQU0sRUFDTixZQUFZLEVBQ1osdUNBQXVDLEdBRTFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUV2RSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQW9DakUsTUFtQmEsb0JBQXFCLFNBQVEsY0FBeUM7SUFFL0U7b0hBQ2dIO0lBQ2hILElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUFhLFFBQVEsQ0FBQyxRQUEyQztRQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsK0RBQStEO0lBQy9ELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1B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RTs7Ozs7Ozs7Ozs7O0tBWVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR08sTUFBTTtzQkFBbEIsS0FBSztnQkFLTyxRQUFRO3NCQUFwQixLQUFLO2dCQUtPLE1BQU07c0JBQWxCLEtBQUs7Z0JBS08sTUFBTTtzQkFBbEIsS0FBSztnQkFLTyxTQUFTO3NCQUFyQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sSUFBSTtzQkFBaEIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtPLEdBQUc7c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBOZ3RBcmdzLFxuICAgIE5ndFJlcGVhdCxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0Tmd0UmVmLFxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZUluSW5qZWN0aW9uQ29udGV4dCxcbiAgICB0eXBlIE5ndEdyb3VwLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IERpcmVjdGlvbmFsTGlnaHQsIEdyb3VwLCBPcnRob2dyYXBoaWNDYW1lcmEsIFZlY3RvcjIgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOR1RTX0FDQ1VNVUxBVElWRV9TSEFET1dTX0FQSSB9IGZyb20gJy4vYWNjdW11bGF0aXZlLXNoYWRvd3MnO1xuXG5leHRlbmQoeyBHcm91cCwgRGlyZWN0aW9uYWxMaWdodCwgT3J0aG9ncmFwaGljQ2FtZXJhLCBWZWN0b3IyIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNSYW5kb21pemVkTGlnaHRzU3RhdGUge1xuICAgIC8qKiBIb3cgbWFueSBmcmFtZXMgaXQgd2lsbCBqaWdnbGUgdGhlIGxpZ2h0cywgMS5cbiAgICAgKiAgRnJhbWVzIGlzIGNvbnRleHQgYXdhcmUsIGlmIGEgcHJvdmlkZXIgbGlrZSBBY2N1bXVsYXRpdmVTaGFkb3dzIGV4aXN0cywgZnJhbWVzIHdpbGwgYmUgdGFrZW4gZnJvbSB0aGVyZSEgICovXG4gICAgZnJhbWVzOiBudW1iZXI7XG4gICAgLyoqIExpZ2h0IHBvc2l0aW9uLCBbMCwgMCwgMF0gKi9cbiAgICBwb3NpdGlvbjogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdO1xuICAgIC8qKiBSYWRpdXMgb2YgdGhlIGppZ2dsZSwgaGlnaGVyIHZhbHVlcyBtYWtlIHNvZnRlciBsaWdodCwgNSAqL1xuICAgIHJhZGl1czogbnVtYmVyO1xuICAgIC8qKiBBbW91bnQgb2YgbGlnaHRzLCA4ICovXG4gICAgYW1vdW50OiBudW1iZXI7XG4gICAgLyoqIExpZ2h0IGludGVuc2l0eSwgMSAqL1xuICAgIGludGVuc2l0eTogbnVtYmVyO1xuICAgIC8qKiBBbWJpZW50IG9jY2x1c2lvbiwgbG93ZXIgdmFsdWVzIG1lYW4gbGVzcyBBTywgaGlnaHQgbW9yZSwgeW91IGNhbiBtaXggQU8gYW5kIGRpcmVjdGlvbmFsIGxpZ2h0LCAwLjUgKi9cbiAgICBhbWJpZW50OiBudW1iZXI7XG4gICAgLyoqIElmIHRoZSBsaWdodHMgY2FzdCBzaGFkb3dzLCB0aGlzIGlzIHRydWUgYnkgZGVmYXVsdCAqL1xuICAgIGNhc3RTaGFkb3c6IGJvb2xlYW47XG4gICAgLyoqIERlZmF1bHQgc2hhZG93IGJpYXMsIDAgKi9cbiAgICBiaWFzOiBudW1iZXI7XG4gICAgLyoqIERlZmF1bHQgbWFwIHNpemUsIDUxMiAqL1xuICAgIG1hcFNpemU6IG51bWJlcjtcbiAgICAvKiogRGVmYXVsdCBzaXplIG9mIHRoZSBzaGFkb3cgY2FtZXJhLCAxMCAqL1xuICAgIHNpemU6IG51bWJlcjtcbiAgICAvKiogRGVmYXVsdCBzaGFkb3cgY2FtZXJhIG5lYXIsIDAuNSAqL1xuICAgIG5lYXI6IG51bWJlcjtcbiAgICAvKiogRGVmYXVsdCBzaGFkb3cgY2FtZXJhIGZhciwgNTAwICovXG4gICAgZmFyOiBudW1iZXI7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAgICAgJ25ndHMtcmFuZG9taXplZC1saWdodHMnOiBOZ3RHcm91cCAmIE5ndHNSYW5kb21pemVkTGlnaHRzU3RhdGU7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtcmFuZG9taXplZC1saWdodHMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBuZ3RDb21wb3VuZCBbcmVmXT1cImxpZ2h0c1JlZlwiPlxuICAgICAgICAgICAgPG5ndC1kaXJlY3Rpb25hbC1saWdodFxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpOyByZXBlYXQ6IGxpZ2h0c0Ftb3VudCgpXCJcbiAgICAgICAgICAgICAgICBbY2FzdFNoYWRvd109XCJsaWdodHNDYXN0U2hhZG93KClcIlxuICAgICAgICAgICAgICAgIFtpbnRlbnNpdHldPVwibGlnaHRzSW50ZW5zaXR5KCkgLyBsaWdodHNBbW91bnQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwibGlnaHRzQmlhcygpXCIgYXR0YWNoPVwic2hhZG93LmJpYXNcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmVjdG9yMiAqYXJncz1cInNoYWRvd01hcFNpemUoKVwiIGF0dGFjaD1cInNoYWRvdy5tYXBTaXplXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmEgKmFyZ3M9XCJjYW1lcmFBcmdzKClcIiBhdHRhY2g9XCJzaGFkb3cuY2FtZXJhXCIgLz5cbiAgICAgICAgICAgIDwvbmd0LWRpcmVjdGlvbmFsLWxpZ2h0PlxuICAgICAgICA8L25ndC1ncm91cD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RSZXBlYXRdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1JhbmRvbWl6ZWRMaWdodHMgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RzUmFuZG9taXplZExpZ2h0c1N0YXRlPiB7XG4gICAgQElucHV0KCkgbGlnaHRzUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLkdyb3VwPigpO1xuICAgIC8qKiBIb3cgbWFueSBmcmFtZXMgaXQgd2lsbCBqaWdnbGUgdGhlIGxpZ2h0cywgMS5cbiAgICAgKiAgRnJhbWVzIGlzIGNvbnRleHQgYXdhcmUsIGlmIGEgcHJvdmlkZXIgbGlrZSBBY2N1bXVsYXRpdmVTaGFkb3dzIGV4aXN0cywgZnJhbWVzIHdpbGwgYmUgdGFrZW4gZnJvbSB0aGVyZSEgICovXG4gICAgQElucHV0KCkgc2V0IGZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGZyYW1lcyB9KTtcbiAgICB9XG5cbiAgICAvKiogTGlnaHQgcG9zaXRpb24sIFswLCAwLCAwXSAqL1xuICAgIEBJbnB1dCgpIHNldCBwb3NpdGlvbihwb3NpdGlvbjogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcG9zaXRpb24gfSk7XG4gICAgfVxuXG4gICAgLyoqIFJhZGl1cyBvZiB0aGUgamlnZ2xlLCBoaWdoZXIgdmFsdWVzIG1ha2Ugc29mdGVyIGxpZ2h0LCA1ICovXG4gICAgQElucHV0KCkgc2V0IHJhZGl1cyhyYWRpdXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJhZGl1cyB9KTtcbiAgICB9XG5cbiAgICAvKiogQW1vdW50IG9mIGxpZ2h0cywgOCAqL1xuICAgIEBJbnB1dCgpIHNldCBhbW91bnQoYW1vdW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBhbW91bnQgfSk7XG4gICAgfVxuXG4gICAgLyoqIExpZ2h0IGludGVuc2l0eSwgMSAqL1xuICAgIEBJbnB1dCgpIHNldCBpbnRlbnNpdHkoaW50ZW5zaXR5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBpbnRlbnNpdHkgfSk7XG4gICAgfVxuXG4gICAgLyoqIEFtYmllbnQgb2NjbHVzaW9uLCBsb3dlciB2YWx1ZXMgbWVhbiBsZXNzIEFPLCBoaWdodCBtb3JlLCB5b3UgY2FuIG1peCBBTyBhbmQgZGlyZWN0aW9uYWwgbGlnaHQsIDAuNSAqL1xuICAgIEBJbnB1dCgpIHNldCBhbWJpZW50KGFtYmllbnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGFtYmllbnQgfSk7XG4gICAgfVxuXG4gICAgLyoqIElmIHRoZSBsaWdodHMgY2FzdCBzaGFkb3dzLCB0aGlzIGlzIHRydWUgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpIHNldCBjYXN0U2hhZG93KGNhc3RTaGFkb3c6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjYXN0U2hhZG93IH0pO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHNoYWRvdyBiaWFzLCAwICovXG4gICAgQElucHV0KCkgc2V0IGJpYXMoYmlhczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmlhcyB9KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBtYXAgc2l6ZSwgNTEyICovXG4gICAgQElucHV0KCkgc2V0IG1hcFNpemUobWFwU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbWFwU2l6ZSB9KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBzaXplIG9mIHRoZSBzaGFkb3cgY2FtZXJhLCAxMCAqL1xuICAgIEBJbnB1dCgpIHNldCBzaXplKHNpemU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNpemUgfSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgc2hhZG93IGNhbWVyYSBuZWFyLCAwLjUgKi9cbiAgICBASW5wdXQoKSBzZXQgbmVhcihuZWFyOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBuZWFyIH0pO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHNoYWRvdyBjYW1lcmEgZmFyLCA1MDAgKi9cbiAgICBASW5wdXQoKSBzZXQgZmFyKGZhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmFyIH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5ICNwYXJlbnQgPSBpbmplY3QoTkdUU19BQ0NVTVVMQVRJVkVfU0hBRE9XU19BUEkpO1xuXG4gICAgcmVhZG9ubHkgI3NpemUgPSB0aGlzLnNlbGVjdCgnc2l6ZScpO1xuICAgIHJlYWRvbmx5ICNuZWFyID0gdGhpcy5zZWxlY3QoJ25lYXInKTtcbiAgICByZWFkb25seSAjZmFyID0gdGhpcy5zZWxlY3QoJ2ZhcicpO1xuICAgIHJlYWRvbmx5ICNtYXBTaXplID0gdGhpcy5zZWxlY3QoJ21hcFNpemUnKTtcbiAgICByZWFkb25seSAjYW1iaWVudCA9IHRoaXMuc2VsZWN0KCdhbWJpZW50Jyk7XG4gICAgcmVhZG9ubHkgI3Bvc2l0aW9uID0gdGhpcy5zZWxlY3QoJ3Bvc2l0aW9uJyk7XG4gICAgcmVhZG9ubHkgI3JhZGl1cyA9IHRoaXMuc2VsZWN0KCdyYWRpdXMnKTtcblxuICAgIHJlYWRvbmx5IGxpZ2h0c0Ftb3VudCA9IHRoaXMuc2VsZWN0KCdhbW91bnQnKTtcbiAgICByZWFkb25seSBsaWdodHNDYXN0U2hhZG93ID0gdGhpcy5zZWxlY3QoJ2Nhc3RTaGFkb3cnKTtcbiAgICByZWFkb25seSBsaWdodHNJbnRlbnNpdHkgPSB0aGlzLnNlbGVjdCgnaW50ZW5zaXR5Jyk7XG4gICAgcmVhZG9ubHkgbGlnaHRzQmlhcyA9IHRoaXMuc2VsZWN0KCdiaWFzJyk7XG5cbiAgICByZWFkb25seSBzaGFkb3dNYXBTaXplID0gY29tcHV0ZWQoKCkgPT4gW3RoaXMuI21hcFNpemUoKSwgdGhpcy4jbWFwU2l6ZSgpXSk7XG4gICAgcmVhZG9ubHkgY2FtZXJhQXJncyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICAgICAgLXRoaXMuI3NpemUoKSxcbiAgICAgICAgdGhpcy4jc2l6ZSgpLFxuICAgICAgICB0aGlzLiNzaXplKCksXG4gICAgICAgIC10aGlzLiNzaXplKCksXG4gICAgICAgIHRoaXMuI25lYXIoKSxcbiAgICAgICAgdGhpcy4jZmFyKCksXG4gICAgXSk7XG5cbiAgICByZWFkb25seSBsZW5ndGggPSBjb21wdXRlZCgoKSA9PiBuZXcgVEhSRUUuVmVjdG9yMyguLi50aGlzLiNwb3NpdGlvbigpKS5sZW5ndGgoKSk7XG5cbiAgICByZWFkb25seSBhcGkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9IHRoaXMuI3JhZGl1cygpO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuI3Bvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IGFtYmllbnQgPSB0aGlzLiNhbWJpZW50KCk7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IGxpZ2h0cyA9IHRoaXMubGlnaHRzUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGxpZ2h0OiBUSFJFRS5EaXJlY3Rpb25hbExpZ2h0IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGxpZ2h0cykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgbGlnaHRzLmNoaWxkcmVuLmxlbmd0aDsgbCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpZ2h0ID0gbGlnaHRzLmNoaWxkcmVuW2xdIGFzIFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLnJhbmRvbSgpID4gYW1iaWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHQucG9zaXRpb24uc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uWzBdICsgVEhSRUUuTWF0aFV0aWxzLnJhbmRGbG9hdFNwcmVhZChyYWRpdXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uWzFdICsgVEhSRUUuTWF0aFV0aWxzLnJhbmRGbG9hdFNwcmVhZChyYWRpdXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uWzJdICsgVEhSRUUuTWF0aFV0aWxzLnJhbmRGbG9hdFNwcmVhZChyYWRpdXMpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFtYmRhID0gTWF0aC5hY29zKDIgKiBNYXRoLnJhbmRvbSgpIC0gMSkgLSBNYXRoLlBJIC8gMi4wO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGhpID0gMiAqIE1hdGguUEkgKiBNYXRoLnJhbmRvbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHQucG9zaXRpb24uc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguY29zKGxhbWJkYSkgKiBNYXRoLmNvcyhwaGkpICogbGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKE1hdGguY29zKGxhbWJkYSkgKiBNYXRoLnNpbihwaGkpICogbGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLnNpbihsYW1iZGEpICogbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB7IHVwZGF0ZSB9O1xuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIGNhc3RTaGFkb3c6IHRydWUsXG4gICAgICAgICAgICBiaWFzOiAwLjAwMSxcbiAgICAgICAgICAgIG1hcFNpemU6IDUxMixcbiAgICAgICAgICAgIHNpemU6IDUsXG4gICAgICAgICAgICBuZWFyOiAwLjUsXG4gICAgICAgICAgICBmYXI6IDUwMCxcbiAgICAgICAgICAgIGZyYW1lczogMSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBbMCwgMCwgMF0sXG4gICAgICAgICAgICByYWRpdXM6IDEsXG4gICAgICAgICAgICBhbW91bnQ6IDgsXG4gICAgICAgICAgICBpbnRlbnNpdHk6IDEsXG4gICAgICAgICAgICBhbWJpZW50OiAwLjUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbkluamVjdGlvbkNvbnRleHQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jdXBkYXRlTGlnaHRzTWFwKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICN1cGRhdGVMaWdodHNNYXAoKSB7XG4gICAgICAgIGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaWdodHMgPSB0aGlzLmxpZ2h0c1JlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFsaWdodHMpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuI3BhcmVudCgpO1xuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIHBhcmVudC5saWdodHMuc2V0KGxpZ2h0cy51dWlkLCB0aGlzLmFwaSk7XG4gICAgICAgICAgICAgICAgb25DbGVhbnVwKCgpID0+IHBhcmVudC5saWdodHMuZGVsZXRlKGxpZ2h0cy51dWlkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|