@ethlete/core 4.3.0 → 4.4.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.
@@ -57,6 +57,10 @@ export class AnimatedOverlayDirective {
57
57
  * @default false
58
58
  */
59
59
  this.autoResize = false;
60
+ /**
61
+ * Whether the animated overlay should shift when it is near the viewport boundary.
62
+ */
63
+ this.shift = true;
60
64
  /**
61
65
  * Whether the animated overlay should auto hide when the reference element is hidden.
62
66
  * @default false
@@ -84,6 +88,12 @@ export class AnimatedOverlayDirective {
84
88
  get isHidden() {
85
89
  return this._isHidden$.value;
86
90
  }
91
+ get canMount() {
92
+ return !this.isMounted && !this.isMounting;
93
+ }
94
+ get canUnmount() {
95
+ return this.isMounted && !this.isUnmounting;
96
+ }
87
97
  get portal() {
88
98
  return this._portal;
89
99
  }
@@ -96,7 +106,12 @@ export class AnimatedOverlayDirective {
96
106
  mount(config) {
97
107
  if (this.isMounted || this.isMounting) {
98
108
  if (isDevMode()) {
99
- console.warn('AnimatedOverlayDirective: The component is already mounted or mounting. Please unmount the component before mounting again.');
109
+ if (this.isMounted) {
110
+ console.warn('AnimatedOverlayDirective: The component is currently mounted. Please unmount the component before mounting again.');
111
+ }
112
+ if (this.isMounting) {
113
+ console.warn('AnimatedOverlayDirective: The component is already mounting. Please unmount the component before mounting again.');
114
+ }
100
115
  }
101
116
  return;
102
117
  }
@@ -108,7 +123,7 @@ export class AnimatedOverlayDirective {
108
123
  providers: providers ?? [],
109
124
  });
110
125
  this._overlayRef = this._overlayService.create();
111
- this._portal = this._portal ?? new ComponentPortal(component, this._viewContainerRef, injector);
126
+ this._portal = new ComponentPortal(component, this._viewContainerRef, injector);
112
127
  this._componentRef = this._overlayRef.attach(this._portal);
113
128
  if (data) {
114
129
  Object.assign(this._componentRef.instance, data);
@@ -148,7 +163,6 @@ export class AnimatedOverlayDirective {
148
163
  flip({
149
164
  fallbackPlacements: this.fallbackPlacements ?? undefined,
150
165
  fallbackAxisSideDirection: 'start',
151
- crossAxis: false,
152
166
  boundary,
153
167
  }),
154
168
  ...(this.autoResize
@@ -162,7 +176,9 @@ export class AnimatedOverlayDirective {
162
176
  }),
163
177
  ]
164
178
  : []),
165
- shift({ limiter: limitShift(), padding: this.viewportPadding ?? undefined, boundary }),
179
+ ...(this.shift
180
+ ? [shift({ limiter: limitShift(), padding: this.viewportPadding ?? undefined, boundary })]
181
+ : []),
166
182
  ...(floatingElArrow ? [arrow({ element: floatingElArrow, padding: this.arrowPadding ?? undefined })] : []),
167
183
  ...(this.autoHide ? [hide({ strategy: 'referenceHidden', boundary })] : []),
168
184
  ],
@@ -188,6 +204,9 @@ export class AnimatedOverlayDirective {
188
204
  if (!this._componentRef) {
189
205
  return;
190
206
  }
207
+ if (!this._componentRef.instance._animatedLifecycle) {
208
+ console.error('AnimatedOverlayDirective: The component does not have an AnimatedLifecycleDirective. Please add one to the component.');
209
+ }
191
210
  this._componentRef.instance._animatedLifecycle?.enter();
192
211
  this._componentRef.instance._animatedLifecycle?.state$
193
212
  .pipe(tap((s) => {
@@ -205,7 +224,12 @@ export class AnimatedOverlayDirective {
205
224
  unmount() {
206
225
  if (!this.isMounted || this.isUnmounting) {
207
226
  if (isDevMode()) {
208
- console.warn('AnimatedOverlayDirective: The component is not mounted or is already unmounting. Please call `mount` before calling `unmount` again.');
227
+ if (!this.isMounted) {
228
+ console.warn(`AnimatedOverlayDirective: The component is currently not mounted. Please call "mount" before calling "unmount" again.`);
229
+ }
230
+ if (this.isUnmounting) {
231
+ console.warn(`AnimatedOverlayDirective: The component is already unmounting. Please call "mount" before calling "unmount" again.`);
232
+ }
209
233
  }
210
234
  return;
211
235
  }
@@ -263,7 +287,7 @@ export class AnimatedOverlayDirective {
263
287
  this._afterClosed?.next();
264
288
  }
265
289
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AnimatedOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
266
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: AnimatedOverlayDirective, isStandalone: true, inputs: { placement: "placement", fallbackPlacements: "fallbackPlacements", offset: "offset", arrowPadding: "arrowPadding", viewportPadding: "viewportPadding", autoResize: "autoResize", autoHide: "autoHide" }, host: { classAttribute: "et-animated-overlay" }, hostDirectives: [{ directive: i1.ObserveResizeDirective }], ngImport: i0 }); }
290
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: AnimatedOverlayDirective, isStandalone: true, inputs: { placement: "placement", fallbackPlacements: "fallbackPlacements", offset: "offset", arrowPadding: "arrowPadding", viewportPadding: "viewportPadding", autoResize: "autoResize", shift: "shift", autoHide: "autoHide" }, host: { classAttribute: "et-animated-overlay" }, hostDirectives: [{ directive: i1.ObserveResizeDirective }], ngImport: i0 }); }
267
291
  }
268
292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AnimatedOverlayDirective, decorators: [{
269
293
  type: Directive,
@@ -286,7 +310,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
286
310
  type: Input
287
311
  }], autoResize: [{
288
312
  type: Input
313
+ }], shift: [{
314
+ type: Input
289
315
  }], autoHide: [{
290
316
  type: Input
291
317
  }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0ZWQtb3ZlcmxheS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2FuaW1hdGVkLW92ZXJsYXkvYW5pbWF0ZWQtb3ZlcmxheS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBRU4sZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlMLEtBQUssRUFDTCxVQUFVLEVBQ1YsZUFBZSxFQUNmLElBQUksRUFDSixJQUFJLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsSUFBSSxHQUNMLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFnQnpELE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFRbUIsY0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBQzVCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENB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RUFBRSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs4R0FwV1Usd0JBQXdCO2tHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBUHBDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUN4QyxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLHFCQUFxQjtxQkFDN0I7aUJBQ0Y7OEJBK0JDLFNBQVM7c0JBRFIsS0FBSztnQkFRTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBUU4sTUFBTTtzQkFETCxLQUFLO2dCQVNOLFlBQVk7c0JBRFgsS0FBSztnQkFRTixlQUFlO3NCQURkLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxLQUFLO2dCQVFOLFFBQVE7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgU3RhdGljUHJvdmlkZXIsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIGluamVjdCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3ZpZGVUaGVtZURpcmVjdGl2ZSB9IGZyb20gJ0BldGhsZXRlL3RoZW1pbmcnO1xuaW1wb3J0IHtcbiAgT2Zmc2V0T3B0aW9ucyxcbiAgUGFkZGluZyxcbiAgUGxhY2VtZW50LFxuICBhcnJvdyxcbiAgYXV0b1VwZGF0ZSxcbiAgY29tcHV0ZVBvc2l0aW9uLFxuICBmbGlwLFxuICBoaWRlLFxuICBsaW1pdFNoaWZ0LFxuICBvZmZzZXQsXG4gIHNoaWZ0LFxuICBzaXplLFxufSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSwgbmV4dEZyYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQW5pbWF0ZWRMaWZlY3ljbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9hbmltYXRlZC1saWZlY3ljbGUnO1xuaW1wb3J0IHsgT2JzZXJ2ZVJlc2l6ZURpcmVjdGl2ZSB9IGZyb20gJy4uL29ic2VydmUtcmVzaXplJztcbmltcG9ydCB7IFJvb3RCb3VuZGFyeURpcmVjdGl2ZSB9IGZyb20gJy4uL3Jvb3QtYm91bmRhcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuaW1hdGVkT3ZlcmxheUNvbXBvbmVudEJhc2Uge1xuICBfZWxlbWVudFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBfYW5pbWF0ZWRMaWZlY3ljbGU/OiBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZTtcbiAgX21hcmtGb3JDaGVjaz86ICgpID0+IHZvaWQ7XG4gIF9zZXRUaGVtZUZyb21Qcm92aWRlcj86IChwcm92aWRlcjogUHJvdmlkZVRoZW1lRGlyZWN0aXZlKSA9PiB2b2lkO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtPYnNlcnZlUmVzaXplRGlyZWN0aXZlXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtYW5pbWF0ZWQtb3ZlcmxheScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZTxUIGV4dGVuZHMgQW5pbWF0ZWRPdmVybGF5Q29tcG9uZW50QmFzZT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheVNlcnZpY2UgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb2JzZXJ2ZVJlc2l6ZSA9IGluamVjdChPYnNlcnZlUmVzaXplRGlyZWN0aXZlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcm9vdEJvdW5kYXJ5ID0gaW5qZWN0KFJvb3RCb3VuZGFyeURpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIF9wb3J0YWw6IENvbXBvbmVudFBvcnRhbDxUPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Zsb2F0aW5nRWxDbGVhbnVwRm46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2JlZm9yZU9wZW5lZDogU3ViamVjdDx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9hZnRlck9wZW5lZDogU3ViamVjdDx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9iZWZvcmVDbG9zZWQ6IFN1YmplY3Q8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfYWZ0ZXJDbG9zZWQ6IFN1YmplY3Q8dm9pZD4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pc01vdW50ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzTW91bnRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzVW5tb3VudGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNIaWRkZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFjZW1lbnQgb2YgdGhlIGFuaW1hdGVkIG92ZXJsYXkuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgcGxhY2VtZW50PzogUGxhY2VtZW50ID0gJ2JvdHRvbSc7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGxvd2VkIGF1dG8gcGxhY2VtZW50cyBvZiB0aGUgYW5pbWF0ZWQgb3ZlcmxheS5cbiAgICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXAjZmFsbGJhY2twbGFjZW1lbnRzXG4gICAqL1xuICBASW5wdXQoKVxuICBmYWxsYmFja1BsYWNlbWVudHM/OiBQbGFjZW1lbnRbXTtcblxuICAvKipcbiAgICogVGhlIG9mZnNldCBvZiB0aGUgYW5pbWF0ZWQgb3ZlcmxheS5cbiAgICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICAgKi9cbiAgQElucHV0KClcbiAgb2Zmc2V0OiBPZmZzZXRPcHRpb25zIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBhcnJvdyBwYWRkaW5nLlxuICAgKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3cjcGFkZGluZ1xuICAgKiBAZGVmYXVsdCA0XG4gICAqL1xuICBASW5wdXQoKVxuICBhcnJvd1BhZGRpbmc6IFBhZGRpbmcgfCBudWxsID0gNDtcblxuICAvKipcbiAgICogVGhlIHZpZXdwb3J0IHBhZGRpbmcuXG4gICAqIEBkZWZhdWx0IDhcbiAgICovXG4gIEBJbnB1dCgpXG4gIHZpZXdwb3J0UGFkZGluZzogUGFkZGluZyB8IG51bGwgPSA4O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhbmltYXRlZCBvdmVybGF5IHNob3VsZCBhdXRvIHJlc2l6ZSB0byBmaXQgdGhlIGF2YWlsYWJsZSBzcGFjZS5cbiAgICogVXNlZnVsIGZvciB0aGluZ3MgbGlrZSBzZWxlY3RzIHdoZXJlIHRoZSBsaXN0IG9mIG9wdGlvbnMgbWlnaHQgYmUgbG9uZ2VyIHRoYW4gdGhlIGF2YWlsYWJsZSBzcGFjZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGF1dG9SZXNpemUgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYW5pbWF0ZWQgb3ZlcmxheSBzaG91bGQgYXV0byBoaWRlIHdoZW4gdGhlIHJlZmVyZW5jZSBlbGVtZW50IGlzIGhpZGRlbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGF1dG9IaWRlID0gZmFsc2U7XG5cbiAgZ2V0IGlzTW91bnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNNb3VudGVkJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc01vdW50ZWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01vdW50ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzTW91bnRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTW91bnRpbmckLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTW91bnRpbmckKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01vdW50aW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc1VubW91bnRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVW5tb3VudGluZyQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNIaWRkZW4kKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0hpZGRlbiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNIaWRkZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSGlkZGVuJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBwb3J0YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcnRhbDtcbiAgfVxuXG4gIGdldCBvdmVybGF5UmVmKCkge1xuICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmO1xuICB9XG5cbiAgZ2V0IGNvbXBvbmVudFJlZigpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50UmVmO1xuICB9XG5cbiAgbW91bnQoY29uZmlnOiB7XG4gICAgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPFQ+O1xuICAgIHByb3ZpZGVycz86IFN0YXRpY1Byb3ZpZGVyW107XG4gICAgZGF0YT86IFBhcnRpYWw8VD47XG4gICAgbWlycm9yV2lkdGg/OiBib29sZWFuO1xuICAgIHRoZW1lUHJvdmlkZXI/OiBQcm92aWRlVGhlbWVEaXJlY3RpdmUgfCBudWxsO1xuICB9KSB7XG4gICAgaWYgKHRoaXMuaXNNb3VudGVkIHx8IHRoaXMuaXNNb3VudGluZykge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnQW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlOiBUaGUgY29tcG9uZW50IGlzIGFscmVhZHkgbW91bnRlZCBvciBtb3VudGluZy4gUGxlYXNlIHVubW91bnQgdGhlIGNvbXBvbmVudCBiZWZvcmUgbW91bnRpbmcgYWdhaW4uJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzTW91bnRpbmckLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zdCB7IGNvbXBvbmVudCwgcHJvdmlkZXJzLCBkYXRhLCBtaXJyb3JXaWR0aCwgdGhlbWVQcm92aWRlciB9ID0gY29uZmlnO1xuXG4gICAgdGhpcy5fYmVmb3JlT3BlbmVkPy5uZXh0KCk7XG5cbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBwcm92aWRlcnMgPz8gW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheVNlcnZpY2UuY3JlYXRlKCk7XG5cbiAgICB0aGlzLl9wb3J0YWwgPSB0aGlzLl9wb3J0YWwgPz8gbmV3IENvbXBvbmVudFBvcnRhbChjb21wb25lbnQsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsIGluamVjdG9yKTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaCh0aGlzLl9wb3J0YWwpO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLCBkYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuX21hcmtGb3JDaGVjaz8uKCk7XG5cbiAgICBpZiAodGhlbWVQcm92aWRlcikge1xuICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLl9zZXRUaGVtZUZyb21Qcm92aWRlcj8uKHRoZW1lUHJvdmlkZXIpO1xuICAgIH1cblxuICAgIGlmIChtaXJyb3JXaWR0aCkge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHtcbiAgICAgICAgd2lkdGg6IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9vYnNlcnZlUmVzaXplLnZhbHVlQ2hhbmdlXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmPy51cGRhdGVTaXplKHtcbiAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9jb21wb25lbnRSZWYpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmbG9hdGluZ0VsID0gdGhpcy5fY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCBmbG9hdGluZ0VsQXJyb3cgPSB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJ1tldC1mbG9hdGluZy1hcnJvd10nLFxuICAgICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICAgIGZsb2F0aW5nRWwuY2xhc3NMaXN0LmFkZCgnZXQtZmxvYXRpbmctZWxlbWVudCcpO1xuXG4gICAgICBjb25zdCByZWZFbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IGJvdW5kYXJ5ID0gdGhpcy5fcm9vdEJvdW5kYXJ5Py5ib3VuZGFyeUVsZW1lbnQgPz8gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLl9mbG9hdGluZ0VsQ2xlYW51cEZuID0gYXV0b1VwZGF0ZShyZWZFbCwgZmxvYXRpbmdFbCwgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbXBvbmVudFJlZikgcmV0dXJuO1xuXG4gICAgICAgIGNvbXB1dGVQb3NpdGlvbihyZWZFbCwgZmxvYXRpbmdFbCwge1xuICAgICAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQsXG5cbiAgICAgICAgICBtaWRkbGV3YXJlOiBbXG4gICAgICAgICAgICAuLi4odGhpcy5vZmZzZXQgPyBbb2Zmc2V0KHRoaXMub2Zmc2V0KV0gOiBbXSksXG4gICAgICAgICAgICBmbGlwKHtcbiAgICAgICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiB0aGlzLmZhbGxiYWNrUGxhY2VtZW50cyA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb246ICdzdGFydCcsXG4gICAgICAgICAgICAgIGNyb3NzQXhpczogZmFsc2UsXG4gICAgICAgICAgICAgIGJvdW5kYXJ5LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4odGhpcy5hdXRvUmVzaXplXG4gICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgc2l6ZSh7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHRoaXMudmlld3BvcnRQYWRkaW5nID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgYXBwbHkoeyBhdmFpbGFibGVIZWlnaHQsIGF2YWlsYWJsZVdpZHRoIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ0VsLnN0eWxlLnNldFByb3BlcnR5KCctLWV0LWZsb2F0aW5nLW1heC13aWR0aCcsIGAke2F2YWlsYWJsZVdpZHRofXB4YCk7XG4gICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1mbG9hdGluZy1tYXgtaGVpZ2h0JywgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgc2hpZnQoeyBsaW1pdGVyOiBsaW1pdFNoaWZ0KCksIHBhZGRpbmc6IHRoaXMudmlld3BvcnRQYWRkaW5nID8/IHVuZGVmaW5lZCwgYm91bmRhcnkgfSksXG4gICAgICAgICAgICAuLi4oZmxvYXRpbmdFbEFycm93ID8gW2Fycm93KHsgZWxlbWVudDogZmxvYXRpbmdFbEFycm93LCBwYWRkaW5nOiB0aGlzLmFycm93UGFkZGluZyA/PyB1bmRlZmluZWQgfSldIDogW10pLFxuICAgICAgICAgICAgLi4uKHRoaXMuYXV0b0hpZGUgPyBbaGlkZSh7IHN0cmF0ZWd5OiAncmVmZXJlbmNlSGlkZGVuJywgYm91bmRhcnkgfSldIDogW10pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLnRoZW4oKHsgeCwgeSwgcGxhY2VtZW50LCBtaWRkbGV3YXJlRGF0YSB9KSA9PiB7XG4gICAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1mbG9hdGluZy10cmFuc2xhdGUnLCBgdHJhbnNsYXRlM2QoJHt4fXB4LCAke3l9cHgsIDApYCk7XG4gICAgICAgICAgZmxvYXRpbmdFbC5zZXRBdHRyaWJ1dGUoJ2V0LWZsb2F0aW5nLXBsYWNlbWVudCcsIHBsYWNlbWVudCk7XG5cbiAgICAgICAgICBpZiAobWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZmxvYXRpbmdFbEFycm93KSB7XG4gICAgICAgICAgICBjb25zdCB7IHg6IGFycm93WCwgeTogYXJyb3dZIH0gPSBtaWRkbGV3YXJlRGF0YS5hcnJvdztcblxuICAgICAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgJy0tZXQtZmxvYXRpbmctYXJyb3ctdHJhbnNsYXRlJyxcbiAgICAgICAgICAgICAgYHRyYW5zbGF0ZTNkKCR7YXJyb3dYID8/IDB9cHgsICR7YXJyb3dZID8/IDB9cHgsIDApYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1pZGRsZXdhcmVEYXRhLmhpZGU/LnJlZmVyZW5jZUhpZGRlbikge1xuICAgICAgICAgICAgZmxvYXRpbmdFbC5jbGFzc0xpc3QuYWRkKCdldC1mbG9hdGluZy1lbGVtZW50LS1oaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuX2lzSGlkZGVuJC5uZXh0KHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmbG9hdGluZ0VsLmNsYXNzTGlzdC5yZW1vdmUoJ2V0LWZsb2F0aW5nLWVsZW1lbnQtLWhpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5faXNIaWRkZW4kLm5leHQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gV2UgbmVlZCB0byB3YWl0IGZvciB0aGUgIGNvbnRlbnQgdG8gYmUgcmVuZGVyZWRcbiAgICAgIG5leHRGcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5fY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZT8uZW50ZXIoKTtcblxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlPy5zdGF0ZSRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgocykgPT4ge1xuICAgICAgICAgICAgICBpZiAocyA9PT0gJ2VudGVyZWQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWZ0ZXJPcGVuZWQ/Lm5leHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMuX2lzTW91bnRlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5faXNNb3VudGluZyQubmV4dChmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gIH1cblxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy5pc01vdW50ZWQgfHwgdGhpcy5pc1VubW91bnRpbmcpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ0FuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZTogVGhlIGNvbXBvbmVudCBpcyBub3QgbW91bnRlZCBvciBpcyBhbHJlYWR5IHVubW91bnRpbmcuIFBsZWFzZSBjYWxsIGBtb3VudGAgYmVmb3JlIGNhbGxpbmcgYHVubW91bnRgIGFnYWluLicsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2NvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzSGlkZGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNVbm1vdW50aW5nJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5fYmVmb3JlQ2xvc2VkPy5uZXh0KCk7XG5cbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlPy5sZWF2ZSgpO1xuXG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZT8uc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChzKSA9PiBzID09PSAnbGVmdCcpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kZXN0cm95KCkpO1xuICB9XG5cbiAgYmVmb3JlT3BlbmVkKCkge1xuICAgIGlmICghdGhpcy5fYmVmb3JlT3BlbmVkKSB7XG4gICAgICB0aGlzLl9iZWZvcmVPcGVuZWQgPSBuZXcgU3ViamVjdCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9iZWZvcmVPcGVuZWQ7XG4gIH1cblxuICBhZnRlck9wZW5lZCgpIHtcbiAgICBpZiAoIXRoaXMuX2FmdGVyT3BlbmVkKSB7XG4gICAgICB0aGlzLl9hZnRlck9wZW5lZCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyT3BlbmVkO1xuICB9XG5cbiAgYmVmb3JlQ2xvc2VkKCkge1xuICAgIGlmICghdGhpcy5fYmVmb3JlQ2xvc2VkKSB7XG4gICAgICB0aGlzLl9iZWZvcmVDbG9zZWQgPSBuZXcgU3ViamVjdCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9iZWZvcmVDbG9zZWQ7XG4gIH1cblxuICBhZnRlckNsb3NlZCgpIHtcbiAgICBpZiAoIXRoaXMuX2FmdGVyQ2xvc2VkKSB7XG4gICAgICB0aGlzLl9hZnRlckNsb3NlZCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyQ2xvc2VkO1xuICB9XG5cbiAgX2Rlc3Ryb3koKSB7XG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9mbG9hdGluZ0VsQ2xlYW51cEZuPy4oKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2lzTW91bnRlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5faXNVbm1vdW50aW5nJC5uZXh0KGZhbHNlKTtcblxuICAgIHRoaXMuX2FmdGVyQ2xvc2VkPy5uZXh0KCk7XG4gIH1cbn1cbiJdfQ==
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0ZWQtb3ZlcmxheS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2FuaW1hdGVkLW92ZXJsYXkvYW5pbWF0ZWQtb3ZlcmxheS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBRU4sZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlMLEtBQUssRUFDTCxVQUFVLEVBQ1YsZUFBZSxFQUNmLElBQUksRUFDSixJQUFJLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsSUFBSSxHQUNMLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFnQnpELE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFRbUIsY0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBQzVCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENB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QUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7OEdBellVLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQVBwQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDeEMsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxxQkFBcUI7cUJBQzdCO2lCQUNGOzhCQStCQyxTQUFTO3NCQURSLEtBQUs7Z0JBUU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQVFOLE1BQU07c0JBREwsS0FBSztnQkFTTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sZUFBZTtzQkFEZCxLQUFLO2dCQVNOLFVBQVU7c0JBRFQsS0FBSztnQkFPTixLQUFLO3NCQURKLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBTdGF0aWNQcm92aWRlcixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgaW5qZWN0LFxuICBpc0Rldk1vZGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZVRoZW1lRGlyZWN0aXZlIH0gZnJvbSAnQGV0aGxldGUvdGhlbWluZyc7XG5pbXBvcnQge1xuICBPZmZzZXRPcHRpb25zLFxuICBQYWRkaW5nLFxuICBQbGFjZW1lbnQsXG4gIGFycm93LFxuICBhdXRvVXBkYXRlLFxuICBjb21wdXRlUG9zaXRpb24sXG4gIGZsaXAsXG4gIGhpZGUsXG4gIGxpbWl0U2hpZnQsXG4gIG9mZnNldCxcbiAgc2hpZnQsXG4gIHNpemUsXG59IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjcmVhdGVEZXN0cm95LCBuZXh0RnJhbWUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2FuaW1hdGVkLWxpZmVjeWNsZSc7XG5pbXBvcnQgeyBPYnNlcnZlUmVzaXplRGlyZWN0aXZlIH0gZnJvbSAnLi4vb2JzZXJ2ZS1yZXNpemUnO1xuaW1wb3J0IHsgUm9vdEJvdW5kYXJ5RGlyZWN0aXZlIH0gZnJvbSAnLi4vcm9vdC1ib3VuZGFyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5pbWF0ZWRPdmVybGF5Q29tcG9uZW50QmFzZSB7XG4gIF9lbGVtZW50UmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIF9hbmltYXRlZExpZmVjeWNsZT86IEFuaW1hdGVkTGlmZWN5Y2xlRGlyZWN0aXZlO1xuICBfbWFya0ZvckNoZWNrPzogKCkgPT4gdm9pZDtcbiAgX3NldFRoZW1lRnJvbVByb3ZpZGVyPzogKHByb3ZpZGVyOiBQcm92aWRlVGhlbWVEaXJlY3RpdmUpID0+IHZvaWQ7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0RGlyZWN0aXZlczogW09ic2VydmVSZXNpemVEaXJlY3RpdmVdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1hbmltYXRlZC1vdmVybGF5JyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlPFQgZXh0ZW5kcyBBbmltYXRlZE92ZXJsYXlDb21wb25lbnRCYXNlPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5U2VydmljZSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vYnNlcnZlUmVzaXplID0gaW5qZWN0KE9ic2VydmVSZXNpemVEaXJlY3RpdmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb290Qm91bmRhcnkgPSBpbmplY3QoUm9vdEJvdW5kYXJ5RGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgX3BvcnRhbDogQ29tcG9uZW50UG9ydGFsPFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZmxvYXRpbmdFbENsZWFudXBGbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfYmVmb3JlT3BlbmVkOiBTdWJqZWN0PHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2FmdGVyT3BlbmVkOiBTdWJqZWN0PHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2JlZm9yZUNsb3NlZDogU3ViamVjdDx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9hZnRlckNsb3NlZDogU3ViamVjdDx2b2lkPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzTW91bnRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNNb3VudGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNVbm1vdW50aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0hpZGRlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKipcbiAgICogVGhlIHBsYWNlbWVudCBvZiB0aGUgYW5pbWF0ZWQgb3ZlcmxheS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwbGFjZW1lbnQ/OiBQbGFjZW1lbnQgPSAnYm90dG9tJztcblxuICAvKipcbiAgICogVGhlIGFsbG93ZWQgYXV0byBwbGFjZW1lbnRzIG9mIHRoZSBhbmltYXRlZCBvdmVybGF5LlxuICAgKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcCNmYWxsYmFja3BsYWNlbWVudHNcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZhbGxiYWNrUGxhY2VtZW50cz86IFBsYWNlbWVudFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgb2Zmc2V0IG9mIHRoZSBhbmltYXRlZCBvdmVybGF5LlxuICAgKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gICAqL1xuICBASW5wdXQoKVxuICBvZmZzZXQ6IE9mZnNldE9wdGlvbnMgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGFycm93IHBhZGRpbmcuXG4gICAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvdyNwYWRkaW5nXG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGFycm93UGFkZGluZzogUGFkZGluZyB8IG51bGwgPSA0O1xuXG4gIC8qKlxuICAgKiBUaGUgdmlld3BvcnQgcGFkZGluZy5cbiAgICogQGRlZmF1bHQgOFxuICAgKi9cbiAgQElucHV0KClcbiAgdmlld3BvcnRQYWRkaW5nOiBQYWRkaW5nIHwgbnVsbCA9IDg7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGFuaW1hdGVkIG92ZXJsYXkgc2hvdWxkIGF1dG8gcmVzaXplIHRvIGZpdCB0aGUgYXZhaWxhYmxlIHNwYWNlLlxuICAgKiBVc2VmdWwgZm9yIHRoaW5ncyBsaWtlIHNlbGVjdHMgd2hlcmUgdGhlIGxpc3Qgb2Ygb3B0aW9ucyBtaWdodCBiZSBsb25nZXIgdGhhbiB0aGUgYXZhaWxhYmxlIHNwYWNlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgYXV0b1Jlc2l6ZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhbmltYXRlZCBvdmVybGF5IHNob3VsZCBzaGlmdCB3aGVuIGl0IGlzIG5lYXIgdGhlIHZpZXdwb3J0IGJvdW5kYXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgc2hpZnQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhbmltYXRlZCBvdmVybGF5IHNob3VsZCBhdXRvIGhpZGUgd2hlbiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgaXMgaGlkZGVuLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgYXV0b0hpZGUgPSBmYWxzZTtcblxuICBnZXQgaXNNb3VudGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01vdW50ZWQkLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTW91bnRlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTW91bnRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNNb3VudGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNNb3VudGluZyQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNNb3VudGluZyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTW91bnRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzVW5tb3VudGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNVbm1vdW50aW5nJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0hpZGRlbiQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSGlkZGVuJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc0hpZGRlbigpIHtcbiAgICByZXR1cm4gdGhpcy5faXNIaWRkZW4kLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGNhbk1vdW50KCkge1xuICAgIHJldHVybiAhdGhpcy5pc01vdW50ZWQgJiYgIXRoaXMuaXNNb3VudGluZztcbiAgfVxuXG4gIGdldCBjYW5Vbm1vdW50KCkge1xuICAgIHJldHVybiB0aGlzLmlzTW91bnRlZCAmJiAhdGhpcy5pc1VubW91bnRpbmc7XG4gIH1cblxuICBnZXQgcG9ydGFsKCkge1xuICAgIHJldHVybiB0aGlzLl9wb3J0YWw7XG4gIH1cblxuICBnZXQgb3ZlcmxheVJlZigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtcbiAgfVxuXG4gIGdldCBjb21wb25lbnRSZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudFJlZjtcbiAgfVxuXG4gIG1vdW50KGNvbmZpZzoge1xuICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPjtcbiAgICBwcm92aWRlcnM/OiBTdGF0aWNQcm92aWRlcltdO1xuICAgIGRhdGE/OiBQYXJ0aWFsPFQ+O1xuICAgIG1pcnJvcldpZHRoPzogYm9vbGVhbjtcbiAgICB0aGVtZVByb3ZpZGVyPzogUHJvdmlkZVRoZW1lRGlyZWN0aXZlIHwgbnVsbDtcbiAgfSkge1xuICAgIGlmICh0aGlzLmlzTW91bnRlZCB8fCB0aGlzLmlzTW91bnRpbmcpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBpZiAodGhpcy5pc01vdW50ZWQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAnQW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlOiBUaGUgY29tcG9uZW50IGlzIGN1cnJlbnRseSBtb3VudGVkLiBQbGVhc2UgdW5tb3VudCB0aGUgY29tcG9uZW50IGJlZm9yZSBtb3VudGluZyBhZ2Fpbi4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc01vdW50aW5nKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgJ0FuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZTogVGhlIGNvbXBvbmVudCBpcyBhbHJlYWR5IG1vdW50aW5nLiBQbGVhc2UgdW5tb3VudCB0aGUgY29tcG9uZW50IGJlZm9yZSBtb3VudGluZyBhZ2Fpbi4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzTW91bnRpbmckLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zdCB7IGNvbXBvbmVudCwgcHJvdmlkZXJzLCBkYXRhLCBtaXJyb3JXaWR0aCwgdGhlbWVQcm92aWRlciB9ID0gY29uZmlnO1xuXG4gICAgdGhpcy5fYmVmb3JlT3BlbmVkPy5uZXh0KCk7XG5cbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBwcm92aWRlcnMgPz8gW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheVNlcnZpY2UuY3JlYXRlKCk7XG5cbiAgICB0aGlzLl9wb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudCwgdGhpcy5fdmlld0NvbnRhaW5lclJlZiwgaW5qZWN0b3IpO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UsIGRhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5fbWFya0ZvckNoZWNrPy4oKTtcblxuICAgIGlmICh0aGVtZVByb3ZpZGVyKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuX3NldFRoZW1lRnJvbVByb3ZpZGVyPy4odGhlbWVQcm92aWRlcik7XG4gICAgfVxuXG4gICAgaWYgKG1pcnJvcldpZHRoKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVNpemUoe1xuICAgICAgICB3aWR0aDogdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX29ic2VydmVSZXNpemUudmFsdWVDaGFuZ2VcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWY/LnVwZGF0ZVNpemUoe1xuICAgICAgICAgICAgICB3aWR0aDogdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5hZnRlckNsb3NlZCgpKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2NvbXBvbmVudFJlZikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZsb2F0aW5nRWwgPSB0aGlzLl9jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGZsb2F0aW5nRWxBcnJvdyA9IHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnW2V0LWZsb2F0aW5nLWFycm93XScsXG4gICAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgICAgZmxvYXRpbmdFbC5jbGFzc0xpc3QuYWRkKCdldC1mbG9hdGluZy1lbGVtZW50Jyk7XG5cbiAgICAgIGNvbnN0IHJlZkVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgYm91bmRhcnkgPSB0aGlzLl9yb290Qm91bmRhcnk/LmJvdW5kYXJ5RWxlbWVudCA/PyB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMuX2Zsb2F0aW5nRWxDbGVhbnVwRm4gPSBhdXRvVXBkYXRlKHJlZkVsLCBmbG9hdGluZ0VsLCAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5fY29tcG9uZW50UmVmKSByZXR1cm47XG5cbiAgICAgICAgY29tcHV0ZVBvc2l0aW9uKHJlZkVsLCBmbG9hdGluZ0VsLCB7XG4gICAgICAgICAgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCxcblxuICAgICAgICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgICAgICAgIC4uLih0aGlzLm9mZnNldCA/IFtvZmZzZXQodGhpcy5vZmZzZXQpXSA6IFtdKSxcbiAgICAgICAgICAgIGZsaXAoe1xuICAgICAgICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHRoaXMuZmFsbGJhY2tQbGFjZW1lbnRzID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbjogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgYm91bmRhcnksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLih0aGlzLmF1dG9SZXNpemVcbiAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICBzaXplKHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogdGhpcy52aWV3cG9ydFBhZGRpbmcgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBhcHBseSh7IGF2YWlsYWJsZUhlaWdodCwgYXZhaWxhYmxlV2lkdGggfSkge1xuICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nRWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tZXQtZmxvYXRpbmctbWF4LXdpZHRoJywgYCR7YXZhaWxhYmxlV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ0VsLnN0eWxlLnNldFByb3BlcnR5KCctLWV0LWZsb2F0aW5nLW1heC1oZWlnaHQnLCBgJHthdmFpbGFibGVIZWlnaHR9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAuLi4odGhpcy5zaGlmdFxuICAgICAgICAgICAgICA/IFtzaGlmdCh7IGxpbWl0ZXI6IGxpbWl0U2hpZnQoKSwgcGFkZGluZzogdGhpcy52aWV3cG9ydFBhZGRpbmcgPz8gdW5kZWZpbmVkLCBib3VuZGFyeSB9KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAuLi4oZmxvYXRpbmdFbEFycm93ID8gW2Fycm93KHsgZWxlbWVudDogZmxvYXRpbmdFbEFycm93LCBwYWRkaW5nOiB0aGlzLmFycm93UGFkZGluZyA/PyB1bmRlZmluZWQgfSldIDogW10pLFxuICAgICAgICAgICAgLi4uKHRoaXMuYXV0b0hpZGUgPyBbaGlkZSh7IHN0cmF0ZWd5OiAncmVmZXJlbmNlSGlkZGVuJywgYm91bmRhcnkgfSldIDogW10pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLnRoZW4oKHsgeCwgeSwgcGxhY2VtZW50LCBtaWRkbGV3YXJlRGF0YSB9KSA9PiB7XG4gICAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1mbG9hdGluZy10cmFuc2xhdGUnLCBgdHJhbnNsYXRlM2QoJHt4fXB4LCAke3l9cHgsIDApYCk7XG4gICAgICAgICAgZmxvYXRpbmdFbC5zZXRBdHRyaWJ1dGUoJ2V0LWZsb2F0aW5nLXBsYWNlbWVudCcsIHBsYWNlbWVudCk7XG5cbiAgICAgICAgICBpZiAobWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZmxvYXRpbmdFbEFycm93KSB7XG4gICAgICAgICAgICBjb25zdCB7IHg6IGFycm93WCwgeTogYXJyb3dZIH0gPSBtaWRkbGV3YXJlRGF0YS5hcnJvdztcblxuICAgICAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgJy0tZXQtZmxvYXRpbmctYXJyb3ctdHJhbnNsYXRlJyxcbiAgICAgICAgICAgICAgYHRyYW5zbGF0ZTNkKCR7YXJyb3dYID8/IDB9cHgsICR7YXJyb3dZID8/IDB9cHgsIDApYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1pZGRsZXdhcmVEYXRhLmhpZGU/LnJlZmVyZW5jZUhpZGRlbikge1xuICAgICAgICAgICAgZmxvYXRpbmdFbC5jbGFzc0xpc3QuYWRkKCdldC1mbG9hdGluZy1lbGVtZW50LS1oaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuX2lzSGlkZGVuJC5uZXh0KHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmbG9hdGluZ0VsLmNsYXNzTGlzdC5yZW1vdmUoJ2V0LWZsb2F0aW5nLWVsZW1lbnQtLWhpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5faXNIaWRkZW4kLm5leHQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gV2UgbmVlZCB0byB3YWl0IGZvciB0aGUgIGNvbnRlbnQgdG8gYmUgcmVuZGVyZWRcbiAgICAgIG5leHRGcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5fY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmU6IFRoZSBjb21wb25lbnQgZG9lcyBub3QgaGF2ZSBhbiBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZS4gUGxlYXNlIGFkZCBvbmUgdG8gdGhlIGNvbXBvbmVudC4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlPy5lbnRlcigpO1xuXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGU/LnN0YXRlJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKChzKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzID09PSAnZW50ZXJlZCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZnRlck9wZW5lZD8ubmV4dCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5faXNNb3VudGVkJC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLl9pc01vdW50aW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLmlzTW91bnRlZCB8fCB0aGlzLmlzVW5tb3VudGluZykge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGlmICghdGhpcy5pc01vdW50ZWQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgQW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlOiBUaGUgY29tcG9uZW50IGlzIGN1cnJlbnRseSBub3QgbW91bnRlZC4gUGxlYXNlIGNhbGwgXCJtb3VudFwiIGJlZm9yZSBjYWxsaW5nIFwidW5tb3VudFwiIGFnYWluLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzVW5tb3VudGluZykge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmU6IFRoZSBjb21wb25lbnQgaXMgYWxyZWFkeSB1bm1vdW50aW5nLiBQbGVhc2UgY2FsbCBcIm1vdW50XCIgYmVmb3JlIGNhbGxpbmcgXCJ1bm1vdW50XCIgYWdhaW4uYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2NvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzSGlkZGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNVbm1vdW50aW5nJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5fYmVmb3JlQ2xvc2VkPy5uZXh0KCk7XG5cbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlPy5sZWF2ZSgpO1xuXG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZT8uc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChzKSA9PiBzID09PSAnbGVmdCcpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kZXN0cm95KCkpO1xuICB9XG5cbiAgYmVmb3JlT3BlbmVkKCkge1xuICAgIGlmICghdGhpcy5fYmVmb3JlT3BlbmVkKSB7XG4gICAgICB0aGlzLl9iZWZvcmVPcGVuZWQgPSBuZXcgU3ViamVjdCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9iZWZvcmVPcGVuZWQ7XG4gIH1cblxuICBhZnRlck9wZW5lZCgpIHtcbiAgICBpZiAoIXRoaXMuX2FmdGVyT3BlbmVkKSB7XG4gICAgICB0aGlzLl9hZnRlck9wZW5lZCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyT3BlbmVkO1xuICB9XG5cbiAgYmVmb3JlQ2xvc2VkKCkge1xuICAgIGlmICghdGhpcy5fYmVmb3JlQ2xvc2VkKSB7XG4gICAgICB0aGlzLl9iZWZvcmVDbG9zZWQgPSBuZXcgU3ViamVjdCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9iZWZvcmVDbG9zZWQ7XG4gIH1cblxuICBhZnRlckNsb3NlZCgpIHtcbiAgICBpZiAoIXRoaXMuX2FmdGVyQ2xvc2VkKSB7XG4gICAgICB0aGlzLl9hZnRlckNsb3NlZCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyQ2xvc2VkO1xuICB9XG5cbiAgX2Rlc3Ryb3koKSB7XG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9mbG9hdGluZ0VsQ2xlYW51cEZuPy4oKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2lzTW91bnRlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5faXNVbm1vdW50aW5nJC5uZXh0KGZhbHNlKTtcblxuICAgIHRoaXMuX2FmdGVyQ2xvc2VkPy5uZXh0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -308,10 +308,15 @@ export const signalElementIntersection = (el, options) => {
308
308
  export const signalHostElementIntersection = (options) => signalElementIntersection(inject(ElementRef), options);
309
309
  export const signalElementChildren = (el) => {
310
310
  const elements = buildElementSignal(el);
311
- const mutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });
311
+ const isRendered = signalIsRendered();
312
+ const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });
312
313
  return computed(() => {
314
+ if (!isRendered())
315
+ return [];
313
316
  const els = elements();
314
- mutations();
317
+ // We are not interested what the mutation is, just that there is one.
318
+ // Changes to the DOM may affect the children of the element.
319
+ elementMutations();
315
320
  if (!els.currentElement)
316
321
  return [];
317
322
  const children = [];
@@ -324,4 +329,4 @@ export const signalElementChildren = (el) => {
324
329
  return children;
325
330
  });
326
331
  };
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2lnbmFsLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsVUFBVSxFQUVWLFVBQVUsRUFDVixNQUFNLEVBQ04sU0FBUyxFQUVULGVBQWUsRUFDZixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUF5QjNFLFNBQVMsZUFBZSxDQUFDLEVBQVc7SUFDbEMsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDaEIsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDakIsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxnQkFBZ0IsSUFBSSxHQUFHLElBQUksaUJBQWlCLElBQUksR0FBRyxDQUFDO0tBQ3ZHO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxxQkFBcUIsR0FBRyxHQUFrQixFQUFFLENBQ2hELE1BQU0sQ0FBQztJQUNMLGNBQWMsRUFBRSxRQUFRLENBQUMsZUFBZTtJQUN4QyxlQUFlLEVBQUUsSUFBSTtJQUNyQixlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBQzNDLGdCQUFnQixFQUFFLEVBQUU7Q0FDckIsQ0FBQyxDQUFDO0FBRUwsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEVBQStDLEVBQWlCLEVBQUU7SUFDNUYsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUU7UUFDbkMsT0FBTyxNQUFNLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzNHO0lBRUQsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDdkIsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELElBQUksU0FBUyxHQUF3QyxJQUFJLENBQUM7SUFFMUQsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQ3pCLFNBQVMsQ0FBQyxDQUFDLE9BQXdDLEVBQUUsRUFBRTtRQUNyRCxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7WUFDaEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDekIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUNsQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDMUQsQ0FBQztTQUNIO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakQ7YUFBTTtZQUNMLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxJQUFJLEVBQUUsWUFBWSxVQUFVLEVBQUU7UUFDNUIsU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUN4RTtTQUFNLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ3ZCLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FDdEY7U0FBTSxJQUFJLEVBQUUsWUFBWSxTQUFTLEVBQUU7UUFDbEMsU0FBUyxHQUFHLFFBQVEsQ0FDbEIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2IsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNyRCxFQUNELEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUN2QixDQUFDO0tBQ0g7U0FBTTtRQUNMLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pDO0lBRUQsT0FBTyxRQUFRLENBQ2IsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLFFBQVEsRUFBRSxFQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLElBQUksRUFBRTtRQUN4QyxlQUFlLEVBQUUsZUFBZSxJQUFJLEVBQUU7UUFDdEMsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUk7UUFDNUMsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtLQUMvQyxDQUFDLENBQUMsQ0FDSixFQUNELEVBQUUsWUFBWSxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDN0csQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQTRDLE1BSTdFLEVBQUUsRUFBRTtJQUNILE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU5QyxNQUFNLFlBQVksR0FBOEIsRUFBRSxDQUFDO0lBRW5ELEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckUsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUU7WUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztZQUVILFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDM0I7S0FDRjtJQUVELE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDO0lBRXJELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxNQUFnQixFQUFFLEVBQUU7UUFDckMsS0FBSyxNQUFNLFdBQVcsSUFBSSxNQUFNLEVBQUU7WUFDaEMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBRXJDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRTdELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7SUFDbkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFNUMsT0FBTyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQTRDLEVBQTRCLEVBQUUsUUFBVyxFQUFFLEVBQUU7SUFDcEgsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFeEMsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixHQUFHLEVBQUUsUUFBUTtRQUNiLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDL0M7aUJBQU07Z0JBQ0wsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDbEQ7UUFDSCxDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0tBQ3pFLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQTRDLFFBQVcsRUFBRSxFQUFFLENBQzFGLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFOUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUUvRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUM5QixFQUE0QixFQUM1QixZQUFlLEVBQ2YsRUFBRTtJQUNGLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLFlBQVk7UUFDakIsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUM3QixNQUFNLFdBQVcsR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO1lBRS9CLElBQUksMEJBQTBCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLEtBQUssRUFBRTtvQkFDVCxRQUFRLEVBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDbEQ7cUJBQU07b0JBQ0wsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDakQ7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtvQkFDekMsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDakQ7cUJBQU07b0JBQ0wsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7aUJBQzNEO2FBQ0Y7UUFDSCxDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUM7S0FDeEUsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBNEMsWUFBZSxFQUFFLEVBQUUsQ0FDakcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUE0QyxFQUE0QixFQUFFLFFBQVcsRUFBRSxFQUFFO0lBQ25ILE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLFFBQVE7UUFDYixVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzdCLE1BQU0sV0FBVyxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFFL0IsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7S0FDN0UsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBNEMsUUFBVyxFQUFFLEVBQUUsQ0FDekYsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQWM3QyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQTRCLEVBQUUsRUFBRTtJQUN0RSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFFdEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLHFCQUFxQixFQUFFLElBQUksSUFBSTtRQUNoRSxhQUFhLEVBQUUsSUFBSTtRQUNuQixjQUFjLEVBQUUsSUFBSTtRQUNwQix5QkFBeUIsRUFBRSxJQUFJO0tBQ2hDLENBQUMsQ0FBQztJQUVILE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxDQUFvQixZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRTFFLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDeEMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUFFLE9BQU87UUFFMUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5CLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDL0UsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUN2RCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1lBRXpELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQ1osdUJBQXVCLENBQUMsR0FBRyxDQUFDO2dCQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQ3ZCLGFBQWEsRUFBRSxhQUFhO29CQUMxQixDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsRUFBRTtvQkFDOUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1IsY0FBYyxFQUFFLGNBQWM7b0JBQzVCLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFO29CQUNoRixDQUFDLENBQUMsSUFBSTtnQkFDUix5QkFBeUIsRUFBRSx5QkFBeUI7b0JBQ2xELENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLHlCQUF5QixDQUFDLFNBQVMsRUFBRTtvQkFDdEcsQ0FBQyxDQUFDLElBQUk7YUFDVCxDQUFDLENBQ0gsQ0FBQztTQUNIO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLENBQ0osR0FBRyxFQUFFO1FBQ0gsTUFBTSxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFFdkIsdUJBQXVCLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFNUMsSUFBSSxHQUFHLENBQUMsZUFBZSxFQUFFO1lBQ3ZCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUN2QjtRQUVELElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRTtZQUN0QixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3JFLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTVGLElBQUksZUFBZSxLQUFLLFFBQVEsSUFBSSxTQUFTLEVBQUUsSUFBSSwyQkFBMkIsRUFBRTtnQkFDOUUsT0FBTyxDQUFDLEtBQUssQ0FDWCxZQUFZLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSw0SkFBNEosQ0FDbE4sQ0FBQzthQUNIO1lBRUQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUVGLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFbEQsT0FBTyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUU3RixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEVBQTRCLEVBQUUsT0FBOEIsRUFBRSxFQUFFO0lBQ3JHLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUV0QyxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBd0IsSUFBSSxDQUFDLENBQUM7SUFFbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQzFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxPQUFPO1FBRTFCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuQixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FDSixHQUFHLEVBQUU7UUFDSCxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsQ0FBQztRQUV2QixzQkFBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakMsSUFBSSxHQUFHLENBQUMsZUFBZSxFQUFFO1lBQ3ZCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUN2QjtRQUVELElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRTtZQUN0QixRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUVGLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFbEQsT0FBTyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLE9BQThCLEVBQUUsRUFBRSxDQUMzRSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxFQUE0QixFQUFFLEVBQUU7SUFDdkUsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsTUFBTSxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxNQUFNLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUV0QyxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxPQUFPLEdBQUcsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDO1FBQzFDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFFdkMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMzQixTQUFTLEVBQUUsS0FBSztZQUNoQixxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsV0FBVyxFQUFFLE9BQU8sRUFBRSxXQUFXLElBQUksSUFBSTtZQUN6QyxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksSUFBSSxJQUFJO1lBQzNDLGlCQUFpQixFQUFFLFVBQVU7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsc0VBQXNFO1FBQ3RFLGlFQUFpRTtRQUNqRSxnQkFBZ0IsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsT0FBTyxhQUFhLEVBQUUsQ0FBQztRQUUxRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUM5QyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFFMUMsTUFBTSxxQkFBcUIsR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ2xELE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxHQUFHLE1BQU0sQ0FBQztRQUVsRCxPQUFPO1lBQ0wsU0FBUyxFQUFFLHFCQUFxQixJQUFJLG1CQUFtQjtZQUN2RCxxQkFBcUI7WUFDckIsbUJBQW1CO1lBQ25CLFdBQVc7WUFDWCxZQUFZO1lBQ1osaUJBQWlCLEVBQUUsVUFBVTtTQUM5QixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQU8vRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLEVBQTRCLEVBQUUsT0FBMEMsRUFBRSxFQUFFO0lBQ3BILE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxNQUFNLElBQUksR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDekYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDdEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbkQsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQThCLEVBQUUsQ0FBQyxDQUFDO0lBRTFFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBOEIsSUFBSSxDQUFDLENBQUM7SUFFM0QsTUFBTSxDQUNKLEdBQUcsRUFBRTtRQUNILE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUVyQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUxQyxNQUFNLFdBQVcsR0FBRyxJQUFJLG9CQUFvQixDQUMxQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFBRSxPQUFPO1lBRTFCLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFdEUsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUU7Z0JBQzNCLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRXJGLElBQUksa0JBQWtCLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQzdCLGFBQWEsR0FBRzt3QkFDZCxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDO3dCQUM3QyxLQUFLO3dCQUNMLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7cUJBQy9DLENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsYUFBYSxHQUFHLENBQUMsR0FBRyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzNDO2FBQ0Y7WUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsRUFDRCxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FDN0IsQ0FBQztRQUVGLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7SUFFRixNQUFNLENBQ0osR0FBRyxFQUFFO1FBQ0gsTUFBTSxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFFNUIseUJBQXlCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWxDLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUMvQixHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUM7U0FDbkI7UUFFRCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDM0MsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUMsZUFBZSxFQUFFO2dCQUNwQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2xCO1NBQ0Y7SUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUVGLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUVyRCxPQUFPLHlCQUF5QixDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsT0FBMEMsRUFBRSxFQUFFLENBQzFGLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUV6RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEVBQTRCLEVBQUUsRUFBRTtJQUNwRSxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV4QyxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFekcsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25CLE1BQU0sR0FBRyxHQUFHLFFBQVEsRUFBRSxDQUFDO1FBRXZCLFNBQVMsRUFBRSxDQUFDO1FBRVosSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFbkMsTUFBTSxRQUFRLEdBQWtCLEVBQUUsQ0FBQztRQUVuQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZFLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRW5ELElBQUksT0FBTyxZQUFZLFdBQVcsRUFBRTtnQkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4QjtTQUNGO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIERlc3Ryb3lSZWYsXG4gIEVmZmVjdFJlZixcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxuICBRdWVyeUxpc3QsXG4gIFNpZ25hbCxcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlzRGV2TW9kZSxcbiAgaXNTaWduYWwsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAsIG9mLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxudHlwZSBTaWduYWxFbGVtZW50QmluZGluZ0NvbXBsZXhUeXBlID1cbiAgfCBIVE1MRWxlbWVudFxuICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gIHwgUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQ+XG4gIHwgQXJyYXk8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudD5cbiAgfCBudWxsXG4gIHwgdW5kZWZpbmVkO1xuXG50eXBlIFNpZ25hbEVsZW1lbnRCaW5kaW5nVHlwZSA9XG4gIHwgSFRNTEVsZW1lbnRcbiAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICB8IE9ic2VydmFibGU8U2lnbmFsRWxlbWVudEJpbmRpbmdDb21wbGV4VHlwZT5cbiAgfCBTaWduYWw8U2lnbmFsRWxlbWVudEJpbmRpbmdDb21wbGV4VHlwZT5cbiAgfCBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudD5cbiAgfCBFbGVtZW50U2lnbmFsO1xuXG50eXBlIEVsZW1lbnRTaWduYWwgPSBTaWduYWw8e1xuICBjdXJyZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBwcmV2aW91c0VsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgY3VycmVudEVsZW1lbnRzOiBIVE1MRWxlbWVudFtdO1xuICBwcmV2aW91c0VsZW1lbnRzOiBIVE1MRWxlbWVudFtdO1xufT47XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFNpZ25hbChlbDogdW5rbm93bik6IGVsIGlzIEVsZW1lbnRTaWduYWwge1xuICBpZiAoaXNTaWduYWwoZWwpKSB7XG4gICAgY29uc3QgdmFsID0gZWwoKTtcbiAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsICYmICdjdXJyZW50RWxlbWVudCcgaW4gdmFsICYmICdwcmV2aW91c0VsZW1lbnQnIGluIHZhbDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuY29uc3QgZG9jdW1lbnRFbGVtZW50U2lnbmFsID0gKCk6IEVsZW1lbnRTaWduYWwgPT5cbiAgc2lnbmFsKHtcbiAgICBjdXJyZW50RWxlbWVudDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgIHByZXZpb3VzRWxlbWVudDogbnVsbCxcbiAgICBjdXJyZW50RWxlbWVudHM6IFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdLFxuICAgIHByZXZpb3VzRWxlbWVudHM6IFtdLFxuICB9KTtcblxuY29uc3QgYnVpbGRFbGVtZW50U2lnbmFsID0gKGVsOiBTaWduYWxFbGVtZW50QmluZGluZ1R5cGUgfCBudWxsIHwgdW5kZWZpbmVkKTogRWxlbWVudFNpZ25hbCA9PiB7XG4gIGlmIChlbCA9PT0gbnVsbCB8fCBlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHNpZ25hbCh7IGN1cnJlbnRFbGVtZW50OiBudWxsLCBwcmV2aW91c0VsZW1lbnQ6IG51bGwsIGN1cnJlbnRFbGVtZW50czogW10sIHByZXZpb3VzRWxlbWVudHM6IFtdIH0pO1xuICB9XG5cbiAgaWYgKGlzRWxlbWVudFNpZ25hbChlbCkpIHtcbiAgICByZXR1cm4gZWw7XG4gIH1cblxuICBsZXQgbUVsU2lnbmFsOiBTaWduYWw8SFRNTEVsZW1lbnRbXSB8IG51bGw+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3Qgc3dpdGNoRWxlbWVudCA9ICgpID0+XG4gICAgc3dpdGNoTWFwKChlbE9yUmVmOiBTaWduYWxFbGVtZW50QmluZGluZ0NvbXBsZXhUeXBlKSA9PiB7XG4gICAgICBpZiAoZWxPclJlZiBpbnN0YW5jZW9mIFF1ZXJ5TGlzdCkge1xuICAgICAgICByZXR1cm4gZWxPclJlZi5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKGVsT3JSZWYpLFxuICAgICAgICAgIG1hcCgoKSA9PiBlbE9yUmVmLnRvQXJyYXkoKS5tYXAoKHIpID0+IGNvZXJjZUVsZW1lbnQocikpKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShlbE9yUmVmKSkge1xuICAgICAgICByZXR1cm4gb2YoZWxPclJlZi5tYXAoKHIpID0+IGNvZXJjZUVsZW1lbnQocikpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWRFbCA9IGNvZXJjZUVsZW1lbnQoZWxPclJlZik7XG4gICAgICAgIHJldHVybiBvZihjb2VyY2VkRWwgPyBbY29lcmNlZEVsXSA6IG51bGwpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGlmIChlbCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICBtRWxTaWduYWwgPSB0b1NpZ25hbChlbC5waXBlKHN3aXRjaEVsZW1lbnQoKSksIHsgaW5pdGlhbFZhbHVlOiBudWxsIH0pO1xuICB9IGVsc2UgaWYgKGlzU2lnbmFsKGVsKSkge1xuICAgIG1FbFNpZ25hbCA9IHRvU2lnbmFsKHRvT2JzZXJ2YWJsZShlbCkucGlwZShzd2l0Y2hFbGVtZW50KCkpLCB7IGluaXRpYWxWYWx1ZTogbnVsbCB9KTtcbiAgfSBlbHNlIGlmIChlbCBpbnN0YW5jZW9mIFF1ZXJ5TGlzdCkge1xuICAgIG1FbFNpZ25hbCA9IHRvU2lnbmFsKFxuICAgICAgZWwuY2hhbmdlcy5waXBlKFxuICAgICAgICBzdGFydFdpdGgoZWwpLFxuICAgICAgICBtYXAoKCkgPT4gZWwudG9BcnJheSgpLm1hcCgocikgPT4gY29lcmNlRWxlbWVudChyKSkpLFxuICAgICAgKSxcbiAgICAgIHsgaW5pdGlhbFZhbHVlOiBudWxsIH0sXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBtRWxTaWduYWwgPSBzaWduYWwoW2NvZXJjZUVsZW1lbnQoZWwpXSk7XG4gIH1cblxuICByZXR1cm4gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKG1FbFNpZ25hbCkucGlwZShcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKFtwcmV2aW91c0VsZW1lbnRzLCBjdXJyZW50RWxlbWVudHNdKSA9PiAoe1xuICAgICAgICBwcmV2aW91c0VsZW1lbnRzOiBwcmV2aW91c0VsZW1lbnRzID8/IFtdLFxuICAgICAgICBjdXJyZW50RWxlbWVudHM6IGN1cnJlbnRFbGVtZW50cyA/PyBbXSxcbiAgICAgICAgY3VycmVudEVsZW1lbnQ6IGN1cnJlbnRFbGVtZW50cz8uWzBdID8/IG51bGwsXG4gICAgICAgIHByZXZpb3VzRWxlbWVudDogcHJldmlvdXNFbGVtZW50cz8uWzBdID8/IG51bGwsXG4gICAgICB9KSksXG4gICAgKSxcbiAgICB7IGluaXRpYWxWYWx1ZTogeyBjdXJyZW50RWxlbWVudDogbnVsbCwgcHJldmlvdXNFbGVtZW50OiBudWxsLCBwcmV2aW91c0VsZW1lbnRzOiBbXSwgY3VycmVudEVsZW1lbnRzOiBbXSB9IH0sXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRTaWduYWxFZmZlY3RzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+Pihjb25maWc6IHtcbiAgbWFwOiBUO1xuICBlYWNoSXRlbUZuOiAocGFpcjogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZDtcbiAgY2xlYW51cEZuOiAocGFpcjogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZDtcbn0pID0+IHtcbiAgY29uc3QgeyBtYXAsIGVhY2hJdGVtRm4sIGNsZWFudXBGbiB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGVmZmVjdFJlZk1hcDogUmVjb3JkPHN0cmluZywgRWZmZWN0UmVmPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgW3Rva2VuU3RyaW5nLCBzaWduYWxdIG9mIE9iamVjdC5lbnRyaWVzKG1hcCkpIHtcbiAgICBjb25zdCB0b2tlbkFycmF5ID0gdG9rZW5TdHJpbmcuc3BsaXQoJyAnKS5maWx0ZXIoKHRva2VuKSA9PiAhIXRva2VuKTtcblxuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5BcnJheSkge1xuICAgICAgY29uc3QgcmVmID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzaWduYWwoKTtcbiAgICAgICAgZWFjaEl0ZW1Gbih7IGtleTogdG9rZW4sIHZhbHVlIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGVmZmVjdFJlZk1hcFt0b2tlbl0gPSByZWY7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFzID0gKHRva2VuOiBzdHJpbmcpID0+IHRva2VuIGluIGVmZmVjdFJlZk1hcDtcblxuICBjb25zdCByZW1vdmUgPSAoLi4udG9rZW5zOiBzdHJpbmdbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgdG9rZW5TdHJpbmcgb2YgdG9rZW5zKSB7XG4gICAgICBlZmZlY3RSZWZNYXBbdG9rZW5TdHJpbmddPy5kZXN0cm95KCk7XG5cbiAgICAgIGNsZWFudXBGbih7IGtleTogdG9rZW5TdHJpbmcsIHZhbHVlOiBtYXBbdG9rZW5TdHJpbmddPy4oKSB9KTtcblxuICAgICAgZGVsZXRlIGVmZmVjdFJlZk1hcFt0b2tlblN0cmluZ107XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7IHJlbW92ZSwgaGFzIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsSXNSZW5kZXJlZCA9ICgpID0+IHtcbiAgY29uc3QgaXNSZW5kZXJlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IGlzUmVuZGVyZWQuc2V0KHRydWUpKTtcblxuICByZXR1cm4gaXNSZW5kZXJlZC5hc1JlYWRvbmx5KCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsQ2xhc3NlcyA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+Pj4oZWw6IFNpZ25hbEVsZW1lbnRCaW5kaW5nVHlwZSwgY2xhc3NNYXA6IFQpID0+IHtcbiAgY29uc3QgZWxlbWVudHMgPSBidWlsZEVsZW1lbnRTaWduYWwoZWwpO1xuXG4gIHJldHVybiBidWlsZFNpZ25hbEVmZmVjdHMoe1xuICAgIG1hcDogY2xhc3NNYXAsXG4gICAgZWFjaEl0ZW1GbjogKHsga2V5LCB2YWx1ZSB9KSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZWxlbWVudHMoKS5jdXJyZW50RWxlbWVudD8uY2xhc3NMaXN0LmFkZChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudHMoKS5jdXJyZW50RWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYW51cEZuOiAoeyBrZXkgfSkgPT4gZWxlbWVudHMoKS5jdXJyZW50RWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZShrZXkpLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaWduYWxIb3N0Q2xhc3NlcyA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+Pj4oY2xhc3NNYXA6IFQpID0+XG4gIHNpZ25hbENsYXNzZXMoaW5qZWN0KEVsZW1lbnRSZWYpLCBjbGFzc01hcCk7XG5cbmNvbnN0IEFMV0FZU19UUlVFX0FUVFJJQlVURV9LRVlTID0gWydkaXNhYmxlZCcsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdjaGVja2VkJywgJ3NlbGVjdGVkJ107XG5cbmV4cG9ydCBjb25zdCBzaWduYWxBdHRyaWJ1dGVzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+PihcbiAgZWw6IFNpZ25hbEVsZW1lbnRCaW5kaW5nVHlwZSxcbiAgYXR0cmlidXRlTWFwOiBULFxuKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gYnVpbGRFbGVtZW50U2lnbmFsKGVsKTtcblxuICByZXR1cm4gYnVpbGRTaWduYWxFZmZlY3RzKHtcbiAgICBtYXA6IGF0dHJpYnV0ZU1hcCxcbiAgICBlYWNoSXRlbUZuOiAoeyBrZXksIHZhbHVlIH0pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gYCR7dmFsdWV9YDtcblxuICAgICAgaWYgKEFMV0FZU19UUlVFX0FUVFJJQlVURV9LRVlTLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgZWxlbWVudHMoKS5jdXJyZW50RWxlbWVudD8uc2V0QXR0cmlidXRlKGtleSwgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LnNldEF0dHJpYnV0ZShrZXksIHZhbHVlU3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYW51cEZuOiAoeyBrZXkgfSkgPT4gZWxlbWVudHMoKS5jdXJyZW50RWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKGtleSksXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbEhvc3RBdHRyaWJ1dGVzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+PihhdHRyaWJ1dGVNYXA6IFQpID0+XG4gIHNpZ25hbEF0dHJpYnV0ZXMoaW5qZWN0KEVsZW1lbnRSZWYpLCBhdHRyaWJ1dGVNYXApO1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsU3R5bGVzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+PihlbDogU2lnbmFsRWxlbWVudEJpbmRpbmdUeXBlLCBzdHlsZU1hcDogVCkgPT4ge1xuICBjb25zdCBlbGVtZW50cyA9IGJ1aWxkRWxlbWVudFNpZ25hbChlbCk7XG5cbiAgcmV0dXJuIGJ1aWxkU2lnbmFsRWZmZWN0cyh7XG4gICAgbWFwOiBzdHlsZU1hcCxcbiAgICBlYWNoSXRlbUZuOiAoeyBrZXksIHZhbHVlIH0pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gYCR7dmFsdWV9YDtcblxuICAgICAgZWxlbWVudHMoKS5jdXJyZW50RWxlbWVudD8uc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZVN0cmluZyk7XG4gICAgfSxcbiAgICBjbGVhbnVwRm46ICh7IGtleSB9KSA9PiBlbGVtZW50cygpLmN1cnJlbnRFbGVtZW50Py5zdHlsZS5yZW1vdmVQcm9wZXJ0eShrZXkpLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaWduYWxIb3N0U3R5bGVzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+PihzdHlsZU1hcDogVCkgPT5cbiAgc2lnbmFsU3R5bGVzKGluamVjdChFbGVtZW50UmVmKSwgc3R5bGVNYXApO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2ljYWxTaXplIHtcbiAgaW5saW5lU2l6ZTogbnVtYmVyO1xuICBibG9ja1NpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50RGltZW5zaW9ucyB7XG4gIHJlY3Q6IERPTVJlY3RSZWFkT25seSB8IG51bGw7XG4gIGJvcmRlckJveFNpemU6IExvZ2ljYWxTaXplIHwgbnVsbDtcbiAgY29udGVudEJveFNpemU6IExvZ2ljYWxTaXplIHwgbnVsbDtcbiAgZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZTogTG9naWNhbFNpemUgfCBudWxsO1xufVxuXG5leHBvcnQgY29uc3Qgc2lnbmFsRWxlbWVudERpbWVuc2lvbnMgPSAoZWw6IFNpZ25hbEVsZW1lbnRCaW5kaW5nVHlwZSkgPT4ge1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBjb25zdCBlbGVtZW50cyA9IGJ1aWxkRWxlbWVudFNpZ25hbChlbCk7XG4gIGNvbnN0IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgY29uc3QgaXNSZW5kZXJlZCA9IHNpZ25hbElzUmVuZGVyZWQoKTtcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSAoKSA9PiAoe1xuICAgIHJlY3Q6IGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpID8/IG51bGwsXG4gICAgYm9yZGVyQm94U2l6ZTogbnVsbCxcbiAgICBjb250ZW50Qm94U2l6ZTogbnVsbCxcbiAgICBkZXZpY2VQaXhlbENvbnRlbnRCb3hTaXplOiBudWxsLFxuICB9KTtcblxuICBjb25zdCBlbGVtZW50RGltZW5zaW9uc1NpZ25hbCA9IHNpZ25hbDxFbGVtZW50RGltZW5zaW9ucz4oaW5pdGlhbFZhbHVlKCkpO1xuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlKSA9PiB7XG4gICAgaWYgKCFpc1JlbmRlcmVkKCkpIHJldHVybjtcblxuICAgIGNvbnN0IGVudHJ5ID0gZVswXTtcblxuICAgIGlmIChlbnRyeSkge1xuICAgICAgY29uc3QgZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZSA9IGVudHJ5LmRldmljZVBpeGVsQ29udGVudEJveFNpemU/LlswXSA/PyBudWxsO1xuICAgICAgY29uc3QgYm9yZGVyQm94U2l6ZSA9IGVudHJ5LmJvcmRlckJveFNpemU/LlswXSA/PyBudWxsO1xuICAgICAgY29uc3QgY29udGVudEJveFNpemUgPSBlbnRyeS5jb250ZW50Qm94U2l6ZT8uWzBdID8/IG51bGw7XG5cbiAgICAgIHpvbmUucnVuKCgpID0+XG4gICAgICAgIGVsZW1lbnREaW1lbnNpb25zU2lnbmFsLnNldCh7XG4gICAgICAgICAgcmVjdDogZW50cnkuY29udGVudFJlY3QsXG4gICAgICAgICAgYm9yZGVyQm94U2l6ZTogYm9yZGVyQm94U2l6ZVxuICAgICAgICAgICAgPyB7IGlubGluZVNpemU6IGJvcmRlckJveFNpemUuaW5saW5lU2l6ZSwgYmxvY2tTaXplOiBib3JkZXJCb3hTaXplLmJsb2NrU2l6ZSB9XG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgY29udGVudEJveFNpemU6IGNvbnRlbnRCb3hTaXplXG4gICAgICAgICAgICA/IHsgaW5saW5lU2l6ZTogY29udGVudEJveFNpemUuaW5saW5lU2l6ZSwgYmxvY2tTaXplOiBjb250ZW50Qm94U2l6ZS5ibG9ja1NpemUgfVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGRldmljZVBpeGVsQ29udGVudEJveFNpemU6IGRldmljZVBpeGVsQ29udGVudEJveFNpemVcbiAgICAgICAgICAgID8geyBpbmxpbmVTaXplOiBkZXZpY2VQaXhlbENvbnRlbnRCb3hTaXplLmlubGluZVNpemUsIGJsb2NrU2l6ZTogZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZS5ibG9ja1NpemUgfVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9KTtcblxuICBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZWxzID0gZWxlbWVudHMoKTtcblxuICAgICAgZWxlbWVudERpbWVuc2lvbnNTaWduYWwuc2V0KGluaXRpYWxWYWx1ZSgpKTtcblxuICAgICAgaWYgKGVscy5wcmV2aW91c0VsZW1lbnQpIHtcbiAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxzLmN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkRGlzcGxheSA9IGdldENvbXB1dGVkU3R5bGUoZWxzLmN1cnJlbnRFbGVtZW50KS5kaXNwbGF5O1xuICAgICAgICBjb25zdCBjdXJyZW50RWxJc0FuZ3VsYXJDb21wb25lbnQgPSBlbHMuY3VycmVudEVsZW1lbnQ/LnRhZ05hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnLScpO1xuXG4gICAgICAgIGlmIChjb21wdXRlZERpc3BsYXkgPT09ICdpbmxpbmUnICYmIGlzRGV2TW9kZSgpICYmIGN1cnJlbnRFbElzQW5ndWxhckNvbXBvbmVudCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgRWxlbWVudCA8JHtlbHMuY3VycmVudEVsZW1lbnQ/LnRhZ05hbWUudG9Mb3dlckNhc2UoKX0+IGlzIGFuIEFuZ3VsYXIgY29tcG9uZW50IGFuZCBoYXMgYSBkaXNwbGF5IG9mICdpbmxpbmUnLiBJbmxpbmUgZWxlbWVudHMgY2Fubm90IGJlIG9ic2VydmVkIGZvciBkaW1lbnNpb25zLiBQbGVhc2UgY2hhbmdlIGl0IHRvICdibG9jaycgb3Igc29tZXRoaW5nIGVsc2UuYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbHMuY3VycmVudEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApO1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKSk7XG5cbiAgcmV0dXJuIGVsZW1lbnREaW1lbnNpb25zU2lnbmFsLmFzUmVhZG9ubHkoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaWduYWxIb3N0RWxlbWVudERpbWVuc2lvbnMgPSAoKSA9PiBzaWduYWxFbGVtZW50RGltZW5zaW9ucyhpbmplY3QoRWxlbWVudFJlZikpO1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsRWxlbWVudE11dGF0aW9ucyA9IChlbDogU2lnbmFsRWxlbWVudEJpbmRpbmdUeXBlLCBvcHRpb25zPzogTXV0YXRpb25PYnNlcnZlckluaXQpID0+IHtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgZWxlbWVudHMgPSBidWlsZEVsZW1lbnRTaWduYWwoZWwpO1xuICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIGNvbnN0IGlzUmVuZGVyZWQgPSBzaWduYWxJc1JlbmRlcmVkKCk7XG5cbiAgY29uc3QgZWxlbWVudE11dGF0aW9uc1NpZ25hbCA9IHNpZ25hbDxNdXRhdGlvblJlY29yZCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGUpID0+IHtcbiAgICBpZiAoIWlzUmVuZGVyZWQoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZW50cnkgPSBlWzBdO1xuXG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICB6b25lLnJ1bigoKSA9PiBlbGVtZW50TXV0YXRpb25zU2lnbmFsLnNldChlbnRyeSkpO1xuICAgIH1cbiAgfSk7XG5cbiAgZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGVscyA9IGVsZW1lbnRzKCk7XG5cbiAgICAgIGVsZW1lbnRNdXRhdGlvbnNTaWduYWwuc2V0KG51bGwpO1xuXG4gICAgICBpZiAoZWxzLnByZXZpb3VzRWxlbWVudCkge1xuICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbHMuY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbHMuY3VycmVudEVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApO1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKSk7XG5cbiAgcmV0dXJuIGVsZW1lbnRNdXRhdGlvbnNTaWduYWwuYXNSZWFkb25seSgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbEhvc3RFbGVtZW50TXV0YXRpb25zID0gKG9wdGlvbnM/OiBNdXRhdGlvbk9ic2VydmVySW5pdCkgPT5cbiAgc2lnbmFsRWxlbWVudE11dGF0aW9ucyhpbmplY3QoRWxlbWVudFJlZiksIG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsRWxlbWVudFNjcm9sbFN0YXRlID0gKGVsOiBTaWduYWxFbGVtZW50QmluZGluZ1R5cGUpID0+IHtcbiAgY29uc3QgZWxlbWVudHMgPSBidWlsZEVsZW1lbnRTaWduYWwoZWwpO1xuICBjb25zdCBlbGVtZW50RGltZW5zaW9ucyA9IHNpZ25hbEVsZW1lbnREaW1lbnNpb25zKGVsZW1lbnRzKTtcbiAgY29uc3QgZWxlbWVudE11dGF0aW9ucyA9IHNpZ25hbEVsZW1lbnRNdXRhdGlvbnMoZWxlbWVudHMsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICBjb25zdCBpc1JlbmRlcmVkID0gc2lnbmFsSXNSZW5kZXJlZCgpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ7XG4gICAgY29uc3QgZGltZW5zaW9ucyA9IGVsZW1lbnREaW1lbnNpb25zKCk7XG5cbiAgICBjb25zdCBub3RTY3JvbGxhYmxlID0gKCkgPT4gKHtcbiAgICAgIGNhblNjcm9sbDogZmFsc2UsXG4gICAgICBjYW5TY3JvbGxIb3Jpem9udGFsbHk6IGZhbHNlLFxuICAgICAgY2FuU2Nyb2xsVmVydGljYWxseTogZmFsc2UsXG4gICAgICBzY3JvbGxXaWR0aDogZWxlbWVudD8uc2Nyb2xsV2lkdGggPz8gbnVsbCxcbiAgICAgIHNjcm9sbEhlaWdodDogZWxlbWVudD8uc2Nyb2xsSGVpZ2h0ID8/IG51bGwsXG4gICAgICBlbGVtZW50RGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgICB9KTtcblxuICAgIC8vIFdlIGFyZSBub3QgaW50ZXJlc3RlZCB3aGF0IHRoZSBtdXRhdGlvbiBpcywganVzdCB0aGF0IHRoZXJlIGlzIG9uZS5cbiAgICAvLyBDaGFuZ2VzIHRvIHRoZSBET00gY2FuIGFmZmVjdCB0aGUgc2Nyb2xsIHN0YXRlIG9mIHRoZSBlbGVtZW50LlxuICAgIGVsZW1lbnRNdXRhdGlvbnMoKTtcblxuICAgIGlmICghZWxlbWVudCB8fCAhZGltZW5zaW9ucy5yZWN0IHx8ICFpc1JlbmRlcmVkKCkpIHJldHVybiBub3RTY3JvbGxhYmxlKCk7XG5cbiAgICBjb25zdCB7IHNjcm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQgfSA9IGVsZW1lbnQ7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBkaW1lbnNpb25zLnJlY3Q7XG5cbiAgICBjb25zdCBjYW5TY3JvbGxIb3Jpem9udGFsbHkgPSBzY3JvbGxXaWR0aCA+IHdpZHRoO1xuICAgIGNvbnN0IGNhblNjcm9sbFZlcnRpY2FsbHkgPSBzY3JvbGxIZWlnaHQgPiBoZWlnaHQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2FuU2Nyb2xsOiBjYW5TY3JvbGxIb3Jpem9udGFsbHkgfHwgY2FuU2Nyb2xsVmVydGljYWxseSxcbiAgICAgIGNhblNjcm9sbEhvcml6b250YWxseSxcbiAgICAgIGNhblNjcm9sbFZlcnRpY2FsbHksXG4gICAgICBzY3JvbGxXaWR0aCxcbiAgICAgIHNjcm9sbEhlaWdodCxcbiAgICAgIGVsZW1lbnREaW1lbnNpb25zOiBkaW1lbnNpb25zLFxuICAgIH07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbEhvc3RFbGVtZW50U2Nyb2xsU3RhdGUgPSAoKSA9PiBzaWduYWxFbGVtZW50U2Nyb2xsU3RhdGUoaW5qZWN0KEVsZW1lbnRSZWYpKTtcblxuZXhwb3J0IHR5cGUgU2lnbmFsRWxlbWVudEludGVyc2VjdGlvbk9wdGlvbnMgPSBPbWl0PEludGVyc2VjdGlvbk9ic2VydmVySW5pdCwgJ3Jvb3QnPiAmIHtcbiAgcm9vdD86IFNpZ25hbEVsZW1lbnRCaW5kaW5nVHlwZTtcbiAgZW5hYmxlZD86IFNpZ25hbDx1bmtub3duPjtcbn07XG5cbmV4cG9ydCBjb25zdCBzaWduYWxFbGVtZW50SW50ZXJzZWN0aW9uID0gKGVsOiBTaWduYWxFbGVtZW50QmluZGluZ1R5cGUsIG9wdGlvbnM/OiBTaWduYWxFbGVtZW50SW50ZXJzZWN0aW9uT3B0aW9ucykgPT4ge1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBjb25zdCBlbGVtZW50cyA9IGJ1aWxkRWxlbWVudFNpZ25hbChlbCk7XG4gIGNvbnN0IHJvb3QgPSBvcHRpb25zPy5yb290ID8gYnVpbGRFbGVtZW50U2lnbmFsKG9wdGlvbnM/LnJvb3QpIDogZG9jdW1lbnRFbGVtZW50U2lnbmFsKCk7XG4gIGNvbnN0IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgY29uc3QgaXNSZW5kZXJlZCA9IHNpZ25hbElzUmVuZGVyZWQoKTtcbiAgY29uc3QgaXNFbmFibGVkID0gb3B0aW9ucz8uZW5hYmxlZCA/PyBzaWduYWwodHJ1ZSk7XG5cbiAgY29uc3QgZWxlbWVudEludGVyc2VjdGlvblNpZ25hbCA9IHNpZ25hbDxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10+KFtdKTtcblxuICBjb25zdCBvYnNlcnZlciA9IHNpZ25hbDxJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuXG4gIGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCByb290RWwgPSByb290KCkuY3VycmVudEVsZW1lbnQ7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiBvYnNlcnZlcigpPy5kaXNjb25uZWN0KCkpO1xuXG4gICAgICBjb25zdCBuZXdPYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICAgKGVudHJpZXMpID0+IHtcbiAgICAgICAgICBpZiAoIWlzUmVuZGVyZWQoKSkgcmV0dXJuO1xuXG4gICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZXMgPSB1bnRyYWNrZWQoKCkgPT4gWy4uLmVsZW1lbnRJbnRlcnNlY3Rpb25TaWduYWwoKV0pO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0VudHJ5SW5kZXggPSBjdXJyZW50VmFsdWVzLmZpbmRJbmRleCgodikgPT4gdi50YXJnZXQgPT09IGVudHJ5LnRhcmdldCk7XG5cbiAgICAgICAgICAgIGlmIChleGlzdGluZ0VudHJ5SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMgPSBbXG4gICAgICAgICAgICAgICAgLi4uY3VycmVudFZhbHVlcy5zbGljZSgwLCBleGlzdGluZ0VudHJ5SW5kZXgpLFxuICAgICAgICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRWYWx1ZXMuc2xpY2UoZXhpc3RpbmdFbnRyeUluZGV4ICsgMSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjdXJyZW50VmFsdWVzID0gWy4uLmN1cnJlbnRWYWx1ZXMsIGVudHJ5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB6b25lLnJ1bigoKSA9PiBlbGVtZW50SW50ZXJzZWN0aW9uU2lnbmFsLnNldChjdXJyZW50VmFsdWVzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgLi4ub3B0aW9ucywgcm9vdDogcm9vdEVsIH0sXG4gICAgICApO1xuXG4gICAgICBvYnNlcnZlci5zZXQobmV3T2JzZXJ2ZXIpO1xuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApO1xuXG4gIGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBlbHMgPSBlbGVtZW50cygpO1xuICAgICAgY29uc3Qgb2JzID0gb2JzZXJ2ZXIoKTtcbiAgICAgIGNvbnN0IGVuYWJsZWQgPSBpc0VuYWJsZWQoKTtcblxuICAgICAgZWxlbWVudEludGVyc2VjdGlvblNpZ25hbC5zZXQoW10pO1xuXG4gICAgICBpZiAoZWxzLnByZXZpb3VzRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIG9icz8uZGlzY29ubmVjdCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxzLmN1cnJlbnRFbGVtZW50cy5sZW5ndGggJiYgISFlbmFibGVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWwgb2YgZWxzLmN1cnJlbnRFbGVtZW50cykge1xuICAgICAgICAgIG9icz8ub2JzZXJ2ZShlbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiBvYnNlcnZlcigpPy5kaXNjb25uZWN0KCkpO1xuXG4gIHJldHVybiBlbGVtZW50SW50ZXJzZWN0aW9uU2lnbmFsO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbEhvc3RFbGVtZW50SW50ZXJzZWN0aW9uID0gKG9wdGlvbnM/OiBTaWduYWxFbGVtZW50SW50ZXJzZWN0aW9uT3B0aW9ucykgPT5cbiAgc2lnbmFsRWxlbWVudEludGVyc2VjdGlvbihpbmplY3QoRWxlbWVudFJlZiksIG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsRWxlbWVudENoaWxkcmVuID0gKGVsOiBTaWduYWxFbGVtZW50QmluZGluZ1R5cGUpID0+IHtcbiAgY29uc3QgZWxlbWVudHMgPSBidWlsZEVsZW1lbnRTaWduYWwoZWwpO1xuXG4gIGNvbnN0IG11dGF0aW9ucyA9IHNpZ25hbEVsZW1lbnRNdXRhdGlvbnMoZWxlbWVudHMsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlLCBhdHRyaWJ1dGVzOiB0cnVlIH0pO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZWxzID0gZWxlbWVudHMoKTtcblxuICAgIG11dGF0aW9ucygpO1xuXG4gICAgaWYgKCFlbHMuY3VycmVudEVsZW1lbnQpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGNoaWxkcmVuOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZWxzLmN1cnJlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGVscy5jdXJyZW50RWxlbWVudC5jaGlsZHJlbltpbmRleF07XG5cbiAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH0pO1xufTtcbiJdfQ==
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2lnbmFsLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsVUFBVSxFQUVWLFVBQVUsRUFDVixNQUFNLEVBQ04sU0FBUyxFQUVULGVBQWUsRUFDZixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUF5QjNFLFNBQVMsZUFBZSxDQUFDLEVBQVc7SUFDbEMsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDaEIsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDakIsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxnQkFBZ0IsSUFBSSxHQUFHLElBQUksaUJBQWlCLElBQUksR0FBRyxDQUFDO0tBQ3ZHO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxxQkFBcUIsR0FBRyxHQUFrQixFQUFFLENBQ2hELE1BQU0sQ0FBQztJQUNMLGNBQWMsRUFBRSxRQUFRLENBQUMsZUFBZTtJQUN4QyxlQUFlLEVBQUUsSUFBSTtJQUNyQixlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBQzNDLGdCQUFnQixFQUFFLEVBQUU7Q0FDckIsQ0FBQyxDQUFD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QXNFO1FBQ3RFLDZEQUE2RDtRQUM3RCxnQkFBZ0IsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRW5DLE1BQU0sUUFBUSxHQUFrQixFQUFFLENBQUM7UUFFbkMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN2RSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVuRCxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUU7Z0JBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEI7U0FDRjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBEZXN0cm95UmVmLFxuICBFZmZlY3RSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIE5nWm9uZSxcbiAgUXVlcnlMaXN0LFxuICBTaWduYWwsXG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpc0Rldk1vZGUsXG4gIGlzU2lnbmFsLFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBvZiwgcGFpcndpc2UsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbnR5cGUgU2lnbmFsRWxlbWVudEJpbmRpbmdDb21wbGV4VHlwZSA9XG4gIHwgSFRNTEVsZW1lbnRcbiAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICB8IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50PlxuICB8IEFycmF5PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQ+XG4gIHwgbnVsbFxuICB8IHVuZGVmaW5lZDtcblxudHlwZSBTaWduYWxFbGVtZW50QmluZGluZ1R5cGUgPVxuICB8IEhUTUxFbGVtZW50XG4gIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgfCBPYnNlcnZhYmxlPFNpZ25hbEVsZW1lbnRCaW5kaW5nQ29tcGxleFR5cGU+XG4gIHwgU2lnbmFsPFNpZ25hbEVsZW1lbnRCaW5kaW5nQ29tcGxleFR5cGU+XG4gIHwgUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQ+XG4gIHwgRWxlbWVudFNpZ25hbDtcblxudHlwZSBFbGVtZW50U2lnbmFsID0gU2lnbmFsPHtcbiAgY3VycmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgcHJldmlvdXNFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGw7XG4gIGN1cnJlbnRFbGVtZW50czogSFRNTEVsZW1lbnRbXTtcbiAgcHJldmlvdXNFbGVtZW50czogSFRNTEVsZW1lbnRbXTtcbn0+O1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTaWduYWwoZWw6IHVua25vd24pOiBlbCBpcyBFbGVtZW50U2lnbmFsIHtcbiAgaWYgKGlzU2lnbmFsKGVsKSkge1xuICAgIGNvbnN0IHZhbCA9IGVsKCk7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbCAmJiAnY3VycmVudEVsZW1lbnQnIGluIHZhbCAmJiAncHJldmlvdXNFbGVtZW50JyBpbiB2YWw7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmNvbnN0IGRvY3VtZW50RWxlbWVudFNpZ25hbCA9ICgpOiBFbGVtZW50U2lnbmFsID0+XG4gIHNpZ25hbCh7XG4gICAgY3VycmVudEVsZW1lbnQ6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICBwcmV2aW91c0VsZW1lbnQ6IG51bGwsXG4gICAgY3VycmVudEVsZW1lbnRzOiBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSxcbiAgICBwcmV2aW91c0VsZW1lbnRzOiBbXSxcbiAgfSk7XG5cbmNvbnN0IGJ1aWxkRWxlbWVudFNpZ25hbCA9IChlbDogU2lnbmFsRWxlbWVudEJpbmRpbmdUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IEVsZW1lbnRTaWduYWwgPT4ge1xuICBpZiAoZWwgPT09IG51bGwgfHwgZWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBzaWduYWwoeyBjdXJyZW50RWxlbWVudDogbnVsbCwgcHJldmlvdXNFbGVtZW50OiBudWxsLCBjdXJyZW50RWxlbWVudHM6IFtdLCBwcmV2aW91c0VsZW1lbnRzOiBbXSB9KTtcbiAgfVxuXG4gIGlmIChpc0VsZW1lbnRTaWduYWwoZWwpKSB7XG4gICAgcmV0dXJuIGVsO1xuICB9XG5cbiAgbGV0IG1FbFNpZ25hbDogU2lnbmFsPEhUTUxFbGVtZW50W10gfCBudWxsPiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IHN3aXRjaEVsZW1lbnQgPSAoKSA9PlxuICAgIHN3aXRjaE1hcCgoZWxPclJlZjogU2lnbmFsRWxlbWVudEJpbmRpbmdDb21wbGV4VHlwZSkgPT4ge1xuICAgICAgaWYgKGVsT3JSZWYgaW5zdGFuY2VvZiBRdWVyeUxpc3QpIHtcbiAgICAgICAgcmV0dXJuIGVsT3JSZWYuY2hhbmdlcy5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aChlbE9yUmVmKSxcbiAgICAgICAgICBtYXAoKCkgPT4gZWxPclJlZi50b0FycmF5KCkubWFwKChyKSA9PiBjb2VyY2VFbGVtZW50KHIpKSksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZWxPclJlZikpIHtcbiAgICAgICAgcmV0dXJuIG9mKGVsT3JSZWYubWFwKChyKSA9PiBjb2VyY2VFbGVtZW50KHIpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb2VyY2VkRWwgPSBjb2VyY2VFbGVtZW50KGVsT3JSZWYpO1xuICAgICAgICByZXR1cm4gb2YoY29lcmNlZEVsID8gW2NvZXJjZWRFbF0gOiBudWxsKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoZWwgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgbUVsU2lnbmFsID0gdG9TaWduYWwoZWwucGlwZShzd2l0Y2hFbGVtZW50KCkpLCB7IGluaXRpYWxWYWx1ZTogbnVsbCB9KTtcbiAgfSBlbHNlIGlmIChpc1NpZ25hbChlbCkpIHtcbiAgICBtRWxTaWduYWwgPSB0b1NpZ25hbCh0b09ic2VydmFibGUoZWwpLnBpcGUoc3dpdGNoRWxlbWVudCgpKSwgeyBpbml0aWFsVmFsdWU6IG51bGwgfSk7XG4gIH0gZWxzZSBpZiAoZWwgaW5zdGFuY2VvZiBRdWVyeUxpc3QpIHtcbiAgICBtRWxTaWduYWwgPSB0b1NpZ25hbChcbiAgICAgIGVsLmNoYW5nZXMucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKGVsKSxcbiAgICAgICAgbWFwKCgpID0+IGVsLnRvQXJyYXkoKS5tYXAoKHIpID0+IGNvZXJjZUVsZW1lbnQocikpKSxcbiAgICAgICksXG4gICAgICB7IGluaXRpYWxWYWx1ZTogbnVsbCB9LFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbUVsU2lnbmFsID0gc2lnbmFsKFtjb2VyY2VFbGVtZW50KGVsKV0pO1xuICB9XG5cbiAgcmV0dXJuIHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZShtRWxTaWduYWwpLnBpcGUoXG4gICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKChbcHJldmlvdXNFbGVtZW50cywgY3VycmVudEVsZW1lbnRzXSkgPT4gKHtcbiAgICAgICAgcHJldmlvdXNFbGVtZW50czogcHJldmlvdXNFbGVtZW50cyA/PyBbXSxcbiAgICAgICAgY3VycmVudEVsZW1lbnRzOiBjdXJyZW50RWxlbWVudHMgPz8gW10sXG4gICAgICAgIGN1cnJlbnRFbGVtZW50OiBjdXJyZW50RWxlbWVudHM/LlswXSA/PyBudWxsLFxuICAgICAgICBwcmV2aW91c0VsZW1lbnQ6IHByZXZpb3VzRWxlbWVudHM/LlswXSA/PyBudWxsLFxuICAgICAgfSkpLFxuICAgICksXG4gICAgeyBpbml0aWFsVmFsdWU6IHsgY3VycmVudEVsZW1lbnQ6IG51bGwsIHByZXZpb3VzRWxlbWVudDogbnVsbCwgcHJldmlvdXNFbGVtZW50czogW10sIGN1cnJlbnRFbGVtZW50czogW10gfSB9LFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkU2lnbmFsRWZmZWN0cyA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+Pj4oY29uZmlnOiB7XG4gIG1hcDogVDtcbiAgZWFjaEl0ZW1GbjogKHBhaXI6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWQ7XG4gIGNsZWFudXBGbjogKHBhaXI6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWQ7XG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwLCBlYWNoSXRlbUZuLCBjbGVhbnVwRm4gfSA9IGNvbmZpZztcblxuICBjb25zdCBlZmZlY3RSZWZNYXA6IFJlY29yZDxzdHJpbmcsIEVmZmVjdFJlZj4gPSB7fTtcblxuICBmb3IgKGNvbnN0IFt0b2tlblN0cmluZywgc2lnbmFsXSBvZiBPYmplY3QuZW50cmllcyhtYXApKSB7XG4gICAgY29uc3QgdG9rZW5BcnJheSA9IHRva2VuU3RyaW5nLnNwbGl0KCcgJykuZmlsdGVyKCh0b2tlbikgPT4gISF0b2tlbik7XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2VuQXJyYXkpIHtcbiAgICAgIGNvbnN0IHJlZiA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc2lnbmFsKCk7XG4gICAgICAgIGVhY2hJdGVtRm4oeyBrZXk6IHRva2VuLCB2YWx1ZSB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBlZmZlY3RSZWZNYXBbdG9rZW5dID0gcmVmO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhcyA9ICh0b2tlbjogc3RyaW5nKSA9PiB0b2tlbiBpbiBlZmZlY3RSZWZNYXA7XG5cbiAgY29uc3QgcmVtb3ZlID0gKC4uLnRva2Vuczogc3RyaW5nW10pID0+IHtcbiAgICBmb3IgKGNvbnN0IHRva2VuU3RyaW5nIG9mIHRva2Vucykge1xuICAgICAgZWZmZWN0UmVmTWFwW3Rva2VuU3RyaW5nXT8uZGVzdHJveSgpO1xuXG4gICAgICBjbGVhbnVwRm4oeyBrZXk6IHRva2VuU3RyaW5nLCB2YWx1ZTogbWFwW3Rva2VuU3RyaW5nXT8uKCkgfSk7XG5cbiAgICAgIGRlbGV0ZSBlZmZlY3RSZWZNYXBbdG9rZW5TdHJpbmddO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4geyByZW1vdmUsIGhhcyB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbElzUmVuZGVyZWQgPSAoKSA9PiB7XG4gIGNvbnN0IGlzUmVuZGVyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGFmdGVyTmV4dFJlbmRlcigoKSA9PiBpc1JlbmRlcmVkLnNldCh0cnVlKSk7XG5cbiAgcmV0dXJuIGlzUmVuZGVyZWQuYXNSZWFkb25seSgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbENsYXNzZXMgPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4+KGVsOiBTaWduYWxFbGVtZW50QmluZGluZ1R5cGUsIGNsYXNzTWFwOiBUKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gYnVpbGRFbGVtZW50U2lnbmFsKGVsKTtcblxuICByZXR1cm4gYnVpbGRTaWduYWxFZmZlY3RzKHtcbiAgICBtYXA6IGNsYXNzTWFwLFxuICAgIGVhY2hJdGVtRm46ICh7IGtleSwgdmFsdWUgfSkgPT4ge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsZWFudXBGbjogKHsga2V5IH0pID0+IGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoa2V5KSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsSG9zdENsYXNzZXMgPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4+KGNsYXNzTWFwOiBUKSA9PlxuICBzaWduYWxDbGFzc2VzKGluamVjdChFbGVtZW50UmVmKSwgY2xhc3NNYXApO1xuXG5jb25zdCBBTFdBWVNfVFJVRV9BVFRSSUJVVEVfS0VZUyA9IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnY2hlY2tlZCcsICdzZWxlY3RlZCddO1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsQXR0cmlidXRlcyA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+Pj4oXG4gIGVsOiBTaWduYWxFbGVtZW50QmluZGluZ1R5cGUsXG4gIGF0dHJpYnV0ZU1hcDogVCxcbikgPT4ge1xuICBjb25zdCBlbGVtZW50cyA9IGJ1aWxkRWxlbWVudFNpZ25hbChlbCk7XG5cbiAgcmV0dXJuIGJ1aWxkU2lnbmFsRWZmZWN0cyh7XG4gICAgbWFwOiBhdHRyaWJ1dGVNYXAsXG4gICAgZWFjaEl0ZW1GbjogKHsga2V5LCB2YWx1ZSB9KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZVN0cmluZyA9IGAke3ZhbHVlfWA7XG5cbiAgICAgIGlmIChBTFdBWVNfVFJVRV9BVFRSSUJVVEVfS0VZUy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LnNldEF0dHJpYnV0ZShrZXksICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50cygpLmN1cnJlbnRFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlbGVtZW50cygpLmN1cnJlbnRFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50cygpLmN1cnJlbnRFbGVtZW50Py5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZVN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNsZWFudXBGbjogKHsga2V5IH0pID0+IGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZShrZXkpLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaWduYWxIb3N0QXR0cmlidXRlcyA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+Pj4oYXR0cmlidXRlTWFwOiBUKSA9PlxuICBzaWduYWxBdHRyaWJ1dGVzKGluamVjdChFbGVtZW50UmVmKSwgYXR0cmlidXRlTWFwKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbFN0eWxlcyA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+Pj4oZWw6IFNpZ25hbEVsZW1lbnRCaW5kaW5nVHlwZSwgc3R5bGVNYXA6IFQpID0+IHtcbiAgY29uc3QgZWxlbWVudHMgPSBidWlsZEVsZW1lbnRTaWduYWwoZWwpO1xuXG4gIHJldHVybiBidWlsZFNpZ25hbEVmZmVjdHMoe1xuICAgIG1hcDogc3R5bGVNYXAsXG4gICAgZWFjaEl0ZW1GbjogKHsga2V5LCB2YWx1ZSB9KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZVN0cmluZyA9IGAke3ZhbHVlfWA7XG5cbiAgICAgIGVsZW1lbnRzKCkuY3VycmVudEVsZW1lbnQ/LnN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWVTdHJpbmcpO1xuICAgIH0sXG4gICAgY2xlYW51cEZuOiAoeyBrZXkgfSkgPT4gZWxlbWVudHMoKS5jdXJyZW50RWxlbWVudD8uc3R5bGUucmVtb3ZlUHJvcGVydHkoa2V5KSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsSG9zdFN0eWxlcyA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+Pj4oc3R5bGVNYXA6IFQpID0+XG4gIHNpZ25hbFN0eWxlcyhpbmplY3QoRWxlbWVudFJlZiksIHN0eWxlTWFwKTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpY2FsU2l6ZSB7XG4gIGlubGluZVNpemU6IG51bWJlcjtcbiAgYmxvY2tTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudERpbWVuc2lvbnMge1xuICByZWN0OiBET01SZWN0UmVhZE9ubHkgfCBudWxsO1xuICBib3JkZXJCb3hTaXplOiBMb2dpY2FsU2l6ZSB8IG51bGw7XG4gIGNvbnRlbnRCb3hTaXplOiBMb2dpY2FsU2l6ZSB8IG51bGw7XG4gIGRldmljZVBpeGVsQ29udGVudEJveFNpemU6IExvZ2ljYWxTaXplIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IHNpZ25hbEVsZW1lbnREaW1lbnNpb25zID0gKGVsOiBTaWduYWxFbGVtZW50QmluZGluZ1R5cGUpID0+IHtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgZWxlbWVudHMgPSBidWlsZEVsZW1lbnRTaWduYWwoZWwpO1xuICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIGNvbnN0IGlzUmVuZGVyZWQgPSBzaWduYWxJc1JlbmRlcmVkKCk7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gKCkgPT4gKHtcbiAgICByZWN0OiBlbGVtZW50cygpLmN1cnJlbnRFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA/PyBudWxsLFxuICAgIGJvcmRlckJveFNpemU6IG51bGwsXG4gICAgY29udGVudEJveFNpemU6IG51bGwsXG4gICAgZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZTogbnVsbCxcbiAgfSk7XG5cbiAgY29uc3QgZWxlbWVudERpbWVuc2lvbnNTaWduYWwgPSBzaWduYWw8RWxlbWVudERpbWVuc2lvbnM+KGluaXRpYWxWYWx1ZSgpKTtcblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZSkgPT4ge1xuICAgIGlmICghaXNSZW5kZXJlZCgpKSByZXR1cm47XG5cbiAgICBjb25zdCBlbnRyeSA9IGVbMF07XG5cbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIGNvbnN0IGRldmljZVBpeGVsQ29udGVudEJveFNpemUgPSBlbnRyeS5kZXZpY2VQaXhlbENvbnRlbnRCb3hTaXplPy5bMF0gPz8gbnVsbDtcbiAgICAgIGNvbnN0IGJvcmRlckJveFNpemUgPSBlbnRyeS5ib3JkZXJCb3hTaXplPy5bMF0gPz8gbnVsbDtcbiAgICAgIGNvbnN0IGNvbnRlbnRCb3hTaXplID0gZW50cnkuY29udGVudEJveFNpemU/LlswXSA/PyBudWxsO1xuXG4gICAgICB6b25lLnJ1bigoKSA9PlxuICAgICAgICBlbGVtZW50RGltZW5zaW9uc1NpZ25hbC5zZXQoe1xuICAgICAgICAgIHJlY3Q6IGVudHJ5LmNvbnRlbnRSZWN0LFxuICAgICAgICAgIGJvcmRlckJveFNpemU6IGJvcmRlckJveFNpemVcbiAgICAgICAgICAgID8geyBpbmxpbmVTaXplOiBib3JkZXJCb3hTaXplLmlubGluZVNpemUsIGJsb2NrU2l6ZTogYm9yZGVyQm94U2l6ZS5ibG9ja1NpemUgfVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGNvbnRlbnRCb3hTaXplOiBjb250ZW50Qm94U2l6ZVxuICAgICAgICAgICAgPyB7IGlubGluZVNpemU6IGNvbnRlbnRCb3hTaXplLmlubGluZVNpemUsIGJsb2NrU2l6ZTogY29udGVudEJveFNpemUuYmxvY2tTaXplIH1cbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBkZXZpY2VQaXhlbENvbnRlbnRCb3hTaXplOiBkZXZpY2VQaXhlbENvbnRlbnRCb3hTaXplXG4gICAgICAgICAgICA/IHsgaW5saW5lU2l6ZTogZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZS5pbmxpbmVTaXplLCBibG9ja1NpemU6IGRldmljZVBpeGVsQ29udGVudEJveFNpemUuYmxvY2tTaXplIH1cbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG5cbiAgZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGVscyA9IGVsZW1lbnRzKCk7XG5cbiAgICAgIGVsZW1lbnREaW1lbnNpb25zU2lnbmFsLnNldChpbml0aWFsVmFsdWUoKSk7XG5cbiAgICAgIGlmIChlbHMucHJldmlvdXNFbGVtZW50KSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVscy5jdXJyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb21wdXRlZERpc3BsYXkgPSBnZXRDb21wdXRlZFN0eWxlKGVscy5jdXJyZW50RWxlbWVudCkuZGlzcGxheTtcbiAgICAgICAgY29uc3QgY3VycmVudEVsSXNBbmd1bGFyQ29tcG9uZW50ID0gZWxzLmN1cnJlbnRFbGVtZW50Py50YWdOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJy0nKTtcblxuICAgICAgICBpZiAoY29tcHV0ZWREaXNwbGF5ID09PSAnaW5saW5lJyAmJiBpc0Rldk1vZGUoKSAmJiBjdXJyZW50RWxJc0FuZ3VsYXJDb21wb25lbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYEVsZW1lbnQgPCR7ZWxzLmN1cnJlbnRFbGVtZW50Py50YWdOYW1lLnRvTG93ZXJDYXNlKCl9PiBpcyBhbiBBbmd1bGFyIGNvbXBvbmVudCBhbmQgaGFzIGEgZGlzcGxheSBvZiAnaW5saW5lJy4gSW5saW5lIGVsZW1lbnRzIGNhbm5vdCBiZSBvYnNlcnZlZCBmb3IgZGltZW5zaW9ucy4gUGxlYXNlIGNoYW5nZSBpdCB0byAnYmxvY2snIG9yIHNvbWV0aGluZyBlbHNlLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxzLmN1cnJlbnRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuXG4gIHJldHVybiBlbGVtZW50RGltZW5zaW9uc1NpZ25hbC5hc1JlYWRvbmx5KCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsSG9zdEVsZW1lbnREaW1lbnNpb25zID0gKCkgPT4gc2lnbmFsRWxlbWVudERpbWVuc2lvbnMoaW5qZWN0KEVsZW1lbnRSZWYpKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbEVsZW1lbnRNdXRhdGlvbnMgPSAoZWw6IFNpZ25hbEVsZW1lbnRCaW5kaW5nVHlwZSwgb3B0aW9ucz86IE11dGF0aW9uT2JzZXJ2ZXJJbml0KSA9PiB7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIGNvbnN0IGVsZW1lbnRzID0gYnVpbGRFbGVtZW50U2lnbmFsKGVsKTtcbiAgY29uc3Qgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBjb25zdCBpc1JlbmRlcmVkID0gc2lnbmFsSXNSZW5kZXJlZCgpO1xuXG4gIGNvbnN0IGVsZW1lbnRNdXRhdGlvbnNTaWduYWwgPSBzaWduYWw8TXV0YXRpb25SZWNvcmQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChlKSA9PiB7XG4gICAgaWYgKCFpc1JlbmRlcmVkKCkpIHJldHVybjtcblxuICAgIGNvbnN0IGVudHJ5ID0gZVswXTtcblxuICAgIGlmIChlbnRyeSkge1xuICAgICAgem9uZS5ydW4oKCkgPT4gZWxlbWVudE11dGF0aW9uc1NpZ25hbC5zZXQoZW50cnkpKTtcbiAgICB9XG4gIH0pO1xuXG4gIGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBlbHMgPSBlbGVtZW50cygpO1xuXG4gICAgICBlbGVtZW50TXV0YXRpb25zU2lnbmFsLnNldChudWxsKTtcblxuICAgICAgaWYgKGVscy5wcmV2aW91c0VsZW1lbnQpIHtcbiAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxzLmN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxzLmN1cnJlbnRFbGVtZW50LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuXG4gIHJldHVybiBlbGVtZW50TXV0YXRpb25zU2lnbmFsLmFzUmVhZG9ubHkoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaWduYWxIb3N0RWxlbWVudE11dGF0aW9ucyA9IChvcHRpb25zPzogTXV0YXRpb25PYnNlcnZlckluaXQpID0+XG4gIHNpZ25hbEVsZW1lbnRNdXRhdGlvbnMoaW5qZWN0KEVsZW1lbnRSZWYpLCBvcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbEVsZW1lbnRTY3JvbGxTdGF0ZSA9IChlbDogU2lnbmFsRWxlbWVudEJpbmRpbmdUeXBlKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gYnVpbGRFbGVtZW50U2lnbmFsKGVsKTtcbiAgY29uc3QgZWxlbWVudERpbWVuc2lvbnMgPSBzaWduYWxFbGVtZW50RGltZW5zaW9ucyhlbGVtZW50cyk7XG4gIGNvbnN0IGVsZW1lbnRNdXRhdGlvbnMgPSBzaWduYWxFbGVtZW50TXV0YXRpb25zKGVsZW1lbnRzLCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgY29uc3QgaXNSZW5kZXJlZCA9IHNpZ25hbElzUmVuZGVyZWQoKTtcblxuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50cygpLmN1cnJlbnRFbGVtZW50O1xuICAgIGNvbnN0IGRpbWVuc2lvbnMgPSBlbGVtZW50RGltZW5zaW9ucygpO1xuXG4gICAgY29uc3Qgbm90U2Nyb2xsYWJsZSA9ICgpID0+ICh7XG4gICAgICBjYW5TY3JvbGw6IGZhbHNlLFxuICAgICAgY2FuU2Nyb2xsSG9yaXpvbnRhbGx5OiBmYWxzZSxcbiAgICAgIGNhblNjcm9sbFZlcnRpY2FsbHk6IGZhbHNlLFxuICAgICAgc2Nyb2xsV2lkdGg6IGVsZW1lbnQ/LnNjcm9sbFdpZHRoID8/IG51bGwsXG4gICAgICBzY3JvbGxIZWlnaHQ6IGVsZW1lbnQ/LnNjcm9sbEhlaWdodCA/PyBudWxsLFxuICAgICAgZWxlbWVudERpbWVuc2lvbnM6IGRpbWVuc2lvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBXZSBhcmUgbm90IGludGVyZXN0ZWQgd2hhdCB0aGUgbXV0YXRpb24gaXMsIGp1c3QgdGhhdCB0aGVyZSBpcyBvbmUuXG4gICAgLy8gQ2hhbmdlcyB0byB0aGUgRE9NIGNhbiBhZmZlY3QgdGhlIHNjcm9sbCBzdGF0ZSBvZiB0aGUgZWxlbWVudC5cbiAgICBlbGVtZW50TXV0YXRpb25zKCk7XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIWRpbWVuc2lvbnMucmVjdCB8fCAhaXNSZW5kZXJlZCgpKSByZXR1cm4gbm90U2Nyb2xsYWJsZSgpO1xuXG4gICAgY29uc3QgeyBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0IH0gPSBlbGVtZW50O1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZGltZW5zaW9ucy5yZWN0O1xuXG4gICAgY29uc3QgY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID0gc2Nyb2xsV2lkdGggPiB3aWR0aDtcbiAgICBjb25zdCBjYW5TY3JvbGxWZXJ0aWNhbGx5ID0gc2Nyb2xsSGVpZ2h0ID4gaGVpZ2h0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNhblNjcm9sbDogY2FuU2Nyb2xsSG9yaXpvbnRhbGx5IHx8IGNhblNjcm9sbFZlcnRpY2FsbHksXG4gICAgICBjYW5TY3JvbGxIb3Jpem9udGFsbHksXG4gICAgICBjYW5TY3JvbGxWZXJ0aWNhbGx5LFxuICAgICAgc2Nyb2xsV2lkdGgsXG4gICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICBlbGVtZW50RGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgICB9O1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaWduYWxIb3N0RWxlbWVudFNjcm9sbFN0YXRlID0gKCkgPT4gc2lnbmFsRWxlbWVudFNjcm9sbFN0YXRlKGluamVjdChFbGVtZW50UmVmKSk7XG5cbmV4cG9ydCB0eXBlIFNpZ25hbEVsZW1lbnRJbnRlcnNlY3Rpb25PcHRpb25zID0gT21pdDxJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQsICdyb290Jz4gJiB7XG4gIHJvb3Q/OiBTaWduYWxFbGVtZW50QmluZGluZ1R5cGU7XG4gIGVuYWJsZWQ/OiBTaWduYWw8dW5rbm93bj47XG59O1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsRWxlbWVudEludGVyc2VjdGlvbiA9IChlbDogU2lnbmFsRWxlbWVudEJpbmRpbmdUeXBlLCBvcHRpb25zPzogU2lnbmFsRWxlbWVudEludGVyc2VjdGlvbk9wdGlvbnMpID0+IHtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgZWxlbWVudHMgPSBidWlsZEVsZW1lbnRTaWduYWwoZWwpO1xuICBjb25zdCByb290ID0gb3B0aW9ucz8ucm9vdCA/IGJ1aWxkRWxlbWVudFNpZ25hbChvcHRpb25zPy5yb290KSA6IGRvY3VtZW50RWxlbWVudFNpZ25hbCgpO1xuICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIGNvbnN0IGlzUmVuZGVyZWQgPSBzaWduYWxJc1JlbmRlcmVkKCk7XG4gIGNvbnN0IGlzRW5hYmxlZCA9IG9wdGlvbnM/LmVuYWJsZWQgPz8gc2lnbmFsKHRydWUpO1xuXG4gIGNvbnN0IGVsZW1lbnRJbnRlcnNlY3Rpb25TaWduYWwgPSBzaWduYWw8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdPihbXSk7XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBzaWduYWw8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcblxuICBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdEVsID0gcm9vdCgpLmN1cnJlbnRFbGVtZW50O1xuXG4gICAgICB1bnRyYWNrZWQoKCkgPT4gb2JzZXJ2ZXIoKT8uZGlzY29ubmVjdCgpKTtcblxuICAgICAgY29uc3QgbmV3T2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKCFpc1JlbmRlcmVkKCkpIHJldHVybjtcblxuICAgICAgICAgIGxldCBjdXJyZW50VmFsdWVzID0gdW50cmFja2VkKCgpID0+IFsuLi5lbGVtZW50SW50ZXJzZWN0aW9uU2lnbmFsKCldKTtcblxuICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdFbnRyeUluZGV4ID0gY3VycmVudFZhbHVlcy5maW5kSW5kZXgoKHYpID0+IHYudGFyZ2V0ID09PSBlbnRyeS50YXJnZXQpO1xuXG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdFbnRyeUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICBjdXJyZW50VmFsdWVzID0gW1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRWYWx1ZXMuc2xpY2UoMCwgZXhpc3RpbmdFbnRyeUluZGV4KSxcbiAgICAgICAgICAgICAgICBlbnRyeSxcbiAgICAgICAgICAgICAgICAuLi5jdXJyZW50VmFsdWVzLnNsaWNlKGV4aXN0aW5nRW50cnlJbmRleCArIDEpLFxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY3VycmVudFZhbHVlcyA9IFsuLi5jdXJyZW50VmFsdWVzLCBlbnRyeV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgem9uZS5ydW4oKCkgPT4gZWxlbWVudEludGVyc2VjdGlvblNpZ25hbC5zZXQoY3VycmVudFZhbHVlcykpO1xuICAgICAgICB9LFxuICAgICAgICB7IC4uLm9wdGlvbnMsIHJvb3Q6IHJvb3RFbCB9LFxuICAgICAgKTtcblxuICAgICAgb2JzZXJ2ZXIuc2V0KG5ld09ic2VydmVyKTtcbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcblxuICBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZWxzID0gZWxlbWVudHMoKTtcbiAgICAgIGNvbnN0IG9icyA9IG9ic2VydmVyKCk7XG4gICAgICBjb25zdCBlbmFibGVkID0gaXNFbmFibGVkKCk7XG5cbiAgICAgIGVsZW1lbnRJbnRlcnNlY3Rpb25TaWduYWwuc2V0KFtdKTtcblxuICAgICAgaWYgKGVscy5wcmV2aW91c0VsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBvYnM/LmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVscy5jdXJyZW50RWxlbWVudHMubGVuZ3RoICYmICEhZW5hYmxlZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIGVscy5jdXJyZW50RWxlbWVudHMpIHtcbiAgICAgICAgICBvYnM/Lm9ic2VydmUoZWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICk7XG5cbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gb2JzZXJ2ZXIoKT8uZGlzY29ubmVjdCgpKTtcblxuICByZXR1cm4gZWxlbWVudEludGVyc2VjdGlvblNpZ25hbDtcbn07XG5cbmV4cG9ydCBjb25zdCBzaWduYWxIb3N0RWxlbWVudEludGVyc2VjdGlvbiA9IChvcHRpb25zPzogU2lnbmFsRWxlbWVudEludGVyc2VjdGlvbk9wdGlvbnMpID0+XG4gIHNpZ25hbEVsZW1lbnRJbnRlcnNlY3Rpb24oaW5qZWN0KEVsZW1lbnRSZWYpLCBvcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbEVsZW1lbnRDaGlsZHJlbiA9IChlbDogU2lnbmFsRWxlbWVudEJpbmRpbmdUeXBlKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gYnVpbGRFbGVtZW50U2lnbmFsKGVsKTtcbiAgY29uc3QgaXNSZW5kZXJlZCA9IHNpZ25hbElzUmVuZGVyZWQoKTtcbiAgY29uc3QgZWxlbWVudE11dGF0aW9ucyA9IHNpZ25hbEVsZW1lbnRNdXRhdGlvbnMoZWxlbWVudHMsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlLCBhdHRyaWJ1dGVzOiB0cnVlIH0pO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFpc1JlbmRlcmVkKCkpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGVscyA9IGVsZW1lbnRzKCk7XG5cbiAgICAvLyBXZSBhcmUgbm90IGludGVyZXN0ZWQgd2hhdCB0aGUgbXV0YXRpb24gaXMsIGp1c3QgdGhhdCB0aGVyZSBpcyBvbmUuXG4gICAgLy8gQ2hhbmdlcyB0byB0aGUgRE9NIG1heSBhZmZlY3QgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LlxuICAgIGVsZW1lbnRNdXRhdGlvbnMoKTtcblxuICAgIGlmICghZWxzLmN1cnJlbnRFbGVtZW50KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBjaGlsZHJlbjogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGVscy5jdXJyZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBlbHMuY3VycmVudEVsZW1lbnQuY2hpbGRyZW5baW5kZXhdO1xuXG4gICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2goZWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9KTtcbn07XG4iXX0=
@@ -1738,10 +1738,15 @@ const signalElementIntersection = (el, options) => {
1738
1738
  const signalHostElementIntersection = (options) => signalElementIntersection(inject(ElementRef), options);
1739
1739
  const signalElementChildren = (el) => {
1740
1740
  const elements = buildElementSignal(el);
1741
- const mutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });
1741
+ const isRendered = signalIsRendered();
1742
+ const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });
1742
1743
  return computed(() => {
1744
+ if (!isRendered())
1745
+ return [];
1743
1746
  const els = elements();
1744
- mutations();
1747
+ // We are not interested what the mutation is, just that there is one.
1748
+ // Changes to the DOM may affect the children of the element.
1749
+ elementMutations();
1745
1750
  if (!els.currentElement)
1746
1751
  return [];
1747
1752
  const children = [];
@@ -3051,6 +3056,10 @@ class AnimatedOverlayDirective {
3051
3056
  * @default false
3052
3057
  */
3053
3058
  this.autoResize = false;
3059
+ /**
3060
+ * Whether the animated overlay should shift when it is near the viewport boundary.
3061
+ */
3062
+ this.shift = true;
3054
3063
  /**
3055
3064
  * Whether the animated overlay should auto hide when the reference element is hidden.
3056
3065
  * @default false
@@ -3078,6 +3087,12 @@ class AnimatedOverlayDirective {
3078
3087
  get isHidden() {
3079
3088
  return this._isHidden$.value;
3080
3089
  }
3090
+ get canMount() {
3091
+ return !this.isMounted && !this.isMounting;
3092
+ }
3093
+ get canUnmount() {
3094
+ return this.isMounted && !this.isUnmounting;
3095
+ }
3081
3096
  get portal() {
3082
3097
  return this._portal;
3083
3098
  }
@@ -3090,7 +3105,12 @@ class AnimatedOverlayDirective {
3090
3105
  mount(config) {
3091
3106
  if (this.isMounted || this.isMounting) {
3092
3107
  if (isDevMode()) {
3093
- console.warn('AnimatedOverlayDirective: The component is already mounted or mounting. Please unmount the component before mounting again.');
3108
+ if (this.isMounted) {
3109
+ console.warn('AnimatedOverlayDirective: The component is currently mounted. Please unmount the component before mounting again.');
3110
+ }
3111
+ if (this.isMounting) {
3112
+ console.warn('AnimatedOverlayDirective: The component is already mounting. Please unmount the component before mounting again.');
3113
+ }
3094
3114
  }
3095
3115
  return;
3096
3116
  }
@@ -3102,7 +3122,7 @@ class AnimatedOverlayDirective {
3102
3122
  providers: providers ?? [],
3103
3123
  });
3104
3124
  this._overlayRef = this._overlayService.create();
3105
- this._portal = this._portal ?? new ComponentPortal(component, this._viewContainerRef, injector);
3125
+ this._portal = new ComponentPortal(component, this._viewContainerRef, injector);
3106
3126
  this._componentRef = this._overlayRef.attach(this._portal);
3107
3127
  if (data) {
3108
3128
  Object.assign(this._componentRef.instance, data);
@@ -3142,7 +3162,6 @@ class AnimatedOverlayDirective {
3142
3162
  flip({
3143
3163
  fallbackPlacements: this.fallbackPlacements ?? undefined,
3144
3164
  fallbackAxisSideDirection: 'start',
3145
- crossAxis: false,
3146
3165
  boundary,
3147
3166
  }),
3148
3167
  ...(this.autoResize
@@ -3156,7 +3175,9 @@ class AnimatedOverlayDirective {
3156
3175
  }),
3157
3176
  ]
3158
3177
  : []),
3159
- shift({ limiter: limitShift(), padding: this.viewportPadding ?? undefined, boundary }),
3178
+ ...(this.shift
3179
+ ? [shift({ limiter: limitShift(), padding: this.viewportPadding ?? undefined, boundary })]
3180
+ : []),
3160
3181
  ...(floatingElArrow ? [arrow({ element: floatingElArrow, padding: this.arrowPadding ?? undefined })] : []),
3161
3182
  ...(this.autoHide ? [hide({ strategy: 'referenceHidden', boundary })] : []),
3162
3183
  ],
@@ -3182,6 +3203,9 @@ class AnimatedOverlayDirective {
3182
3203
  if (!this._componentRef) {
3183
3204
  return;
3184
3205
  }
3206
+ if (!this._componentRef.instance._animatedLifecycle) {
3207
+ console.error('AnimatedOverlayDirective: The component does not have an AnimatedLifecycleDirective. Please add one to the component.');
3208
+ }
3185
3209
  this._componentRef.instance._animatedLifecycle?.enter();
3186
3210
  this._componentRef.instance._animatedLifecycle?.state$
3187
3211
  .pipe(tap((s) => {
@@ -3199,7 +3223,12 @@ class AnimatedOverlayDirective {
3199
3223
  unmount() {
3200
3224
  if (!this.isMounted || this.isUnmounting) {
3201
3225
  if (isDevMode()) {
3202
- console.warn('AnimatedOverlayDirective: The component is not mounted or is already unmounting. Please call `mount` before calling `unmount` again.');
3226
+ if (!this.isMounted) {
3227
+ console.warn(`AnimatedOverlayDirective: The component is currently not mounted. Please call "mount" before calling "unmount" again.`);
3228
+ }
3229
+ if (this.isUnmounting) {
3230
+ console.warn(`AnimatedOverlayDirective: The component is already unmounting. Please call "mount" before calling "unmount" again.`);
3231
+ }
3203
3232
  }
3204
3233
  return;
3205
3234
  }
@@ -3257,7 +3286,7 @@ class AnimatedOverlayDirective {
3257
3286
  this._afterClosed?.next();
3258
3287
  }
3259
3288
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AnimatedOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3260
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: AnimatedOverlayDirective, isStandalone: true, inputs: { placement: "placement", fallbackPlacements: "fallbackPlacements", offset: "offset", arrowPadding: "arrowPadding", viewportPadding: "viewportPadding", autoResize: "autoResize", autoHide: "autoHide" }, host: { classAttribute: "et-animated-overlay" }, hostDirectives: [{ directive: ObserveResizeDirective }], ngImport: i0 }); }
3289
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: AnimatedOverlayDirective, isStandalone: true, inputs: { placement: "placement", fallbackPlacements: "fallbackPlacements", offset: "offset", arrowPadding: "arrowPadding", viewportPadding: "viewportPadding", autoResize: "autoResize", shift: "shift", autoHide: "autoHide" }, host: { classAttribute: "et-animated-overlay" }, hostDirectives: [{ directive: ObserveResizeDirective }], ngImport: i0 }); }
3261
3290
  }
3262
3291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AnimatedOverlayDirective, decorators: [{
3263
3292
  type: Directive,
@@ -3280,6 +3309,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
3280
3309
  type: Input
3281
3310
  }], autoResize: [{
3282
3311
  type: Input
3312
+ }], shift: [{
3313
+ type: Input
3283
3314
  }], autoHide: [{
3284
3315
  type: Input
3285
3316
  }] } });