angular-three-soba 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +148 -148
  2. package/abstractions/lib/edges.d.ts +166 -166
  3. package/abstractions/lib/grid.d.ts +30 -30
  4. package/abstractions/lib/line.d.ts +10 -9
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +3 -3
  7. package/abstractions/lib/text-3d.d.ts +38 -38
  8. package/abstractions/lib/text.d.ts +2 -3
  9. package/cameras/lib/cube-camera.d.ts +2 -2
  10. package/cameras/lib/orthographic-camera.d.ts +7 -8
  11. package/cameras/lib/perspective-camera.d.ts +2 -3
  12. package/controls/lib/camera-controls.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +1 -1
  14. package/esm2022/abstractions/lib/billboard.mjs +3 -3
  15. package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
  16. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
  17. package/esm2022/abstractions/lib/edges.mjs +30 -34
  18. package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
  19. package/esm2022/abstractions/lib/grid.mjs +3 -3
  20. package/esm2022/abstractions/lib/helper.mjs +18 -20
  21. package/esm2022/abstractions/lib/line.mjs +25 -28
  22. package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
  23. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
  24. package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
  25. package/esm2022/abstractions/lib/text-3d.mjs +14 -17
  26. package/esm2022/abstractions/lib/text.mjs +11 -16
  27. package/esm2022/cameras/lib/camera-content.mjs +3 -3
  28. package/esm2022/cameras/lib/cube-camera.mjs +18 -27
  29. package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
  30. package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
  31. package/esm2022/controls/lib/camera-controls.mjs +3 -3
  32. package/esm2022/controls/lib/orbit-controls.mjs +3 -3
  33. package/esm2022/controls/lib/scroll-controls.mjs +124 -130
  34. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +6 -6
  35. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +12 -12
  36. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +9 -9
  37. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +6 -4
  38. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +3 -3
  39. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +44 -47
  40. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +3 -3
  41. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +3 -3
  42. package/esm2022/gizmos/lib/transform-controls.mjs +3 -3
  43. package/esm2022/loaders/lib/loader.mjs +3 -3
  44. package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
  45. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
  46. package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
  47. package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
  48. package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
  49. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
  50. package/esm2022/materials/lib/point-material.mjs +3 -3
  51. package/esm2022/misc/lib/bake-shadows.mjs +8 -10
  52. package/esm2022/misc/lib/computed-attribute.mjs +15 -19
  53. package/esm2022/misc/lib/decal.mjs +56 -53
  54. package/esm2022/misc/lib/fbo.mjs +10 -10
  55. package/esm2022/misc/lib/html/html-content.mjs +62 -67
  56. package/esm2022/misc/lib/html/html.mjs +3 -3
  57. package/esm2022/misc/lib/intersect.mjs +6 -9
  58. package/esm2022/misc/lib/sampler.mjs +42 -42
  59. package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
  60. package/esm2022/performances/lib/adaptive-events.mjs +12 -16
  61. package/esm2022/performances/lib/detailed.mjs +14 -18
  62. package/esm2022/performances/lib/instances/instances.mjs +16 -22
  63. package/esm2022/performances/lib/points/points.mjs +19 -25
  64. package/esm2022/performances/lib/segments/segments.mjs +11 -14
  65. package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
  66. package/esm2022/staging/index.mjs +3 -2
  67. package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
  68. package/esm2022/staging/lib/backdrop.mjs +19 -23
  69. package/esm2022/staging/lib/bb-anchor.mjs +3 -3
  70. package/esm2022/staging/lib/bounds.mjs +39 -43
  71. package/esm2022/staging/lib/camera-shake.mjs +14 -18
  72. package/esm2022/staging/lib/caustics.mjs +24 -28
  73. package/esm2022/staging/lib/center.mjs +28 -32
  74. package/esm2022/staging/lib/contact-shadows.mjs +3 -3
  75. package/esm2022/staging/lib/environment/environment.mjs +338 -0
  76. package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
  77. package/esm2022/staging/lib/float.mjs +3 -3
  78. package/esm2022/staging/lib/lightformer.mjs +18 -22
  79. package/esm2022/staging/lib/mask.mjs +8 -12
  80. package/esm2022/staging/lib/matcap-texture.mjs +9 -11
  81. package/esm2022/staging/lib/normal-texture.mjs +9 -11
  82. package/esm2022/staging/lib/randomized-lights.mjs +9 -13
  83. package/esm2022/staging/lib/render-texture.mjs +19 -20
  84. package/esm2022/staging/lib/sky.mjs +3 -3
  85. package/esm2022/staging/lib/spot-light.mjs +32 -40
  86. package/esm2022/staging/lib/stage.mjs +13 -17
  87. package/esm2022/stats/lib/stats.mjs +21 -27
  88. package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
  89. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  90. package/fesm2022/angular-three-soba-cameras.mjs +57 -64
  91. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  92. package/fesm2022/angular-three-soba-controls.mjs +129 -135
  93. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-gizmos.mjs +87 -88
  95. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  97. package/fesm2022/angular-three-soba-materials.mjs +52 -62
  98. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  99. package/fesm2022/angular-three-soba-misc.mjs +188 -195
  100. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  101. package/fesm2022/angular-three-soba-performances.mjs +90 -114
  102. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  103. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  104. package/fesm2022/angular-three-soba-staging.mjs +427 -430
  105. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  106. package/fesm2022/angular-three-soba-stats.mjs +20 -26
  107. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  108. package/materials/lib/custom-shader-material.d.ts +3 -3
  109. package/materials/lib/mesh-refraction-material.d.ts +3 -3
  110. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  111. package/misc/lib/computed-attribute.d.ts +5 -5
  112. package/misc/lib/decal.d.ts +5 -5
  113. package/misc/lib/html/html-content.d.ts +6 -6
  114. package/misc/lib/html/html.d.ts +1 -1
  115. package/misc/lib/sampler.d.ts +2 -4
  116. package/package.json +12 -12
  117. package/performances/lib/instances/instances.d.ts +11 -11
  118. package/performances/lib/points/points.d.ts +20 -20
  119. package/performances/lib/segments/segments.d.ts +4 -4
  120. package/shaders/lib/mesh-refraction-material.d.ts +2 -5
  121. package/staging/index.d.ts +2 -1
  122. package/staging/lib/camera-shake.d.ts +0 -1
  123. package/staging/lib/caustics.d.ts +1 -1
  124. package/staging/lib/center.d.ts +2 -2
  125. package/staging/lib/contact-shadows.d.ts +1 -1
  126. package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
  127. package/staging/lib/environment/inject-environment.d.ts +33 -0
  128. package/staging/lib/lightformer.d.ts +1 -1
  129. package/staging/lib/mask.d.ts +1 -1
  130. package/staging/lib/matcap-texture.d.ts +0 -1
  131. package/staging/lib/normal-texture.d.ts +0 -1
  132. package/staging/lib/render-texture.d.ts +1 -1
  133. package/staging/lib/sky.d.ts +1 -1
  134. package/staging/lib/spot-light.d.ts +2 -2
  135. package/staging/lib/stage.d.ts +7 -6
  136. package/esm2022/staging/lib/environment.mjs +0 -481
