angular-three-soba 2.0.0-beta.285 → 2.0.0-beta.286
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/lib/catmull-rom-line.d.ts +16 -16
- package/abstractions/lib/edges.d.ts +18 -18
- package/abstractions/lib/grid.d.ts +6 -6
- package/abstractions/lib/line.d.ts +1 -1
- package/abstractions/lib/text-3d.d.ts +9 -9
- package/abstractions/lib/text.d.ts +2 -2
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/esm2022/abstractions/lib/text.mjs +2 -2
- package/esm2022/controls/lib/scroll-controls.mjs +1 -1
- package/esm2022/materials/lib/mesh-transmission-material.mjs +2 -2
- package/esm2022/misc/lib/sampler.mjs +5 -2
- package/esm2022/staging/lib/bounds.mjs +1 -1
- package/esm2022/staging/lib/environment.mjs +5 -4
- package/fesm2022/angular-three-soba-abstractions.mjs +1 -1
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +1 -1
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +4 -1
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +4 -3
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/materials/lib/custom-shader-material.d.ts +1 -1
- package/materials/lib/mesh-refraction-material.d.ts +2 -2
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +1 -1
- package/misc/lib/decal.d.ts +1 -1
- package/misc/lib/html/html.d.ts +2 -2
- package/misc/lib/sampler.d.ts +1 -1
- package/package.json +16 -12
- package/staging/lib/accumulative-shadows.d.ts +1 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +2 -2
|
@@ -21,20 +21,17 @@ export declare class NgtsCatmullRomLine {
|
|
|
21
21
|
segmentedPoints: import("@angular/core").Signal<Vector3[]>;
|
|
22
22
|
private interpolatedVertexColors;
|
|
23
23
|
lineOptions: import("@angular/core").Signal<{
|
|
24
|
-
vertexColors: (import("three").ColorRepresentation | [number, number, number] | [number, number, number
|
|
24
|
+
vertexColors: (import("three").ColorRepresentation | [number, number, number, number] | [number, number, number])[] | undefined;
|
|
25
25
|
attach?: string | string[] | import("angular-three").NgtAttachFunction | undefined;
|
|
26
26
|
addEventListener?: ((<TEventKey extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: {
|
|
27
27
|
attach: string | string[] | import("angular-three").NgtAttachFunction;
|
|
28
28
|
addEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey_1]) => any) => void) & any;
|
|
29
29
|
removeEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey_1]) => any) => void) & (<TEventKey_1 extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey_1, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey_1]) => any) => void);
|
|
30
30
|
__ngt_args__: [geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined];
|
|
31
|
-
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
32
|
-
material?: import("three-stdlib").LineMaterial | undefined;
|
|
33
|
-
readonly isLine2?: true | undefined;
|
|
34
|
-
readonly isLineSegments2?: true | undefined;
|
|
35
|
-
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
36
31
|
readonly isMesh?: true | undefined;
|
|
37
32
|
readonly type?: string | undefined;
|
|
33
|
+
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
34
|
+
material?: import("three-stdlib").LineMaterial | undefined;
|
|
38
35
|
morphTargetInfluences?: number[] | undefined;
|
|
39
36
|
morphTargetDictionary?: {
|
|
40
37
|
[key: string]: number;
|
|
@@ -114,6 +111,9 @@ export declare class NgtsCatmullRomLine {
|
|
|
114
111
|
<T extends string>(type: T, listener: import("three").EventListener<{}, T, import("three-stdlib").Line2>): boolean;
|
|
115
112
|
} | undefined;
|
|
116
113
|
dispatchEvent?: (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | undefined;
|
|
114
|
+
readonly isLine2?: true | undefined;
|
|
115
|
+
readonly isLineSegments2?: true | undefined;
|
|
116
|
+
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
117
117
|
position: import("angular-three").NgtVector3;
|
|
118
118
|
up: import("angular-three").NgtVector3;
|
|
119
119
|
scale: import("angular-three").NgtVector3;
|
|
@@ -240,13 +240,10 @@ export declare class NgtsCatmullRomLine {
|
|
|
240
240
|
addEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey_1]) => any) => void) & (<TEventKey_1 extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey_1, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey_1]) => any) => void);
|
|
241
241
|
removeEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey_1]) => any) => void) & any;
|
|
242
242
|
__ngt_args__: [geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined];
|
|
243
|
-
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
244
|
-
material?: import("three-stdlib").LineMaterial | undefined;
|
|
245
|
-
readonly isLine2?: true | undefined;
|
|
246
|
-
readonly isLineSegments2?: true | undefined;
|
|
247
|
-
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
248
243
|
readonly isMesh?: true | undefined;
|
|
249
244
|
readonly type?: string | undefined;
|
|
245
|
+
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
246
|
+
material?: import("three-stdlib").LineMaterial | undefined;
|
|
250
247
|
morphTargetInfluences?: number[] | undefined;
|
|
251
248
|
morphTargetDictionary?: {
|
|
252
249
|
[key: string]: number;
|
|
@@ -326,6 +323,9 @@ export declare class NgtsCatmullRomLine {
|
|
|
326
323
|
<T extends string>(type: T, listener: import("three").EventListener<{}, T, import("three-stdlib").Line2>): boolean;
|
|
327
324
|
} | undefined;
|
|
328
325
|
dispatchEvent?: (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | undefined;
|
|
326
|
+
readonly isLine2?: true | undefined;
|
|
327
|
+
readonly isLineSegments2?: true | undefined;
|
|
328
|
+
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
329
329
|
position: import("angular-three").NgtVector3;
|
|
330
330
|
up: import("angular-three").NgtVector3;
|
|
331
331
|
scale: import("angular-three").NgtVector3;
|
|
@@ -455,13 +455,10 @@ export declare class NgtsCatmullRomLine {
|
|
|
455
455
|
quaternion?: import("angular-three").NgtQuaternion | undefined;
|
|
456
456
|
layers?: import("angular-three").NgtLayers | undefined;
|
|
457
457
|
dispose?: (() => void) | null | undefined;
|
|
458
|
-
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
459
|
-
material?: import("three-stdlib").LineMaterial | undefined;
|
|
460
|
-
isLine2?: true | undefined;
|
|
461
|
-
isLineSegments2?: true | undefined;
|
|
462
|
-
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
463
458
|
isMesh?: true | undefined;
|
|
464
459
|
type?: string | undefined;
|
|
460
|
+
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
461
|
+
material?: import("three-stdlib").LineMaterial | undefined;
|
|
465
462
|
morphTargetInfluences?: number[] | undefined;
|
|
466
463
|
morphTargetDictionary?: {
|
|
467
464
|
[key: string]: number;
|
|
@@ -549,6 +546,9 @@ export declare class NgtsCatmullRomLine {
|
|
|
549
546
|
dispose: {};
|
|
550
547
|
}[T]) => void)) | undefined;
|
|
551
548
|
color?: import("three").ColorRepresentation | undefined;
|
|
549
|
+
isLine2?: true | undefined;
|
|
550
|
+
isLineSegments2?: true | undefined;
|
|
551
|
+
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
552
552
|
dashed?: boolean | undefined;
|
|
553
553
|
dashScale?: number | undefined;
|
|
554
554
|
dashSize?: number | undefined;
|
|
@@ -21,10 +21,10 @@ export declare class NgtsEdges {
|
|
|
21
21
|
addEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey_1]) => any) => void) & any;
|
|
22
22
|
removeEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey_1]) => any) => void) & (<TEventKey_1 extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey_1, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey_1]) => any) => void);
|
|
23
23
|
__ngt_args__: [geometry?: BufferGeometry<import("three").NormalBufferAttributes> | undefined, material?: import("three").Material | import("three").Material[] | undefined];
|
|
24
|
-
geometry?: BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
25
|
-
material?: import("three").Material | import("three").Material[] | undefined;
|
|
26
24
|
readonly isMesh?: true | undefined;
|
|
27
25
|
readonly type?: string | undefined;
|
|
26
|
+
geometry?: BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
27
|
+
material?: import("three").Material | import("three").Material[] | undefined;
|
|
28
28
|
morphTargetInfluences?: number[] | undefined;
|
|
29
29
|
morphTargetDictionary?: {
|
|
30
30
|
[key: string]: number;
|
|
@@ -117,13 +117,10 @@ export declare class NgtsEdges {
|
|
|
117
117
|
addEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey_1]) => any) => void) & any;
|
|
118
118
|
removeEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey_1]) => any) => void) & (<TEventKey_1 extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey_1, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey_1]) => any) => void);
|
|
119
119
|
__ngt_args__: [geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined];
|
|
120
|
-
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
121
|
-
material?: import("three-stdlib").LineMaterial | undefined;
|
|
122
|
-
readonly isLine2?: true | undefined;
|
|
123
|
-
readonly isLineSegments2?: true | undefined;
|
|
124
|
-
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
125
120
|
readonly isMesh?: true | undefined;
|
|
126
121
|
readonly type?: string | undefined;
|
|
122
|
+
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
123
|
+
material?: import("three-stdlib").LineMaterial | undefined;
|
|
127
124
|
morphTargetInfluences?: number[] | undefined;
|
|
128
125
|
morphTargetDictionary?: {
|
|
129
126
|
[key: string]: number;
|
|
@@ -203,6 +200,9 @@ export declare class NgtsEdges {
|
|
|
203
200
|
<T extends string>(type: T, listener: import("three").EventListener<{}, T, import("three-stdlib").Line2>): boolean;
|
|
204
201
|
} | undefined;
|
|
205
202
|
dispatchEvent?: (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | undefined;
|
|
203
|
+
readonly isLine2?: true | undefined;
|
|
204
|
+
readonly isLineSegments2?: true | undefined;
|
|
205
|
+
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
206
206
|
position: import("angular-three").NgtVector3;
|
|
207
207
|
up: import("angular-three").NgtVector3;
|
|
208
208
|
scale: import("angular-three").NgtVector3;
|
|
@@ -329,10 +329,10 @@ export declare class NgtsEdges {
|
|
|
329
329
|
addEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey_1]) => any) => void) & (<TEventKey_1 extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey_1, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey_1]) => any) => void);
|
|
330
330
|
removeEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey_1]) => any) => void) & any;
|
|
331
331
|
__ngt_args__: [geometry?: BufferGeometry<import("three").NormalBufferAttributes> | undefined, material?: import("three").Material | import("three").Material[] | undefined];
|
|
332
|
-
geometry?: BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
333
|
-
material?: import("three").Material | import("three").Material[] | undefined;
|
|
334
332
|
readonly isMesh?: true | undefined;
|
|
335
333
|
readonly type?: string | undefined;
|
|
334
|
+
geometry?: BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
335
|
+
material?: import("three").Material | import("three").Material[] | undefined;
|
|
336
336
|
morphTargetInfluences?: number[] | undefined;
|
|
337
337
|
morphTargetDictionary?: {
|
|
338
338
|
[key: string]: number;
|
|
@@ -425,13 +425,10 @@ export declare class NgtsEdges {
|
|
|
425
425
|
addEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey_1]) => any) => void) & (<TEventKey_1 extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey_1, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey_1]) => any) => void);
|
|
426
426
|
removeEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").Line2, typeof import("three-stdlib").Line2>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>[TEventKey_1]) => any) => void) & any;
|
|
427
427
|
__ngt_args__: [geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined];
|
|
428
|
-
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
429
|
-
material?: import("three-stdlib").LineMaterial | undefined;
|
|
430
|
-
readonly isLine2?: true | undefined;
|
|
431
|
-
readonly isLineSegments2?: true | undefined;
|
|
432
|
-
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
433
428
|
readonly isMesh?: true | undefined;
|
|
434
429
|
readonly type?: string | undefined;
|
|
430
|
+
geometry?: import("three-stdlib").LineGeometry | undefined;
|
|
431
|
+
material?: import("three-stdlib").LineMaterial | undefined;
|
|
435
432
|
morphTargetInfluences?: number[] | undefined;
|
|
436
433
|
morphTargetDictionary?: {
|
|
437
434
|
[key: string]: number;
|
|
@@ -511,6 +508,9 @@ export declare class NgtsEdges {
|
|
|
511
508
|
<T extends string>(type: T, listener: import("three").EventListener<{}, T, import("three-stdlib").Line2>): boolean;
|
|
512
509
|
} | undefined;
|
|
513
510
|
dispatchEvent?: (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | undefined;
|
|
511
|
+
readonly isLine2?: true | undefined;
|
|
512
|
+
readonly isLineSegments2?: true | undefined;
|
|
513
|
+
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
514
514
|
position: import("angular-three").NgtVector3;
|
|
515
515
|
up: import("angular-three").NgtVector3;
|
|
516
516
|
scale: import("angular-three").NgtVector3;
|
|
@@ -641,12 +641,9 @@ export declare class NgtsEdges {
|
|
|
641
641
|
quaternion?: import("angular-three").NgtQuaternion | undefined;
|
|
642
642
|
layers?: import("angular-three").NgtLayers | undefined;
|
|
643
643
|
dispose?: (() => void) | null | undefined;
|
|
644
|
-
material?: ((import("three").Material | import("three").Material[]) & import("three-stdlib").LineMaterial) | undefined;
|
|
645
|
-
isLine2?: true | undefined;
|
|
646
|
-
isLineSegments2?: true | undefined;
|
|
647
|
-
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
648
644
|
isMesh?: true | undefined;
|
|
649
645
|
type?: string | undefined;
|
|
646
|
+
material?: ((import("three").Material | import("three").Material[]) & import("three-stdlib").LineMaterial) | undefined;
|
|
650
647
|
morphTargetInfluences?: number[] | undefined;
|
|
651
648
|
morphTargetDictionary?: {
|
|
652
649
|
[key: string]: number;
|
|
@@ -736,6 +733,9 @@ export declare class NgtsEdges {
|
|
|
736
733
|
dispose: {};
|
|
737
734
|
}[T]) => void)) | undefined;
|
|
738
735
|
color?: ColorRepresentation | undefined;
|
|
736
|
+
isLine2?: true | undefined;
|
|
737
|
+
isLineSegments2?: true | undefined;
|
|
738
|
+
computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
|
|
739
739
|
dashed?: boolean | undefined;
|
|
740
740
|
dashScale?: number | undefined;
|
|
741
741
|
dashSize?: number | undefined;
|
|
@@ -8,10 +8,10 @@ export declare class NgtsGrid {
|
|
|
8
8
|
addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
9
9
|
removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
10
10
|
__ngt_args__: [geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined, material?: import("three").Material | import("three").Material[] | undefined];
|
|
11
|
-
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
12
|
-
material?: import("three").Material | import("three").Material[] | undefined;
|
|
13
11
|
readonly isMesh?: true | undefined;
|
|
14
12
|
readonly type?: string | undefined;
|
|
13
|
+
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
14
|
+
material?: import("three").Material | import("three").Material[] | undefined;
|
|
15
15
|
morphTargetInfluences?: number[] | undefined;
|
|
16
16
|
morphTargetDictionary?: {
|
|
17
17
|
[key: string]: number;
|
|
@@ -106,10 +106,10 @@ export declare class NgtsGrid {
|
|
|
106
106
|
addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
107
107
|
removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
108
108
|
__ngt_args__: [geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined, material?: import("three").Material | import("three").Material[] | undefined];
|
|
109
|
-
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
110
|
-
material?: import("three").Material | import("three").Material[] | undefined;
|
|
111
109
|
readonly isMesh?: true | undefined;
|
|
112
110
|
readonly type?: string | undefined;
|
|
111
|
+
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
112
|
+
material?: import("three").Material | import("three").Material[] | undefined;
|
|
113
113
|
morphTargetInfluences?: number[] | undefined;
|
|
114
114
|
morphTargetDictionary?: {
|
|
115
115
|
[key: string]: number;
|
|
@@ -205,10 +205,10 @@ export declare class NgtsGrid {
|
|
|
205
205
|
addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
206
206
|
removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
207
207
|
__ngt_args__: [geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined, material?: import("three").Material | import("three").Material[] | undefined];
|
|
208
|
-
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
209
|
-
material?: import("three").Material | import("three").Material[] | undefined;
|
|
210
208
|
readonly isMesh?: true | undefined;
|
|
211
209
|
readonly type?: string | undefined;
|
|
210
|
+
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
211
|
+
material?: import("three").Material | import("three").Material[] | undefined;
|
|
212
212
|
morphTargetInfluences?: number[] | undefined;
|
|
213
213
|
morphTargetDictionary?: {
|
|
214
214
|
[key: string]: number;
|
|
@@ -16,7 +16,7 @@ export type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'col
|
|
|
16
16
|
color?: ColorRepresentation;
|
|
17
17
|
};
|
|
18
18
|
export declare class NgtsLine {
|
|
19
|
-
points: import("@angular/core").InputSignal<(number | Vector3 | [number, number, number] |
|
|
19
|
+
points: import("@angular/core").InputSignal<(number | Vector3 | Vector2 | [number, number, number] | [number, number])[]>;
|
|
20
20
|
options: import("@angular/core").InputSignalWithTransform<NgtsLineOptions, "" | Partial<NgtsLineOptions>>;
|
|
21
21
|
parameters: import("@angular/core").Signal<Omit<NgtsLineOptions, "color" | "dashed" | "linewidth" | "vertexColors" | "lineWidth" | "segments">>;
|
|
22
22
|
lineRef: import("@angular/core").Signal<ElementRef<Line2 | LineSegments2> | undefined>;
|
|
@@ -15,10 +15,10 @@ export declare class NgtsText3D {
|
|
|
15
15
|
addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
16
16
|
removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
17
17
|
__ngt_args__: [geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined, material?: import("three").Material | import("three").Material[] | undefined];
|
|
18
|
-
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
19
|
-
material?: import("three").Material | import("three").Material[] | undefined;
|
|
20
18
|
readonly isMesh?: true | undefined;
|
|
21
19
|
readonly type?: string | undefined;
|
|
20
|
+
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
21
|
+
material?: import("three").Material | import("three").Material[] | undefined;
|
|
22
22
|
morphTargetInfluences?: number[] | undefined;
|
|
23
23
|
morphTargetDictionary?: {
|
|
24
24
|
[key: string]: number;
|
|
@@ -111,10 +111,10 @@ export declare class NgtsText3D {
|
|
|
111
111
|
addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
112
112
|
removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
113
113
|
__ngt_args__: [geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined, material?: import("three").Material | import("three").Material[] | undefined];
|
|
114
|
-
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
115
|
-
material?: import("three").Material | import("three").Material[] | undefined;
|
|
116
114
|
readonly isMesh?: true | undefined;
|
|
117
115
|
readonly type?: string | undefined;
|
|
116
|
+
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
117
|
+
material?: import("three").Material | import("three").Material[] | undefined;
|
|
118
118
|
morphTargetInfluences?: number[] | undefined;
|
|
119
119
|
morphTargetDictionary?: {
|
|
120
120
|
[key: string]: number;
|
|
@@ -208,10 +208,10 @@ export declare class NgtsText3D {
|
|
|
208
208
|
addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
209
209
|
removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>, typeof Mesh>, ev: import("angular-three").NgtNodeEventMap<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
|
|
210
210
|
__ngt_args__: [geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined, material?: import("three").Material | import("three").Material[] | undefined];
|
|
211
|
-
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
212
|
-
material?: import("three").Material | import("three").Material[] | undefined;
|
|
213
211
|
readonly isMesh?: true | undefined;
|
|
214
212
|
readonly type?: string | undefined;
|
|
213
|
+
geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
|
|
214
|
+
material?: import("three").Material | import("three").Material[] | undefined;
|
|
215
215
|
morphTargetInfluences?: number[] | undefined;
|
|
216
216
|
morphTargetDictionary?: {
|
|
217
217
|
[key: string]: number;
|
|
@@ -299,12 +299,14 @@ export declare class NgtsText3D {
|
|
|
299
299
|
quaternion: import("angular-three").NgtQuaternion;
|
|
300
300
|
layers: import("angular-three").NgtLayers;
|
|
301
301
|
dispose: (() => void) | null;
|
|
302
|
-
}> & NgtsText3DOptions, "
|
|
302
|
+
}> & NgtsText3DOptions, "lineHeight" | "letterSpacing" | "size" | "height" | "curveSegments" | "bevelEnabled" | "bevelThickness" | "bevelSize" | "bevelOffset" | "bevelSegments" | "smooth">>;
|
|
303
303
|
meshRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | undefined>;
|
|
304
304
|
loadedFont: import("@angular/core").Signal<import("three-stdlib").Font | null>;
|
|
305
305
|
private smooth;
|
|
306
306
|
private textOptions;
|
|
307
307
|
textArgs: import("@angular/core").Signal<(string | {
|
|
308
|
+
lineHeight?: number | undefined;
|
|
309
|
+
letterSpacing?: number | undefined;
|
|
308
310
|
size?: number | undefined;
|
|
309
311
|
height?: number | undefined;
|
|
310
312
|
curveSegments?: number | undefined;
|
|
@@ -313,8 +315,6 @@ export declare class NgtsText3D {
|
|
|
313
315
|
bevelSize?: number | undefined;
|
|
314
316
|
bevelOffset?: number | undefined;
|
|
315
317
|
bevelSegments: number;
|
|
316
|
-
lineHeight?: number | undefined;
|
|
317
|
-
letterSpacing?: number | undefined;
|
|
318
318
|
font: import("three-stdlib").Font;
|
|
319
319
|
})[] | null>;
|
|
320
320
|
constructor();
|
|
@@ -36,14 +36,14 @@ export interface NgtsTextOptions extends Partial<NgtMesh> {
|
|
|
36
36
|
export declare class NgtsText {
|
|
37
37
|
text: import("@angular/core").InputSignal<string>;
|
|
38
38
|
options: import("@angular/core").InputSignalWithTransform<NgtsTextOptions, "" | Partial<NgtsTextOptions>>;
|
|
39
|
-
parameters: import("@angular/core").Signal<Omit<NgtsTextOptions, "
|
|
39
|
+
parameters: import("@angular/core").Signal<Omit<NgtsTextOptions, "font" | "fontSize" | "sdfGlyphSize" | "anchorX" | "anchorY" | "characters">>;
|
|
40
40
|
synced: import("@angular/core").OutputEmitterRef<Text>;
|
|
41
41
|
private autoEffect;
|
|
42
42
|
private store;
|
|
43
43
|
private invalidate;
|
|
44
44
|
private characters;
|
|
45
45
|
font: import("@angular/core").Signal<string | undefined>;
|
|
46
|
-
anchorX: import("@angular/core").Signal<number | "
|
|
46
|
+
anchorX: import("@angular/core").Signal<number | "left" | "center" | "right">;
|
|
47
47
|
anchorY: import("@angular/core").Signal<number | "top" | "top-baseline" | "middle" | "bottom-baseline" | "bottom">;
|
|
48
48
|
sdfGlyphSize: import("@angular/core").Signal<number>;
|
|
49
49
|
fontSize: import("@angular/core").Signal<number>;
|
|
@@ -10,7 +10,7 @@ export interface NgtsCameraControlsOptions {
|
|
|
10
10
|
}
|
|
11
11
|
export declare class NgtsCameraControls {
|
|
12
12
|
options: import("@angular/core").InputSignalWithTransform<Partial<CameraControls> & NgtsCameraControlsOptions, "" | Partial<Partial<CameraControls> & NgtsCameraControlsOptions>>;
|
|
13
|
-
parameters: import("@angular/core").Signal<Omit<Partial<CameraControls> & NgtsCameraControlsOptions, "camera" | "
|
|
13
|
+
parameters: import("@angular/core").Signal<Omit<Partial<CameraControls> & NgtsCameraControlsOptions, "camera" | "domElement" | "makeDefault" | "regress">>;
|
|
14
14
|
changed: import("@angular/core").OutputEmitterRef<any>;
|
|
15
15
|
started: import("@angular/core").OutputEmitterRef<any>;
|
|
16
16
|
ended: import("@angular/core").OutputEmitterRef<any>;
|
|
@@ -13,7 +13,7 @@ export interface NgtsOrbitControlsOptions {
|
|
|
13
13
|
}
|
|
14
14
|
export declare class NgtsOrbitControls {
|
|
15
15
|
options: import("@angular/core").InputSignalWithTransform<Partial<OrbitControls> & NgtsOrbitControlsOptions, "" | Partial<Partial<OrbitControls> & NgtsOrbitControlsOptions>>;
|
|
16
|
-
parameters: import("@angular/core").Signal<Omit<Partial<OrbitControls> & NgtsOrbitControlsOptions, "camera" | "
|
|
16
|
+
parameters: import("@angular/core").Signal<Omit<Partial<OrbitControls> & NgtsOrbitControlsOptions, "camera" | "domElement" | "makeDefault" | "regress" | "enableDamping" | "keyEvents">>;
|
|
17
17
|
changed: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
|
|
18
18
|
started: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
|
|
19
19
|
ended: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
|
|
@@ -40,7 +40,7 @@ export class NgtsText {
|
|
|
40
40
|
});
|
|
41
41
|
afterNextRender(() => {
|
|
42
42
|
this.autoEffect(() => {
|
|
43
|
-
const [invalidate
|
|
43
|
+
const [invalidate] = [this.invalidate(), this.text(), this.options()];
|
|
44
44
|
this.troikaMesh.sync(() => {
|
|
45
45
|
invalidate();
|
|
46
46
|
this.synced.emit(this.troikaMesh);
|
|
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
88
88
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
89
89
|
}]
|
|
90
90
|
}], ctorParameters: () => [] });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZUFBZSxFQUNmLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQVcsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQW1DdEQsTUFBTSxjQUFjLEdBQW9CO0lBQ3ZDLFlBQVksRUFBRSxFQUFFO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxDQUFDO0NBQ1gsQ0FBQztBQXVCRixNQUFNLE9BQU8sUUFBUTtJQXFCcEI7UUFwQkEsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNoQyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUUxRyxXQUFNLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFFaEIsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU3QyxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFdEQsU0FBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4QyxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsaUJBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNsRCxhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFMUMsZUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFHdkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNwQixNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDM0YsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVixXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNwQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ3pCLFVBQVUsRUFBRSxDQUFDO29CQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0EzQ1csUUFBUTtrR0FBUixRQUFRLGtXQWxCVjs7Ozs7Ozs7Ozs7OztFQWFULDREQUNTLE9BQU87OzJGQUlMLFFBQVE7a0JBckJwQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0VBYVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHREZXN0cm95UmVmLFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBOZ3RNZXNoLCBpbmplY3RTdG9yZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ29sb3JSZXByZXNlbnRhdGlvbiB9IGZyb20gJ3RocmVlJztcbi8vIEB0cy1leHBlY3QtZXJyb3IgLSBubyB0eXBlIGRlZlxuaW1wb3J0IHsgVGV4dCwgcHJlbG9hZEZvbnQgfSBmcm9tICd0cm9pa2EtdGhyZWUtdGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1RleHRPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RNZXNoPiB7XG5cdGNoYXJhY3RlcnM/OiBzdHJpbmc7XG5cdGNvbG9yPzogQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0LyoqIEZvbnQgc2l6ZSwgZGVmYXVsdDogMSAqL1xuXHRmb250U2l6ZTogbnVtYmVyO1xuXHRmb250V2VpZ2h0PzogbnVtYmVyIHwgc3RyaW5nO1xuXHRmb250U3R5bGU/OiAnaXRhbGljJyB8ICdub3JtYWwnO1xuXHRtYXhXaWR0aD86IG51bWJlcjtcblx0bGluZUhlaWdodD86IG51bWJlcjtcblx0bGV0dGVyU3BhY2luZz86IG51bWJlcjtcblx0dGV4dEFsaWduPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInIHwgJ2p1c3RpZnknO1xuXHRmb250Pzogc3RyaW5nO1xuXHRhbmNob3JYOiBudW1iZXIgfCAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG5cdGFuY2hvclk6IG51bWJlciB8ICd0b3AnIHwgJ3RvcC1iYXNlbGluZScgfCAnbWlkZGxlJyB8ICdib3R0b20tYmFzZWxpbmUnIHwgJ2JvdHRvbSc7XG5cdGNsaXBSZWN0PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cdGRlcHRoT2Zmc2V0PzogbnVtYmVyO1xuXHRkaXJlY3Rpb24/OiAnYXV0bycgfCAnbHRyJyB8ICdydGwnO1xuXHRvdmVyZmxvd1dyYXA/OiAnbm9ybWFsJyB8ICdicmVhay13b3JkJztcblx0d2hpdGVTcGFjZT86ICdub3JtYWwnIHwgJ292ZXJmbG93V3JhcCcgfCAnbm93cmFwJztcblx0b3V0bGluZVdpZHRoPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRvdXRsaW5lT2Zmc2V0WD86IG51bWJlciB8IHN0cmluZztcblx0b3V0bGluZU9mZnNldFk/OiBudW1iZXIgfCBzdHJpbmc7XG5cdG91dGxpbmVCbHVyPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRvdXRsaW5lQ29sb3I/OiBDb2xvclJlcHJlc2VudGF0aW9uO1xuXHRvdXRsaW5lT3BhY2l0eT86IG51bWJlcjtcblx0c3Ryb2tlV2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG5cdHN0cm9rZUNvbG9yPzogQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0c3Ryb2tlT3BhY2l0eT86IG51bWJlcjtcblx0ZmlsbE9wYWNpdHk/OiBudW1iZXI7XG5cdHNkZkdseXBoU2l6ZTogbnVtYmVyO1xuXHRkZWJ1Z1NERj86IGJvb2xlYW47XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzVGV4dE9wdGlvbnMgPSB7XG5cdHNkZkdseXBoU2l6ZTogNjQsXG5cdGFuY2hvclg6ICdjZW50ZXInLFxuXHRhbmNob3JZOiAnbWlkZGxlJyxcblx0Zm9udFNpemU6IDEsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXRleHQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlXG5cdFx0XHQqYXJncz1cIlt0cm9pa2FNZXNoXVwiXG5cdFx0XHRbdGV4dF09XCJ0ZXh0KClcIlxuXHRcdFx0W2ZvbnRdPVwiZm9udCgpXCJcblx0XHRcdFthbmNob3JYXT1cImFuY2hvclgoKVwiXG5cdFx0XHRbYW5jaG9yWV09XCJhbmNob3JZKClcIlxuXHRcdFx0W3NkZkdseXBoU2l6ZV09XCJzZGZHbHlwaFNpemUoKVwiXG5cdFx0XHRbZm9udFNpemVdPVwiZm9udFNpemUoKVwiXG5cdFx0XHRbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIlxuXHRcdD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJncywgTmdUZW1wbGF0ZU91dGxldF0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNUZXh0IHtcblx0dGV4dCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnZm9udCcsICdmb250U2l6ZScsICdzZGZHbHlwaFNpemUnLCAnYW5jaG9yWCcsICdhbmNob3JZJywgJ2NoYXJhY3RlcnMnXSk7XG5cblx0c3luY2VkID0gb3V0cHV0PFRleHQ+KCk7XG5cblx0cHJpdmF0ZSBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblxuXHRwcml2YXRlIGNoYXJhY3RlcnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NoYXJhY3RlcnMnKTtcblxuXHRmb250ID0gcGljayh0aGlzLm9wdGlvbnMsICdmb250Jyk7XG5cdGFuY2hvclggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuY2hvclgnKTtcblx0YW5jaG9yWSA9IHBpY2sodGhpcy5vcHRpb25zLCAnYW5jaG9yWScpO1xuXHRzZGZHbHlwaFNpemUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NkZkdseXBoU2l6ZScpO1xuXHRmb250U2l6ZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZm9udFNpemUnKTtcblxuXHR0cm9pa2FNZXNoID0gbmV3IFRleHQoKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHRoaXMudHJvaWthTWVzaC5kaXNwb3NlKCk7XG5cdFx0fSk7XG5cblx0XHQvLyBOT1RFOiB0aGlzIGNvdWxkIGJlIGp1c3QgZWZmZWN0IGJ1dCBhdXRvRWZmZWN0IGlzIHVzZWQgZm9yIGNvbnNpc3RlbmN5XG5cdFx0dGhpcy5hdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtmb250LCBjaGFyYWN0ZXJzLCBpbnZhbGlkYXRlXSA9IFt0aGlzLmZvbnQoKSwgdGhpcy5jaGFyYWN0ZXJzKCksIHRoaXMuaW52YWxpZGF0ZSgpXTtcblx0XHRcdGlmIChmb250KSB7XG5cdFx0XHRcdHByZWxvYWRGb250KHsgZm9udCwgY2hhcmFjdGVycyB9LCAoKSA9PiBpbnZhbGlkYXRlKCkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtpbnZhbGlkYXRlXSA9IFt0aGlzLmludmFsaWRhdGUoKSwgdGhpcy50ZXh0KCksIHRoaXMub3B0aW9ucygpXTtcblx0XHRcdFx0dGhpcy50cm9pa2FNZXNoLnN5bmMoKCkgPT4ge1xuXHRcdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0XHR0aGlzLnN5bmNlZC5lbWl0KHRoaXMudHJvaWthTWVzaCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -265,4 +265,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
265
265
|
providers: [provideHTMLDomElement([NgtsScrollControls], (scrollControls) => scrollControls.fixed)],
|
|
266
266
|
}]
|
|
267
267
|
}], ctorParameters: () => [] });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWNvbnRyb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2NvbnRyb2xzL3NyYy9saWIvc2Nyb2xsLWNvbnRyb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQTJCdkQsTUFBTSxjQUFjLEdBQThCO0lBQ2pELEdBQUcsRUFBRSxPQUFPO0lBQ1osVUFBVSxFQUFFLEtBQUs7SUFDakIsUUFBUSxFQUFFLEtBQUs7SUFDZixLQUFLLEVBQUUsQ0FBQztJQUNSLFFBQVEsRUFBRSxDQUFDO0lBQ1gsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsS0FBSztJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLEVBQUU7Q0FDVCxDQUFDO0FBVUYsTUFBTSxPQUFPLGtCQUFrQjtJQWdDOUI7UUEvQkEsYUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsVUFBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLE9BQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixXQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsZUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLFNBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVqQyxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTdDLFFBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxVQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsV0FBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLFVBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwQyxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsWUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxQyxhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEQsUUFBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5QyxVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4QyxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLFVBQUssR0FBRyxDQUFDLENBQUM7UUFHVCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXRDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU87Z0JBRXBCLE1BQU0sTUFBTSxHQUFHLE1BQXFCLENBQUM7Z0JBQ3JDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsR0FBRztvQkFDMUYsSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDWixJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNmLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxFQUFFO29CQUNQLElBQUksQ0FBQyxJQUFJO29CQUNULElBQUksQ0FBQyxLQUFLO29CQUNWLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNyQixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDdkIsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2lCQUN0QixDQUFDO2dCQUVGLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztnQkFDL0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUN4QixFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3pCLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDMUQsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUM1RCxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFFdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDekIsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBSSxLQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO2dCQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDaEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDM0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUM1QixLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7Z0JBQ2hDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXRCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztnQkFDbEMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFckIsSUFBSSxPQUFPO29CQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7O29CQUMzQixNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUU1QiwyREFBMkQ7Z0JBQzNELEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVoRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFnQixDQUFDO2dCQUNsRSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRWhELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztvQkFDN0IsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLO3dCQUNuQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO3dCQUM3Qiw4SEFBOEg7d0JBQzlILE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7d0JBQ3JELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUNyQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQzt3QkFDcEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2hHLEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2lCQUNELENBQUMsQ0FBQztnQkFFSCxPQUFPLEdBQUcsRUFBRTtvQkFDWCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDdkQsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM3QixDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHO29CQUNyRSxJQUFJLENBQUMsRUFBRTtvQkFDUCxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNiLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFO2lCQUNkLENBQUM7Z0JBRUYsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLEVBQUU7b0JBQUUsT0FBTztnQkFFcEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUQsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDckUsTUFBTSxlQUFlLEdBQUcsWUFBWSxHQUFHLGVBQWUsQ0FBQztnQkFFdkQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztnQkFFcEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO29CQUNyQiwrRUFBK0U7b0JBQy9FLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUTt3QkFBRSxPQUFPO29CQUNqQyxVQUFVLEVBQUUsQ0FBQztvQkFDYixPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDdEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEdBQUcsZUFBZSxDQUFDO29CQUV4QyxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNkLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDcEIsSUFBSSxPQUFPLElBQUksZUFBZSxFQUFFLENBQUM7Z0NBQ2hDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dDQUM3QixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDO2dDQUNsQyxhQUFhLEdBQUcsSUFBSSxDQUFDOzRCQUN0QixDQUFDO2lDQUFNLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO2dDQUN6QixNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQ0FDN0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxZQUFZLENBQUM7Z0NBQzNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0NBQ2pDLGFBQWEsR0FBRyxJQUFJLENBQUM7NEJBQ3RCLENBQUM7d0JBQ0YsQ0FBQzt3QkFDRCxJQUFJLGFBQWE7NEJBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNsRSxDQUFDO29CQUVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNoQyxDQUFDLENBQUMsQ0FBQztnQkFDSixDQUFDLENBQUM7Z0JBRUYsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDM0QscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFaEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqRyxJQUFJLFVBQVU7b0JBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFekUsT0FBTyxHQUFHLEVBQUU7b0JBQ1gsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxVQUFVO3dCQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzFELENBQUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDeEcsTUFBTSxDQUFDLElBQUksQ0FDVixJQUFJLEVBQ0osT0FBTyxFQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUNkLEtBQUssRUFDTCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQ2YsU0FBUyxFQUNULElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDVixDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0wsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLFNBQWlCLENBQUM7UUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUM1QixNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQixDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsU0FBaUIsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDO0lBQ25ELENBQUM7OEdBdk5XLGtCQUFrQjtrR0FBbEIsa0JBQWtCLG9ZQUxwQjs7RUFFVDs7MkZBR1csa0JBQWtCO2tCQVI5QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7O0VBRVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DOztBQTRORCxNQUFNLE9BQU8sZ0JBQWdCO0lBTTVCO1FBTFEsU0FBSSxHQUFHLE1BQU0sQ0FBb0IsVUFBVSxDQUFDLENBQUM7UUFDN0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM1QyxVQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBR2hELGtCQUFrQixDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUV0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRTtnQkFDbEQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO2dCQUN6RixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2xELENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM1RixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBakJXLGdCQUFnQjtrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLCtCQUErQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7O0FBMkIxRSxNQUFNLE9BQU8sY0FBZSxTQUFRLE9BQU87SUFJMUM7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQUpELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDNUMsU0FBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSXhDLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxlQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRTtvQkFDL0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO29CQUNyRixDQUFDLENBQUMsQ0FDSixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sT0FBTyxDQUFDO1lBQzFJLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBZlcsY0FBYztrR0FBZCxjQUFjLDhKQUZmLENBQUMscUJBQXFCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7OzJGQUV0RixjQUFjO2tCQU4xQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsOERBQThELEVBQUU7b0JBQy9FLFNBQVMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHRtb2RlbCxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIE5ndEhUTUwsIHBpY2ssIHByb3ZpZGVIVE1MRG9tRWxlbWVudCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgZWFzaW5nIH0gZnJvbSAnbWFhdGgnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1Njcm9sbENvbnRyb2xzT3B0aW9ucyB7XG5cdC8qKiBQcmVjaXNpb24sIGRlZmF1bHQgMC4wMDAwMSAqL1xuXHRlcHM6IG51bWJlcjtcblx0LyoqIEhvcml6b250YWwgc2Nyb2xsLCBkZWZhdWx0IGZhbHNlICh2ZXJ0aWNhbCkgKi9cblx0aG9yaXpvbnRhbDogYm9vbGVhbjtcblx0LyoqIEluZmluaXRlIHNjcm9sbCwgZGVmYXVsdCBmYWxzZSAoZXhwZXJpbWVudGFsISkgKi9cblx0aW5maW5pdGU6IGJvb2xlYW47XG5cdC8qKiBEZWZpbmVzIHRoZSBsZW5naHQgb2YgdGhlIHNjcm9sbCBhcmVhLCBlYWNoIHBhZ2UgaXMgaGVpZ2h0OjEwMCUsIGRlZmF1bHQgMSAqL1xuXHRwYWdlczogbnVtYmVyO1xuXHQvKiogQSBmYWN0b3IgdGhhdCBpbmNyZWFzZXMgc2Nyb2xsIGJhciB0cmF2ZWwsZGVmYXVsdDogMSAqL1xuXHRkaXN0YW5jZTogbnVtYmVyO1xuXHQvKiogRnJpY3Rpb24gaW4gc2Vjb25kcywgZGVmYXVsdDogMC4yNSAoMS80IHNlY29uZCkgKi9cblx0ZGFtcGluZzogbnVtYmVyO1xuXHQvKiogbWF4U3BlZWQgb3B0aW9uYWxseSBhbGxvd3MgeW91IHRvIGNsYW1wIHRoZSBtYXhpbXVtIHNwZWVkLiBJZiBkYW1waW5nIGlzIDAuMnMgYW5kIGxvb2tzIE9LXG5cdCAqICBnb2luZyBiZXR3ZWVuLCBzYXksIHBhZ2UgMSBhbmQgMiwgYnV0IG5vdCBmb3IgcGFnZXMgZmFyIGFwYXJ0IGFzIGl0J2xsIG1vdmUgdmVyeSByYXBpZCxcblx0ICogIHRoZW4gYSBtYXhTcGVlZCBvZiBlLmcuIDMgd2hpY2ggd2lsbCBjbGFtcCB0aGUgc3BlZWQgdG8gMyB1bml0cyBwZXIgc2Vjb25kLCBpdCBtYXkgbm93XG5cdCAqICB0YWtlIG11Y2ggbG9uZ2VyIHRoYW4gZGFtcGluZyB0byByZWFjaCB0aGUgdGFyZ2V0IGlmIGl0IGlzIGZhciBhd2F5LiBEZWZhdWx0OiBJbmZpbml0eSAqL1xuXHRtYXhTcGVlZDogbnVtYmVyO1xuXHQvKiogSWYgdHJ1ZSBhdHRhY2hlcyB0aGUgc2Nyb2xsIGNvbnRhaW5lciBiZWZvcmUgdGhlIGNhbnZhcyAqL1xuXHRwcmVwZW5kOiBib29sZWFuO1xuXHRlbmFibGVkOiBib29sZWFuO1xuXHRzdHlsZTogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNTY3JvbGxDb250cm9sc09wdGlvbnMgPSB7XG5cdGVwczogMC4wMDAwMSxcblx0aG9yaXpvbnRhbDogZmFsc2UsXG5cdGluZmluaXRlOiBmYWxzZSxcblx0cGFnZXM6IDEsXG5cdGRpc3RhbmNlOiAxLFxuXHRkYW1waW5nOiAwLjI1LFxuXHRtYXhTcGVlZDogSW5maW5pdHksXG5cdHByZXBlbmQ6IGZhbHNlLFxuXHRlbmFibGVkOiB0cnVlLFxuXHRzdHlsZToge30sXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNjcm9sbC1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRlbnQgLz5cblx0YCxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTY3JvbGxDb250cm9scyB7XG5cdHByb2dyZXNzID0gbW9kZWwoMCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgZ2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblx0cHJpdmF0ZSBldmVudHMgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZXZlbnRzJyk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSBkb21FbGVtZW50ID0gcGljayh0aGlzLmdsLCAnZG9tRWxlbWVudCcpO1xuXHRwcml2YXRlIHRhcmdldCA9IHBpY2sodGhpcy5kb21FbGVtZW50LCAncGFyZW50Tm9kZScpO1xuXG5cdHByaXZhdGUgX2VsID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0cHJpdmF0ZSBfZmlsbCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdHByaXZhdGUgX2ZpeGVkID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuXHRwcml2YXRlIHN0eWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdzdHlsZScpO1xuXHRwcml2YXRlIHByZXBlbmQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ByZXBlbmQnKTtcblx0cHJpdmF0ZSBlbmFibGVkID0gcGljayh0aGlzLm9wdGlvbnMsICdlbmFibGVkJyk7XG5cdHByaXZhdGUgaW5maW5pdGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2luZmluaXRlJyk7XG5cdHByaXZhdGUgbWF4U3BlZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21heFNwZWVkJyk7XG5cdGVwcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZXBzJyk7XG5cdGhvcml6b250YWwgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2hvcml6b250YWwnKTtcblx0cGFnZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BhZ2VzJyk7XG5cdGRpc3RhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXN0YW5jZScpO1xuXHRkYW1waW5nID0gcGljayh0aGlzLm9wdGlvbnMsICdkYW1waW5nJyk7XG5cdHNjcm9sbCA9IDA7XG5cdG9mZnNldCA9IDA7XG5cdGRlbHRhID0gMDtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldCgpO1xuXHRcdFx0XHRpZiAoIXRhcmdldCkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IHBhcmVudCA9IHRhcmdldCBhcyBIVE1MRWxlbWVudDtcblx0XHRcdFx0Y29uc3QgW3BhZ2VzLCBkaXN0YW5jZSwgaG9yaXpvbnRhbCwgZWwsIGZpbGwsIGZpeGVkLCBzdHlsZSwgcHJlcGVuZCwgZG9tRWxlbWVudCwgZXZlbnRzXSA9IFtcblx0XHRcdFx0XHR0aGlzLnBhZ2VzKCksXG5cdFx0XHRcdFx0dGhpcy5kaXN0YW5jZSgpLFxuXHRcdFx0XHRcdHRoaXMuaG9yaXpvbnRhbCgpLFxuXHRcdFx0XHRcdHRoaXMuZWwsXG5cdFx0XHRcdFx0dGhpcy5maWxsLFxuXHRcdFx0XHRcdHRoaXMuZml4ZWQsXG5cdFx0XHRcdFx0dW50cmFja2VkKHRoaXMuc3R5bGUpLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLnByZXBlbmQpLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLmRvbUVsZW1lbnQpLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLmV2ZW50cyksXG5cdFx0XHRcdF07XG5cblx0XHRcdFx0ZWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuXHRcdFx0XHRlbC5zdHlsZS53aWR0aCA9ICcxMDAlJztcblx0XHRcdFx0ZWwuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuXHRcdFx0XHRlbC5zdHlsZVtob3Jpem9udGFsID8gJ292ZXJmbG93WCcgOiAnb3ZlcmZsb3dZJ10gPSAnYXV0byc7XG5cdFx0XHRcdGVsLnN0eWxlW2hvcml6b250YWwgPyAnb3ZlcmZsb3dZJyA6ICdvdmVyZmxvd1gnXSA9ICdoaWRkZW4nO1xuXHRcdFx0XHRlbC5zdHlsZS50b3AgPSAnMHB4Jztcblx0XHRcdFx0ZWwuc3R5bGUubGVmdCA9ICcwcHgnO1xuXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IGluIHN0eWxlKSB7XG5cdFx0XHRcdFx0ZWwuc3R5bGVba2V5XSA9IChzdHlsZSBhcyBDU1NTdHlsZURlY2xhcmF0aW9uKVtrZXldO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zml4ZWQuc3R5bGUucG9zaXRpb24gPSAnc3RpY2t5Jztcblx0XHRcdFx0Zml4ZWQuc3R5bGUudG9wID0gJzBweCc7XG5cdFx0XHRcdGZpeGVkLnN0eWxlLmxlZnQgPSAnMHB4Jztcblx0XHRcdFx0Zml4ZWQuc3R5bGUud2lkdGggPSAnMTAwJSc7XG5cdFx0XHRcdGZpeGVkLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcblx0XHRcdFx0Zml4ZWQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcblx0XHRcdFx0ZWwuYXBwZW5kQ2hpbGQoZml4ZWQpO1xuXG5cdFx0XHRcdGZpbGwuc3R5bGUuaGVpZ2h0ID0gaG9yaXpvbnRhbCA/ICcxMDAlJyA6IGAke3BhZ2VzICogZGlzdGFuY2UgKiAxMDB9JWA7XG5cdFx0XHRcdGZpbGwuc3R5bGUud2lkdGggPSBob3Jpem9udGFsID8gYCR7cGFnZXMgKiBkaXN0YW5jZSAqIDEwMH0lYCA6ICcxMDAlJztcblx0XHRcdFx0ZmlsbC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXHRcdFx0XHRlbC5hcHBlbmRDaGlsZChmaWxsKTtcblxuXHRcdFx0XHRpZiAocHJlcGVuZCkgcGFyZW50LnByZXBlbmQoZWwpO1xuXHRcdFx0XHRlbHNlIHBhcmVudC5hcHBlbmRDaGlsZChlbCk7XG5cblx0XHRcdFx0Ly8gSW5pdCBzY3JvbGwgb25lIHBpeGVsIGluIHRvIGFsbG93IHVwd2FyZC9sZWZ0d2FyZCBzY3JvbGxcblx0XHRcdFx0ZWxbaG9yaXpvbnRhbCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IDE7XG5cblx0XHRcdFx0Y29uc3Qgb2xkVGFyZ2V0ID0gKGV2ZW50cy5jb25uZWN0ZWQgfHwgZG9tRWxlbWVudCkgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0XHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBldmVudHMuY29ubmVjdD8uKGVsKSk7XG5cdFx0XHRcdGNvbnN0IG9sZENvbXB1dGUgPSBldmVudHMuY29tcHV0ZT8uYmluZChldmVudHMpO1xuXG5cdFx0XHRcdHRoaXMuc3RvcmUuc25hcHNob3Quc2V0RXZlbnRzKHtcblx0XHRcdFx0XHRjb21wdXRlKGV2ZW50LCBzdG9yZSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBzdG9yZS5zbmFwc2hvdDtcblx0XHRcdFx0XHRcdC8vIHdlIGFyZSB1c2luZyBib3VuZGluZ0NsaWVudFJlY3QgYmVjYXVzZSB3ZSBjb3VsZCBub3QgcmVseSBvbiB0YXJnZXQub2Zmc2V0VG9wIGFzIGNhbnZhcyBjb3VsZCBiZSBwb3NpdGlvbmVkIGFueXdoZXJlIGluIGRvbVxuXHRcdFx0XHRcdFx0Y29uc3QgeyBsZWZ0LCB0b3AgfSA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRcdFx0XHRcdGNvbnN0IG9mZnNldFggPSBldmVudC5jbGllbnRYIC0gbGVmdDtcblx0XHRcdFx0XHRcdGNvbnN0IG9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gdG9wO1xuXHRcdFx0XHRcdFx0c3RhdGUucG9pbnRlci5zZXQoKG9mZnNldFggLyBzdGF0ZS5zaXplLndpZHRoKSAqIDIgLSAxLCAtKG9mZnNldFkgLyBzdGF0ZS5zaXplLmhlaWdodCkgKiAyICsgMSk7XG5cdFx0XHRcdFx0XHRzdGF0ZS5yYXljYXN0ZXIuc2V0RnJvbUNhbWVyYShzdGF0ZS5wb2ludGVyLCBzdGF0ZS5jYW1lcmEpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0cGFyZW50LnJlbW92ZUNoaWxkKGVsKTtcblx0XHRcdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LnNldEV2ZW50cyh7IGNvbXB1dGU6IG9sZENvbXB1dGUgfSk7XG5cdFx0XHRcdFx0ZXZlbnRzLmNvbm5lY3Q/LihvbGRUYXJnZXQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbZWwsIGV2ZW50cywgc2l6ZSwgaW5maW5pdGUsIGludmFsaWRhdGUsIGhvcml6b250YWwsIGVuYWJsZWRdID0gW1xuXHRcdFx0XHRcdHRoaXMuZWwsXG5cdFx0XHRcdFx0dGhpcy5ldmVudHMoKSxcblx0XHRcdFx0XHR0aGlzLnNpemUoKSxcblx0XHRcdFx0XHR0aGlzLmluZmluaXRlKCksXG5cdFx0XHRcdFx0dGhpcy5pbnZhbGlkYXRlKCksXG5cdFx0XHRcdFx0dGhpcy5ob3Jpem9udGFsKCksXG5cdFx0XHRcdFx0dGhpcy5lbmFibGVkKCksXG5cdFx0XHRcdF07XG5cblx0XHRcdFx0aWYgKGV2ZW50cy5jb25uZWN0ZWQgIT09IGVsKSByZXR1cm47XG5cblx0XHRcdFx0Y29uc3QgY29udGFpbmVyTGVuZ3RoID0gc2l6ZVtob3Jpem9udGFsID8gJ3dpZHRoJyA6ICdoZWlnaHQnXTtcblx0XHRcdFx0Y29uc3Qgc2Nyb2xsTGVuZ3RoID0gZWxbaG9yaXpvbnRhbCA/ICdzY3JvbGxXaWR0aCcgOiAnc2Nyb2xsSGVpZ2h0J107XG5cdFx0XHRcdGNvbnN0IHNjcm9sbFRocmVzaG9sZCA9IHNjcm9sbExlbmd0aCAtIGNvbnRhaW5lckxlbmd0aDtcblxuXHRcdFx0XHRsZXQgY3VycmVudCA9IDA7XG5cdFx0XHRcdGxldCBkaXNhYmxlU2Nyb2xsID0gdHJ1ZTtcblx0XHRcdFx0bGV0IGZpcnN0UnVuID0gdHJ1ZTtcblxuXHRcdFx0XHRjb25zdCBvblNjcm9sbCA9ICgpID0+IHtcblx0XHRcdFx0XHQvLyBQcmV2ZW50IGZpcnN0IHNjcm9sbCBiZWNhdXNlIGl0IGlzIGluZGlyZWN0bHkgY2F1c2VkIGJ5IHRoZSBvbmUgcGl4ZWwgb2Zmc2V0XG5cdFx0XHRcdFx0aWYgKCFlbmFibGVkIHx8IGZpcnN0UnVuKSByZXR1cm47XG5cdFx0XHRcdFx0aW52YWxpZGF0ZSgpO1xuXHRcdFx0XHRcdGN1cnJlbnQgPSBlbFtob3Jpem9udGFsID8gJ3Njcm9sbExlZnQnIDogJ3Njcm9sbFRvcCddO1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsID0gY3VycmVudCAvIHNjcm9sbFRocmVzaG9sZDtcblxuXHRcdFx0XHRcdGlmIChpbmZpbml0ZSkge1xuXHRcdFx0XHRcdFx0aWYgKCFkaXNhYmxlU2Nyb2xsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50ID49IHNjcm9sbFRocmVzaG9sZCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRhbXAgPSAxIC0gdGhpcy5vZmZzZXQ7XG5cdFx0XHRcdFx0XHRcdFx0ZWxbaG9yaXpvbnRhbCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zY3JvbGwgPSB0aGlzLm9mZnNldCA9IC1kYW1wO1xuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVTY3JvbGwgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGN1cnJlbnQgPD0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRhbXAgPSAxICsgdGhpcy5vZmZzZXQ7XG5cdFx0XHRcdFx0XHRcdFx0ZWxbaG9yaXpvbnRhbCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IHNjcm9sbExlbmd0aDtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnNjcm9sbCA9IHRoaXMub2Zmc2V0ID0gZGFtcDtcblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlU2Nyb2xsID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGRpc2FibGVTY3JvbGwpIHNldFRpbWVvdXQoKCkgPT4gKGRpc2FibGVTY3JvbGwgPSBmYWxzZSksIDQwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wcm9ncmVzcy5zZXQodGhpcy5zY3JvbGwpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cdFx0XHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiAoZmlyc3RSdW4gPSBmYWxzZSkpO1xuXG5cdFx0XHRcdGNvbnN0IG9uV2hlZWwgPSAoZTogV2hlZWxFdmVudCkgPT4gKGVsW2hvcml6b250YWwgPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gKz0gZS5kZWx0YVkgLyAyKTtcblx0XHRcdFx0aWYgKGhvcml6b250YWwpIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuXG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0ZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpO1xuXHRcdFx0XHRcdGlmIChob3Jpem9udGFsKSBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRsZXQgbGFzdCA9IDA7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IHtcblx0XHRcdGxhc3QgPSB0aGlzLm9mZnNldDtcblx0XHRcdGVhc2luZy5kYW1wKHRoaXMsICdvZmZzZXQnLCB0aGlzLnNjcm9sbCwgdGhpcy5kYW1waW5nKCksIGRlbHRhLCB0aGlzLm1heFNwZWVkKCksIHVuZGVmaW5lZCwgdGhpcy5lcHMoKSk7XG5cdFx0XHRlYXNpbmcuZGFtcChcblx0XHRcdFx0dGhpcyxcblx0XHRcdFx0J2RlbHRhJyxcblx0XHRcdFx0TWF0aC5hYnMobGFzdCAtIHRoaXMub2Zmc2V0KSxcblx0XHRcdFx0dGhpcy5kYW1waW5nKCksXG5cdFx0XHRcdGRlbHRhLFxuXHRcdFx0XHR0aGlzLm1heFNwZWVkKCksXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0dGhpcy5lcHMoKSxcblx0XHRcdCk7XG5cdFx0XHRpZiAodGhpcy5kZWx0YSA+IHRoaXMuZXBzKCkpIHRoaXMuaW52YWxpZGF0ZSgpKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRnZXQgZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2VsO1xuXHR9XG5cblx0Z2V0IGZpbGwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2ZpbGw7XG5cdH1cblxuXHRnZXQgZml4ZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2ZpeGVkO1xuXHR9XG5cblx0cmFuZ2UoZnJvbTogbnVtYmVyLCBkaXN0YW5jZTogbnVtYmVyLCBtYXJnaW46IG51bWJlciA9IDApOiBudW1iZXIge1xuXHRcdGNvbnN0IHN0YXJ0ID0gZnJvbSAtIG1hcmdpbjtcblx0XHRjb25zdCBlbmQgPSBzdGFydCArIGRpc3RhbmNlICsgbWFyZ2luICogMjtcblx0XHRyZXR1cm4gdGhpcy5vZmZzZXQgPCBzdGFydCA/IDAgOiB0aGlzLm9mZnNldCA+IGVuZCA/IDEgOiAodGhpcy5vZmZzZXQgLSBzdGFydCkgLyAoZW5kIC0gc3RhcnQpO1xuXHR9XG5cblx0Y3VydmUoZnJvbTogbnVtYmVyLCBkaXN0YW5jZTogbnVtYmVyLCBtYXJnaW46IG51bWJlciA9IDApOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoLnNpbih0aGlzLnJhbmdlKGZyb20sIGRpc3RhbmNlLCBtYXJnaW4pICogTWF0aC5QSSk7XG5cdH1cblxuXHR2aXNpYmxlKGZyb206IG51bWJlciwgZGlzdGFuY2U6IG51bWJlciwgbWFyZ2luOiBudW1iZXIgPSAwKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc3RhcnQgPSBmcm9tIC0gbWFyZ2luO1xuXHRcdGNvbnN0IGVuZCA9IHN0YXJ0ICsgZGlzdGFuY2UgKyBtYXJnaW4gKiAyO1xuXHRcdHJldHVybiB0aGlzLm9mZnNldCA+PSBzdGFydCAmJiB0aGlzLm9mZnNldCA8PSBlbmQ7XG5cdH1cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0LWdyb3VwW25ndHMtc2Nyb2xsLWNhbnZhc10nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c1Njcm9sbENhbnZhcyB7XG5cdHByaXZhdGUgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEdyb3VwPj4oRWxlbWVudFJlZik7XG5cdHByaXZhdGUgc2Nyb2xsQ29udHJvbHMgPSBpbmplY3QoTmd0c1Njcm9sbENvbnRyb2xzKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgdmlld3BvcnQgPSB0aGlzLnN0b3JlLnNlbGVjdCgndmlld3BvcnQnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcblxuXHRcdFx0Z3JvdXAucG9zaXRpb24ueCA9IHRoaXMuc2Nyb2xsQ29udHJvbHMuaG9yaXpvbnRhbCgpXG5cdFx0XHRcdD8gLXRoaXMudmlld3BvcnQoKS53aWR0aCAqICh0aGlzLnNjcm9sbENvbnRyb2xzLnBhZ2VzKCkgLSAxKSAqIHRoaXMuc2Nyb2xsQ29udHJvbHMub2Zmc2V0XG5cdFx0XHRcdDogMDtcblx0XHRcdGdyb3VwLnBvc2l0aW9uLnkgPSB0aGlzLnNjcm9sbENvbnRyb2xzLmhvcml6b250YWwoKVxuXHRcdFx0XHQ/IDBcblx0XHRcdFx0OiB0aGlzLnZpZXdwb3J0KCkuaGVpZ2h0ICogKHRoaXMuc2Nyb2xsQ29udHJvbHMucGFnZXMoKSAtIDEpICogdGhpcy5zY3JvbGxDb250cm9scy5vZmZzZXQ7XG5cdFx0fSk7XG5cdH1cbn1cblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnZGl2W25ndHMtc2Nyb2xsLWh0bWxdJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aG9zdDogeyBzdHlsZTogJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOycgfSxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZUhUTUxEb21FbGVtZW50KFtOZ3RzU2Nyb2xsQ29udHJvbHNdLCAoc2Nyb2xsQ29udHJvbHMpID0+IHNjcm9sbENvbnRyb2xzLmZpeGVkKV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTY3JvbGxIdG1sIGV4dGVuZHMgTmd0SFRNTCB7XG5cdHByaXZhdGUgc2Nyb2xsQ29udHJvbHMgPSBpbmplY3QoTmd0c1Njcm9sbENvbnRyb2xzKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5zY3JvbGxDb250cm9scy5kZWx0YSA+IHRoaXMuc2Nyb2xsQ29udHJvbHMuZXBzKCkpIHtcblx0XHRcdFx0dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7XG5cdFx0XHRcdFx0dGhpcy5zY3JvbGxDb250cm9scy5ob3Jpem9udGFsKClcblx0XHRcdFx0XHRcdD8gLXRoaXMuc2l6ZSgpLndpZHRoICogKHRoaXMuc2Nyb2xsQ29udHJvbHMucGFnZXMoKSAtIDEpICogdGhpcy5zY3JvbGxDb250cm9scy5vZmZzZXRcblx0XHRcdFx0XHRcdDogMFxuXHRcdFx0XHR9cHgsJHt0aGlzLnNjcm9sbENvbnRyb2xzLmhvcml6b250YWwoKSA/IDAgOiB0aGlzLnNpemUoKS5oZWlnaHQgKiAodGhpcy5zY3JvbGxDb250cm9scy5wYWdlcygpIC0gMSkgKiAtdGhpcy5zY3JvbGxDb250cm9scy5vZmZzZXR9cHgsMClgO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWNvbnRyb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2NvbnRyb2xzL3NyYy9saWIvc2Nyb2xsLWNvbnRyb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQTJCdkQsTUFBTSxjQUFjLEdBQThCO0lBQ2pELEdBQUcsRUFBRSxPQUFPO0lBQ1osVUFBVSxFQUFFLEtBQUs7SUFDakIsUUFBUSxFQUFFLEtBQUs7SUFDZixLQUFLLEVBQUUsQ0FBQztJQUNSLFFBQVEsRUFBRSxDQUFDO0lBQ1gsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsS0FBSztJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLEVBQUU7Q0FDVCxDQUFDO0FBVUYsTUFBTSxPQUFPLGtCQUFrQjtJQWdDOUI7UUEvQkEsYUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFX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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sT0FBTyxDQUFDO1lBQzFJLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBZlcsY0FBYztrR0FBZCxjQUFjLDhKQUZmLENBQUMscUJBQXFCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7OzJGQUV0RixjQUFjO2tCQU4xQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsOERBQThELEVBQUU7b0JBQy9FLFNBQVMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHRtb2RlbCxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIE5ndEhUTUwsIHBpY2ssIHByb3ZpZGVIVE1MRG9tRWxlbWVudCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgZWFzaW5nIH0gZnJvbSAnbWFhdGgnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1Njcm9sbENvbnRyb2xzT3B0aW9ucyB7XG5cdC8qKiBQcmVjaXNpb24sIGRlZmF1bHQgMC4wMDAwMSAqL1xuXHRlcHM6IG51bWJlcjtcblx0LyoqIEhvcml6b250YWwgc2Nyb2xsLCBkZWZhdWx0IGZhbHNlICh2ZXJ0aWNhbCkgKi9cblx0aG9yaXpvbnRhbDogYm9vbGVhbjtcblx0LyoqIEluZmluaXRlIHNjcm9sbCwgZGVmYXVsdCBmYWxzZSAoZXhwZXJpbWVudGFsISkgKi9cblx0aW5maW5pdGU6IGJvb2xlYW47XG5cdC8qKiBEZWZpbmVzIHRoZSBsZW5naHQgb2YgdGhlIHNjcm9sbCBhcmVhLCBlYWNoIHBhZ2UgaXMgaGVpZ2h0OjEwMCUsIGRlZmF1bHQgMSAqL1xuXHRwYWdlczogbnVtYmVyO1xuXHQvKiogQSBmYWN0b3IgdGhhdCBpbmNyZWFzZXMgc2Nyb2xsIGJhciB0cmF2ZWwsZGVmYXVsdDogMSAqL1xuXHRkaXN0YW5jZTogbnVtYmVyO1xuXHQvKiogRnJpY3Rpb24gaW4gc2Vjb25kcywgZGVmYXVsdDogMC4yNSAoMS80IHNlY29uZCkgKi9cblx0ZGFtcGluZzogbnVtYmVyO1xuXHQvKiogbWF4U3BlZWQgb3B0aW9uYWxseSBhbGxvd3MgeW91IHRvIGNsYW1wIHRoZSBtYXhpbXVtIHNwZWVkLiBJZiBkYW1waW5nIGlzIDAuMnMgYW5kIGxvb2tzIE9LXG5cdCAqICBnb2luZyBiZXR3ZWVuLCBzYXksIHBhZ2UgMSBhbmQgMiwgYnV0IG5vdCBmb3IgcGFnZXMgZmFyIGFwYXJ0IGFzIGl0J2xsIG1vdmUgdmVyeSByYXBpZCxcblx0ICogIHRoZW4gYSBtYXhTcGVlZCBvZiBlLmcuIDMgd2hpY2ggd2lsbCBjbGFtcCB0aGUgc3BlZWQgdG8gMyB1bml0cyBwZXIgc2Vjb25kLCBpdCBtYXkgbm93XG5cdCAqICB0YWtlIG11Y2ggbG9uZ2VyIHRoYW4gZGFtcGluZyB0byByZWFjaCB0aGUgdGFyZ2V0IGlmIGl0IGlzIGZhciBhd2F5LiBEZWZhdWx0OiBJbmZpbml0eSAqL1xuXHRtYXhTcGVlZDogbnVtYmVyO1xuXHQvKiogSWYgdHJ1ZSBhdHRhY2hlcyB0aGUgc2Nyb2xsIGNvbnRhaW5lciBiZWZvcmUgdGhlIGNhbnZhcyAqL1xuXHRwcmVwZW5kOiBib29sZWFuO1xuXHRlbmFibGVkOiBib29sZWFuO1xuXHRzdHlsZTogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNTY3JvbGxDb250cm9sc09wdGlvbnMgPSB7XG5cdGVwczogMC4wMDAwMSxcblx0aG9yaXpvbnRhbDogZmFsc2UsXG5cdGluZmluaXRlOiBmYWxzZSxcblx0cGFnZXM6IDEsXG5cdGRpc3RhbmNlOiAxLFxuXHRkYW1waW5nOiAwLjI1LFxuXHRtYXhTcGVlZDogSW5maW5pdHksXG5cdHByZXBlbmQ6IGZhbHNlLFxuXHRlbmFibGVkOiB0cnVlLFxuXHRzdHlsZToge30sXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNjcm9sbC1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRlbnQgLz5cblx0YCxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTY3JvbGxDb250cm9scyB7XG5cdHByb2dyZXNzID0gbW9kZWwoMCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgZ2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblx0cHJpdmF0ZSBldmVudHMgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZXZlbnRzJyk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSBkb21FbGVtZW50ID0gcGljayh0aGlzLmdsLCAnZG9tRWxlbWVudCcpO1xuXHRwcml2YXRlIHRhcmdldCA9IHBpY2sodGhpcy5kb21FbGVtZW50LCAncGFyZW50Tm9kZScpO1xuXG5cdHByaXZhdGUgX2VsID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0cHJpdmF0ZSBfZmlsbCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdHByaXZhdGUgX2ZpeGVkID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuXHRwcml2YXRlIHN0eWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdzdHlsZScpO1xuXHRwcml2YXRlIHByZXBlbmQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ByZXBlbmQnKTtcblx0cHJpdmF0ZSBlbmFibGVkID0gcGljayh0aGlzLm9wdGlvbnMsICdlbmFibGVkJyk7XG5cdHByaXZhdGUgaW5maW5pdGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2luZmluaXRlJyk7XG5cdHByaXZhdGUgbWF4U3BlZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21heFNwZWVkJyk7XG5cdGVwcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZXBzJyk7XG5cdGhvcml6b250YWwgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2hvcml6b250YWwnKTtcblx0cGFnZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BhZ2VzJyk7XG5cdGRpc3RhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXN0YW5jZScpO1xuXHRkYW1waW5nID0gcGljayh0aGlzLm9wdGlvbnMsICdkYW1waW5nJyk7XG5cdHNjcm9sbCA9IDA7XG5cdG9mZnNldCA9IDA7XG5cdGRlbHRhID0gMDtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldCgpO1xuXHRcdFx0XHRpZiAoIXRhcmdldCkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IHBhcmVudCA9IHRhcmdldCBhcyBIVE1MRWxlbWVudDtcblx0XHRcdFx0Y29uc3QgW3BhZ2VzLCBkaXN0YW5jZSwgaG9yaXpvbnRhbCwgZWwsIGZpbGwsIGZpeGVkLCBzdHlsZSwgcHJlcGVuZCwgZG9tRWxlbWVudCwgZXZlbnRzXSA9IFtcblx0XHRcdFx0XHR0aGlzLnBhZ2VzKCksXG5cdFx0XHRcdFx0dGhpcy5kaXN0YW5jZSgpLFxuXHRcdFx0XHRcdHRoaXMuaG9yaXpvbnRhbCgpLFxuXHRcdFx0XHRcdHRoaXMuZWwsXG5cdFx0XHRcdFx0dGhpcy5maWxsLFxuXHRcdFx0XHRcdHRoaXMuZml4ZWQsXG5cdFx0XHRcdFx0dW50cmFja2VkKHRoaXMuc3R5bGUpLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLnByZXBlbmQpLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLmRvbUVsZW1lbnQpLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLmV2ZW50cyksXG5cdFx0XHRcdF07XG5cblx0XHRcdFx0ZWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuXHRcdFx0XHRlbC5zdHlsZS53aWR0aCA9ICcxMDAlJztcblx0XHRcdFx0ZWwuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuXHRcdFx0XHRlbC5zdHlsZVtob3Jpem9udGFsID8gJ292ZXJmbG93WCcgOiAnb3ZlcmZsb3dZJ10gPSAnYXV0byc7XG5cdFx0XHRcdGVsLnN0eWxlW2hvcml6b250YWwgPyAnb3ZlcmZsb3dZJyA6ICdvdmVyZmxvd1gnXSA9ICdoaWRkZW4nO1xuXHRcdFx0XHRlbC5zdHlsZS50b3AgPSAnMHB4Jztcblx0XHRcdFx0ZWwuc3R5bGUubGVmdCA9ICcwcHgnO1xuXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IGluIHN0eWxlKSB7XG5cdFx0XHRcdFx0ZWwuc3R5bGVba2V5XSA9IChzdHlsZSBhcyBDU1NTdHlsZURlY2xhcmF0aW9uKVtrZXldO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zml4ZWQuc3R5bGUucG9zaXRpb24gPSAnc3RpY2t5Jztcblx0XHRcdFx0Zml4ZWQuc3R5bGUudG9wID0gJzBweCc7XG5cdFx0XHRcdGZpeGVkLnN0eWxlLmxlZnQgPSAnMHB4Jztcblx0XHRcdFx0Zml4ZWQuc3R5bGUud2lkdGggPSAnMTAwJSc7XG5cdFx0XHRcdGZpeGVkLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcblx0XHRcdFx0Zml4ZWQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcblx0XHRcdFx0ZWwuYXBwZW5kQ2hpbGQoZml4ZWQpO1xuXG5cdFx0XHRcdGZpbGwuc3R5bGUuaGVpZ2h0ID0gaG9yaXpvbnRhbCA/ICcxMDAlJyA6IGAke3BhZ2VzICogZGlzdGFuY2UgKiAxMDB9JWA7XG5cdFx0XHRcdGZpbGwuc3R5bGUud2lkdGggPSBob3Jpem9udGFsID8gYCR7cGFnZXMgKiBkaXN0YW5jZSAqIDEwMH0lYCA6ICcxMDAlJztcblx0XHRcdFx0ZmlsbC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXHRcdFx0XHRlbC5hcHBlbmRDaGlsZChmaWxsKTtcblxuXHRcdFx0XHRpZiAocHJlcGVuZCkgcGFyZW50LnByZXBlbmQoZWwpO1xuXHRcdFx0XHRlbHNlIHBhcmVudC5hcHBlbmRDaGlsZChlbCk7XG5cblx0XHRcdFx0Ly8gSW5pdCBzY3JvbGwgb25lIHBpeGVsIGluIHRvIGFsbG93IHVwd2FyZC9sZWZ0d2FyZCBzY3JvbGxcblx0XHRcdFx0ZWxbaG9yaXpvbnRhbCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IDE7XG5cblx0XHRcdFx0Y29uc3Qgb2xkVGFyZ2V0ID0gKGV2ZW50cy5jb25uZWN0ZWQgfHwgZG9tRWxlbWVudCkgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0XHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBldmVudHMuY29ubmVjdD8uKGVsKSk7XG5cdFx0XHRcdGNvbnN0IG9sZENvbXB1dGUgPSBldmVudHMuY29tcHV0ZT8uYmluZChldmVudHMpO1xuXG5cdFx0XHRcdHRoaXMuc3RvcmUuc25hcHNob3Quc2V0RXZlbnRzKHtcblx0XHRcdFx0XHRjb21wdXRlKGV2ZW50LCBzdG9yZSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBzdG9yZS5zbmFwc2hvdDtcblx0XHRcdFx0XHRcdC8vIHdlIGFyZSB1c2luZyBib3VuZGluZ0NsaWVudFJlY3QgYmVjYXVzZSB3ZSBjb3VsZCBub3QgcmVseSBvbiB0YXJnZXQub2Zmc2V0VG9wIGFzIGNhbnZhcyBjb3VsZCBiZSBwb3NpdGlvbmVkIGFueXdoZXJlIGluIGRvbVxuXHRcdFx0XHRcdFx0Y29uc3QgeyBsZWZ0LCB0b3AgfSA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRcdFx0XHRcdGNvbnN0IG9mZnNldFggPSBldmVudC5jbGllbnRYIC0gbGVmdDtcblx0XHRcdFx0XHRcdGNvbnN0IG9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gdG9wO1xuXHRcdFx0XHRcdFx0c3RhdGUucG9pbnRlci5zZXQoKG9mZnNldFggLyBzdGF0ZS5zaXplLndpZHRoKSAqIDIgLSAxLCAtKG9mZnNldFkgLyBzdGF0ZS5zaXplLmhlaWdodCkgKiAyICsgMSk7XG5cdFx0XHRcdFx0XHRzdGF0ZS5yYXljYXN0ZXIuc2V0RnJvbUNhbWVyYShzdGF0ZS5wb2ludGVyLCBzdGF0ZS5jYW1lcmEpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0cGFyZW50LnJlbW92ZUNoaWxkKGVsKTtcblx0XHRcdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LnNldEV2ZW50cyh7IGNvbXB1dGU6IG9sZENvbXB1dGUgfSk7XG5cdFx0XHRcdFx0ZXZlbnRzLmNvbm5lY3Q/LihvbGRUYXJnZXQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbZWwsIGV2ZW50cywgc2l6ZSwgaW5maW5pdGUsIGludmFsaWRhdGUsIGhvcml6b250YWwsIGVuYWJsZWRdID0gW1xuXHRcdFx0XHRcdHRoaXMuZWwsXG5cdFx0XHRcdFx0dGhpcy5ldmVudHMoKSxcblx0XHRcdFx0XHR0aGlzLnNpemUoKSxcblx0XHRcdFx0XHR0aGlzLmluZmluaXRlKCksXG5cdFx0XHRcdFx0dGhpcy5pbnZhbGlkYXRlKCksXG5cdFx0XHRcdFx0dGhpcy5ob3Jpem9udGFsKCksXG5cdFx0XHRcdFx0dGhpcy5lbmFibGVkKCksXG5cdFx0XHRcdF07XG5cblx0XHRcdFx0aWYgKGV2ZW50cy5jb25uZWN0ZWQgIT09IGVsKSByZXR1cm47XG5cblx0XHRcdFx0Y29uc3QgY29udGFpbmVyTGVuZ3RoID0gc2l6ZVtob3Jpem9udGFsID8gJ3dpZHRoJyA6ICdoZWlnaHQnXTtcblx0XHRcdFx0Y29uc3Qgc2Nyb2xsTGVuZ3RoID0gZWxbaG9yaXpvbnRhbCA/ICdzY3JvbGxXaWR0aCcgOiAnc2Nyb2xsSGVpZ2h0J107XG5cdFx0XHRcdGNvbnN0IHNjcm9sbFRocmVzaG9sZCA9IHNjcm9sbExlbmd0aCAtIGNvbnRhaW5lckxlbmd0aDtcblxuXHRcdFx0XHRsZXQgY3VycmVudCA9IDA7XG5cdFx0XHRcdGxldCBkaXNhYmxlU2Nyb2xsID0gdHJ1ZTtcblx0XHRcdFx0bGV0IGZpcnN0UnVuID0gdHJ1ZTtcblxuXHRcdFx0XHRjb25zdCBvblNjcm9sbCA9ICgpID0+IHtcblx0XHRcdFx0XHQvLyBQcmV2ZW50IGZpcnN0IHNjcm9sbCBiZWNhdXNlIGl0IGlzIGluZGlyZWN0bHkgY2F1c2VkIGJ5IHRoZSBvbmUgcGl4ZWwgb2Zmc2V0XG5cdFx0XHRcdFx0aWYgKCFlbmFibGVkIHx8IGZpcnN0UnVuKSByZXR1cm47XG5cdFx0XHRcdFx0aW52YWxpZGF0ZSgpO1xuXHRcdFx0XHRcdGN1cnJlbnQgPSBlbFtob3Jpem9udGFsID8gJ3Njcm9sbExlZnQnIDogJ3Njcm9sbFRvcCddO1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsID0gY3VycmVudCAvIHNjcm9sbFRocmVzaG9sZDtcblxuXHRcdFx0XHRcdGlmIChpbmZpbml0ZSkge1xuXHRcdFx0XHRcdFx0aWYgKCFkaXNhYmxlU2Nyb2xsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50ID49IHNjcm9sbFRocmVzaG9sZCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRhbXAgPSAxIC0gdGhpcy5vZmZzZXQ7XG5cdFx0XHRcdFx0XHRcdFx0ZWxbaG9yaXpvbnRhbCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zY3JvbGwgPSB0aGlzLm9mZnNldCA9IC1kYW1wO1xuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVTY3JvbGwgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGN1cnJlbnQgPD0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRhbXAgPSAxICsgdGhpcy5vZmZzZXQ7XG5cdFx0XHRcdFx0XHRcdFx0ZWxbaG9yaXpvbnRhbCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IHNjcm9sbExlbmd0aDtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnNjcm9sbCA9IHRoaXMub2Zmc2V0ID0gZGFtcDtcblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlU2Nyb2xsID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGRpc2FibGVTY3JvbGwpIHNldFRpbWVvdXQoKCkgPT4gKGRpc2FibGVTY3JvbGwgPSBmYWxzZSksIDQwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wcm9ncmVzcy5zZXQodGhpcy5zY3JvbGwpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cdFx0XHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiAoZmlyc3RSdW4gPSBmYWxzZSkpO1xuXG5cdFx0XHRcdGNvbnN0IG9uV2hlZWwgPSAoZTogV2hlZWxFdmVudCkgPT4gKGVsW2hvcml6b250YWwgPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gKz0gZS5kZWx0YVkgLyAyKTtcblx0XHRcdFx0aWYgKGhvcml6b250YWwpIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuXG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0ZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpO1xuXHRcdFx0XHRcdGlmIChob3Jpem9udGFsKSBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRsZXQgbGFzdCA9IDA7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IHtcblx0XHRcdGxhc3QgPSB0aGlzLm9mZnNldDtcblx0XHRcdGVhc2luZy5kYW1wKHRoaXMsICdvZmZzZXQnLCB0aGlzLnNjcm9sbCwgdGhpcy5kYW1waW5nKCksIGRlbHRhLCB0aGlzLm1heFNwZWVkKCksIHVuZGVmaW5lZCwgdGhpcy5lcHMoKSk7XG5cdFx0XHRlYXNpbmcuZGFtcChcblx0XHRcdFx0dGhpcyxcblx0XHRcdFx0J2RlbHRhJyxcblx0XHRcdFx0TWF0aC5hYnMobGFzdCAtIHRoaXMub2Zmc2V0KSxcblx0XHRcdFx0dGhpcy5kYW1waW5nKCksXG5cdFx0XHRcdGRlbHRhLFxuXHRcdFx0XHR0aGlzLm1heFNwZWVkKCksXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0dGhpcy5lcHMoKSxcblx0XHRcdCk7XG5cdFx0XHRpZiAodGhpcy5kZWx0YSA+IHRoaXMuZXBzKCkpIHRoaXMuaW52YWxpZGF0ZSgpKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRnZXQgZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2VsO1xuXHR9XG5cblx0Z2V0IGZpbGwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2ZpbGw7XG5cdH1cblxuXHRnZXQgZml4ZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2ZpeGVkO1xuXHR9XG5cblx0cmFuZ2UoZnJvbTogbnVtYmVyLCBkaXN0YW5jZTogbnVtYmVyLCBtYXJnaW4gPSAwKTogbnVtYmVyIHtcblx0XHRjb25zdCBzdGFydCA9IGZyb20gLSBtYXJnaW47XG5cdFx0Y29uc3QgZW5kID0gc3RhcnQgKyBkaXN0YW5jZSArIG1hcmdpbiAqIDI7XG5cdFx0cmV0dXJuIHRoaXMub2Zmc2V0IDwgc3RhcnQgPyAwIDogdGhpcy5vZmZzZXQgPiBlbmQgPyAxIDogKHRoaXMub2Zmc2V0IC0gc3RhcnQpIC8gKGVuZCAtIHN0YXJ0KTtcblx0fVxuXG5cdGN1cnZlKGZyb206IG51bWJlciwgZGlzdGFuY2U6IG51bWJlciwgbWFyZ2luID0gMCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGguc2luKHRoaXMucmFuZ2UoZnJvbSwgZGlzdGFuY2UsIG1hcmdpbikgKiBNYXRoLlBJKTtcblx0fVxuXG5cdHZpc2libGUoZnJvbTogbnVtYmVyLCBkaXN0YW5jZTogbnVtYmVyLCBtYXJnaW4gPSAwKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc3RhcnQgPSBmcm9tIC0gbWFyZ2luO1xuXHRcdGNvbnN0IGVuZCA9IHN0YXJ0ICsgZGlzdGFuY2UgKyBtYXJnaW4gKiAyO1xuXHRcdHJldHVybiB0aGlzLm9mZnNldCA+PSBzdGFydCAmJiB0aGlzLm9mZnNldCA8PSBlbmQ7XG5cdH1cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0LWdyb3VwW25ndHMtc2Nyb2xsLWNhbnZhc10nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c1Njcm9sbENhbnZhcyB7XG5cdHByaXZhdGUgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEdyb3VwPj4oRWxlbWVudFJlZik7XG5cdHByaXZhdGUgc2Nyb2xsQ29udHJvbHMgPSBpbmplY3QoTmd0c1Njcm9sbENvbnRyb2xzKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgdmlld3BvcnQgPSB0aGlzLnN0b3JlLnNlbGVjdCgndmlld3BvcnQnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcblxuXHRcdFx0Z3JvdXAucG9zaXRpb24ueCA9IHRoaXMuc2Nyb2xsQ29udHJvbHMuaG9yaXpvbnRhbCgpXG5cdFx0XHRcdD8gLXRoaXMudmlld3BvcnQoKS53aWR0aCAqICh0aGlzLnNjcm9sbENvbnRyb2xzLnBhZ2VzKCkgLSAxKSAqIHRoaXMuc2Nyb2xsQ29udHJvbHMub2Zmc2V0XG5cdFx0XHRcdDogMDtcblx0XHRcdGdyb3VwLnBvc2l0aW9uLnkgPSB0aGlzLnNjcm9sbENvbnRyb2xzLmhvcml6b250YWwoKVxuXHRcdFx0XHQ/IDBcblx0XHRcdFx0OiB0aGlzLnZpZXdwb3J0KCkuaGVpZ2h0ICogKHRoaXMuc2Nyb2xsQ29udHJvbHMucGFnZXMoKSAtIDEpICogdGhpcy5zY3JvbGxDb250cm9scy5vZmZzZXQ7XG5cdFx0fSk7XG5cdH1cbn1cblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnZGl2W25ndHMtc2Nyb2xsLWh0bWxdJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aG9zdDogeyBzdHlsZTogJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOycgfSxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZUhUTUxEb21FbGVtZW50KFtOZ3RzU2Nyb2xsQ29udHJvbHNdLCAoc2Nyb2xsQ29udHJvbHMpID0+IHNjcm9sbENvbnRyb2xzLmZpeGVkKV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTY3JvbGxIdG1sIGV4dGVuZHMgTmd0SFRNTCB7XG5cdHByaXZhdGUgc2Nyb2xsQ29udHJvbHMgPSBpbmplY3QoTmd0c1Njcm9sbENvbnRyb2xzKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5zY3JvbGxDb250cm9scy5kZWx0YSA+IHRoaXMuc2Nyb2xsQ29udHJvbHMuZXBzKCkpIHtcblx0XHRcdFx0dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7XG5cdFx0XHRcdFx0dGhpcy5zY3JvbGxDb250cm9scy5ob3Jpem9udGFsKClcblx0XHRcdFx0XHRcdD8gLXRoaXMuc2l6ZSgpLndpZHRoICogKHRoaXMuc2Nyb2xsQ29udHJvbHMucGFnZXMoKSAtIDEpICogdGhpcy5zY3JvbGxDb250cm9scy5vZmZzZXRcblx0XHRcdFx0XHRcdDogMFxuXHRcdFx0XHR9cHgsJHt0aGlzLnNjcm9sbENvbnRyb2xzLmhvcml6b250YWwoKSA/IDAgOiB0aGlzLnNpemUoKS5oZWlnaHQgKiAodGhpcy5zY3JvbGxDb250cm9scy5wYWdlcygpIC0gMSkgKiAtdGhpcy5zY3JvbGxDb250cm9scy5vZmZzZXR9cHgsMClgO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|