@@ -18,8 +18,8 @@ export class Axis {
18
18
  this.rotation = input([0, 0, 0]);
19
19
  extend({ Group, Mesh, BoxGeometry, MeshBasicMaterial });
20
20
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: Axis, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: Axis, isStandalone: true, selector: "viewport-axis", inputs: { scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: Axis, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: Axis, isStandalone: true, selector: "viewport-axis", inputs: { scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
23
23
  <ngt-group [rotation]="rotation()">
24
24
  <ngt-mesh [position]="[0.4, 0, 0]">
25
25
  <ngt-box-geometry *args="scale()" />
@@ -28,7 +28,7 @@ export class Axis {
28
28
  </ngt-group>
29
29
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: Axis, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: Axis, decorators: [{
32
32
  type: Component,
33
33
  args: [{
34
34
  selector: 'viewport-axis',
@@ -114,8 +114,8 @@ export class AxisHead {
114
114
  event.stopPropagation();
115
115
  this.gizmoHelper.tweenCamera(event.object.position);
116
116
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AxisHead, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
118
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AxisHead, isStandalone: true, selector: "viewport-axis-head", inputs: { arcStyle: { classPropertyName: "arcStyle", publicName: "arcStyle", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelColor: { classPropertyName: "labelColor", publicName: "labelColor", isSignal: true, isRequired: false, transformFunction: null }, axisHeadScale: { classPropertyName: "axisHeadScale", publicName: "axisHeadScale", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, font: { classPropertyName: "font", publicName: "font", isSignal: true, isRequired: false, transformFunction: null }, onClick: { classPropertyName: "onClick", publicName: "onClick", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AxisHead, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: AxisHead, isStandalone: true, selector: "viewport-axis-head", inputs: { arcStyle: { classPropertyName: "arcStyle", publicName: "arcStyle", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelColor: { classPropertyName: "labelColor", publicName: "labelColor", isSignal: true, isRequired: false, transformFunction: null }, axisHeadScale: { classPropertyName: "axisHeadScale", publicName: "axisHeadScale", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, font: { classPropertyName: "font", publicName: "font", isSignal: true, isRequired: false, transformFunction: null }, onClick: { classPropertyName: "onClick", publicName: "onClick", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
119
119
  <ngt-sprite
120
120
  [scale]="scale()"
121
121
  [position]="position()"
@@ -127,7 +127,7 @@ export class AxisHead {
127
127
  </ngt-sprite>
128
128
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
129
129
  }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AxisHead, decorators: [{
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AxisHead, decorators: [{
131
131
  type: Component,
132
132
  args: [{
133
133
  selector: 'viewport-axis-head',
@@ -189,8 +189,8 @@ export class NgtsGizmoViewport {
189
189
  return getEmitter(this.click);
190
190
  return undefined;
191
191
  }
192
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsGizmoViewport, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
193
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsGizmoViewport, isStandalone: true, selector: "ngts-gizmo-viewport", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click" }, ngImport: i0, template: `
192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsGizmoViewport, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsGizmoViewport, isStandalone: true, selector: "ngts-gizmo-viewport", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click" }, ngImport: i0, template: `
194
194
  <ngt-group [scale]="40" [parameters]="parameters()">
195
195
  <viewport-axis [color]="axisColors()[0]" [rotation]="[0, 0, 0]" [scale]="axisScale()" />
196
196
  <viewport-axis [color]="axisColors()[1]" [rotation]="[0, 0, Math.PI / 2]" [scale]="axisScale()" />
@@ -255,7 +255,7 @@ export class NgtsGizmoViewport {
255
255
  </ngt-group>
256
256
  `, isInline: true, dependencies: [{ kind: "component", type: Axis, selector: "viewport-axis", inputs: ["scale", "color", "rotation"] }, { kind: "component", type: AxisHead, selector: "viewport-axis-head", inputs: ["arcStyle", "position", "label", "labelColor", "axisHeadScale", "disabled", "font", "onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
257
257
  }
258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsGizmoViewport, decorators: [{
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsGizmoViewport, decorators: [{
259
259
  type: Component,
260
260
  args: [{
261
261
  selector: 'ngts-gizmo-viewport',
@@ -124,8 +124,8 @@ export class NgtsAxisArrow {
124
124
  event.stopPropagation();
125
125
  this.hovered.set(false);
126
126
  }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAxisArrow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsAxisArrow, isStandalone: true, selector: "ngts-axis-arrow", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: true, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "annotationRef", first: true, predicate: ["annotation"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
127
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAxisArrow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
128
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsAxisArrow, isStandalone: true, selector: "ngts-axis-arrow", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: true, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "annotationRef", first: true, predicate: ["annotation"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
129
129
  <ngt-group #group>
130
130
  <ngt-group
131
131
  [matrix]="matrixL()"
@@ -145,6 +145,7 @@ export class NgtsAxisArrow {
145
145
  ></div>
146
146
  </ngts-html>
147
147
  }
148
+
148
149
  <ngt-mesh
149
150
  [visible]="false"
150
151
  [position]="[0, (cylinderLength() + coneLength()) / 2.0, 0]"
@@ -188,7 +189,7 @@ export class NgtsAxisArrow {
188
189
  </ngt-group>
189
190
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }, { kind: "component", type: NgtsHTML, selector: "ngts-html", inputs: ["options"] }, { kind: "component", type: NgtsHTMLContent, selector: "[ngtsHTMLContent]", inputs: ["ngtsHTMLContent"], outputs: ["occluded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
190
191
  }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAxisArrow, decorators: [{
192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAxisArrow, decorators: [{
192
193
  type: Component,
193
194
  args: [{
194
195
  selector: 'ngts-axis-arrow',
@@ -213,6 +214,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
213
214
  ></div>
214
215
  </ngts-html>
215
216
  }
217
+
216
218
  <ngt-mesh
217
219
  [visible]="false"
218
220
  [position]="[0, (cylinderLength() + coneLength()) / 2.0, 0]"
@@ -260,4 +262,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
260
262
  imports: [NgtArgs, NgtsLine, NgtsHTML, NgtsHTMLContent],
261
263
  }]
262
264
  }], ctorParameters: () => [] });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy1hcnJvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9naXptb3Mvc3JjL2xpYi9waXZvdC1jb250cm9scy9heGlzLWFycm93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFDTixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixLQUFLLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFDSixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE9BQU8sR0FDUCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUVyRCxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFM0IsTUFBTSxVQUFVLGVBQWUsQ0FBQyxVQUFtQixFQUFFLE1BQWUsRUFBRSxRQUFpQixFQUFFLE1BQWU7SUFDdkcsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFB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LE9BQU8sZ0ZBQUUsUUFBUSxxRkFBRSxRQUFRLDJFQUFFLGVBQWU7OzJGQUUxQyxhQUFhO2tCQXJFekIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkRUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDO2lCQUN2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHRzaWduYWwsXG5cdFNpZ25hbCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0U3RvcmUsIE5ndEFyZ3MsIE5ndFRocmVlRXZlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNMaW5lIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL2Fic3RyYWN0aW9ucyc7XG5pbXBvcnQgeyBOZ3RzSFRNTCwgTmd0c0hUTUxDb250ZW50IH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHtcblx0Q29uZUdlb21ldHJ5LFxuXHRDeWxpbmRlckdlb21ldHJ5LFxuXHREb3VibGVTaWRlLFxuXHRHcm91cCxcblx0TWF0cml4NCxcblx0TWVzaCxcblx0TWVzaEJhc2ljTWF0ZXJpYWwsXG5cdFF1YXRlcm5pb24sXG5cdFZlY3RvcjMsXG59IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNQaXZvdENvbnRyb2xzIH0gZnJvbSAnLi9waXZvdC1jb250cm9scyc7XG5cbmNvbnN0IHZlYzEgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdmVjMiA9IG5ldyBWZWN0b3IzKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQoY2xpY2tQb2ludDogVmVjdG9yMywgbm9ybWFsOiBWZWN0b3IzLCByYXlTdGFydDogVmVjdG9yMywgcmF5RGlyOiBWZWN0b3IzKSB7XG5cdGNvbnN0IGUxID0gbm9ybWFsLmRvdChub3JtYWwpO1xuXHRjb25zdCBlMiA9IG5vcm1hbC5kb3QoY2xpY2tQb2ludCkgLSBub3JtYWwuZG90KHJheVN0YXJ0KTtcblx0Y29uc3QgZTMgPSBub3JtYWwuZG90KHJheURpcik7XG5cblx0aWYgKGUzID09PSAwKSB7XG5cdFx0cmV0dXJuIC1lMiAvIGUxO1xuXHR9XG5cblx0dmVjMVxuXHRcdC5jb3B5KHJheURpcilcblx0XHQubXVsdGlwbHlTY2FsYXIoZTEgLyBlMylcblx0XHQuc3ViKG5vcm1hbCk7XG5cdHZlYzJcblx0XHQuY29weShyYXlEaXIpXG5cdFx0Lm11bHRpcGx5U2NhbGFyKGUyIC8gZTMpXG5cdFx0LmFkZChyYXlTdGFydClcblx0XHQuc3ViKGNsaWNrUG9pbnQpO1xuXG5cdHJldHVybiAtdmVjMS5kb3QodmVjMikgLyB2ZWMxLmRvdCh2ZWMxKTtcbn1cblxuY29uc3QgdXBWID0gbmV3IFZlY3RvcjMoMCwgMSwgMCk7XG5jb25zdCBvZmZzZXRNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWF4aXMtYXJyb3cnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgI2dyb3VwPlxuXHRcdFx0PG5ndC1ncm91cFxuXHRcdFx0XHRbbWF0cml4XT1cIm1hdHJpeEwoKVwiXG5cdFx0XHRcdFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCJcblx0XHRcdFx0KHBvaW50ZXJkb3duKT1cIm9uUG9pbnRlckRvd24oJGFueSgkZXZlbnQpKVwiXG5cdFx0XHRcdChwb2ludGVydXApPVwib25Qb2ludGVyVXAoJGFueSgkZXZlbnQpKVwiXG5cdFx0XHRcdChwb2ludGVybW92ZSk9XCJvblBvaW50ZXJNb3ZlKCRhbnkoJGV2ZW50KSlcIlxuXHRcdFx0XHQocG9pbnRlcm91dCk9XCJvblBvaW50ZXJPdXQoJGFueSgkZXZlbnQpKVwiXG5cdFx0XHQ+XG5cdFx0XHRcdEBpZiAocGl2b3RDb250cm9scy5hbm5vdGF0aW9ucygpKSB7XG5cdFx0XHRcdFx0PG5ndHMtaHRtbCBbb3B0aW9uc109XCJ7IHBvc2l0aW9uOiBbMCwgLWNvbmVMZW5ndGgoKSwgMF0gfVwiPlxuXHRcdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0XHQjYW5ub3RhdGlvblxuXHRcdFx0XHRcdFx0XHRuZ3RzSFRNTENvbnRlbnRcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJkaXNwbGF5OiBub25lOyBiYWNrZ3JvdW5kOiAjMTUxNTIwOyBjb2xvcjogd2hpdGU7IHBhZGRpbmc6IDZweCA4cHg7IGJvcmRlci1yYWRpdXM6IDdweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcIlxuXHRcdFx0XHRcdFx0XHRbY2xhc3NdPVwicGl2b3RDb250cm9scy5hbm5vdGF0aW9uc0NsYXNzKClcIlxuXHRcdFx0XHRcdFx0PjwvZGl2PlxuXHRcdFx0XHRcdDwvbmd0cy1odG1sPlxuXHRcdFx0XHR9XG5cdFx0XHRcdDxuZ3QtbWVzaFxuXHRcdFx0XHRcdFt2aXNpYmxlXT1cImZhbHNlXCJcblx0XHRcdFx0XHRbcG9zaXRpb25dPVwiWzAsIChjeWxpbmRlckxlbmd0aCgpICsgY29uZUxlbmd0aCgpKSAvIDIuMCwgMF1cIlxuXHRcdFx0XHRcdFt1c2VyRGF0YV09XCJwaXZvdENvbnRyb2xzLnVzZXJEYXRhKClcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PG5ndC1jeWxpbmRlci1nZW9tZXRyeVxuXHRcdFx0XHRcdFx0KmFyZ3M9XCJbY29uZVdpZHRoKCkgKiAxLjQsIGNvbmVXaWR0aCgpICogMS40LCBjeWxpbmRlckxlbmd0aCgpICsgY29uZUxlbmd0aCgpLCA4LCAxXVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9uZ3QtbWVzaD5cblxuXHRcdFx0XHQ8bmd0cy1saW5lXG5cdFx0XHRcdFx0W3BvaW50c109XCJbMCwgMCwgMCwgMCwgY3lsaW5kZXJMZW5ndGgoKSwgMF1cIlxuXHRcdFx0XHRcdFtvcHRpb25zXT1cIntcblx0XHRcdFx0XHRcdHJheWNhc3Q6IG51bGwsXG5cdFx0XHRcdFx0XHRzaWRlOiBEb3VibGVTaWRlLFxuXHRcdFx0XHRcdFx0cG9seWdvbk9mZnNldDogdHJ1ZSxcblx0XHRcdFx0XHRcdHBvbHlnb25PZmZzZXRGYWN0b3I6IC0xMCxcblx0XHRcdFx0XHRcdHJlbmRlck9yZGVyOiAxLFxuXHRcdFx0XHRcdFx0Zm9nOiBmYWxzZSxcblx0XHRcdFx0XHRcdHRyYW5zcGFyZW50OiB0cnVlLFxuXHRcdFx0XHRcdFx0bGluZVdpZHRoOiBwaXZvdENvbnRyb2xzLmxpbmVXaWR0aCgpLFxuXHRcdFx0XHRcdFx0Y29sb3I6IGNvbG9yKCksXG5cdFx0XHRcdFx0XHRvcGFjaXR5OiBwaXZvdENvbnRyb2xzLm9wYWNpdHkoKSxcblx0XHRcdFx0XHRcdGRlcHRoVGVzdDogcGl2b3RDb250cm9scy5kZXB0aFRlc3QoKSxcblx0XHRcdFx0XHR9XCJcblx0XHRcdFx0Lz5cblxuXHRcdFx0XHQ8bmd0LW1lc2ggW3JheWNhc3RdPVwibnVsbFwiIFtwb3NpdGlvbl09XCJbMCwgY3lsaW5kZXJMZW5ndGgoKSArIGNvbmVMZW5ndGgoKSAvIDIuMCwgMF1cIiBbcmVuZGVyT3JkZXJdPVwiNTAwXCI+XG5cdFx0XHRcdFx0PG5ndC1jb25lLWdlb21ldHJ5ICphcmdzPVwiW2NvbmVXaWR0aCgpLCBjb25lTGVuZ3RoKCksIDI0LCAxXVwiIC8+XG5cdFx0XHRcdFx0PG5ndC1tZXNoLWJhc2ljLW1hdGVyaWFsXG5cdFx0XHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRbZGVwdGhUZXN0XT1cInBpdm90Q29udHJvbHMuZGVwdGhUZXN0KClcIlxuXHRcdFx0XHRcdFx0W2NvbG9yXT1cImNvbG9yKClcIlxuXHRcdFx0XHRcdFx0W29wYWNpdHldPVwicGl2b3RDb250cm9scy5vcGFjaXR5KClcIlxuXHRcdFx0XHRcdFx0W3BvbHlnb25PZmZzZXRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRbcG9seWdvbk9mZnNldEZhY3Rvcl09XCItMTBcIlxuXHRcdFx0XHRcdFx0W2ZvZ109XCJmYWxzZVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9uZ3QtbWVzaD5cblx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJncywgTmd0c0xpbmUsIE5ndHNIVE1MLCBOZ3RzSFRNTENvbnRlbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQXhpc0Fycm93IHtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IERvdWJsZVNpZGUgPSBEb3VibGVTaWRlO1xuXG5cdGRpcmVjdGlvbiA9IGlucHV0LnJlcXVpcmVkPFZlY3RvcjM+KCk7XG5cdGF4aXMgPSBpbnB1dC5yZXF1aXJlZDwwIHwgMSB8IDI+KCk7XG5cblx0Z3JvdXBSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXHRhbm5vdGF0aW9uUmVmID0gdmlld0NoaWxkPHVua25vd24sIEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignYW5ub3RhdGlvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KTtcblxuXHRwaXZvdENvbnRyb2xzID0gaW5qZWN0KE5ndHNQaXZvdENvbnRyb2xzKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgY29udHJvbHMgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY29udHJvbHMnKSBhcyB1bmtub3duIGFzIFNpZ25hbDx7IGVuYWJsZWQ6IGJvb2xlYW4gfT47XG5cblx0cHJpdmF0ZSBob3ZlcmVkID0gc2lnbmFsKGZhbHNlKTtcblx0cHJpdmF0ZSBjbGlja0luZm86IHsgY2xpY2tQb2ludDogVmVjdG9yMzsgZGlyOiBWZWN0b3IzIH0gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBvZmZzZXQwID0gMDtcblxuXHRjb2xvciA9IGNvbXB1dGVkKCgpID0+XG5cdFx0dGhpcy5ob3ZlcmVkKCkgPyB0aGlzLnBpdm90Q29udHJvbHMuaG92ZXJlZENvbG9yKCkgOiB0aGlzLnBpdm90Q29udHJvbHMuYXhpc0NvbG9ycygpW3RoaXMuYXhpcygpXSxcblx0KTtcblxuXHRjb25lV2lkdGggPSBjb21wdXRlZCgoKSA9PlxuXHRcdHRoaXMucGl2b3RDb250cm9scy5maXhlZCgpXG5cdFx0XHQ/ICh0aGlzLnBpdm90Q29udHJvbHMubGluZVdpZHRoKCkgLyB0aGlzLnBpdm90Q29udHJvbHMuc2NhbGUoKSkgKiAxLjZcblx0XHRcdDogdGhpcy5waXZvdENvbnRyb2xzLnNjYWxlKCkgLyAyMCxcblx0KTtcblx0Y29uZUxlbmd0aCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnBpdm90Q29udHJvbHMuZml4ZWQoKSA/IDAuMiA6IHRoaXMucGl2b3RDb250cm9scy5zY2FsZSgpIC8gNSkpO1xuXHRjeWxpbmRlckxlbmd0aCA9IGNvbXB1dGVkKCgpID0+XG5cdFx0dGhpcy5waXZvdENvbnRyb2xzLmZpeGVkKCkgPyAxIC0gdGhpcy5jb25lTGVuZ3RoKCkgOiB0aGlzLnBpdm90Q29udHJvbHMuc2NhbGUoKSAtIHRoaXMuY29uZUxlbmd0aCgpLFxuXHQpO1xuXHRtYXRyaXhMID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHF1YXRlcm5pb24gPSBuZXcgUXVhdGVybmlvbigpLnNldEZyb21Vbml0VmVjdG9ycyh1cFYsIHRoaXMuZGlyZWN0aW9uKCkuY2xvbmUoKS5ub3JtYWxpemUoKSk7XG5cdFx0cmV0dXJuIG5ldyBNYXRyaXg0KCkubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24ocXVhdGVybmlvbik7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwLCBNZXNoLCBDb25lR2VvbWV0cnksIEN5bGluZGVyR2VvbWV0cnksIE1lc2hCYXNpY01hdGVyaWFsIH0pO1xuXHR9XG5cblx0b25Qb2ludGVyRG93bihldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSB7XG5cdFx0Y29uc3QgW2dyb3VwLCBkaXJlY3Rpb24sIGF4aXMsIGNvbnRyb2xzLCBhbm5vdGF0aW9uXSA9IFtcblx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0dGhpcy5kaXJlY3Rpb24oKSxcblx0XHRcdHRoaXMuYXhpcygpLFxuXHRcdFx0dGhpcy5jb250cm9scygpLFxuXHRcdFx0dGhpcy5hbm5vdGF0aW9uUmVmKCk/Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XTtcblxuXHRcdGlmIChhbm5vdGF0aW9uKSB7XG5cdFx0XHRhbm5vdGF0aW9uLmlubmVyVGV4dCA9IGAke3RoaXMucGl2b3RDb250cm9scy50cmFuc2xhdGlvbltheGlzXS50b0ZpeGVkKDIpfWA7XG5cdFx0XHRhbm5vdGF0aW9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXHRcdH1cblxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0Y29uc3Qgcm90YXRpb24gPSBuZXcgTWF0cml4NCgpLmV4dHJhY3RSb3RhdGlvbihncm91cC5tYXRyaXhXb3JsZCk7XG5cdFx0Y29uc3Qgb3JpZ2luID0gbmV3IFZlY3RvcjMoKS5zZXRGcm9tTWF0cml4UG9zaXRpb24oZ3JvdXAubWF0cml4V29ybGQpO1xuXHRcdGNvbnN0IGNsaWNrUG9pbnQgPSBldmVudC5wb2ludC5jbG9uZSgpO1xuXHRcdGNvbnN0IGRpciA9IGRpcmVjdGlvbi5jbG9uZSgpLmFwcGx5TWF0cml4NChyb3RhdGlvbikubm9ybWFsaXplKCk7XG5cdFx0dGhpcy5jbGlja0luZm8gPSB7IGNsaWNrUG9pbnQsIGRpciB9O1xuXHRcdHRoaXMub2Zmc2V0MCA9IHRoaXMucGl2b3RDb250cm9scy50cmFuc2xhdGlvbltheGlzXTtcblx0XHR0aGlzLnBpdm90Q29udHJvbHMub25EcmFnU3RhcnQoeyBjb21wb25lbnQ6ICdBcnJvdycsIGF4aXMsIG9yaWdpbiwgZGlyZWN0aW9uczogW2Rpcl0gfSk7XG5cdFx0aWYgKGNvbnRyb2xzKSB7XG5cdFx0XHRjb250cm9scy5lbmFibGVkID0gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIHNldFBvaW50ZXJDYXB0dXJlIGlzIG5vdCBpbiB0aGUgdHlwZSBkZWZpbml0aW9uXG5cdFx0ZXZlbnQudGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG5cdH1cblxuXHRvblBvaW50ZXJVcChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSB7XG5cdFx0Y29uc3QgW2Fubm90YXRpb24sIGNvbnRyb2xzXSA9IFt0aGlzLmFubm90YXRpb25SZWYoKT8ubmF0aXZlRWxlbWVudCwgdGhpcy5jb250cm9scygpXTtcblxuXHRcdGlmIChhbm5vdGF0aW9uKSB7XG5cdFx0XHRhbm5vdGF0aW9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cdFx0fVxuXG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5jbGlja0luZm8gPSBudWxsO1xuXHRcdHRoaXMucGl2b3RDb250cm9scy5vbkRyYWdFbmQoKTtcblx0XHRpZiAoY29udHJvbHMpIHtcblx0XHRcdGNvbnRyb2xzLmVuYWJsZWQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBzZXRQb2ludGVyQ2FwdHVyZSBpcyBub3QgaW4gdGhlIHR5cGUgZGVmaW5pdGlvblxuXHRcdGV2ZW50LnRhcmdldC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKTtcblx0fVxuXG5cdG9uUG9pbnRlck1vdmUoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pikge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0aWYgKCF0aGlzLmhvdmVyZWQoKSkge1xuXHRcdFx0dGhpcy5ob3ZlcmVkLnNldCh0cnVlKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5jbGlja0luZm8pIHtcblx0XHRcdGNvbnN0IHsgY2xpY2tQb2ludCwgZGlyIH0gPSB0aGlzLmNsaWNrSW5mbztcblx0XHRcdGNvbnN0IFt0cmFuc2xhdGlvbkxpbWl0cywgYW5ub3RhdGlvbiwgYXhpc10gPSBbXG5cdFx0XHRcdHRoaXMucGl2b3RDb250cm9scy50cmFuc2xhdGlvbkxpbWl0cygpLFxuXHRcdFx0XHR0aGlzLmFubm90YXRpb25SZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5heGlzKCksXG5cdFx0XHRdO1xuXG5cdFx0XHRjb25zdCBbbWluLCBtYXhdID0gdHJhbnNsYXRpb25MaW1pdHM/LltheGlzXSB8fCBbdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xuXG5cdFx0XHRsZXQgb2Zmc2V0ID0gY2FsY3VsYXRlT2Zmc2V0KGNsaWNrUG9pbnQsIGRpciwgZXZlbnQucmF5Lm9yaWdpbiwgZXZlbnQucmF5LmRpcmVjdGlvbik7XG5cdFx0XHRpZiAobWluICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0b2Zmc2V0ID0gTWF0aC5tYXgob2Zmc2V0LCBtaW4gLSB0aGlzLm9mZnNldDApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWF4ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0b2Zmc2V0ID0gTWF0aC5taW4ob2Zmc2V0LCBtYXggLSB0aGlzLm9mZnNldDApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnBpdm90Q29udHJvbHMudHJhbnNsYXRpb25bYXhpc10gPSB0aGlzLm9mZnNldDAgKyBvZmZzZXQ7XG5cblx0XHRcdGlmIChhbm5vdGF0aW9uKSB7XG5cdFx0XHRcdGFubm90YXRpb24uaW5uZXJUZXh0ID0gYCR7dGhpcy5waXZvdENvbnRyb2xzLnRyYW5zbGF0aW9uW2F4aXNdLnRvRml4ZWQoMil9YDtcblx0XHRcdH1cblxuXHRcdFx0b2Zmc2V0TWF0cml4Lm1ha2VUcmFuc2xhdGlvbihkaXIueCAqIG9mZnNldCwgZGlyLnkgKiBvZmZzZXQsIGRpci56ICogb2Zmc2V0KTtcblx0XHRcdHRoaXMucGl2b3RDb250cm9scy5vbkRyYWcob2Zmc2V0TWF0cml4KTtcblx0XHR9XG5cdH1cblxuXHRvblBvaW50ZXJPdXQoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pikge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuaG92ZXJlZC5zZXQoZmFsc2UpO1xuXHR9XG59XG4iXX0=
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy1hcnJvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9naXptb3Mvc3JjL2xpYi9waXZvdC1jb250cm9scy9heGlzLWFycm93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFDTixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixLQUFLLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFDSixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE9BQU8sR0FDUCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUVyRCxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFM0IsTUFBTSxVQUFVLGVBQWUsQ0FBQyxVQUFtQixFQUFFLE1BQWUsRUFBRSxRQUFpQixFQUFFLE1BQWU7SUFDdkcsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFB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UyxPQUFPLGdGQUFFLFFBQVEscUZBQUUsUUFBUSwyRUFBRSxlQUFlOzsyRkFFMUMsYUFBYTtrQkF0RXpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE4RFQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUM7aUJBQ3ZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHNpZ25hbCxcblx0U2lnbmFsLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RTdG9yZSwgTmd0QXJncywgTmd0VGhyZWVFdmVudCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0c0xpbmUgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvYWJzdHJhY3Rpb25zJztcbmltcG9ydCB7IE5ndHNIVE1MLCBOZ3RzSFRNTENvbnRlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvbWlzYyc7XG5pbXBvcnQge1xuXHRDb25lR2VvbWV0cnksXG5cdEN5bGluZGVyR2VvbWV0cnksXG5cdERvdWJsZVNpZGUsXG5cdEdyb3VwLFxuXHRNYXRyaXg0LFxuXHRNZXNoLFxuXHRNZXNoQmFzaWNNYXRlcmlhbCxcblx0UXVhdGVybmlvbixcblx0VmVjdG9yMyxcbn0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c1Bpdm90Q29udHJvbHMgfSBmcm9tICcuL3Bpdm90LWNvbnRyb2xzJztcblxuY29uc3QgdmVjMSA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2ZWMyID0gbmV3IFZlY3RvcjMoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZU9mZnNldChjbGlja1BvaW50OiBWZWN0b3IzLCBub3JtYWw6IFZlY3RvcjMsIHJheVN0YXJ0OiBWZWN0b3IzLCByYXlEaXI6IFZlY3RvcjMpIHtcblx0Y29uc3QgZTEgPSBub3JtYWwuZG90KG5vcm1hbCk7XG5cdGNvbnN0IGUyID0gbm9ybWFsLmRvdChjbGlja1BvaW50KSAtIG5vcm1hbC5kb3QocmF5U3RhcnQpO1xuXHRjb25zdCBlMyA9IG5vcm1hbC5kb3QocmF5RGlyKTtcblxuXHRpZiAoZTMgPT09IDApIHtcblx0XHRyZXR1cm4gLWUyIC8gZTE7XG5cdH1cblxuXHR2ZWMxXG5cdFx0LmNvcHkocmF5RGlyKVxuXHRcdC5tdWx0aXBseVNjYWxhcihlMSAvIGUzKVxuXHRcdC5zdWIobm9ybWFsKTtcblx0dmVjMlxuXHRcdC5jb3B5KHJheURpcilcblx0XHQubXVsdGlwbHlTY2FsYXIoZTIgLyBlMylcblx0XHQuYWRkKHJheVN0YXJ0KVxuXHRcdC5zdWIoY2xpY2tQb2ludCk7XG5cblx0cmV0dXJuIC12ZWMxLmRvdCh2ZWMyKSAvIHZlYzEuZG90KHZlYzEpO1xufVxuXG5jb25zdCB1cFYgPSBuZXcgVmVjdG9yMygwLCAxLCAwKTtcbmNvbnN0IG9mZnNldE1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtYXhpcy1hcnJvdycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjZ3JvdXA+XG5cdFx0XHQ8bmd0LWdyb3VwXG5cdFx0XHRcdFttYXRyaXhdPVwibWF0cml4TCgpXCJcblx0XHRcdFx0W21hdHJpeEF1dG9VcGRhdGVdPVwiZmFsc2VcIlxuXHRcdFx0XHQocG9pbnRlcmRvd24pPVwib25Qb2ludGVyRG93bigkYW55KCRldmVudCkpXCJcblx0XHRcdFx0KHBvaW50ZXJ1cCk9XCJvblBvaW50ZXJVcCgkYW55KCRldmVudCkpXCJcblx0XHRcdFx0KHBvaW50ZXJtb3ZlKT1cIm9uUG9pbnRlck1vdmUoJGFueSgkZXZlbnQpKVwiXG5cdFx0XHRcdChwb2ludGVyb3V0KT1cIm9uUG9pbnRlck91dCgkYW55KCRldmVudCkpXCJcblx0XHRcdD5cblx0XHRcdFx0QGlmIChwaXZvdENvbnRyb2xzLmFubm90YXRpb25zKCkpIHtcblx0XHRcdFx0XHQ8bmd0cy1odG1sIFtvcHRpb25zXT1cInsgcG9zaXRpb246IFswLCAtY29uZUxlbmd0aCgpLCAwXSB9XCI+XG5cdFx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRcdCNhbm5vdGF0aW9uXG5cdFx0XHRcdFx0XHRcdG5ndHNIVE1MQ29udGVudFxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cImRpc3BsYXk6IG5vbmU7IGJhY2tncm91bmQ6ICMxNTE1MjA7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogNnB4IDhweDsgYm9yZGVyLXJhZGl1czogN3B4OyB3aGl0ZS1zcGFjZTogbm93cmFwO1wiXG5cdFx0XHRcdFx0XHRcdFtjbGFzc109XCJwaXZvdENvbnRyb2xzLmFubm90YXRpb25zQ2xhc3MoKVwiXG5cdFx0XHRcdFx0XHQ+PC9kaXY+XG5cdFx0XHRcdFx0PC9uZ3RzLWh0bWw+XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQ8bmd0LW1lc2hcblx0XHRcdFx0XHRbdmlzaWJsZV09XCJmYWxzZVwiXG5cdFx0XHRcdFx0W3Bvc2l0aW9uXT1cIlswLCAoY3lsaW5kZXJMZW5ndGgoKSArIGNvbmVMZW5ndGgoKSkgLyAyLjAsIDBdXCJcblx0XHRcdFx0XHRbdXNlckRhdGFdPVwicGl2b3RDb250cm9scy51c2VyRGF0YSgpXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxuZ3QtY3lsaW5kZXItZ2VvbWV0cnlcblx0XHRcdFx0XHRcdCphcmdzPVwiW2NvbmVXaWR0aCgpICogMS40LCBjb25lV2lkdGgoKSAqIDEuNCwgY3lsaW5kZXJMZW5ndGgoKSArIGNvbmVMZW5ndGgoKSwgOCwgMV1cIlxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvbmd0LW1lc2g+XG5cblx0XHRcdFx0PG5ndHMtbGluZVxuXHRcdFx0XHRcdFtwb2ludHNdPVwiWzAsIDAsIDAsIDAsIGN5bGluZGVyTGVuZ3RoKCksIDBdXCJcblx0XHRcdFx0XHRbb3B0aW9uc109XCJ7XG5cdFx0XHRcdFx0XHRyYXljYXN0OiBudWxsLFxuXHRcdFx0XHRcdFx0c2lkZTogRG91YmxlU2lkZSxcblx0XHRcdFx0XHRcdHBvbHlnb25PZmZzZXQ6IHRydWUsXG5cdFx0XHRcdFx0XHRwb2x5Z29uT2Zmc2V0RmFjdG9yOiAtMTAsXG5cdFx0XHRcdFx0XHRyZW5kZXJPcmRlcjogMSxcblx0XHRcdFx0XHRcdGZvZzogZmFsc2UsXG5cdFx0XHRcdFx0XHR0cmFuc3BhcmVudDogdHJ1ZSxcblx0XHRcdFx0XHRcdGxpbmVXaWR0aDogcGl2b3RDb250cm9scy5saW5lV2lkdGgoKSxcblx0XHRcdFx0XHRcdGNvbG9yOiBjb2xvcigpLFxuXHRcdFx0XHRcdFx0b3BhY2l0eTogcGl2b3RDb250cm9scy5vcGFjaXR5KCksXG5cdFx0XHRcdFx0XHRkZXB0aFRlc3Q6IHBpdm90Q29udHJvbHMuZGVwdGhUZXN0KCksXG5cdFx0XHRcdFx0fVwiXG5cdFx0XHRcdC8+XG5cblx0XHRcdFx0PG5ndC1tZXNoIFtyYXljYXN0XT1cIm51bGxcIiBbcG9zaXRpb25dPVwiWzAsIGN5bGluZGVyTGVuZ3RoKCkgKyBjb25lTGVuZ3RoKCkgLyAyLjAsIDBdXCIgW3JlbmRlck9yZGVyXT1cIjUwMFwiPlxuXHRcdFx0XHRcdDxuZ3QtY29uZS1nZW9tZXRyeSAqYXJncz1cIltjb25lV2lkdGgoKSwgY29uZUxlbmd0aCgpLCAyNCwgMV1cIiAvPlxuXHRcdFx0XHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuXHRcdFx0XHRcdFx0W3RyYW5zcGFyZW50XT1cInRydWVcIlxuXHRcdFx0XHRcdFx0W2RlcHRoVGVzdF09XCJwaXZvdENvbnRyb2xzLmRlcHRoVGVzdCgpXCJcblx0XHRcdFx0XHRcdFtjb2xvcl09XCJjb2xvcigpXCJcblx0XHRcdFx0XHRcdFtvcGFjaXR5XT1cInBpdm90Q29udHJvbHMub3BhY2l0eSgpXCJcblx0XHRcdFx0XHRcdFtwb2x5Z29uT2Zmc2V0XT1cInRydWVcIlxuXHRcdFx0XHRcdFx0W3BvbHlnb25PZmZzZXRGYWN0b3JdPVwiLTEwXCJcblx0XHRcdFx0XHRcdFtmb2ddPVwiZmFsc2VcIlxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvbmd0LW1lc2g+XG5cdFx0XHQ8L25ndC1ncm91cD5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5ndHNMaW5lLCBOZ3RzSFRNTCwgTmd0c0hUTUxDb250ZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0F4aXNBcnJvdyB7XG5cdHByb3RlY3RlZCByZWFkb25seSBEb3VibGVTaWRlID0gRG91YmxlU2lkZTtcblxuXHRkaXJlY3Rpb24gPSBpbnB1dC5yZXF1aXJlZDxWZWN0b3IzPigpO1xuXHRheGlzID0gaW5wdXQucmVxdWlyZWQ8MCB8IDEgfCAyPigpO1xuXG5cdGdyb3VwUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ3JvdXAnKTtcblx0YW5ub3RhdGlvblJlZiA9IHZpZXdDaGlsZDx1bmtub3duLCBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ2Fubm90YXRpb24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSk7XG5cblx0cGl2b3RDb250cm9scyA9IGluamVjdChOZ3RzUGl2b3RDb250cm9scyk7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGNvbnRyb2xzID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2NvbnRyb2xzJykgYXMgdW5rbm93biBhcyBTaWduYWw8eyBlbmFibGVkOiBib29sZWFuIH0+O1xuXG5cdHByaXZhdGUgaG92ZXJlZCA9IHNpZ25hbChmYWxzZSk7XG5cdHByaXZhdGUgY2xpY2tJbmZvOiB7IGNsaWNrUG9pbnQ6IFZlY3RvcjM7IGRpcjogVmVjdG9yMyB9IHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgb2Zmc2V0MCA9IDA7XG5cblx0Y29sb3IgPSBjb21wdXRlZCgoKSA9PlxuXHRcdHRoaXMuaG92ZXJlZCgpID8gdGhpcy5waXZvdENvbnRyb2xzLmhvdmVyZWRDb2xvcigpIDogdGhpcy5waXZvdENvbnRyb2xzLmF4aXNDb2xvcnMoKVt0aGlzLmF4aXMoKV0sXG5cdCk7XG5cblx0Y29uZVdpZHRoID0gY29tcHV0ZWQoKCkgPT5cblx0XHR0aGlzLnBpdm90Q29udHJvbHMuZml4ZWQoKVxuXHRcdFx0PyAodGhpcy5waXZvdENvbnRyb2xzLmxpbmVXaWR0aCgpIC8gdGhpcy5waXZvdENvbnRyb2xzLnNjYWxlKCkpICogMS42XG5cdFx0XHQ6IHRoaXMucGl2b3RDb250cm9scy5zY2FsZSgpIC8gMjAsXG5cdCk7XG5cdGNvbmVMZW5ndGggPSBjb21wdXRlZCgoKSA9PiAodGhpcy5waXZvdENvbnRyb2xzLmZpeGVkKCkgPyAwLjIgOiB0aGlzLnBpdm90Q29udHJvbHMuc2NhbGUoKSAvIDUpKTtcblx0Y3lsaW5kZXJMZW5ndGggPSBjb21wdXRlZCgoKSA9PlxuXHRcdHRoaXMucGl2b3RDb250cm9scy5maXhlZCgpID8gMSAtIHRoaXMuY29uZUxlbmd0aCgpIDogdGhpcy5waXZvdENvbnRyb2xzLnNjYWxlKCkgLSB0aGlzLmNvbmVMZW5ndGgoKSxcblx0KTtcblx0bWF0cml4TCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBxdWF0ZXJuaW9uID0gbmV3IFF1YXRlcm5pb24oKS5zZXRGcm9tVW5pdFZlY3RvcnModXBWLCB0aGlzLmRpcmVjdGlvbigpLmNsb25lKCkubm9ybWFsaXplKCkpO1xuXHRcdHJldHVybiBuZXcgTWF0cml4NCgpLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHF1YXRlcm5pb24pO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBHcm91cCwgTWVzaCwgQ29uZUdlb21ldHJ5LCBDeWxpbmRlckdlb21ldHJ5LCBNZXNoQmFzaWNNYXRlcmlhbCB9KTtcblx0fVxuXG5cdG9uUG9pbnRlckRvd24oZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pikge1xuXHRcdGNvbnN0IFtncm91cCwgZGlyZWN0aW9uLCBheGlzLCBjb250cm9scywgYW5ub3RhdGlvbl0gPSBbXG5cdFx0XHR0aGlzLmdyb3VwUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuZGlyZWN0aW9uKCksXG5cdFx0XHR0aGlzLmF4aXMoKSxcblx0XHRcdHRoaXMuY29udHJvbHMoKSxcblx0XHRcdHRoaXMuYW5ub3RhdGlvblJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdF07XG5cblx0XHRpZiAoYW5ub3RhdGlvbikge1xuXHRcdFx0YW5ub3RhdGlvbi5pbm5lclRleHQgPSBgJHt0aGlzLnBpdm90Q29udHJvbHMudHJhbnNsYXRpb25bYXhpc10udG9GaXhlZCgyKX1gO1xuXHRcdFx0YW5ub3RhdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblx0XHR9XG5cblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdGNvbnN0IHJvdGF0aW9uID0gbmV3IE1hdHJpeDQoKS5leHRyYWN0Um90YXRpb24oZ3JvdXAubWF0cml4V29ybGQpO1xuXHRcdGNvbnN0IG9yaWdpbiA9IG5ldyBWZWN0b3IzKCkuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGdyb3VwLm1hdHJpeFdvcmxkKTtcblx0XHRjb25zdCBjbGlja1BvaW50ID0gZXZlbnQucG9pbnQuY2xvbmUoKTtcblx0XHRjb25zdCBkaXIgPSBkaXJlY3Rpb24uY2xvbmUoKS5hcHBseU1hdHJpeDQocm90YXRpb24pLm5vcm1hbGl6ZSgpO1xuXHRcdHRoaXMuY2xpY2tJbmZvID0geyBjbGlja1BvaW50LCBkaXIgfTtcblx0XHR0aGlzLm9mZnNldDAgPSB0aGlzLnBpdm90Q29udHJvbHMudHJhbnNsYXRpb25bYXhpc107XG5cdFx0dGhpcy5waXZvdENvbnRyb2xzLm9uRHJhZ1N0YXJ0KHsgY29tcG9uZW50OiAnQXJyb3cnLCBheGlzLCBvcmlnaW4sIGRpcmVjdGlvbnM6IFtkaXJdIH0pO1xuXHRcdGlmIChjb250cm9scykge1xuXHRcdFx0Y29udHJvbHMuZW5hYmxlZCA9IGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBzZXRQb2ludGVyQ2FwdHVyZSBpcyBub3QgaW4gdGhlIHR5cGUgZGVmaW5pdGlvblxuXHRcdGV2ZW50LnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpO1xuXHR9XG5cblx0b25Qb2ludGVyVXAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pikge1xuXHRcdGNvbnN0IFthbm5vdGF0aW9uLCBjb250cm9sc10gPSBbdGhpcy5hbm5vdGF0aW9uUmVmKCk/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuY29udHJvbHMoKV07XG5cblx0XHRpZiAoYW5ub3RhdGlvbikge1xuXHRcdFx0YW5ub3RhdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdH1cblxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuY2xpY2tJbmZvID0gbnVsbDtcblx0XHR0aGlzLnBpdm90Q29udHJvbHMub25EcmFnRW5kKCk7XG5cdFx0aWYgKGNvbnRyb2xzKSB7XG5cdFx0XHRjb250cm9scy5lbmFibGVkID0gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gc2V0UG9pbnRlckNhcHR1cmUgaXMgbm90IGluIHRoZSB0eXBlIGRlZmluaXRpb25cblx0XHRldmVudC50YXJnZXQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG5cdH1cblxuXHRvblBvaW50ZXJNb3ZlKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pIHtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdGlmICghdGhpcy5ob3ZlcmVkKCkpIHtcblx0XHRcdHRoaXMuaG92ZXJlZC5zZXQodHJ1ZSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuY2xpY2tJbmZvKSB7XG5cdFx0XHRjb25zdCB7IGNsaWNrUG9pbnQsIGRpciB9ID0gdGhpcy5jbGlja0luZm87XG5cdFx0XHRjb25zdCBbdHJhbnNsYXRpb25MaW1pdHMsIGFubm90YXRpb24sIGF4aXNdID0gW1xuXHRcdFx0XHR0aGlzLnBpdm90Q29udHJvbHMudHJhbnNsYXRpb25MaW1pdHMoKSxcblx0XHRcdFx0dGhpcy5hbm5vdGF0aW9uUmVmKCk/Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuYXhpcygpLFxuXHRcdFx0XTtcblxuXHRcdFx0Y29uc3QgW21pbiwgbWF4XSA9IHRyYW5zbGF0aW9uTGltaXRzPy5bYXhpc10gfHwgW3VuZGVmaW5lZCwgdW5kZWZpbmVkXTtcblxuXHRcdFx0bGV0IG9mZnNldCA9IGNhbGN1bGF0ZU9mZnNldChjbGlja1BvaW50LCBkaXIsIGV2ZW50LnJheS5vcmlnaW4sIGV2ZW50LnJheS5kaXJlY3Rpb24pO1xuXHRcdFx0aWYgKG1pbiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdG9mZnNldCA9IE1hdGgubWF4KG9mZnNldCwgbWluIC0gdGhpcy5vZmZzZXQwKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1heCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdG9mZnNldCA9IE1hdGgubWluKG9mZnNldCwgbWF4IC0gdGhpcy5vZmZzZXQwKTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5waXZvdENvbnRyb2xzLnRyYW5zbGF0aW9uW2F4aXNdID0gdGhpcy5vZmZzZXQwICsgb2Zmc2V0O1xuXG5cdFx0XHRpZiAoYW5ub3RhdGlvbikge1xuXHRcdFx0XHRhbm5vdGF0aW9uLmlubmVyVGV4dCA9IGAke3RoaXMucGl2b3RDb250cm9scy50cmFuc2xhdGlvbltheGlzXS50b0ZpeGVkKDIpfWA7XG5cdFx0XHR9XG5cblx0XHRcdG9mZnNldE1hdHJpeC5tYWtlVHJhbnNsYXRpb24oZGlyLnggKiBvZmZzZXQsIGRpci55ICogb2Zmc2V0LCBkaXIueiAqIG9mZnNldCk7XG5cdFx0XHR0aGlzLnBpdm90Q29udHJvbHMub25EcmFnKG9mZnNldE1hdHJpeCk7XG5cdFx0fVxuXHR9XG5cblx0b25Qb2ludGVyT3V0KGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pIHtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLmhvdmVyZWQuc2V0KGZhbHNlKTtcblx0fVxufVxuIl19
@@ -163,8 +163,8 @@ export class NgtsAxisRotator {
163
163
  event.stopPropagation();
164
164
  this.hovered.set(false);
165
165
  }
166
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAxisRotator, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
167
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsAxisRotator, isStandalone: true, selector: "ngts-axis-rotator", inputs: { dir1: { classPropertyName: "dir1", publicName: "dir1", isSignal: true, isRequired: true, transformFunction: null }, dir2: { classPropertyName: "dir2", publicName: "dir2", isSignal: true, isRequired: true, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "annotationRef", first: true, predicate: ["annotation"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAxisRotator, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
167
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsAxisRotator, isStandalone: true, selector: "ngts-axis-rotator", inputs: { dir1: { classPropertyName: "dir1", publicName: "dir1", isSignal: true, isRequired: true, transformFunction: null }, dir2: { classPropertyName: "dir2", publicName: "dir2", isSignal: true, isRequired: true, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "annotationRef", first: true, predicate: ["annotation"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
168
168
  <ngt-group
169
169
  #group
170
170
  [matrix]="matrixL()"
@@ -208,7 +208,7 @@ export class NgtsAxisRotator {
208
208
  </ngt-group>
209
209
  `, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }, { kind: "component", type: NgtsHTML, selector: "ngts-html", inputs: ["options"] }, { kind: "component", type: NgtsHTMLContent, selector: "[ngtsHTMLContent]", inputs: ["ngtsHTMLContent"], outputs: ["occluded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
210
210
  }
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAxisRotator, decorators: [{
211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAxisRotator, decorators: [{
212
212
  type: Component,
213
213
  args: [{
214
214
  selector: 'ngts-axis-rotator',
@@ -1,7 +1,6 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input, output, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, input, output, viewChild, } from '@angular/core';
2
2
  import { extend, getLocalState, injectBeforeRender, injectStore, omit, pick } from 'angular-three';
3
3
  import { calculateScaleFactor } from 'angular-three-soba/misc';
4
- import { injectAutoEffect } from 'ngxtension/auto-effect';
5
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
5
  import { Box3, Group, Matrix4, Vector3 } from 'three';
7
6
  import { NgtsAxisArrow } from './axis-arrow';
@@ -48,6 +47,7 @@ const defaultOptions = {
48
47
  opacity: 1,
49
48
  visible: true,
50
49
  };
50
+ // TODO: PivotControls is not working properly with control flow
51
51
  export class NgtsPivotControls {
52
52
  constructor() {
53
53
  this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
@@ -119,49 +119,46 @@ export class NgtsPivotControls {
119
119
  this.cameraScale = new Vector3(1, 1, 1);
120
120
  this.gizmoScale = new Vector3(1, 1, 1);
121
121
  extend({ Group });
122
- const autoEffect = injectAutoEffect();
123
- afterNextRender(() => {
124
- autoEffect(() => {
125
- const anchor = this.anchor();
126
- if (!anchor)
127
- return;
128
- const children = this.childrenRef().nativeElement;
129
- const localState = getLocalState(children);
130
- if (!localState)
122
+ effect(() => {
123
+ const anchor = this.anchor();
124
+ if (!anchor)
125
+ return;
126
+ const childrenContainer = this.childrenRef().nativeElement;
127
+ const localState = getLocalState(childrenContainer);
128
+ if (!localState)
129
+ return;
130
+ const [gizmo, offset, invalidate] = [
131
+ this.gizmoRef().nativeElement,
132
+ this.offset(),
133
+ this.invalidate(),
134
+ this.options(),
135
+ [localState.objects(), localState.nonObjects()],
136
+ ];
137
+ childrenContainer.updateWorldMatrix(true, true);
138
+ mPInv.copy(childrenContainer.matrixWorld).invert();
139
+ bb.makeEmpty();
140
+ childrenContainer.traverse((obj) => {
141
+ if (!obj.geometry)
131
142
  return;
132
- const [gizmo, offset, invalidate] = [
133
- this.gizmoRef().nativeElement,
134
- this.offset(),
135
- this.invalidate(),
136
- this.options(),
137
- localState.objects(),
138
- ];
139
- children.updateWorldMatrix(true, true);
140
- mPInv.copy(children.matrixWorld).invert();
141
- bb.makeEmpty();
142
- children.traverse((obj) => {
143
- if (!obj.geometry)
144
- return;
145
- if (!obj.geometry.boundingBox)
146
- obj.geometry.computeBoundingBox();
147
- mL.copy(obj.matrixWorld).premultiply(mPInv);
148
- const boundingBox = obj.geometry.boundingBox;
149
- if (boundingBox) {
150
- bbObj.copy(boundingBox);
151
- bbObj.applyMatrix4(mL);
152
- bb.union(bbObj);
153
- }
154
- });
155
- vCenter.copy(bb.max).add(bb.min).multiplyScalar(0.5);
156
- vSize.copy(bb.max).sub(bb.min).multiplyScalar(0.5);
157
- vAnchorOffset
158
- .copy(vSize)
159
- .multiply(new Vector3(...anchor))
160
- .add(vCenter);
161
- vPosition.set(...offset).add(vAnchorOffset);
162
- gizmo.position.copy(vPosition);
163
- invalidate();
143
+ if (!obj.geometry.boundingBox)
144
+ obj.geometry.computeBoundingBox();
145
+ mL.copy(obj.matrixWorld).premultiply(mPInv);
146
+ const boundingBox = obj.geometry.boundingBox;
147
+ if (boundingBox) {
148
+ bbObj.copy(boundingBox);
149
+ bbObj.applyMatrix4(mL);
150
+ bb.union(bbObj);
151
+ }
164
152
  });
153
+ vCenter.copy(bb.max).add(bb.min).multiplyScalar(0.5);
154
+ vSize.copy(bb.max).sub(bb.min).multiplyScalar(0.5);
155
+ vAnchorOffset
156
+ .copy(vSize)
157
+ .multiply(new Vector3(...anchor))
158
+ .add(vCenter);
159
+ vPosition.set(...offset).add(vAnchorOffset);
160
+ gizmo.position.copy(vPosition);
161
+ invalidate();
165
162
  });
166
163
  const vec = new Vector3();
167
164
  injectBeforeRender(({ camera, size, invalidate }) => {
@@ -221,8 +218,8 @@ export class NgtsPivotControls {
221
218
  this.dragEnded.emit();
222
219
  this.store.snapshot.invalidate();
223
220
  }
224
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPivotControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
225
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsPivotControls, isStandalone: true, selector: "ngts-pivot-controls", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragStarted: "dragStarted", dragEnded: "dragEnded", dragged: "dragged" }, viewQueries: [{ propertyName: "parentRef", first: true, predicate: ["parent"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "gizmoRef", first: true, predicate: ["gizmo"], descendants: true, isSignal: true }, { propertyName: "childrenRef", first: true, predicate: ["children"], descendants: true, isSignal: true }], ngImport: i0, template: `
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPivotControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsPivotControls, isStandalone: true, selector: "ngts-pivot-controls", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragStarted: "dragStarted", dragEnded: "dragEnded", dragged: "dragged" }, viewQueries: [{ propertyName: "parentRef", first: true, predicate: ["parent"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "gizmoRef", first: true, predicate: ["gizmo"], descendants: true, isSignal: true }, { propertyName: "childrenRef", first: true, predicate: ["children"], descendants: true, isSignal: true }], ngImport: i0, template: `
226
223
  <ngt-group #parent>
227
224
  <ngt-group #group [matrix]="matrix()" [matrixAutoUpdate]="false" [parameters]="parameters()">
228
225
  <ngt-group #gizmo [visible]="visible()" [position]="offset()" [rotation]="rotation()">
@@ -275,7 +272,7 @@ export class NgtsPivotControls {
275
272
  </ngt-group>
276
273
  `, isInline: true, dependencies: [{ kind: "component", type: NgtsAxisArrow, selector: "ngts-axis-arrow", inputs: ["direction", "axis"] }, { kind: "component", type: NgtsPlaneSlider, selector: "ngts-plane-slider", inputs: ["dir1", "dir2", "axis"] }, { kind: "component", type: NgtsAxisRotator, selector: "ngts-axis-rotator", inputs: ["dir1", "dir2", "axis"] }, { kind: "component", type: NgtsScalingSphere, selector: "ngts-scaling-sphere", inputs: ["direction", "axis"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
277
274
  }
278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPivotControls, decorators: [{
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPivotControls, decorators: [{
279
276
  type: Component,
280
277
  args: [{
281
278
  selector: 'ngts-pivot-controls',
@@ -337,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
337
334
  imports: [NgtsAxisArrow, NgtsPlaneSlider, NgtsAxisRotator, NgtsScalingSphere],
338
335
  }]
339
336
  }], ctorParameters: () => [] });
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9saWIvcGl2b3QtY29udHJvbHMvcGl2b3QtY29udHJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHNCQUFzQixFQUV0QixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQWdCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWdCckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxP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QUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xDLENBQUM7OEdBdk1XLGlCQUFpQjtrR0FBakIsaUJBQWlCLHF0QkF4RG5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtRFQsNERBR1MsYUFBYSwyRkFBRSxlQUFlLGdHQUFFLGVBQWUsZ0dBQUUsaUJBQWlCOzsyRkFFaEUsaUJBQWlCO2tCQTNEN0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtRFQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztpQkFDN0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHRvdXRwdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIE5ndEFueVJlY29yZCwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY2FsY3VsYXRlU2NhbGVGYWN0b3IgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvbWlzYyc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBCb3gzLCBHcm91cCwgTWF0cml4NCwgTWVzaCwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNBeGlzQXJyb3cgfSBmcm9tICcuL2F4aXMtYXJyb3cnO1xuaW1wb3J0IHsgTmd0c0F4aXNSb3RhdG9yIH0gZnJvbSAnLi9heGlzLXJvdGF0b3InO1xuaW1wb3J0IHsgTmd0c1BsYW5lU2xpZGVyIH0gZnJvbSAnLi9wbGFuZS1zbGlkZXInO1xuaW1wb3J0IHsgTmd0c1NjYWxpbmdTcGhlcmUgfSBmcm9tICcuL3NjYWxpbmctc3BoZXJlJztcblxuZXhwb3J0IGludGVyZmFjZSBPbkRyYWdTdGFydFBhcmFtZXRlcnMge1xuXHRjb21wb25lbnQ6ICdBcnJvdycgfCAnU2xpZGVyJyB8ICdSb3RhdG9yJyB8ICdTcGhlcmUnO1xuXHRheGlzOiAwIHwgMSB8IDI7XG5cdG9yaWdpbjogVmVjdG9yMztcblx0ZGlyZWN0aW9uczogVmVjdG9yM1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uRHJhZ1BhcmFtZXRlcnMge1xuXHRsOiBNYXRyaXg0O1xuXHRkZWx0YUw6IE1hdHJpeDQ7XG5cdHc6IE1hdHJpeDQ7XG5cdGRlbHRhVzogTWF0cml4NDtcbn1cblxuY29uc3QgbUwwID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IG1XMCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtUCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtUEludiA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtVyA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtTCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtTDBJbnYgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbWRMID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IG1HID0gbmV3IE1hdHJpeDQoKTtcblxuY29uc3QgYmIgPSBuZXcgQm94MygpO1xuY29uc3QgYmJPYmogPSBuZXcgQm94MygpO1xuY29uc3QgdkNlbnRlciA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2U2l6ZSA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2QW5jaG9yT2Zmc2V0ID0gbmV3IFZlY3RvcjMoKTtcbmNvbnN0IHZQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2U2NhbGUgPSBuZXcgVmVjdG9yMygpO1xuXG5jb25zdCB4RGlyID0gbmV3IFZlY3RvcjMoMSwgMCwgMCk7XG5jb25zdCB5RGlyID0gbmV3IFZlY3RvcjMoMCwgMSwgMCk7XG5jb25zdCB6RGlyID0gbmV3IFZlY3RvcjMoMCwgMCwgMSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1Bpdm90Q29udHJvbHNPcHRpb25zIHtcblx0LyoqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGNvbnRyb2wsIHRydWUgKi9cblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0LyoqIFNjYWxlIG9mIHRoZSBnaXptbywgMSAqL1xuXHRzY2FsZTogbnVtYmVyO1xuXHQvKiogV2lkdGggb2YgdGhlIGdpem1vIGxpbmVzLCB0aGlzIGlzIGEgVEhSRUUuTGluZTIgcHJvcCwgMi41ICovXG5cdGxpbmVXaWR0aDogbnVtYmVyO1xuXHQvKiogSWYgZml4ZWQgaXMgdHJ1ZSBpcyByZW1haW5zIGNvbnN0YW50IGluIHNpemUsIHNjYWxlIGlzIG5vdyBpbiBwaXhlbHMsIGZhbHNlICovXG5cdGZpeGVkOiBib29sZWFuO1xuXHQvKiogUGl2b3QgZG9lcyBub3QgYWN0IGFzIGEgZ3JvdXAsIGl0IHdvbid0IHNoaWZ0IGNvbnRlbnRzIGJ1dCBjYW4gb2Zmc2V0IGluIHBvc2l0aW9uICovXG5cdG9mZnNldDogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXHQvKiogU3RhcnRpbmcgcm90YXRpb24gKi9cblx0cm90YXRpb246IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuXHQvKiogU3RhcnRpbmcgbWF0cml4ICovXG5cdG1hdHJpeD86IE1hdHJpeDQ7XG5cdC8qKiBCQkFuY2hvciwgZWFjaCBheGlzIGNhbiBiZSBiZXR3ZWVuIC0xLzAvKzEgKi9cblx0YW5jaG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXHQvKiogSWYgYXV0b1RyYW5zZm9ybSBpcyB0cnVlLCBhdXRvbWF0aWNhbGx5IGFwcGx5IHRoZSBsb2NhbCB0cmFuc2Zvcm0gb24gZHJhZywgdHJ1ZSAqL1xuXHRhdXRvVHJhbnNmb3JtOiBib29sZWFuO1xuXHQvKiogQWxsb3dzIHlvdSB0byBzd2l0Y2ggaW5kaXZpZHVhbCBheGVzIG9mZiAqL1xuXHRhY3RpdmVBeGVzOiBbYm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbl07XG5cblx0LyoqIEFsbG93cyB5b3UgdG8gc3dpdGNoIGluZGl2aWR1YWwgdHJhbnNmb3JtYXRpb25zIG9mZiAqL1xuXHRkaXNhYmxlQXhlczogYm9vbGVhbjtcblx0ZGlzYWJsZVNsaWRlcnM6IGJvb2xlYW47XG5cdGRpc2FibGVSb3RhdGlvbnM6IGJvb2xlYW47XG5cdGRpc2FibGVTY2FsaW5nOiBib29sZWFuO1xuXG5cdC8qKiBMaW1pdHMgKi9cblx0dHJhbnNsYXRpb25MaW1pdHM/OiBbW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZF07XG5cdHJvdGF0aW9uTGltaXRzPzogW1tudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWRdO1xuXHRzY2FsZUxpbWl0cz86IFtbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkXTtcblxuXHQvKiogUkdCIGNvbG9ycyAqL1xuXHRheGlzQ29sb3JzOiBbc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXIsIHN0cmluZyB8IG51bWJlcl07XG5cdC8qKiBDb2xvciBvZiB0aGUgaG92ZXJlZCBpdGVtICovXG5cdGhvdmVyZWRDb2xvcjogc3RyaW5nIHwgbnVtYmVyO1xuXHQvKiogSFRNTCB2YWx1ZSBhbm5vdGF0aW9ucywgZGVmYXVsdDogZmFsc2UgKi9cblx0YW5ub3RhdGlvbnM6IGJvb2xlYW47XG5cdC8qKiBDU1MgQ2xhc3NuYW1lIGFwcGxpZWQgdG8gdGhlIEhUTUwgYW5ub3RhdGlvbnMgKi9cblx0YW5ub3RhdGlvbnNDbGFzcz86IHN0cmluZztcblx0LyoqIFNldCB0aGlzIHRvIGZhbHNlIGlmIHlvdSB3YW50IHRoZSBnaXptbyB0byBiZSB2aXNpYmxlIHRocm91Z2ggZmFjZXMgKi9cblx0ZGVwdGhUZXN0OiBib29sZWFuO1xuXHRvcGFjaXR5PzogbnVtYmVyO1xuXHR2aXNpYmxlOiBib29sZWFuO1xuXHR1c2VyRGF0YT86IE5ndEFueVJlY29yZDtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNQaXZvdENvbnRyb2xzT3B0aW9ucyA9IHtcblx0ZW5hYmxlZDogdHJ1ZSxcblx0YXV0b1RyYW5zZm9ybTogdHJ1ZSxcblx0ZGlzYWJsZUF4ZXM6IGZhbHNlLFxuXHRkaXNhYmxlU2xpZGVyczogZmFsc2UsXG5cdGRpc2FibGVSb3RhdGlvbnM6IGZhbHNlLFxuXHRkaXNhYmxlU2NhbGluZzogZmFsc2UsXG5cdGFjdGl2ZUF4ZXM6IFt0cnVlLCB0cnVlLCB0cnVlXSxcblx0b2Zmc2V0OiBbMCwgMCwgMF0sXG5cdHJvdGF0aW9uOiBbMCwgMCwgMF0sXG5cdHNjYWxlOiAxLFxuXHRsaW5lV2lkdGg6IDQsXG5cdGZpeGVkOiBmYWxzZSxcblx0ZGVwdGhUZXN0OiB0cnVlLFxuXHRheGlzQ29sb3JzOiBbJyNmZjIwNjAnLCAnIzIwZGY4MCcsICcjMjA4MGZmJ10sXG5cdGhvdmVyZWRDb2xvcjogJyNmZmZmNDAnLFxuXHRhbm5vdGF0aW9uczogZmFsc2UsXG5cdG9wYWNpdHk6IDEsXG5cdHZpc2libGU6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXBpdm90LWNvbnRyb2xzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWdyb3VwICNwYXJlbnQ+XG5cdFx0XHQ8bmd0LWdyb3VwICNncm91cCBbbWF0cml4XT1cIm1hdHJpeCgpXCIgW21hdHJpeEF1dG9VcGRhdGVdPVwiZmFsc2VcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdFx0PG5ndC1ncm91cCAjZ2l6bW8gW3Zpc2libGVdPVwidmlzaWJsZSgpXCIgW3Bvc2l0aW9uXT1cIm9mZnNldCgpXCIgW3JvdGF0aW9uXT1cInJvdGF0aW9uKClcIj5cblx0XHRcdFx0XHRAaWYgKGVuYWJsZWQoKSkge1xuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZUF4ZXMoKSAmJiBhY3RpdmVBeGVzKClbMF0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1hcnJvdyBbYXhpc109XCIwXCIgW2RpcmVjdGlvbl09XCJ4RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVBeGVzKCkgJiYgYWN0aXZlQXhlcygpWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtYXJyb3cgW2F4aXNdPVwiMVwiIFtkaXJlY3Rpb25dPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlQXhlcygpICYmIGFjdGl2ZUF4ZXMoKVsyXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLWFycm93IFtheGlzXT1cIjJcIiBbZGlyZWN0aW9uXT1cInpEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlU2xpZGVycygpICYmIGFjdGl2ZUF4ZXMoKVswXSAmJiBhY3RpdmVBeGVzKClbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtcGxhbmUtc2xpZGVyIFtheGlzXT1cIjJcIiBbZGlyMV09XCJ4RGlyXCIgW2RpcjJdPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlU2xpZGVycygpICYmIGFjdGl2ZUF4ZXMoKVswXSAmJiBhY3RpdmVBeGVzKClbMl0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtcGxhbmUtc2xpZGVyIFtheGlzXT1cIjFcIiBbZGlyMV09XCJ6RGlyXCIgW2RpcjJdPVwieERpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlU2xpZGVycygpICYmIGFjdGl2ZUF4ZXMoKVsyXSAmJiBhY3RpdmVBeGVzKClbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtcGxhbmUtc2xpZGVyIFtheGlzXT1cIjBcIiBbZGlyMV09XCJ5RGlyXCIgW2RpcjJdPVwiekRpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVSb3RhdGlvbnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtcm90YXRvciBbYXhpc109XCIyXCIgW2RpcjFdPVwieERpclwiIFtkaXIyXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVJvdGF0aW9ucygpICYmIGFjdGl2ZUF4ZXMoKVswXSAmJiBhY3RpdmVBeGVzKClbMl0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1yb3RhdG9yIFtheGlzXT1cIjFcIiBbZGlyMV09XCJ6RGlyXCIgW2RpcjJdPVwieERpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlUm90YXRpb25zKCkgJiYgYWN0aXZlQXhlcygpWzJdICYmIGFjdGl2ZUF4ZXMoKVsxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLXJvdGF0b3IgW2F4aXNdPVwiMFwiIFtkaXIxXT1cInlEaXJcIiBbZGlyMl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNjYWxpbmcoKSAmJiBhY3RpdmVBeGVzKClbMF0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMFwiIFtkaXJlY3Rpb25dPVwieERpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlU2NhbGluZygpICYmIGFjdGl2ZUF4ZXMoKVsxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1zY2FsaW5nLXNwaGVyZSBbYXhpc109XCIxXCIgW2RpcmVjdGlvbl09XCJ5RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVTY2FsaW5nKCkgJiYgYWN0aXZlQXhlcygpWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXNjYWxpbmctc3BoZXJlIFtheGlzXT1cIjJcIiBbZGlyZWN0aW9uXT1cInpEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9uZ3QtZ3JvdXA+XG5cdFx0XHRcdDxuZ3QtZ3JvdXAgI2NoaWxkcmVuPlxuXHRcdFx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdFx0PC9uZ3QtZ3JvdXA+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RzQXhpc0Fycm93LCBOZ3RzUGxhbmVTbGlkZXIsIE5ndHNBeGlzUm90YXRvciwgTmd0c1NjYWxpbmdTcGhlcmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUGl2b3RDb250cm9scyB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J2VuYWJsZWQnLFxuXHRcdCdtYXRyaXgnLFxuXHRcdCdhdXRvVHJhbnNmb3JtJyxcblx0XHQnYW5jaG9yJyxcblx0XHQnZGlzYWJsZUF4ZXMnLFxuXHRcdCdkaXNhYmxlU2xpZGVycycsXG5cdFx0J2Rpc2FibGVSb3RhdGlvbnMnLFxuXHRcdCdkaXNhYmxlU2NhbGluZycsXG5cdFx0J2FjdGl2ZUF4ZXMnLFxuXHRcdCdvZmZzZXQnLFxuXHRcdCdyb3RhdGlvbicsXG5cdFx0J3NjYWxlJyxcblx0XHQnbGluZVdpZHRoJyxcblx0XHQnZml4ZWQnLFxuXHRcdCd0cmFuc2xhdGlvbkxpbWl0cycsXG5cdFx0J3JvdGF0aW9uTGltaXRzJyxcblx0XHQnc2NhbGVMaW1pdHMnLFxuXHRcdCdkZXB0aFRlc3QnLFxuXHRcdCdheGlzQ29sb3JzJyxcblx0XHQnaG92ZXJlZENvbG9yJyxcblx0XHQnYW5ub3RhdGlvbnMnLFxuXHRcdCdhbm5vdGF0aW9uc0NsYXNzJyxcblx0XHQnb3BhY2l0eScsXG5cdFx0J3Zpc2libGUnLFxuXHRcdCd1c2VyRGF0YScsXG5cdF0pO1xuXG5cdGRyYWdTdGFydGVkID0gb3V0cHV0PE9uRHJhZ1N0YXJ0UGFyYW1ldGVycz4oKTtcblx0ZHJhZ0VuZGVkID0gb3V0cHV0PHZvaWQ+KCk7XG5cdGRyYWdnZWQgPSBvdXRwdXQ8T25EcmFnUGFyYW1ldGVycz4oKTtcblxuXHRtYXRyaXggPSBwaWNrKHRoaXMub3B0aW9ucywgJ21hdHJpeCcpO1xuXHRhbm5vdGF0aW9ucyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYW5ub3RhdGlvbnMnKTtcblx0YW5ub3RhdGlvbnNDbGFzcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYW5ub3RhdGlvbnNDbGFzcycpO1xuXHR0cmFuc2xhdGlvbkxpbWl0cyA9IHBpY2sodGhpcy5vcHRpb25zLCAndHJhbnNsYXRpb25MaW1pdHMnKTtcblx0cm90YXRpb25MaW1pdHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JvdGF0aW9uTGltaXRzJyk7XG5cdHNjYWxlTGltaXRzID0gcGljayh0aGlzLm9wdGlvbnMsICdzY2FsZUxpbWl0cycpO1xuXHRhdXRvVHJhbnNmb3JtID0gcGljayh0aGlzLm9wdGlvbnMsICdhdXRvVHJhbnNmb3JtJyk7XG5cdGZpeGVkID0gcGljayh0aGlzLm9wdGlvbnMsICdmaXhlZCcpO1xuXHRob3ZlcmVkQ29sb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2hvdmVyZWRDb2xvcicpO1xuXHRheGlzQ29sb3JzID0gcGljayh0aGlzLm9wdGlvbnMsICdheGlzQ29sb3JzJyk7XG5cdGxpbmVXaWR0aCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGluZVdpZHRoJyk7XG5cdHNjYWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdzY2FsZScpO1xuXHR1c2VyRGF0YSA9IHBpY2sodGhpcy5vcHRpb25zLCAndXNlckRhdGEnKTtcblx0b3BhY2l0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnb3BhY2l0eScpO1xuXHRkZXB0aFRlc3QgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2RlcHRoVGVzdCcpO1xuXHRvZmZzZXQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ29mZnNldCcpO1xuXHRyb3RhdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncm90YXRpb24nKTtcblx0dmlzaWJsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAndmlzaWJsZScpO1xuXHRlbmFibGVkID0gcGljayh0aGlzLm9wdGlvbnMsICdlbmFibGVkJyk7XG5cdGRpc2FibGVBeGVzID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXNhYmxlQXhlcycpO1xuXHRkaXNhYmxlU2xpZGVycyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGlzYWJsZVNsaWRlcnMnKTtcblx0ZGlzYWJsZVJvdGF0aW9ucyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGlzYWJsZVJvdGF0aW9ucycpO1xuXHRkaXNhYmxlU2NhbGluZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGlzYWJsZVNjYWxpbmcnKTtcblx0YWN0aXZlQXhlcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYWN0aXZlQXhlcycpO1xuXG5cdHhEaXIgPSB4RGlyO1xuXHR5RGlyID0geURpcjtcblx0ekRpciA9IHpEaXI7XG5cblx0cGFyZW50UmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PigncGFyZW50Jyk7XG5cdGdyb3VwUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ3JvdXAnKTtcblx0Z2l6bW9SZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdnaXptbycpO1xuXHRjaGlsZHJlblJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2NoaWxkcmVuJyk7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cblx0dHJhbnNsYXRpb246IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwXTtcblxuXHRwcml2YXRlIGFuY2hvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnYW5jaG9yJyk7XG5cdHByaXZhdGUgY2FtZXJhU2NhbGUgPSBuZXcgVmVjdG9yMygxLCAxLCAxKTtcblx0cHJpdmF0ZSBnaXptb1NjYWxlID0gbmV3IFZlY3RvcjMoMSwgMSwgMSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgR3JvdXAgfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcigpO1xuXHRcdFx0XHRpZiAoIWFuY2hvcikgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlblJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNoaWxkcmVuKTtcblxuXHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBbZ2l6bW8sIG9mZnNldCwgaW52YWxpZGF0ZV0gPSBbXG5cdFx0XHRcdFx0dGhpcy5naXptb1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdFx0dGhpcy5vZmZzZXQoKSxcblx0XHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0XHRsb2NhbFN0YXRlLm9iamVjdHMoKSxcblx0XHRcdFx0XTtcblx0XHRcdFx0Y2hpbGRyZW4udXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgdHJ1ZSk7XG5cblx0XHRcdFx0bVBJbnYuY29weShjaGlsZHJlbi5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7XG5cdFx0XHRcdGJiLm1ha2VFbXB0eSgpO1xuXG5cdFx0XHRcdGNoaWxkcmVuLnRyYXZlcnNlKChvYmopID0+IHtcblx0XHRcdFx0XHRpZiAoIShvYmogYXMgTWVzaCkuZ2VvbWV0cnkpIHJldHVybjtcblx0XHRcdFx0XHRpZiAoIShvYmogYXMgTWVzaCkuZ2VvbWV0cnkuYm91bmRpbmdCb3gpIChvYmogYXMgTWVzaCkuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk7XG5cdFx0XHRcdFx0bUwuY29weShvYmoubWF0cml4V29ybGQpLnByZW11bHRpcGx5KG1QSW52KTtcblx0XHRcdFx0XHRjb25zdCBib3VuZGluZ0JveCA9IChvYmogYXMgTWVzaCkuZ2VvbWV0cnkuYm91bmRpbmdCb3g7XG5cdFx0XHRcdFx0aWYgKGJvdW5kaW5nQm94KSB7XG5cdFx0XHRcdFx0XHRiYk9iai5jb3B5KGJvdW5kaW5nQm94KTtcblx0XHRcdFx0XHRcdGJiT2JqLmFwcGx5TWF0cml4NChtTCk7XG5cdFx0XHRcdFx0XHRiYi51bmlvbihiYk9iaik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHR2Q2VudGVyLmNvcHkoYmIubWF4KS5hZGQoYmIubWluKS5tdWx0aXBseVNjYWxhcigwLjUpO1xuXHRcdFx0XHR2U2l6ZS5jb3B5KGJiLm1heCkuc3ViKGJiLm1pbikubXVsdGlwbHlTY2FsYXIoMC41KTtcblx0XHRcdFx0dkFuY2hvck9mZnNldFxuXHRcdFx0XHRcdC5jb3B5KHZTaXplKVxuXHRcdFx0XHRcdC5tdWx0aXBseShuZXcgVmVjdG9yMyguLi5hbmNob3IpKVxuXHRcdFx0XHRcdC5hZGQodkNlbnRlcik7XG5cdFx0XHRcdHZQb3NpdGlvbi5zZXQoLi4ub2Zmc2V0KS5hZGQodkFuY2hvck9mZnNldCk7XG5cdFx0XHRcdGdpem1vLnBvc2l0aW9uLmNvcHkodlBvc2l0aW9uKTtcblx0XHRcdFx0aW52YWxpZGF0ZSgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRjb25zdCB2ZWMgPSBuZXcgVmVjdG9yMygpO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjYW1lcmEsIHNpemUsIGludmFsaWRhdGUgfSkgPT4ge1xuXHRcdFx0Y29uc3QgW3sgZml4ZWQsIHNjYWxlLCBtYXRyaXggfSwgZ2l6bW8sIGdyb3VwXSA9IFtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdHRoaXMuZ2l6bW9SZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmdyb3VwUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdF07XG5cblx0XHRcdGlmIChmaXhlZCkge1xuXHRcdFx0XHRjb25zdCBzZiA9IGNhbGN1bGF0ZVNjYWxlRmFjdG9yKGdpem1vLmdldFdvcmxkUG9zaXRpb24odmVjKSwgc2NhbGUsIGNhbWVyYSwgc2l6ZSk7XG5cdFx0XHRcdHRoaXMuY2FtZXJhU2NhbGUuc2V0U2NhbGFyKHNmKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1hdHJpeCAmJiBtYXRyaXggaW5zdGFuY2VvZiBNYXRyaXg0KSB7XG5cdFx0XHRcdGdyb3VwLm1hdHJpeCA9IG1hdHJpeDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVXBkYXRlIGdpem1vIHNjYWxlIGluIGFjY29yZGFuY2Ugd2l0aCBtYXRyaXggY2hhbmdlc1xuXHRcdFx0Ly8gV2l0aG91dCB0aGlzLCB0aGVyZSBtaWdodCBiZSBub3RpY2VhYmxlIHR1cmJ1bGVuY2UgaWYgc2NhbGluZyBoYXBwZW5zIGZhc3QgZW5vdWdoXG5cdFx0XHRnaXptby51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCB0cnVlKTtcblxuXHRcdFx0bUcubWFrZVJvdGF0aW9uRnJvbUV1bGVyKGdpem1vLnJvdGF0aW9uKS5zZXRQb3NpdGlvbihnaXptby5wb3NpdGlvbikucHJlbXVsdGlwbHkoZ3JvdXAubWF0cml4V29ybGQpO1xuXHRcdFx0dGhpcy5naXptb1NjYWxlLnNldEZyb21NYXRyaXhTY2FsZShtRyk7XG5cblx0XHRcdHZTY2FsZS5jb3B5KHRoaXMuY2FtZXJhU2NhbGUpLmRpdmlkZSh0aGlzLmdpem1vU2NhbGUpO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnggLSB2U2NhbGUueCkgPiAxZS00IHx8XG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnkgLSB2U2NhbGUueSkgPiAxZS00IHx8XG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnogLSB2U2NhbGUueikgPiAxZS00XG5cdFx0XHQpIHtcblx0XHRcdFx0Z2l6bW8uc2NhbGUuY29weSh2U2NhbGUpO1xuXHRcdFx0XHRpbnZhbGlkYXRlKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRvbkRyYWdTdGFydChwYXJhbWV0ZXJzOiBPbkRyYWdTdGFydFBhcmFtZXRlcnMpIHtcblx0XHRjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdG1MMC5jb3B5KGdyb3VwLm1hdHJpeCk7XG5cdFx0bVcwLmNvcHkoZ3JvdXAubWF0cml4V29ybGQpO1xuXHRcdHRoaXMuZHJhZ1N0YXJ0ZWQuZW1pdChwYXJhbWV0ZXJzKTtcblx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0fVxuXG5cdG9uRHJhZyhtZFc6IE1hdHJpeDQpIHtcblx0XHRjb25zdCBbcGFyZW50LCBncm91cCwgYXV0b1RyYW5zZm9ybV0gPSBbXG5cdFx0XHR0aGlzLnBhcmVudFJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHR0aGlzLmdyb3VwUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuYXV0b1RyYW5zZm9ybSgpLFxuXHRcdF07XG5cblx0XHRtUC5jb3B5KHBhcmVudC5tYXRyaXhXb3JsZCk7XG5cdFx0bVBJbnYuY29weShtUCkuaW52ZXJ0KCk7XG5cdFx0Ly8gQWZ0ZXIgYXBwbHlpbmcgdGhlIGRlbHRhXG5cdFx0bVcuY29weShtVzApLnByZW11bHRpcGx5KG1kVyk7XG5cdFx0bUwuY29weShtVykucHJlbXVsdGlwbHkobVBJbnYpO1xuXHRcdG1MMEludi5jb3B5KG1MMCkuaW52ZXJ0KCk7XG5cdFx0bWRMLmNvcHkobUwpLm11bHRpcGx5KG1MMEludik7XG5cblx0XHRpZiAoYXV0b1RyYW5zZm9ybSkge1xuXHRcdFx0Z3JvdXAubWF0cml4LmNvcHkobUwpO1xuXHRcdH1cblxuXHRcdHRoaXMuZHJhZ2dlZC5lbWl0KHsgbDogbUwsIGRlbHRhTDogbWRMLCB3OiBtVywgZGVsdGFXOiBtZFcgfSk7XG5cdFx0dGhpcy5zdG9yZS5zbmFwc2hvdC5pbnZhbGlkYXRlKCk7XG5cdH1cblxuXHRvbkRyYWdFbmQoKSB7XG5cdFx0dGhpcy5kcmFnRW5kZWQuZW1pdCgpO1xuXHRcdHRoaXMuc3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHR9XG59XG4iXX0=
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9saWIvcGl2b3QtY29udHJvbHMvcGl2b3QtY29udHJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQWdCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWdCckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM1QixNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8s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QkFBaUI7a0dBQWpCLGlCQUFpQixxdEJBekRuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbURULDREQUdTLGFBQWEsMkZBQUUsZUFBZSxnR0FBRSxlQUFlLGdHQUFFLGlCQUFpQjs7MkZBR2hFLGlCQUFpQjtrQkE1RDdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbURUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7aUJBQzdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcblx0b3V0cHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBOZ3RBbnlSZWNvcmQsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNhbGN1bGF0ZVNjYWxlRmFjdG9yIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQm94MywgR3JvdXAsIE1hdHJpeDQsIE1lc2gsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzQXhpc0Fycm93IH0gZnJvbSAnLi9heGlzLWFycm93JztcbmltcG9ydCB7IE5ndHNBeGlzUm90YXRvciB9IGZyb20gJy4vYXhpcy1yb3RhdG9yJztcbmltcG9ydCB7IE5ndHNQbGFuZVNsaWRlciB9IGZyb20gJy4vcGxhbmUtc2xpZGVyJztcbmltcG9ydCB7IE5ndHNTY2FsaW5nU3BoZXJlIH0gZnJvbSAnLi9zY2FsaW5nLXNwaGVyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25EcmFnU3RhcnRQYXJhbWV0ZXJzIHtcblx0Y29tcG9uZW50OiAnQXJyb3cnIHwgJ1NsaWRlcicgfCAnUm90YXRvcicgfCAnU3BoZXJlJztcblx0YXhpczogMCB8IDEgfCAyO1xuXHRvcmlnaW46IFZlY3RvcjM7XG5cdGRpcmVjdGlvbnM6IFZlY3RvcjNbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkRyYWdQYXJhbWV0ZXJzIHtcblx0bDogTWF0cml4NDtcblx0ZGVsdGFMOiBNYXRyaXg0O1xuXHR3OiBNYXRyaXg0O1xuXHRkZWx0YVc6IE1hdHJpeDQ7XG59XG5cbmNvbnN0IG1MMCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtVzAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVBJbnYgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVcgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwwSW52ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IG1kTCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtRyA9IG5ldyBNYXRyaXg0KCk7XG5cbmNvbnN0IGJiID0gbmV3IEJveDMoKTtcbmNvbnN0IGJiT2JqID0gbmV3IEJveDMoKTtcbmNvbnN0IHZDZW50ZXIgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNpemUgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdkFuY2hvck9mZnNldCA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2UG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNjYWxlID0gbmV3IFZlY3RvcjMoKTtcblxuY29uc3QgeERpciA9IG5ldyBWZWN0b3IzKDEsIDAsIDApO1xuY29uc3QgeURpciA9IG5ldyBWZWN0b3IzKDAsIDEsIDApO1xuY29uc3QgekRpciA9IG5ldyBWZWN0b3IzKDAsIDAsIDEpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNQaXZvdENvbnRyb2xzT3B0aW9ucyB7XG5cdC8qKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBjb250cm9sLCB0cnVlICovXG5cdGVuYWJsZWQ6IGJvb2xlYW47XG5cdC8qKiBTY2FsZSBvZiB0aGUgZ2l6bW8sIDEgKi9cblx0c2NhbGU6IG51bWJlcjtcblx0LyoqIFdpZHRoIG9mIHRoZSBnaXptbyBsaW5lcywgdGhpcyBpcyBhIFRIUkVFLkxpbmUyIHByb3AsIDIuNSAqL1xuXHRsaW5lV2lkdGg6IG51bWJlcjtcblx0LyoqIElmIGZpeGVkIGlzIHRydWUgaXMgcmVtYWlucyBjb25zdGFudCBpbiBzaXplLCBzY2FsZSBpcyBub3cgaW4gcGl4ZWxzLCBmYWxzZSAqL1xuXHRmaXhlZDogYm9vbGVhbjtcblx0LyoqIFBpdm90IGRvZXMgbm90IGFjdCBhcyBhIGdyb3VwLCBpdCB3b24ndCBzaGlmdCBjb250ZW50cyBidXQgY2FuIG9mZnNldCBpbiBwb3NpdGlvbiAqL1xuXHRvZmZzZXQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIFN0YXJ0aW5nIHJvdGF0aW9uICovXG5cdHJvdGF0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cblx0LyoqIFN0YXJ0aW5nIG1hdHJpeCAqL1xuXHRtYXRyaXg/OiBNYXRyaXg0O1xuXHQvKiogQkJBbmNob3IsIGVhY2ggYXhpcyBjYW4gYmUgYmV0d2VlbiAtMS8wLysxICovXG5cdGFuY2hvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIElmIGF1dG9UcmFuc2Zvcm0gaXMgdHJ1ZSwgYXV0b21hdGljYWxseSBhcHBseSB0aGUgbG9jYWwgdHJhbnNmb3JtIG9uIGRyYWcsIHRydWUgKi9cblx0YXV0b1RyYW5zZm9ybTogYm9vbGVhbjtcblx0LyoqIEFsbG93cyB5b3UgdG8gc3dpdGNoIGluZGl2aWR1YWwgYXhlcyBvZmYgKi9cblx0YWN0aXZlQXhlczogW2Jvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5dO1xuXG5cdC8qKiBBbGxvd3MgeW91IHRvIHN3aXRjaCBpbmRpdmlkdWFsIHRyYW5zZm9ybWF0aW9ucyBvZmYgKi9cblx0ZGlzYWJsZUF4ZXM6IGJvb2xlYW47XG5cdGRpc2FibGVTbGlkZXJzOiBib29sZWFuO1xuXHRkaXNhYmxlUm90YXRpb25zOiBib29sZWFuO1xuXHRkaXNhYmxlU2NhbGluZzogYm9vbGVhbjtcblxuXHQvKiogTGltaXRzICovXG5cdHRyYW5zbGF0aW9uTGltaXRzPzogW1tudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWRdO1xuXHRyb3RhdGlvbkxpbWl0cz86IFtbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkXTtcblx0c2NhbGVMaW1pdHM/OiBbW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZF07XG5cblx0LyoqIFJHQiBjb2xvcnMgKi9cblx0YXhpc0NvbG9yczogW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdO1xuXHQvKiogQ29sb3Igb2YgdGhlIGhvdmVyZWQgaXRlbSAqL1xuXHRob3ZlcmVkQ29sb3I6IHN0cmluZyB8IG51bWJlcjtcblx0LyoqIEhUTUwgdmFsdWUgYW5ub3RhdGlvbnMsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGFubm90YXRpb25zOiBib29sZWFuO1xuXHQvKiogQ1NTIENsYXNzbmFtZSBhcHBsaWVkIHRvIHRoZSBIVE1MIGFubm90YXRpb25zICovXG5cdGFubm90YXRpb25zQ2xhc3M/OiBzdHJpbmc7XG5cdC8qKiBTZXQgdGhpcyB0byBmYWxzZSBpZiB5b3Ugd2FudCB0aGUgZ2l6bW8gdG8gYmUgdmlzaWJsZSB0aHJvdWdoIGZhY2VzICovXG5cdGRlcHRoVGVzdDogYm9vbGVhbjtcblx0b3BhY2l0eT86IG51bWJlcjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0dXNlckRhdGE/OiBOZ3RBbnlSZWNvcmQ7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzUGl2b3RDb250cm9sc09wdGlvbnMgPSB7XG5cdGVuYWJsZWQ6IHRydWUsXG5cdGF1dG9UcmFuc2Zvcm06IHRydWUsXG5cdGRpc2FibGVBeGVzOiBmYWxzZSxcblx0ZGlzYWJsZVNsaWRlcnM6IGZhbHNlLFxuXHRkaXNhYmxlUm90YXRpb25zOiBmYWxzZSxcblx0ZGlzYWJsZVNjYWxpbmc6IGZhbHNlLFxuXHRhY3RpdmVBeGVzOiBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sXG5cdG9mZnNldDogWzAsIDAsIDBdLFxuXHRyb3RhdGlvbjogWzAsIDAsIDBdLFxuXHRzY2FsZTogMSxcblx0bGluZVdpZHRoOiA0LFxuXHRmaXhlZDogZmFsc2UsXG5cdGRlcHRoVGVzdDogdHJ1ZSxcblx0YXhpc0NvbG9yczogWycjZmYyMDYwJywgJyMyMGRmODAnLCAnIzIwODBmZiddLFxuXHRob3ZlcmVkQ29sb3I6ICcjZmZmZjQwJyxcblx0YW5ub3RhdGlvbnM6IGZhbHNlLFxuXHRvcGFjaXR5OiAxLFxuXHR2aXNpYmxlOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1waXZvdC1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjcGFyZW50PlxuXHRcdFx0PG5ndC1ncm91cCAjZ3JvdXAgW21hdHJpeF09XCJtYXRyaXgoKVwiIFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCIgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHRcdDxuZ3QtZ3JvdXAgI2dpem1vIFt2aXNpYmxlXT1cInZpc2libGUoKVwiIFtwb3NpdGlvbl09XCJvZmZzZXQoKVwiIFtyb3RhdGlvbl09XCJyb3RhdGlvbigpXCI+XG5cdFx0XHRcdFx0QGlmIChlbmFibGVkKCkpIHtcblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVBeGVzKCkgJiYgYWN0aXZlQXhlcygpWzBdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtYXJyb3cgW2F4aXNdPVwiMFwiIFtkaXJlY3Rpb25dPVwieERpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlQXhlcygpICYmIGFjdGl2ZUF4ZXMoKVsxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLWFycm93IFtheGlzXT1cIjFcIiBbZGlyZWN0aW9uXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZUF4ZXMoKSAmJiBhY3RpdmVBeGVzKClbMl0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1hcnJvdyBbYXhpc109XCIyXCIgW2RpcmVjdGlvbl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIyXCIgW2RpcjFdPVwieERpclwiIFtkaXIyXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIxXCIgW2RpcjFdPVwiekRpclwiIFtkaXIyXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMl0gJiYgYWN0aXZlQXhlcygpWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIwXCIgW2RpcjFdPVwieURpclwiIFtkaXIyXT1cInpEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlUm90YXRpb25zKCkgJiYgYWN0aXZlQXhlcygpWzBdICYmIGFjdGl2ZUF4ZXMoKVsxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLXJvdGF0b3IgW2F4aXNdPVwiMlwiIFtkaXIxXT1cInhEaXJcIiBbZGlyMl09XCJ5RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVSb3RhdGlvbnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtcm90YXRvciBbYXhpc109XCIxXCIgW2RpcjFdPVwiekRpclwiIFtkaXIyXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVJvdGF0aW9ucygpICYmIGFjdGl2ZUF4ZXMoKVsyXSAmJiBhY3RpdmVBeGVzKClbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1yb3RhdG9yIFtheGlzXT1cIjBcIiBbZGlyMV09XCJ5RGlyXCIgW2RpcjJdPVwiekRpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVTY2FsaW5nKCkgJiYgYWN0aXZlQXhlcygpWzBdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXNjYWxpbmctc3BoZXJlIFtheGlzXT1cIjBcIiBbZGlyZWN0aW9uXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNjYWxpbmcoKSAmJiBhY3RpdmVBeGVzKClbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMVwiIFtkaXJlY3Rpb25dPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlU2NhbGluZygpICYmIGFjdGl2ZUF4ZXMoKVsyXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1zY2FsaW5nLXNwaGVyZSBbYXhpc109XCIyXCIgW2RpcmVjdGlvbl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdFx0XHQ8bmd0LWdyb3VwICNjaGlsZHJlbj5cblx0XHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0XHQ8L25ndC1ncm91cD5cblx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0c0F4aXNBcnJvdywgTmd0c1BsYW5lU2xpZGVyLCBOZ3RzQXhpc1JvdGF0b3IsIE5ndHNTY2FsaW5nU3BoZXJlXSxcbn0pXG4vLyBUT0RPOiBQaXZvdENvbnRyb2xzIGlzIG5vdCB3b3JraW5nIHByb3Blcmx5IHdpdGggY29udHJvbCBmbG93XG5leHBvcnQgY2xhc3MgTmd0c1Bpdm90Q29udHJvbHMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdlbmFibGVkJyxcblx0XHQnbWF0cml4Jyxcblx0XHQnYXV0b1RyYW5zZm9ybScsXG5cdFx0J2FuY2hvcicsXG5cdFx0J2Rpc2FibGVBeGVzJyxcblx0XHQnZGlzYWJsZVNsaWRlcnMnLFxuXHRcdCdkaXNhYmxlUm90YXRpb25zJyxcblx0XHQnZGlzYWJsZVNjYWxpbmcnLFxuXHRcdCdhY3RpdmVBeGVzJyxcblx0XHQnb2Zmc2V0Jyxcblx0XHQncm90YXRpb24nLFxuXHRcdCdzY2FsZScsXG5cdFx0J2xpbmVXaWR0aCcsXG5cdFx0J2ZpeGVkJyxcblx0XHQndHJhbnNsYXRpb25MaW1pdHMnLFxuXHRcdCdyb3RhdGlvbkxpbWl0cycsXG5cdFx0J3NjYWxlTGltaXRzJyxcblx0XHQnZGVwdGhUZXN0Jyxcblx0XHQnYXhpc0NvbG9ycycsXG5cdFx0J2hvdmVyZWRDb2xvcicsXG5cdFx0J2Fubm90YXRpb25zJyxcblx0XHQnYW5ub3RhdGlvbnNDbGFzcycsXG5cdFx0J29wYWNpdHknLFxuXHRcdCd2aXNpYmxlJyxcblx0XHQndXNlckRhdGEnLFxuXHRdKTtcblxuXHRkcmFnU3RhcnRlZCA9IG91dHB1dDxPbkRyYWdTdGFydFBhcmFtZXRlcnM+KCk7XG5cdGRyYWdFbmRlZCA9IG91dHB1dDx2b2lkPigpO1xuXHRkcmFnZ2VkID0gb3V0cHV0PE9uRHJhZ1BhcmFtZXRlcnM+KCk7XG5cblx0bWF0cml4ID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXRyaXgnKTtcblx0YW5ub3RhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Fubm90YXRpb25zJyk7XG5cdGFubm90YXRpb25zQ2xhc3MgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Fubm90YXRpb25zQ2xhc3MnKTtcblx0dHJhbnNsYXRpb25MaW1pdHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3RyYW5zbGF0aW9uTGltaXRzJyk7XG5cdHJvdGF0aW9uTGltaXRzID0gcGljayh0aGlzLm9wdGlvbnMsICdyb3RhdGlvbkxpbWl0cycpO1xuXHRzY2FsZUxpbWl0cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGVMaW1pdHMnKTtcblx0YXV0b1RyYW5zZm9ybSA9IHBpY2sodGhpcy5vcHRpb25zLCAnYXV0b1RyYW5zZm9ybScpO1xuXHRmaXhlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZml4ZWQnKTtcblx0aG92ZXJlZENvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdob3ZlcmVkQ29sb3InKTtcblx0YXhpc0NvbG9ycyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYXhpc0NvbG9ycycpO1xuXHRsaW5lV2lkdGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbmVXaWR0aCcpO1xuXHRzY2FsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGUnKTtcblx0dXNlckRhdGEgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3VzZXJEYXRhJyk7XG5cdG9wYWNpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ29wYWNpdHknKTtcblx0ZGVwdGhUZXN0ID0gcGljayh0aGlzLm9wdGlvbnMsICdkZXB0aFRlc3QnKTtcblx0b2Zmc2V0ID0gcGljayh0aGlzLm9wdGlvbnMsICdvZmZzZXQnKTtcblx0cm90YXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JvdGF0aW9uJyk7XG5cdHZpc2libGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3Zpc2libGUnKTtcblx0ZW5hYmxlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZW5hYmxlZCcpO1xuXHRkaXNhYmxlQXhlcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGlzYWJsZUF4ZXMnKTtcblx0ZGlzYWJsZVNsaWRlcnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVTbGlkZXJzJyk7XG5cdGRpc2FibGVSb3RhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVSb3RhdGlvbnMnKTtcblx0ZGlzYWJsZVNjYWxpbmcgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVTY2FsaW5nJyk7XG5cdGFjdGl2ZUF4ZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FjdGl2ZUF4ZXMnKTtcblxuXHR4RGlyID0geERpcjtcblx0eURpciA9IHlEaXI7XG5cdHpEaXIgPSB6RGlyO1xuXG5cdHBhcmVudFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ3BhcmVudCcpO1xuXHRncm91cFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dyb3VwJyk7XG5cdGdpem1vUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ2l6bW8nKTtcblx0Y2hpbGRyZW5SZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdjaGlsZHJlbicpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGludmFsaWRhdGUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnaW52YWxpZGF0ZScpO1xuXG5cdHRyYW5zbGF0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMCwgMCwgMF07XG5cblx0cHJpdmF0ZSBhbmNob3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuY2hvcicpO1xuXHRwcml2YXRlIGNhbWVyYVNjYWxlID0gbmV3IFZlY3RvcjMoMSwgMSwgMSk7XG5cdHByaXZhdGUgZ2l6bW9TY2FsZSA9IG5ldyBWZWN0b3IzKDEsIDEsIDEpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGFuY2hvciA9IHRoaXMuYW5jaG9yKCk7XG5cdFx0XHRpZiAoIWFuY2hvcikgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBjaGlsZHJlbkNvbnRhaW5lciA9IHRoaXMuY2hpbGRyZW5SZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY2hpbGRyZW5Db250YWluZXIpO1xuXHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IFtnaXptbywgb2Zmc2V0LCBpbnZhbGlkYXRlXSA9IFtcblx0XHRcdFx0dGhpcy5naXptb1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMub2Zmc2V0KCksXG5cdFx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpLFxuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0W2xvY2FsU3RhdGUub2JqZWN0cygpLCBsb2NhbFN0YXRlLm5vbk9iamVjdHMoKV0sXG5cdFx0XHRdO1xuXHRcdFx0Y2hpbGRyZW5Db250YWluZXIudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgdHJ1ZSk7XG5cblx0XHRcdG1QSW52LmNvcHkoY2hpbGRyZW5Db250YWluZXIubWF0cml4V29ybGQpLmludmVydCgpO1xuXHRcdFx0YmIubWFrZUVtcHR5KCk7XG5cblx0XHRcdGNoaWxkcmVuQ29udGFpbmVyLnRyYXZlcnNlKChvYmopID0+IHtcblx0XHRcdFx0aWYgKCEob2JqIGFzIE1lc2gpLmdlb21ldHJ5KSByZXR1cm47XG5cdFx0XHRcdGlmICghKG9iaiBhcyBNZXNoKS5nZW9tZXRyeS5ib3VuZGluZ0JveCkgKG9iaiBhcyBNZXNoKS5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTtcblx0XHRcdFx0bUwuY29weShvYmoubWF0cml4V29ybGQpLnByZW11bHRpcGx5KG1QSW52KTtcblx0XHRcdFx0Y29uc3QgYm91bmRpbmdCb3ggPSAob2JqIGFzIE1lc2gpLmdlb21ldHJ5LmJvdW5kaW5nQm94O1xuXHRcdFx0XHRpZiAoYm91bmRpbmdCb3gpIHtcblx0XHRcdFx0XHRiYk9iai5jb3B5KGJvdW5kaW5nQm94KTtcblx0XHRcdFx0XHRiYk9iai5hcHBseU1hdHJpeDQobUwpO1xuXHRcdFx0XHRcdGJiLnVuaW9uKGJiT2JqKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHZDZW50ZXIuY29weShiYi5tYXgpLmFkZChiYi5taW4pLm11bHRpcGx5U2NhbGFyKDAuNSk7XG5cdFx0XHR2U2l6ZS5jb3B5KGJiLm1heCkuc3ViKGJiLm1pbikubXVsdGlwbHlTY2FsYXIoMC41KTtcblx0XHRcdHZBbmNob3JPZmZzZXRcblx0XHRcdFx0LmNvcHkodlNpemUpXG5cdFx0XHRcdC5tdWx0aXBseShuZXcgVmVjdG9yMyguLi5hbmNob3IpKVxuXHRcdFx0XHQuYWRkKHZDZW50ZXIpO1xuXHRcdFx0dlBvc2l0aW9uLnNldCguLi5vZmZzZXQpLmFkZCh2QW5jaG9yT2Zmc2V0KTtcblx0XHRcdGdpem1vLnBvc2l0aW9uLmNvcHkodlBvc2l0aW9uKTtcblx0XHRcdGludmFsaWRhdGUoKTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IHZlYyA9IG5ldyBWZWN0b3IzKCk7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYSwgc2l6ZSwgaW52YWxpZGF0ZSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbeyBmaXhlZCwgc2NhbGUsIG1hdHJpeCB9LCBnaXptbywgZ3JvdXBdID0gW1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5naXptb1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XTtcblxuXHRcdFx0aWYgKGZpeGVkKSB7XG5cdFx0XHRcdGNvbnN0IHNmID0gY2FsY3VsYXRlU2NhbGVGYWN0b3IoZ2l6bW8uZ2V0V29ybGRQb3NpdGlvbih2ZWMpLCBzY2FsZSwgY2FtZXJhLCBzaXplKTtcblx0XHRcdFx0dGhpcy5jYW1lcmFTY2FsZS5zZXRTY2FsYXIoc2YpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWF0cml4ICYmIG1hdHJpeCBpbnN0YW5jZW9mIE1hdHJpeDQpIHtcblx0XHRcdFx0Z3JvdXAubWF0cml4ID0gbWF0cml4O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBVcGRhdGUgZ2l6bW8gc2NhbGUgaW4gYWNjb3JkYW5jZSB3aXRoIG1hdHJpeCBjaGFuZ2VzXG5cdFx0XHQvLyBXaXRob3V0IHRoaXMsIHRoZXJlIG1pZ2h0IGJlIG5vdGljZWFibGUgdHVyYnVsZW5jZSBpZiBzY2FsaW5nIGhhcHBlbnMgZmFzdCBlbm91Z2hcblx0XHRcdGdpem1vLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIHRydWUpO1xuXG5cdFx0XHRtRy5tYWtlUm90YXRpb25Gcm9tRXVsZXIoZ2l6bW8ucm90YXRpb24pLnNldFBvc2l0aW9uKGdpem1vLnBvc2l0aW9uKS5wcmVtdWx0aXBseShncm91cC5tYXRyaXhXb3JsZCk7XG5cdFx0XHR0aGlzLmdpem1vU2NhbGUuc2V0RnJvbU1hdHJpeFNjYWxlKG1HKTtcblxuXHRcdFx0dlNjYWxlLmNvcHkodGhpcy5jYW1lcmFTY2FsZSkuZGl2aWRlKHRoaXMuZ2l6bW9TY2FsZSk7XG5cblx0XHRcdGlmIChcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueCAtIHZTY2FsZS54KSA+IDFlLTQgfHxcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueSAtIHZTY2FsZS55KSA+IDFlLTQgfHxcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueiAtIHZTY2FsZS56KSA+IDFlLTRcblx0XHRcdCkge1xuXHRcdFx0XHRnaXptby5zY2FsZS5jb3B5KHZTY2FsZSk7XG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG9uRHJhZ1N0YXJ0KHBhcmFtZXRlcnM6IE9uRHJhZ1N0YXJ0UGFyYW1ldGVycykge1xuXHRcdGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0bUwwLmNvcHkoZ3JvdXAubWF0cml4KTtcblx0XHRtVzAuY29weShncm91cC5tYXRyaXhXb3JsZCk7XG5cdFx0dGhpcy5kcmFnU3RhcnRlZC5lbWl0KHBhcmFtZXRlcnMpO1xuXHRcdHRoaXMuc3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHR9XG5cblx0b25EcmFnKG1kVzogTWF0cml4NCkge1xuXHRcdGNvbnN0IFtwYXJlbnQsIGdyb3VwLCBhdXRvVHJhbnNmb3JtXSA9IFtcblx0XHRcdHRoaXMucGFyZW50UmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0dGhpcy5hdXRvVHJhbnNmb3JtKCksXG5cdFx0XTtcblxuXHRcdG1QLmNvcHkocGFyZW50Lm1hdHJpeFdvcmxkKTtcblx0XHRtUEludi5jb3B5KG1QKS5pbnZlcnQoKTtcblx0XHQvLyBBZnRlciBhcHBseWluZyB0aGUgZGVsdGFcblx0XHRtVy5jb3B5KG1XMCkucHJlbXVsdGlwbHkobWRXKTtcblx0XHRtTC5jb3B5KG1XKS5wcmVtdWx0aXBseShtUEludik7XG5cdFx0bUwwSW52LmNvcHkobUwwKS5pbnZlcnQoKTtcblx0XHRtZEwuY29weShtTCkubXVsdGlwbHkobUwwSW52KTtcblxuXHRcdGlmIChhdXRvVHJhbnNmb3JtKSB7XG5cdFx0XHRncm91cC5tYXRyaXguY29weShtTCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kcmFnZ2VkLmVtaXQoeyBsOiBtTCwgZGVsdGFMOiBtZEwsIHc6IG1XLCBkZWx0YVc6IG1kVyB9KTtcblx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0fVxuXG5cdG9uRHJhZ0VuZCgpIHtcblx0XHR0aGlzLmRyYWdFbmRlZC5lbWl0KCk7XG5cdFx0dGhpcy5zdG9yZS5zbmFwc2hvdC5pbnZhbGlkYXRlKCk7XG5cdH1cbn1cbiJdfQ==
@@ -149,8 +149,8 @@ export class NgtsPlaneSlider {
149
149
  event.stopPropagation();
150
150
  this.hovered.set(false);
151
151
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPlaneSlider, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsPlaneSlider, isStandalone: true, selector: "ngts-plane-slider", inputs: { dir1: { classPropertyName: "dir1", publicName: "dir1", isSignal: true, isRequired: true, transformFunction: null }, dir2: { classPropertyName: "dir2", publicName: "dir2", isSignal: true, isRequired: true, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "annotationRef", first: true, predicate: ["annotation"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPlaneSlider, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsPlaneSlider, isStandalone: true, selector: "ngts-plane-slider", inputs: { dir1: { classPropertyName: "dir1", publicName: "dir1", isSignal: true, isRequired: true, transformFunction: null }, dir2: { classPropertyName: "dir2", publicName: "dir2", isSignal: true, isRequired: true, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "annotationRef", first: true, predicate: ["annotation"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
154
154
  <ngt-group #group [matrix]="matrixL()" [matrixAutoUpdate]="false">
155
155
  @if (pivotControls.annotations()) {
156
156
  <ngts-html [options]="{ position: [0, 0, 0] }">
@@ -202,7 +202,7 @@ export class NgtsPlaneSlider {
202
202
  </ngt-group>
203
203
  `, isInline: true, dependencies: [{ kind: "component", type: NgtsHTML, selector: "ngts-html", inputs: ["options"] }, { kind: "component", type: NgtsHTMLContent, selector: "[ngtsHTMLContent]", inputs: ["ngtsHTMLContent"], outputs: ["occluded"] }, { kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
204
204
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPlaneSlider, decorators: [{
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPlaneSlider, decorators: [{
206
206
  type: Component,
207
207
  args: [{
208
208
  selector: 'ngts-plane-slider',
@@ -149,8 +149,8 @@ export class NgtsScalingSphere {
149
149
  event.stopPropagation();
150
150
  this.hovered.set(false);
151
151
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsScalingSphere, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsScalingSphere, isStandalone: true, selector: "ngts-scaling-sphere", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: true, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "annotationRef", first: true, predicate: ["annotation"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsScalingSphere, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsScalingSphere, isStandalone: true, selector: "ngts-scaling-sphere", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: true, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "annotationRef", first: true, predicate: ["annotation"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
154
154
  <ngt-group #group>
155
155
  <ngt-group
156
156
  [matrix]="matrixL()"
@@ -185,7 +185,7 @@ export class NgtsScalingSphere {
185
185
  </ngt-group>
186
186
  `, isInline: true, dependencies: [{ kind: "component", type: NgtsHTML, selector: "ngts-html", inputs: ["options"] }, { kind: "component", type: NgtsHTMLContent, selector: "[ngtsHTMLContent]", inputs: ["ngtsHTMLContent"], outputs: ["occluded"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
187
187
  }
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsScalingSphere, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsScalingSphere, decorators: [{
189
189
  type: Component,
190
190
  args: [{
191
191
  selector: 'ngts-scaling-sphere',
@@ -148,8 +148,8 @@ export class NgtsTransformControls {
148
148
  this.store.update({ controls });
149
149
  return () => this.store.update(() => ({ controls: oldControls }));
150
150
  }
151
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsTransformControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
152
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsTransformControls, isStandalone: true, selector: "ngts-transform-controls", inputs: { object: { classPropertyName: "object", publicName: "object", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change", mouseDown: "mouseDown", mouseUp: "mouseUp", objectChange: "objectChange" }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsTransformControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsTransformControls, isStandalone: true, selector: "ngts-transform-controls", inputs: { object: { classPropertyName: "object", publicName: "object", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change", mouseDown: "mouseDown", mouseUp: "mouseUp", objectChange: "objectChange" }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
153
153
  <ngt-primitive *args="[controls()]" [parameters]="controlsOptions()" />
154
154
 
155
155
  <ngt-group #group [parameters]="parameters()">
@@ -157,7 +157,7 @@ export class NgtsTransformControls {
157
157
  </ngt-group>
158
158
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
159
159
  }
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsTransformControls, decorators: [{
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsTransformControls, decorators: [{
161
161
  type: Component,
162
162
  args: [{
163
163
  selector: 'ngts-transform-controls',
@@ -61,8 +61,8 @@ export class NgtsLoader {
61
61
  onCleanup(() => cancelAnimationFrame(rafId));
62
62
  });
63
63
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
66
66
  @if (shown()) {
67
67
  <div
68
68
  class="ngts-loader-container"
@@ -83,7 +83,7 @@ export class NgtsLoader {
83
83
  }
84
84
  `, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
85
85
  }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsLoader, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsLoader, decorators: [{
87
87
  type: Component,
88
88
  args: [{ selector: 'ngts-loader', standalone: true, template: `
89
89
  @if (shown()) {