@danske/sapphire-angular 1.16.0 → 1.16.2

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.
@@ -1,5 +1,6 @@
1
1
  export * from './src/modal.service';
2
2
  export * from './src/modal.module';
3
+ export { ModalCloseButtonDirective } from './src/modal-close-button.directive';
3
4
  export * from './src/panel/panel.component';
4
5
  export * from './src/panel/inline-panel.component';
5
6
  export * from './src/panel/panel-header.component';
@@ -16,4 +17,4 @@ export * from './src/dialog/dialog-content.directive';
16
17
  export * from './src/dialog/dialog-header.component';
17
18
  export * from './src/dialog/dialog-close-button.directive';
18
19
  export * from './src/dialog/dialog-trigger.directive';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbW9kYWwvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHlDQUF5QyxDQUFDO0FBRXhELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL21vZGFsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvbW9kYWwubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvcGFuZWwvcGFuZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3BhbmVsL2lubGluZS1wYW5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvcGFuZWwvcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9wYW5lbC9wYW5lbC1jb250ZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9wYW5lbC9wYW5lbC1mb290ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3BhbmVsL3BhbmVsLXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3BhbmVsL3BhbmVsLWNsb3NlLWJ1dHRvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvcGFuZWwvcGFuZWwtYmFjay1idXR0b24uZGlyZWN0aXZlJztcblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2RpYWxvZy9kYW5nZXItZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9kaWFsb2cvZGlhbG9nLWZvb3Rlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlhbG9nL2RpYWxvZy1jb250ZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9kaWFsb2cvZGlhbG9nLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlhbG9nL2RpYWxvZy1jbG9zZS1idXR0b24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2RpYWxvZy9kaWFsb2ctdHJpZ2dlci5kaXJlY3RpdmUnO1xuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbW9kYWwvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFL0UsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHlDQUF5QyxDQUFDO0FBRXhELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL21vZGFsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvbW9kYWwubW9kdWxlJztcbmV4cG9ydCB7IE1vZGFsQ2xvc2VCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL3NyYy9tb2RhbC1jbG9zZS1idXR0b24uZGlyZWN0aXZlJztcblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvcGFuZWwvcGFuZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3BhbmVsL2lubGluZS1wYW5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvcGFuZWwvcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9wYW5lbC9wYW5lbC1jb250ZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9wYW5lbC9wYW5lbC1mb290ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3BhbmVsL3BhbmVsLXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3BhbmVsL3BhbmVsLWNsb3NlLWJ1dHRvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvcGFuZWwvcGFuZWwtYmFjay1idXR0b24uZGlyZWN0aXZlJztcblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2RpYWxvZy9kYW5nZXItZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9kaWFsb2cvZGlhbG9nLWZvb3Rlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlhbG9nL2RpYWxvZy1jb250ZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9kaWFsb2cvZGlhbG9nLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvZGlhbG9nL2RpYWxvZy1jbG9zZS1idXR0b24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2RpYWxvZy9kaWFsb2ctdHJpZ2dlci5kaXJlY3RpdmUnO1xuIl19
@@ -70,20 +70,20 @@ export class PopoverTriggerDirective {
70
70
  this.closed.next();
71
71
  this.changeDetectorRef.detectChanges();
72
72
  });
73
- this.overlayRef
74
- .outsidePointerEvents()
75
- .pipe(takeUntil(merge(this.closed, this.destroyed)))
76
- .subscribe((event) => {
77
- if (
78
- // If popover is opened on press start, an outside pointer event
79
- // is emitted as the mouse is being released, which would immediately
80
- // close the popover. Probably a bug in @angular/cdk/overlay.
81
- !(this.openOnPressStart && this.isBeingPressed) &&
82
- !this.elementRef.nativeElement.contains(event.target)) {
83
- this.close();
84
- }
85
- });
86
73
  }
74
+ this.overlayRef
75
+ .outsidePointerEvents()
76
+ .pipe(takeUntil(merge(this.closed, this.destroyed)))
77
+ .subscribe((event) => {
78
+ if (
79
+ // If popover is opened on press start, an outside pointer event
80
+ // is emitted as the mouse is being released, which would immediately
81
+ // close the popover. Probably a bug in @angular/cdk/overlay.
82
+ !(this.openOnPressStart && this.isBeingPressed) &&
83
+ !this.elementRef.nativeElement.contains(event.target)) {
84
+ this.close();
85
+ }
86
+ });
87
87
  this.overlayRef.attach(this.getContentPortal());
88
88
  this.changeDetectorRef.detectChanges();
89
89
  }
@@ -295,4 +295,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
295
295
  type: HostListener,
296
296
  args: ['keydown', ['$event']]
297
297
  }] } });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvcG9wb3Zlci9zcmMvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdMLGFBQWEsR0FFZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBYSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBUXRFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FDL0Msb0JBQW9CLENBQ3JCLENBQUM7QUFFRiw2RUFBNkU7QUFhN0UsTUFBTSxPQUFPLHVCQUF1QjtJQXFEbEMsSUFDVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRCxZQUNVLGlCQUFvQyxFQUNwQyxVQUFtQixFQUNuQixnQkFBa0MsRUFDbkMsVUFBbUMsRUFDbEMsUUFBa0I7UUFKbEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxlQUFVLEdBQVYsVUFBVSxDQUFTO1FBQ25CLHFCQUFn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QUMsa0NBQWtDO2dCQVV6QyxhQUFhO3NCQUZaLEtBQUs7dUJBQUMsK0JBQStCO2dCQVV0QyxRQUFRO3NCQUZQLEtBQUs7dUJBQUMsMEJBQTBCO2dCQU14QixNQUFNO3NCQURkLE1BQU07dUJBQUMsd0JBQXdCO2dCQUt2QixNQUFNO3NCQURkLE1BQU07dUJBQUMsd0JBQXdCO2dCQVlyQixZQUFZO3NCQUR0QixXQUFXO3VCQUFDLG9CQUFvQjtnQkF1RXpCLGVBQWU7c0JBRHRCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXdCN0IsV0FBVztzQkFEbEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY3pCLFNBQVM7c0JBRGhCLFlBQVk7dUJBQUMsYUFBYTtnQkFjbkIsVUFBVTtzQkFEakIsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkI1QixhQUFhO3NCQURwQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZmxpcCwgUGxhY2VtZW50LCB0b0Nvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL3BsYWNlbWVudCc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29lcmNlQm9vbGVhbiB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb2VyY2UtYm9vbGVhbi5kZWNvcmF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvcG92ZXJUcmlnZ2VyIHtcbiAgdG9nZ2xlKCk6IHZvaWQ7XG4gIG9wZW4oKTogdm9pZDtcbiAgY2xvc2UoKTogdm9pZDtcbiAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG59XG5leHBvcnQgY29uc3QgUE9QT1ZFUl9UUklHR0VSID0gbmV3IEluamVjdGlvblRva2VuPFBvcG92ZXJUcmlnZ2VyPihcbiAgJ3NwLXBvcG92ZXItdHJpZ2dlcidcbik7XG5cbi8vIFRPRE8oVUMtMjcyOCk6IGltcHJvdmUgZXZlbnQgaGFuZGxpbmcgd2hlbiByZXVzYWJsZSBwcmVzcyB1dGlsaXR5IGlzIGFkZGVkXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzcFBvcG92ZXJUcmlnZ2VyRm9yXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogUE9QT1ZFUl9UUklHR0VSLCB1c2VFeGlzdGluZzogUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgfSxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuaXMtYWN0aXZlXSc6ICdpc09wZW4oKScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzT3BlbigpJyxcbiAgfSxcbiAgZXhwb3J0QXM6ICdzcFBvcG92ZXJUcmlnZ2VyJyxcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBQb3BvdmVyVHJpZ2dlciB7XG4gIEBJbnB1dCgnc3BQb3BvdmVyUGxhY2VtZW50JylcbiAgcHVibGljIHBsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbSc7XG5cbiAgQElucHV0KCdzcFBvcG92ZXJUcmlnZ2VyRm9yJylcbiAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIG5vdCBibG9jayBpbnRlcmFjdGlvbiB3aXRoIGJhY2tncm91bmQuXG4gICAqL1xuICBASW5wdXQoJ3NwUG9wb3Zlck5vbk1vZGFsJylcbiAgQENvZXJjZUJvb2xlYW5cbiAgbm9uTW9kYWw6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBvcGVuZWQgb24gcHJlc3Mgc3RhcnQuXG4gICAqL1xuICBASW5wdXQoJ3NwUG9wb3ZlclRyaWdnZXJPcGVuT25QcmVzc1N0YXJ0JylcbiAgQENvZXJjZUJvb2xlYW5cbiAgb3Blbk9uUHJlc3NTdGFydDogQm9vbGVhbklucHV0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGNsb3NlZCB3aGVuIHRoZSBjb250YWluZXIgaXMgc2Nyb2xsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoJ3NwUG9wb3ZlclRyaWdnZXJDbG9zZU9uU2Nyb2xsJylcbiAgQENvZXJjZUJvb2xlYW5cbiAgY2xvc2VPblNjcm9sbDogQm9vbGVhbklucHV0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENhbiBiZSB1c2VkIHRvIGRpc2FibGUgdG9nZ2xpbmcgcG9wb3ZlciBvbiBjbGlja3MuIFVzZWZ1bCBpZiBgc3BQb3BvdmVyVHJpZ2dlcmBcbiAgICogaXMgYXBwbGllZCBvbiBhbiBlbGVtZW50IHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBgZGlzYWJsZWRgIHByb3BlcnR5LlxuICAgKi9cbiAgQElucHV0KCdzcFBvcG92ZXJUcmlnZ2VyRGlzYWJsZWQnKVxuICBAQ29lcmNlQm9vbGVhblxuICBkaXNhYmxlZDogQm9vbGVhbklucHV0ID0gZmFsc2U7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGF0dGFjaGVkIHBvcG92ZXIgaXMgcmVxdWVzdGVkIHRvIG9wZW4gKi9cbiAgQE91dHB1dCgnc3BQb3BvdmVyVHJpZ2dlck9wZW5lZCcpXG4gIHJlYWRvbmx5IG9wZW5lZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBhdHRhY2hlZCBwb3BvdmVyIGlzIHJlcXVlc3RlZCB0byBjbG9zZSAqL1xuICBAT3V0cHV0KCdzcFBvcG92ZXJUcmlnZ2VyQ2xvc2VkJylcbiAgcmVhZG9ubHkgY2xvc2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhpcyB0cmlnZ2VyIGlzIGRlc3Ryb3llZC4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqIEEgcmVmZXJlbmNlIHRvIHRoZSBvdmVybGF5IHdoaWNoIG1hbmFnZXMgdGhlIHRyaWdnZXJlZCBtZW51ICovXG4gIHByb3RlY3RlZCBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBpc0JlaW5nUHJlc3NlZCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWNvbnRyb2xzJylcbiAgcHVibGljIGdldCBnZXRQb3BvdmVySWQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZj8uaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcignW3JvbGU9XCJkaWFsb2dcIl0nKT8uaWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNka092ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogVG9nZ2xlIHRoZSBhdHRhY2hlZCBwb3BvdmVyLiAqL1xuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5pc09wZW4oKSA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICB9XG5cbiAgLyoqIE9wZW4gdGhlIGF0dGFjaGVkIHBvcG92ZXIuICovXG4gIG9wZW4oKSB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbigpICYmIHRoaXMudGVtcGxhdGVSZWYgIT0gbnVsbCAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcGVuZWQubmV4dCgpO1xuICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jZGtPdmVybGF5LmNyZWF0ZSh0aGlzLmdldE92ZXJsYXlDb25maWcoKSk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KFxuICAgICAgICAgIHRoaXMuZ2V0T3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3koKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xvc2VkLm5leHQoKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgIC5vdXRzaWRlUG9pbnRlckV2ZW50cygpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKHRoaXMuY2xvc2VkLCB0aGlzLmRlc3Ryb3llZCkpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIC8vIElmIHBvcG92ZXIgaXMgb3BlbmVkIG9uIHByZXNzIHN0YXJ0LCBhbiBvdXRzaWRlIHBvaW50ZXIgZXZlbnRcbiAgICAgICAgICAgICAgLy8gaXMgZW1pdHRlZCBhcyB0aGUgbW91c2UgaXMgYmVpbmcgcmVsZWFzZWQsIHdoaWNoIHdvdWxkIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBwb3BvdmVyLiBQcm9iYWJseSBhIGJ1ZyBpbiBAYW5ndWxhci9jZGsvb3ZlcmxheS5cbiAgICAgICAgICAgICAgISh0aGlzLm9wZW5PblByZXNzU3RhcnQgJiYgdGhpcy5pc0JlaW5nUHJlc3NlZCkgJiZcbiAgICAgICAgICAgICAgIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy5nZXRDb250ZW50UG9ydGFsKCkpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlIHRoZSBvcGVuZWQgcG9wb3Zlci4gKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3Blbi4gKi9cbiAgaXNPcGVuKCkge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgaGFuZGxlTW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5pc0JlaW5nUHJlc3NlZCA9IHRydWU7XG4gICAgaWYgKHRoaXMub3Blbk9uUHJlc3NTdGFydCkge1xuICAgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGZvY3VzIHRoZSB0cmlnZ2VyIGJlZm9yZSBvcGVuaW5nLiBPdGhlcndpc2UsIHRoZSBmb2N1cyByZXN0b3JhdGlvbiBsb2dpYyB3aWxsXG4gICAgICAgIC8vIGJlIG1lc3NlZCB1cCwgc2luY2UgdGhlIHdyb25nIGVsZW1lbnQgd291bGQgaGF2ZSB0aGUgZm9jdXMgd2hlbiB0aGUgcG9wb3ZlciBpcyBtb3VudGVkLlxuICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ21vdXNldXAnLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmlzQmVpbmdQcmVzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgb25jZTogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBoYW5kbGVDbGljaygpIHtcbiAgICBpZiAoIXRoaXMub3Blbk9uUHJlc3NTdGFydCkge1xuICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hpbGUgb25Gb2N1c291dCB0YWtlcyBjYXJlIG9mIGNsb3NpbmcgdGhlIHBvcG92ZXIgd2hlbiBmb2N1cyBnb2VzIG91dCwgaW4gdGhlIHJhcmUgY2FzZXNcbiAgICogdGhhdCB0aGVyZSBpcyBubyBtb3JlIGZvY3VzYWJsZSBlbGVtZW50IGJldHdlZW4gdGhlIHRyaWdnZXIgYW5kIHRoZSBwb3BvdmVyLCB0aGUgZm9jdXMgY2FuXG4gICAqIGdvIHRvIHRoZSBwb3BvdmVyIG9uIHByZXNzaW5nIGBUYWJgLiBCdXQgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGNsb3NlZCB3aGVuIHRhYmJpbmcgb24gdGhlXG4gICAqIHRyaWdnZXIuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnRhYicpXG4gIHByaXZhdGUgaGFuZGxlVGFiKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBzb21lIHVzZSBjYXNlcyAoZS5nLiBpbiBzZWFyY2hhYmxlIHNlbGVjdCkgcG9wb3ZlciB0cmlnZ2VyIGdyYWJzIHRoZSBmb2N1cywgcmlnaHQgYWZ0ZXJcbiAgICogdGhlIHBvcG92ZXIgaXMgb3BlbmVkLiBUaGF0IHJlcXVpcmVzIHBvcG92ZXIgdHJpZ2dlciB0byBkZXRlY3Qgd2hlbiBmb2N1cyBnb2VzIG91dCBvZiBpdFxuICAgKiBhbmQgY2xvc2UgdGhlIHBvcG92ZXIuXG4gICAqIE5vdGU6IHdlIGNhbid0IHVzZSBgYmx1cmAgZXZlbnQgc2luY2UgaXQgd29uJ3QgYnViYmxlIHVwLCBhbmQgdGhlIGZvY3VzIGNhbiBiZSBvbiBhbiBlbGVtZW50XG4gICAqIGluc2lkZSB0aGUgdHJpZ2dlciwgYnV0IG5vdCB0aGUgdHJpZ2dlciBpdHNlbGYuXG4gICAqXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25Gb2N1c291dChldmVudDogRm9jdXNFdmVudCkge1xuICAgIGlmIChcbiAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXQgPT09IG51bGwgJiZcbiAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGV2ZW50LnRhcmdldFxuICAgICkge1xuICAgICAgLy8gVGhpcyBoYXBwZW5zIG9uIHRhYiBzd2l0Y2gsIHdpdGhvdXQgZm9jdXMgYmVpbmcgYWN0dWFsbHkgbW92ZWQuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzUmVjZWl2aW5nRWxlbWVudCA9XG4gICAgICBldmVudC5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCA/IGV2ZW50LnJlbGF0ZWRUYXJnZXQgOiBudWxsO1xuICAgIGlmIChcbiAgICAgIC8vIGZvY3VzIGlzIGdvaW5nIG5vd2hlcmVcbiAgICAgICFmb2N1c1JlY2VpdmluZ0VsZW1lbnQgfHxcbiAgICAgIC8vIGZvY3VzIGlzIGdvaW5nIGFueXdoZXJlIG91dHNpZGUgcG9wb3ZlciBhbmQgcG9wb3ZlciB0cmlnZ2VyXG4gICAgICAhKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKGZvY3VzUmVjZWl2aW5nRWxlbWVudCkgfHxcbiAgICAgICAgLy8gVGhpcyBpcyB0byBub3QgaGF2ZSB0aGUgcG9wb3ZlciBjbG9zZWQgYXMgc29vbiBhcyBtb3VzZSBpcyBkb3duIG9uIHNvbWV0aGluZyBpbnNpZGUgdGhlXG4gICAgICAgIC8vIHBvcG92ZXIsIGlmIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgb24gdGhlIHRyaWdnZXJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudD8uY29udGFpbnMoZm9jdXNSZWNlaXZpbmdFbGVtZW50KVxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBwcml2YXRlIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICBldmVudC50YXJnZXQgPT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAhKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQpICYmXG4gICAgICAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKVxuICAgICkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95T3ZlcmxheSgpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiogR2V0IHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCB1c2VkIHRvIGNyZWF0ZSB0aGUgb3ZlcmxheS4gKi9cbiAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKCkge1xuICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5ub25Nb2RhbFxuICAgICAgICA/IHRoaXMuY2xvc2VPblNjcm9sbFxuICAgICAgICAgID8gdGhpcy5jZGtPdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKVxuICAgICAgICAgIDogdGhpcy5jZGtPdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIDogdGhpcy5jZGtPdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSwgLy8gdG8gbWF0Y2ggd2hhdCB3ZSBoYXZlIGluIHJlYWN0XG5cbiAgICAgIC8vIEluY2x1ZGluZyBhIHRyYW5zcGFyZW50IGJhY2tkcm9wIGFjY29yZGluZyB0byB0aGUgbGF0ZXN0IGRlY2lzaW9uIG9mIG1ha2luZyBwb3BvdmVycyBtb2RhbC5cbiAgICAgIGhhc0JhY2tkcm9wOiAhdGhpcy5ub25Nb2RhbCxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBnZXRDb250ZW50UG9ydGFsKCk6IFRlbXBsYXRlUG9ydGFsIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMudGVtcGxhdGVSZWYpIHtcbiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIHRoaXMudGVtcGxhdGVSZWYsXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFBPUE9WRVJfVFJJR0dFUiwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gdGhpcy5wbGFjZW1lbnQgfHwgJ2JvdHRvbSc7XG4gICAgY29uc3QgaGFzSG9yaXpvbnRhbGx5Q2VudGVyZWRBbGlnbm1lbnQgPVxuICAgICAgIXBsYWNlbWVudC5pbmNsdWRlcygnc3RhcnQnKSAmJiAhcGxhY2VtZW50LmluY2x1ZGVzKCdlbmQnKTtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jZGtPdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbigpXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEaXNhYmxpbmcgcHVzaGluZywgdG8gZml4IGFuIGlzc3VlIGluIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB3aGVyZSB0aGVcbiAgICAgICAgICogb3ZlcmxheSdzIGJvdHRvbSBncm93cyBwYXN0IHRoZSB0b3Agb2YgdGhlIHRyaWdnZXIgZWxlbWVudCAoYWthIG9yaWdpbikuXG4gICAgICAgICAqIEkuZS4sIHdoZW4gdGhlIG92ZXJsYXkgaXMgc3VwcG9zZWQgdG8gYmUgcGxhY2VkIGFib3ZlIHRoZSB0cmlnZ2VyIGVsZW1lbnQsIGl0IGNhblxuICAgICAgICAgKiBncm93IGluIGhlaWdodCBhbmQgY292ZXIgdGhlIHRyaWdnZXIgZWxlbWVudC4gVGhpcyBpcyBtb3JlIG9mIGFuIGlzc3VlIHdoZW4gdGhlIHRyaWdnZXJcbiAgICAgICAgICogZWxlbWVudCByZW1haW5zIGludGVyYWN0aXZlIGFmdGVyIHRoZSBvdmVybGF5IGlzIG9wZW5lZCwgc3VjaCBhcyBpbiBzZWFyY2hhYmxlIHNlbGVjdC5cbiAgICAgICAgICogTm90ZSB0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlIHdoZW4gdGhlIG92ZXJsYXkgaXMgcGxhY2VkIGFib3ZlIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAgICAgICAqIEluIHRoYXQgY2FzZSB0aGUgb3ZlcmxheSB3aWxsIG5vdCBlYXQgdXAgYWxsIGF2YWlsYWJsZSB2aWV3cG9ydCBoZWlnaHQsIGFuZCBpcyBzaXplZCBpblxuICAgICAgICAgKiBhIHdheSB0aGF0IHJlc3BlY3RzIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50IGFib3ZlIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAgICAgICAqIERpc2FibGluZyBwdXNoIGlzIG5vdCB0aGUgaWRlYWwgc29sdXRpb24gYnV0IHByZXZlbnRzIHRoZSBpc3N1ZS5cbiAgICAgICAgICogcHVzaCBpcyBkaXNhYmxlZCBvbmx5IGZvciBvdmVybGF5cyB3aGVyZSB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgaXMgYW5jaG9yZWQgdG8gbGVmdFxuICAgICAgICAgKiBvciByaWdodCBvZiB0aGUgdHJpZ2dlciBlbGVtZW50LCBiYXNlZCBvbiB0aGUgZmFpciBhc3N1bXB0aW9uIHRoYXQgdGhlIGNvbm5lY3RlZFxuICAgICAgICAgKiBlbGVtZW50IGlzIGl0c2VsZiB3aXRoaW4gdGhlIHZpZXdwb3J0LCBhbmQgd2Ugd29uJ3QgbmVlZCB0byBwdXNoIHRoZSBvdmVybGF5IGhvcml6b250YWxseVxuICAgICAgICAgKiB0byBoYXZlIGl0IHdpdGhpbiB0aGUgdmlld3BvcnQuIEl0IHNob3VsZCBhbHNvIGJlIG9rIG5vdCB0byBwdXNoIHZlcnRpY2FsbHksIHNpbmNlIHdlXG4gICAgICAgICAqIGFsbG93IGZvciB2ZXJ0aWNhbCBmbGlwcGluZyBpZiBuZWVkZWQuXG4gICAgICAgICAqKi9cbiAgICAgICAgLndpdGhQdXNoKGhhc0hvcml6b250YWxseUNlbnRlcmVkQWxpZ25tZW50KVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgdG9Db25uZWN0ZWRQb3NpdGlvbihwbGFjZW1lbnQpLFxuICAgICAgICAgIHRvQ29ubmVjdGVkUG9zaXRpb24oZmxpcChwbGFjZW1lbnQpKSxcbiAgICAgICAgXSlcbiAgICAgICAgLndpdGhWaWV3cG9ydE1hcmdpbihwbGFjZW1lbnQuaW5jbHVkZXMoJ2VuZCcpID8gMCA6IDYpXG4gICAgKTtcbiAgfVxufVxuIl19
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvcG9wb3Zlci9zcmMvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdMLGFBQWEsR0FFZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBYSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBUXRFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FDL0Msb0JBQW9CLENBQ3JCLENBQUM7QUFFRiw2RUFBNkU7QUFhN0UsTUFBTSxPQUFPLHVCQUF1QjtJQXFEbEMsSUFDVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRCxZQUNVLGlCQUFvQyxFQUNwQyxVQUFtQixFQUNuQixnQkFBa0MsRUFDbkMsVUFBbUMsRUFDbEMsUUFBa0I7UUFKbEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxlQUFVLEdBQVYsVUFBVSxDQUFTO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTdEckIsY0FBUyxHQUFjLFFBQVEsQ0FBQztRQUd2QyxnQkFBVyxHQUFnQyxJQUFJLENBQUM7UUFFaEQ7O1dBRUc7UUFHSCxhQUFRLEdBQWlCLEtBQUssQ0FBQztRQUUvQjs7V0FFRztRQUdILHFCQUFnQixHQUFpQixLQUFLLENBQUM7UUFFdkM7OztXQUdHO1FBR0gsa0JBQWEsR0FBaUIsS0FBSyxDQUFDO1FBRXBDOzs7V0FHRztRQUdILGFBQVEsR0FBaUIsS0FBSyxDQUFDO1FBRS9CLDJEQUEyRDtRQUVsRCxXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFekQsNERBQTREO1FBRW5ELFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV6RCw0Q0FBNEM7UUFDekIsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTVELGtFQUFrRTtRQUN4RCxlQUFVLEdBQXNCLElBQUksQ0FBQztRQUV2QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQWE1QixDQUFDO0lBRUosV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLElBQUk7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQ3BDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUNsQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxDQUFDLFVBQVU7aUJBQ1osb0JBQW9CLEVBQUU7aUJBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ25ELFNBQVMsQ0FBQyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtnQkFDL0I7Z0JBQ0UsZ0VBQWdFO2dCQUNoRSxxRUFBcUU7Z0JBQ3JFLDZEQUE2RDtnQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO29CQUMvQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBaUIsQ0FBQyxFQUNoRTtvQkFDQSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2Q7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTTtRQUNKLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUdPLGVBQWUsQ0FBQyxLQUFpQjtRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixJQUFJLEtBQUssQ0FBQyxhQUFhLFlBQVksV0FBVyxFQUFFO2dCQUM5QywyRkFBMkY7Z0JBQzNGLDBGQUEwRjtnQkFDMUYsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixRQUFRLENBQUMsZ0JBQWdCLENBQ3ZCLFNBQVMsRUFDVCxHQUFHLEVBQUU7b0JBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztvQkFDOUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxFQUNELEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUNmLENBQUM7YUFDSDtZQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUdPLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUVLLFNBQVM7UUFDZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUVLLFVBQVUsQ0FBQyxLQUFpQjtRQUNsQyxJQUNFLEtBQUssQ0FBQyxhQUFhLEtBQUssSUFBSTtZQUM1QixRQUFRLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQ3ZDO1lBQ0Esa0VBQWtFO1lBQ2xFLE9BQU87U0FDUjtRQUNELE1BQU0scUJBQXFCLEdBQ3pCLEtBQUssQ0FBQyxhQUFhLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEU7UUFDRSx5QkFBeUI7UUFDekIsQ0FBQyxxQkFBcUI7WUFDdEIsOERBQThEO1lBQzlELENBQUMsQ0FDQyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUM7Z0JBQy9ELDBGQUEwRjtnQkFDMUYsb0RBQW9EO2dCQUNwRCxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FDakUsRUFDRDtZQUNBLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUdPLGFBQWEsQ0FBQyxLQUFvQjtRQUN4QyxJQUNFLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhO1lBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsWUFBWSxpQkFBaUIsQ0FBQztZQUM3RCxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQzVDO1lBQ0EsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsK0RBQStEO0lBQ3ZELGdCQUFnQjtRQUN0QixPQUFPLElBQUksYUFBYSxDQUFDO1lBQ3ZCLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhO29CQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7b0JBQzFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtnQkFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBRTVDLDhGQUE4RjtZQUM5RixXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUMzQixhQUFhLEVBQUUsa0NBQWtDO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7SUFDTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxjQUFjLENBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsSUFBSSxFQUNKLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3RCLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7UUFDN0MsTUFBTSxnQ0FBZ0MsR0FDcEMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxPQUFPLENBQ0wsSUFBSSxDQUFDLFVBQVU7YUFDWixRQUFRLEVBQUU7YUFDVixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3BDLGtCQUFrQixFQUFFO2FBQ3BCLGlCQUFpQixFQUFFO1lBQ3BCOzs7Ozs7Ozs7Ozs7Ozs7Z0JBZUk7YUFDSCxRQUFRLENBQUMsZ0NBQWdDLENBQUM7YUFDMUMsYUFBYSxDQUFDO1lBQ2IsbUJBQW1CLENBQUMsU0FBUyxDQUFDO1lBQzlCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNyQyxDQUFDO2FBQ0Qsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7O29IQXZSVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixteUJBVHZCO1FBQ1QsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRTtLQUNuRTtBQW1CRDtJQURDLGFBQWE7eURBQ2lCO0FBTy9CO0lBREMsYUFBYTtpRUFDeUI7QUFRdkM7SUFEQyxhQUFhOzhEQUNzQjtBQVFwQztJQURDLGFBQWE7eURBQ2lCOzJGQW5DcEIsdUJBQXVCO2tCQVhuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFNBQVMsRUFBRTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyx5QkFBeUIsRUFBRTtxQkFDbkU7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLG1CQUFtQixFQUFFLFVBQVU7d0JBQy9CLHNCQUFzQixFQUFFLFVBQVU7cUJBQ25DO29CQUNELFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzZNQUdRLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBSTNCLFdBQVc7c0JBRFYsS0FBSzt1QkFBQyxxQkFBcUI7Z0JBUTVCLFFBQVE7c0JBRlAsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBUzFCLGdCQUFnQjtzQkFGZixLQUFLO3VCQUFDLGtDQUFrQztnQkFVekMsYUFBYTtzQkFGWixLQUFLO3VCQUFDLCtCQUErQjtnQkFVdEMsUUFBUTtzQkFGUCxLQUFLO3VCQUFDLDBCQUEwQjtnQkFNeEIsTUFBTTtzQkFEZCxNQUFNO3VCQUFDLHdCQUF3QjtnQkFLdkIsTUFBTTtzQkFEZCxNQUFNO3VCQUFDLHdCQUF3QjtnQkFZckIsWUFBWTtzQkFEdEIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBdUV6QixlQUFlO3NCQUR0QixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF3QjdCLFdBQVc7c0JBRGxCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWN6QixTQUFTO3NCQURoQixZQUFZO3VCQUFDLGFBQWE7Z0JBY25CLFVBQVU7c0JBRGpCLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTJCNUIsYUFBYTtzQkFEcEIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZsaXAsIFBsYWNlbWVudCwgdG9Db25uZWN0ZWRQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2NvbW1vbi9wbGFjZW1lbnQnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IENvZXJjZUJvb2xlYW4gfSBmcm9tICcuLi8uLi9jb21tb24vY29lcmNlLWJvb2xlYW4uZGVjb3JhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBQb3BvdmVyVHJpZ2dlciB7XG4gIHRvZ2dsZSgpOiB2b2lkO1xuICBvcGVuKCk6IHZvaWQ7XG4gIGNsb3NlKCk6IHZvaWQ7XG4gIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xufVxuZXhwb3J0IGNvbnN0IFBPUE9WRVJfVFJJR0dFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQb3BvdmVyVHJpZ2dlcj4oXG4gICdzcC1wb3BvdmVyLXRyaWdnZXInXG4pO1xuXG4vLyBUT0RPKFVDLTI3MjgpOiBpbXByb3ZlIGV2ZW50IGhhbmRsaW5nIHdoZW4gcmV1c2FibGUgcHJlc3MgdXRpbGl0eSBpcyBhZGRlZFxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc3BQb3BvdmVyVHJpZ2dlckZvcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IFBPUE9WRVJfVFJJR0dFUiwgdXNlRXhpc3Rpbmc6IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmlzLWFjdGl2ZV0nOiAnaXNPcGVuKCknLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdpc09wZW4oKScsXG4gIH0sXG4gIGV4cG9ydEFzOiAnc3BQb3BvdmVyVHJpZ2dlcicsXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIGltcGxlbWVudHMgUG9wb3ZlclRyaWdnZXIge1xuICBASW5wdXQoJ3NwUG9wb3ZlclBsYWNlbWVudCcpXG4gIHB1YmxpYyBwbGFjZW1lbnQ6IFBsYWNlbWVudCA9ICdib3R0b20nO1xuXG4gIEBJbnB1dCgnc3BQb3BvdmVyVHJpZ2dlckZvcicpXG4gIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBub3QgYmxvY2sgaW50ZXJhY3Rpb24gd2l0aCBiYWNrZ3JvdW5kLlxuICAgKi9cbiAgQElucHV0KCdzcFBvcG92ZXJOb25Nb2RhbCcpXG4gIEBDb2VyY2VCb29sZWFuXG4gIG5vbk1vZGFsOiBCb29sZWFuSW5wdXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcG9wb3ZlciBzaG91bGQgYmUgb3BlbmVkIG9uIHByZXNzIHN0YXJ0LlxuICAgKi9cbiAgQElucHV0KCdzcFBvcG92ZXJUcmlnZ2VyT3Blbk9uUHJlc3NTdGFydCcpXG4gIEBDb2VyY2VCb29sZWFuXG4gIG9wZW5PblByZXNzU3RhcnQ6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBjbG9zZWQgd2hlbiB0aGUgY29udGFpbmVyIGlzIHNjcm9sbGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KCdzcFBvcG92ZXJUcmlnZ2VyQ2xvc2VPblNjcm9sbCcpXG4gIEBDb2VyY2VCb29sZWFuXG4gIGNsb3NlT25TY3JvbGw6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBkaXNhYmxlIHRvZ2dsaW5nIHBvcG92ZXIgb24gY2xpY2tzLiBVc2VmdWwgaWYgYHNwUG9wb3ZlclRyaWdnZXJgXG4gICAqIGlzIGFwcGxpZWQgb24gYW4gZWxlbWVudCB3aGljaCBkb2Vzbid0IHN1cHBvcnQgYGRpc2FibGVkYCBwcm9wZXJ0eS5cbiAgICovXG4gIEBJbnB1dCgnc3BQb3BvdmVyVHJpZ2dlckRpc2FibGVkJylcbiAgQENvZXJjZUJvb2xlYW5cbiAgZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBhdHRhY2hlZCBwb3BvdmVyIGlzIHJlcXVlc3RlZCB0byBvcGVuICovXG4gIEBPdXRwdXQoJ3NwUG9wb3ZlclRyaWdnZXJPcGVuZWQnKVxuICByZWFkb25seSBvcGVuZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgYXR0YWNoZWQgcG9wb3ZlciBpcyByZXF1ZXN0ZWQgdG8gY2xvc2UgKi9cbiAgQE91dHB1dCgnc3BQb3BvdmVyVHJpZ2dlckNsb3NlZCcpXG4gIHJlYWRvbmx5IGNsb3NlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoaXMgdHJpZ2dlciBpcyBkZXN0cm95ZWQuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qKiBBIHJlZmVyZW5jZSB0byB0aGUgb3ZlcmxheSB3aGljaCBtYW5hZ2VzIHRoZSB0cmlnZ2VyZWQgbWVudSAqL1xuICBwcm90ZWN0ZWQgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgaXNCZWluZ1ByZXNzZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jb250cm9scycpXG4gIHB1YmxpYyBnZXQgZ2V0UG9wb3ZlcklkKCkge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY/Lmhvc3RFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPVwiZGlhbG9nXCJdJyk/LmlkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjZGtPdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcblxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIFRvZ2dsZSB0aGUgYXR0YWNoZWQgcG9wb3Zlci4gKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMuaXNPcGVuKCkgPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIC8qKiBPcGVuIHRoZSBhdHRhY2hlZCBwb3BvdmVyLiAqL1xuICBvcGVuKCkge1xuICAgIGlmICghdGhpcy5pc09wZW4oKSAmJiB0aGlzLnRlbXBsYXRlUmVmICE9IG51bGwgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMub3BlbmVkLm5leHQoKTtcbiAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMuY2RrT3ZlcmxheS5jcmVhdGUodGhpcy5nZXRPdmVybGF5Q29uZmlnKCkpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneShcbiAgICAgICAgICB0aGlzLmdldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsb3NlZC5uZXh0KCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgIC5vdXRzaWRlUG9pbnRlckV2ZW50cygpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbChtZXJnZSh0aGlzLmNsb3NlZCwgdGhpcy5kZXN0cm95ZWQpKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAvLyBJZiBwb3BvdmVyIGlzIG9wZW5lZCBvbiBwcmVzcyBzdGFydCwgYW4gb3V0c2lkZSBwb2ludGVyIGV2ZW50XG4gICAgICAgICAgICAvLyBpcyBlbWl0dGVkIGFzIHRoZSBtb3VzZSBpcyBiZWluZyByZWxlYXNlZCwgd2hpY2ggd291bGQgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBwb3BvdmVyLiBQcm9iYWJseSBhIGJ1ZyBpbiBAYW5ndWxhci9jZGsvb3ZlcmxheS5cbiAgICAgICAgICAgICEodGhpcy5vcGVuT25QcmVzc1N0YXJ0ICYmIHRoaXMuaXNCZWluZ1ByZXNzZWQpICYmXG4gICAgICAgICAgICAhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy5nZXRDb250ZW50UG9ydGFsKCkpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlIHRoZSBvcGVuZWQgcG9wb3Zlci4gKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3Blbi4gKi9cbiAgaXNPcGVuKCkge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgaGFuZGxlTW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5pc0JlaW5nUHJlc3NlZCA9IHRydWU7XG4gICAgaWYgKHRoaXMub3Blbk9uUHJlc3NTdGFydCkge1xuICAgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGZvY3VzIHRoZSB0cmlnZ2VyIGJlZm9yZSBvcGVuaW5nLiBPdGhlcndpc2UsIHRoZSBmb2N1cyByZXN0b3JhdGlvbiBsb2dpYyB3aWxsXG4gICAgICAgIC8vIGJlIG1lc3NlZCB1cCwgc2luY2UgdGhlIHdyb25nIGVsZW1lbnQgd291bGQgaGF2ZSB0aGUgZm9jdXMgd2hlbiB0aGUgcG9wb3ZlciBpcyBtb3VudGVkLlxuICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ21vdXNldXAnLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmlzQmVpbmdQcmVzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgb25jZTogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBoYW5kbGVDbGljaygpIHtcbiAgICBpZiAoIXRoaXMub3Blbk9uUHJlc3NTdGFydCkge1xuICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hpbGUgb25Gb2N1c291dCB0YWtlcyBjYXJlIG9mIGNsb3NpbmcgdGhlIHBvcG92ZXIgd2hlbiBmb2N1cyBnb2VzIG91dCwgaW4gdGhlIHJhcmUgY2FzZXNcbiAgICogdGhhdCB0aGVyZSBpcyBubyBtb3JlIGZvY3VzYWJsZSBlbGVtZW50IGJldHdlZW4gdGhlIHRyaWdnZXIgYW5kIHRoZSBwb3BvdmVyLCB0aGUgZm9jdXMgY2FuXG4gICAqIGdvIHRvIHRoZSBwb3BvdmVyIG9uIHByZXNzaW5nIGBUYWJgLiBCdXQgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGNsb3NlZCB3aGVuIHRhYmJpbmcgb24gdGhlXG4gICAqIHRyaWdnZXIuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnRhYicpXG4gIHByaXZhdGUgaGFuZGxlVGFiKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBzb21lIHVzZSBjYXNlcyAoZS5nLiBpbiBzZWFyY2hhYmxlIHNlbGVjdCkgcG9wb3ZlciB0cmlnZ2VyIGdyYWJzIHRoZSBmb2N1cywgcmlnaHQgYWZ0ZXJcbiAgICogdGhlIHBvcG92ZXIgaXMgb3BlbmVkLiBUaGF0IHJlcXVpcmVzIHBvcG92ZXIgdHJpZ2dlciB0byBkZXRlY3Qgd2hlbiBmb2N1cyBnb2VzIG91dCBvZiBpdFxuICAgKiBhbmQgY2xvc2UgdGhlIHBvcG92ZXIuXG4gICAqIE5vdGU6IHdlIGNhbid0IHVzZSBgYmx1cmAgZXZlbnQgc2luY2UgaXQgd29uJ3QgYnViYmxlIHVwLCBhbmQgdGhlIGZvY3VzIGNhbiBiZSBvbiBhbiBlbGVtZW50XG4gICAqIGluc2lkZSB0aGUgdHJpZ2dlciwgYnV0IG5vdCB0aGUgdHJpZ2dlciBpdHNlbGYuXG4gICAqXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25Gb2N1c291dChldmVudDogRm9jdXNFdmVudCkge1xuICAgIGlmIChcbiAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXQgPT09IG51bGwgJiZcbiAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGV2ZW50LnRhcmdldFxuICAgICkge1xuICAgICAgLy8gVGhpcyBoYXBwZW5zIG9uIHRhYiBzd2l0Y2gsIHdpdGhvdXQgZm9jdXMgYmVpbmcgYWN0dWFsbHkgbW92ZWQuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzUmVjZWl2aW5nRWxlbWVudCA9XG4gICAgICBldmVudC5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCA/IGV2ZW50LnJlbGF0ZWRUYXJnZXQgOiBudWxsO1xuICAgIGlmIChcbiAgICAgIC8vIGZvY3VzIGlzIGdvaW5nIG5vd2hlcmVcbiAgICAgICFmb2N1c1JlY2VpdmluZ0VsZW1lbnQgfHxcbiAgICAgIC8vIGZvY3VzIGlzIGdvaW5nIGFueXdoZXJlIG91dHNpZGUgcG9wb3ZlciBhbmQgcG9wb3ZlciB0cmlnZ2VyXG4gICAgICAhKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKGZvY3VzUmVjZWl2aW5nRWxlbWVudCkgfHxcbiAgICAgICAgLy8gVGhpcyBpcyB0byBub3QgaGF2ZSB0aGUgcG9wb3ZlciBjbG9zZWQgYXMgc29vbiBhcyBtb3VzZSBpcyBkb3duIG9uIHNvbWV0aGluZyBpbnNpZGUgdGhlXG4gICAgICAgIC8vIHBvcG92ZXIsIGlmIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgb24gdGhlIHRyaWdnZXJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudD8uY29udGFpbnMoZm9jdXNSZWNlaXZpbmdFbGVtZW50KVxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBwcml2YXRlIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICBldmVudC50YXJnZXQgPT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAhKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQpICYmXG4gICAgICAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKVxuICAgICkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95T3ZlcmxheSgpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiogR2V0IHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCB1c2VkIHRvIGNyZWF0ZSB0aGUgb3ZlcmxheS4gKi9cbiAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKCkge1xuICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5ub25Nb2RhbFxuICAgICAgICA/IHRoaXMuY2xvc2VPblNjcm9sbFxuICAgICAgICAgID8gdGhpcy5jZGtPdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKVxuICAgICAgICAgIDogdGhpcy5jZGtPdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIDogdGhpcy5jZGtPdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSwgLy8gdG8gbWF0Y2ggd2hhdCB3ZSBoYXZlIGluIHJlYWN0XG5cbiAgICAgIC8vIEluY2x1ZGluZyBhIHRyYW5zcGFyZW50IGJhY2tkcm9wIGFjY29yZGluZyB0byB0aGUgbGF0ZXN0IGRlY2lzaW9uIG9mIG1ha2luZyBwb3BvdmVycyBtb2RhbC5cbiAgICAgIGhhc0JhY2tkcm9wOiAhdGhpcy5ub25Nb2RhbCxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBnZXRDb250ZW50UG9ydGFsKCk6IFRlbXBsYXRlUG9ydGFsIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMudGVtcGxhdGVSZWYpIHtcbiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIHRoaXMudGVtcGxhdGVSZWYsXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFBPUE9WRVJfVFJJR0dFUiwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gdGhpcy5wbGFjZW1lbnQgfHwgJ2JvdHRvbSc7XG4gICAgY29uc3QgaGFzSG9yaXpvbnRhbGx5Q2VudGVyZWRBbGlnbm1lbnQgPVxuICAgICAgIXBsYWNlbWVudC5pbmNsdWRlcygnc3RhcnQnKSAmJiAhcGxhY2VtZW50LmluY2x1ZGVzKCdlbmQnKTtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jZGtPdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbigpXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEaXNhYmxpbmcgcHVzaGluZywgdG8gZml4IGFuIGlzc3VlIGluIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB3aGVyZSB0aGVcbiAgICAgICAgICogb3ZlcmxheSdzIGJvdHRvbSBncm93cyBwYXN0IHRoZSB0b3Agb2YgdGhlIHRyaWdnZXIgZWxlbWVudCAoYWthIG9yaWdpbikuXG4gICAgICAgICAqIEkuZS4sIHdoZW4gdGhlIG92ZXJsYXkgaXMgc3VwcG9zZWQgdG8gYmUgcGxhY2VkIGFib3ZlIHRoZSB0cmlnZ2VyIGVsZW1lbnQsIGl0IGNhblxuICAgICAgICAgKiBncm93IGluIGhlaWdodCBhbmQgY292ZXIgdGhlIHRyaWdnZXIgZWxlbWVudC4gVGhpcyBpcyBtb3JlIG9mIGFuIGlzc3VlIHdoZW4gdGhlIHRyaWdnZXJcbiAgICAgICAgICogZWxlbWVudCByZW1haW5zIGludGVyYWN0aXZlIGFmdGVyIHRoZSBvdmVybGF5IGlzIG9wZW5lZCwgc3VjaCBhcyBpbiBzZWFyY2hhYmxlIHNlbGVjdC5cbiAgICAgICAgICogTm90ZSB0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlIHdoZW4gdGhlIG92ZXJsYXkgaXMgcGxhY2VkIGFib3ZlIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAgICAgICAqIEluIHRoYXQgY2FzZSB0aGUgb3ZlcmxheSB3aWxsIG5vdCBlYXQgdXAgYWxsIGF2YWlsYWJsZSB2aWV3cG9ydCBoZWlnaHQsIGFuZCBpcyBzaXplZCBpblxuICAgICAgICAgKiBhIHdheSB0aGF0IHJlc3BlY3RzIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50IGFib3ZlIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAgICAgICAqIERpc2FibGluZyBwdXNoIGlzIG5vdCB0aGUgaWRlYWwgc29sdXRpb24gYnV0IHByZXZlbnRzIHRoZSBpc3N1ZS5cbiAgICAgICAgICogcHVzaCBpcyBkaXNhYmxlZCBvbmx5IGZvciBvdmVybGF5cyB3aGVyZSB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgaXMgYW5jaG9yZWQgdG8gbGVmdFxuICAgICAgICAgKiBvciByaWdodCBvZiB0aGUgdHJpZ2dlciBlbGVtZW50LCBiYXNlZCBvbiB0aGUgZmFpciBhc3N1bXB0aW9uIHRoYXQgdGhlIGNvbm5lY3RlZFxuICAgICAgICAgKiBlbGVtZW50IGlzIGl0c2VsZiB3aXRoaW4gdGhlIHZpZXdwb3J0LCBhbmQgd2Ugd29uJ3QgbmVlZCB0byBwdXNoIHRoZSBvdmVybGF5IGhvcml6b250YWxseVxuICAgICAgICAgKiB0byBoYXZlIGl0IHdpdGhpbiB0aGUgdmlld3BvcnQuIEl0IHNob3VsZCBhbHNvIGJlIG9rIG5vdCB0byBwdXNoIHZlcnRpY2FsbHksIHNpbmNlIHdlXG4gICAgICAgICAqIGFsbG93IGZvciB2ZXJ0aWNhbCBmbGlwcGluZyBpZiBuZWVkZWQuXG4gICAgICAgICAqKi9cbiAgICAgICAgLndpdGhQdXNoKGhhc0hvcml6b250YWxseUNlbnRlcmVkQWxpZ25tZW50KVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgdG9Db25uZWN0ZWRQb3NpdGlvbihwbGFjZW1lbnQpLFxuICAgICAgICAgIHRvQ29ubmVjdGVkUG9zaXRpb24oZmxpcChwbGFjZW1lbnQpKSxcbiAgICAgICAgXSlcbiAgICAgICAgLndpdGhWaWV3cG9ydE1hcmdpbihwbGFjZW1lbnQuaW5jbHVkZXMoJ2VuZCcpID8gMCA6IDYpXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -47,7 +47,17 @@ export class PopoverComponent {
47
47
  // focus is going. So we asynchronously check if the focus is outside the trigger and close
48
48
  // in that case.
49
49
  setTimeout(() => {
50
- if (!this.trigger?.elementRef.nativeElement.contains(document.activeElement)) {
50
+ if (
51
+ /**
52
+ * If the focus is going to body, don't close the popover.
53
+ * similar consideration in react-aria's useOverlay:
54
+ * https://github.com/adobe/react-spectrum/blob/2bda4c971dd557be7ecc44614569a8281e6cb6dd/packages/%40react-aria/overlays/src/useOverlay.ts#L128-L130
55
+ *
56
+ * In addition to those scenarios, the focused element may get disabled in the popover,
57
+ * which moves the focus to body.
58
+ */
59
+ document.activeElement !== document.body &&
60
+ !this.trigger?.elementRef.nativeElement.contains(document.activeElement)) {
51
61
  this.trigger?.close();
52
62
  }
53
63
  });
@@ -94,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
94
104
  type: HostListener,
95
105
  args: ['keydown.Escape', ['$event']]
96
106
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3BvcG92ZXIvc3JjL3BvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9wb3BvdmVyL3NyYy9wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQWtCLE1BQU0sNkJBQTZCLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7O0FBRXBGOzs7OztHQUtHO0FBYUgsTUFBTSxPQUFPLGdCQUFnQjtJQTRCM0IsWUFDK0MsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFmdkU7O1dBRUc7UUFHSCxnQkFBVyxHQUFpQixLQUFLLENBQUM7UUFFbEMsT0FBRSxHQUFXLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUVwRTs7V0FFRztRQUNLLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBSTVCLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzdDLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUdPLFlBQVksQ0FBQyxLQUFvQjtRQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQW1CO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QiwyRkFBMkY7WUFDM0YsMkZBQTJGO1lBQzNGLGdCQUFnQjtZQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQ0UsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUM5QyxRQUFRLENBQUMsYUFBYSxDQUN2QixFQUNEO29CQUNBLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7OzZHQTlEVSxnQkFBZ0Isa0JBNkJMLGVBQWU7aUdBN0IxQixnQkFBZ0IsZ2JBU2IscUJBQXFCLDZJQUVFLFVBQVUsa0lDbERqRCxza0JBbUJBO0FEdUJFO0lBREMsYUFBYTttREFDVTtBQUl4QjtJQURDLGFBQWE7b0RBQ1c7QUFZekI7SUFEQyxhQUFhO3FEQUNvQjsyRkFuQnZCLGdCQUFnQjtrQkFaNUIsU0FBUzsrQkFDRSxZQUFZLFFBR2hCO3dCQUNKLDBCQUEwQixFQUFFLE1BQU07d0JBQ2xDLGtDQUFrQyxFQUFFLFlBQVk7d0JBQ2hELHFDQUFxQyxFQUFFLGFBQWE7d0JBQ3BELElBQUksRUFBRSxjQUFjO3FCQUNyQixrQkFDZSxDQUFDLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDOzswQkErQjVELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs0Q0ExQnJDLFNBQVM7c0JBRlIsS0FBSztnQkFNTixVQUFVO3NCQUZULEtBQUs7Z0JBSStCLEtBQUs7c0JBQXpDLFlBQVk7dUJBQUMscUJBQXFCO2dCQUczQixjQUFjO3NCQURyQixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFRakQsV0FBVztzQkFGVixLQUFLO2dCQXNCRSxZQUFZO3NCQURuQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmltcG9ydCB7IFRoZW1lQ2hlY2tEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90aGVtZS9zcmMvdGhlbWUtY2hlY2suZGlyZWN0aXZlJztcbmltcG9ydCB7IENvZXJjZUJvb2xlYW4gfSBmcm9tICcuLi8uLi9jb21tb24vY29lcmNlLWJvb2xlYW4uZGVjb3JhdG9yJztcbmltcG9ydCB7IFBPUE9WRVJfVFJJR0dFUiwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tICcuL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9wb3ZlclRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9wb3BvdmVyLXRpdGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBVc2VDb21wb25lbnRTdHlsZXNPbkhvc3QgfSBmcm9tICcuLi8uLi9jb21tb24vc2FwcGhpcmUtdmlldy1lbmNhcHN1bGF0aW9uJztcblxuLyoqXG4gKiBBIGdlbmVyaWMgcG9wb3ZlciBjb21wb25lbnQgd2hpY2ggbGV0cyB5b3UgcmVuZGVyIGFyYml0cmFyeVxuICogY29udGVudCBpbiBhIHBvcG92ZXIgb3ZlcmxheSB3aGljaCBpcyBsaW5rZWQgdG8gYSB0cmlnZ2VyLCBhbmQgaXMgYWNjZXNzaWJsZVxuICogYXNcbiAqIFtkaWFsb2ddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FjY2Vzc2liaWxpdHkvQVJJQS9Sb2xlcy9kaWFsb2dfcm9sZSkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLXBvcG92ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muc2FwcGhpcmUtcG9wb3Zlcl0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5zYXBwaGlyZS1wb3BvdmVyLS1wYWRkZWRdJzogJyFub1BhZGRpbmcnLFxuICAgICdbY2xhc3Muc2FwcGhpcmUtcG9wb3Zlci0tbWF4LXdpZHRoXSc6ICchbm9NYXhXaWR0aCcsXG4gICAgcm9sZTogJ3ByZXNlbnRhdGlvbicsXG4gIH0sXG4gIGhvc3REaXJlY3RpdmVzOiBbVGhlbWVDaGVja0RpcmVjdGl2ZSwgVXNlQ29tcG9uZW50U3R5bGVzT25Ib3N0XSxcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhblxuICBub1BhZGRpbmc6IEJvb2xlYW5JbnB1dDtcblxuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhblxuICBub01heFdpZHRoOiBCb29sZWFuSW5wdXQ7XG5cbiAgQENvbnRlbnRDaGlsZChQb3BvdmVyVGl0bGVEaXJlY3RpdmUpIHRpdGxlPzogUG9wb3ZlclRpdGxlRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRXcmFwcGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgY29udGVudFdyYXBwZXI/OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIG1vdmluZyBmb2N1cyB0byB0aGUgcG9wb3ZlciBjb250ZW50IHVwb24gb3BlbiBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIEBDb2VyY2VCb29sZWFuXG4gIG5vQXV0b0ZvY3VzOiBCb29sZWFuSW5wdXQgPSBmYWxzZTtcblxuICBJRDogc3RyaW5nID0gYHNwLXBvcG92ZXItJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDAwKX1gO1xuXG4gIC8qKlxuICAgKiBLZWVwcyB0cmFjayBvZiBpZiB0aGUgY29udGVudCBpcyBmb2N1c2VkXG4gICAqL1xuICBwcml2YXRlIGNvbnRlbnRGb2N1c2VkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQT1BPVkVSX1RSSUdHRVIpIHByaXZhdGUgdHJpZ2dlcj86IFBvcG92ZXJUcmlnZ2VyXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRGb2N1c2VkICYmICF0aGlzLm5vQXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmNvbnRlbnRXcmFwcGVyPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5Fc2NhcGUnLCBbJyRldmVudCddKVxuICBwcml2YXRlIGhhbmRsZUVzY2FwZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy50cmlnZ2VyPy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIF9jb250ZW50Rm9jdXNDaGFuZ2VkKG9yaWdpbjogRm9jdXNPcmlnaW4pIHtcbiAgICB0aGlzLmNvbnRlbnRGb2N1c2VkID0gb3JpZ2luICE9IG51bGw7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRGb2N1c2VkKSB7XG4gICAgICAvLyBjZGtGb2N1c0NoYW5nZSBkb2Vzbid0IGdpdmUgYWNjZXNzIHRvIHRoZSBuYXRpdmUgZXZlbnQsIHNvIHdlIGNhbid0IGZpZ3VyZSBvdXQgd2hlcmUgdGhlXG4gICAgICAvLyBmb2N1cyBpcyBnb2luZy4gU28gd2UgYXN5bmNocm9ub3VzbHkgY2hlY2sgaWYgdGhlIGZvY3VzIGlzIG91dHNpZGUgdGhlIHRyaWdnZXIgYW5kIGNsb3NlXG4gICAgICAvLyBpbiB0aGF0IGNhc2UuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLnRyaWdnZXI/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhcbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMudHJpZ2dlcj8uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tXG5OT1RFOiBjZGtUcmFwRm9jdXMgaXMgcmVxdWlyZWQgZm9yIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIHRvIHdvcmssIHdoaWNoIHdvdWxkIGJlIHNpbWlsYXIgdG9cbiA8Rm9jdXNTY29wZSBhdXRvRm9jdXMgLz4gaW4gcmVhY3QtYXJpYS4gSXQgZG9lcyBOT1QgcHJldmVudCBmb2N1cyBmcm9tIGdvaW5nIG91dCBvZiBwb3BvdmVyLFxuIHdoaWNoIGlzIGdvb2QsIGFzIHdlIHdhbnQgdGhlIHBvcG92ZXIgdG8gY2xvc2Ugb24gYmx1ci5cbiAgLS0+XG48ZGl2XG4gICNjb250ZW50V3JhcHBlclxuICBbaWRdPVwiSURcIlxuICByb2xlPVwiZGlhbG9nXCJcbiAgdGFiaW5kZXg9XCItMVwiXG4gIGNka01vbml0b3JTdWJ0cmVlRm9jdXNcbiAgY2RrVHJhcEZvY3VzXG4gIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCIhbm9BdXRvRm9jdXNcIlxuICBjbGFzcz1cImRpYWxvZ1wiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0aXRsZT8uSURcIlxuICAoY2RrRm9jdXNDaGFuZ2UpPVwiX2NvbnRlbnRGb2N1c0NoYW5nZWQoJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3BvcG92ZXIvc3JjL3BvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9wb3BvdmVyL3NyYy9wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQWtCLE1BQU0sNkJBQTZCLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7O0FBRXBGOzs7OztHQUtHO0FBYUgsTUFBTSxPQUFPLGdCQUFnQjtJQTRCM0IsWUFDK0MsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFmdkU7O1dBRUc7UUFHSCxnQkFBVyxHQUFpQixLQUFLLENBQUM7UUFFbEMsT0FBRSxHQUFXLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUVwRTs7V0FFRztRQUNLLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBSTVCLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzdDLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUdPLFlBQVksQ0FBQyxLQUFvQjtRQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQW1CO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QiwyRkFBMkY7WUFDM0YsMkZBQTJGO1lBQzNGLGdCQUFnQjtZQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkO2dCQUNFOzs7Ozs7O21CQU9HO2dCQUNILFFBQVEsQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDLElBQUk7b0JBQ3hDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FDOUMsUUFBUSxDQUFDLGFBQWEsQ0FDdkIsRUFDRDtvQkFDQSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2lCQUN2QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs2R0F2RVUsZ0JBQWdCLGtCQTZCTCxlQUFlO2lHQTdCMUIsZ0JBQWdCLGdiQVNiLHFCQUFxQiw2SUFFRSxVQUFVLGtJQ2xEakQsc2tCQW1CQTtBRHVCRTtJQURDLGFBQWE7bURBQ1U7QUFJeEI7SUFEQyxhQUFhO29EQUNXO0FBWXpCO0lBREMsYUFBYTtxREFDb0I7MkZBbkJ2QixnQkFBZ0I7a0JBWjVCLFNBQVM7K0JBQ0UsWUFBWSxRQUdoQjt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3dCQUNsQyxrQ0FBa0MsRUFBRSxZQUFZO3dCQUNoRCxxQ0FBcUMsRUFBRSxhQUFhO3dCQUNwRCxJQUFJLEVBQUUsY0FBYztxQkFDckIsa0JBQ2UsQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsQ0FBQzs7MEJBK0I1RCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7NENBMUJyQyxTQUFTO3NCQUZSLEtBQUs7Z0JBTU4sVUFBVTtzQkFGVCxLQUFLO2dCQUkrQixLQUFLO3NCQUF6QyxZQUFZO3VCQUFDLHFCQUFxQjtnQkFHM0IsY0FBYztzQkFEckIsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBUWpELFdBQVc7c0JBRlYsS0FBSztnQkFzQkUsWUFBWTtzQkFEbkIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5pbXBvcnQgeyBUaGVtZUNoZWNrRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdGhlbWUvc3JjL3RoZW1lLWNoZWNrLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1ib29sZWFuLmRlY29yYXRvcic7XG5pbXBvcnQgeyBQT1BPVkVSX1RSSUdHRVIsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSAnLi9wb3BvdmVyLXRyaWdnZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvcG92ZXJUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4vcG9wb3Zlci10aXRsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVXNlQ29tcG9uZW50U3R5bGVzT25Ib3N0IH0gZnJvbSAnLi4vLi4vY29tbW9uL3NhcHBoaXJlLXZpZXctZW5jYXBzdWxhdGlvbic7XG5cbi8qKlxuICogQSBnZW5lcmljIHBvcG92ZXIgY29tcG9uZW50IHdoaWNoIGxldHMgeW91IHJlbmRlciBhcmJpdHJhcnlcbiAqIGNvbnRlbnQgaW4gYSBwb3BvdmVyIG92ZXJsYXkgd2hpY2ggaXMgbGlua2VkIHRvIGEgdHJpZ2dlciwgYW5kIGlzIGFjY2Vzc2libGVcbiAqIGFzXG4gKiBbZGlhbG9nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BY2Nlc3NpYmlsaXR5L0FSSUEvUm9sZXMvZGlhbG9nX3JvbGUpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcC1wb3BvdmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLnNhcHBoaXJlLXBvcG92ZXJdJzogJ3RydWUnLFxuICAgICdbY2xhc3Muc2FwcGhpcmUtcG9wb3Zlci0tcGFkZGVkXSc6ICchbm9QYWRkaW5nJyxcbiAgICAnW2NsYXNzLnNhcHBoaXJlLXBvcG92ZXItLW1heC13aWR0aF0nOiAnIW5vTWF4V2lkdGgnLFxuICAgIHJvbGU6ICdwcmVzZW50YXRpb24nLFxuICB9LFxuICBob3N0RGlyZWN0aXZlczogW1RoZW1lQ2hlY2tEaXJlY3RpdmUsIFVzZUNvbXBvbmVudFN0eWxlc09uSG9zdF0sXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgbm9QYWRkaW5nOiBCb29sZWFuSW5wdXQ7XG5cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgbm9NYXhXaWR0aDogQm9vbGVhbklucHV0O1xuXG4gIEBDb250ZW50Q2hpbGQoUG9wb3ZlclRpdGxlRGlyZWN0aXZlKSB0aXRsZT86IFBvcG92ZXJUaXRsZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdjb250ZW50V3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGNvbnRlbnRXcmFwcGVyPzogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBtb3ZpbmcgZm9jdXMgdG8gdGhlIHBvcG92ZXIgY29udGVudCB1cG9uIG9wZW4gc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhblxuICBub0F1dG9Gb2N1czogQm9vbGVhbklucHV0ID0gZmFsc2U7XG5cbiAgSUQ6IHN0cmluZyA9IGBzcC1wb3BvdmVyLSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwMCl9YDtcblxuICAvKipcbiAgICogS2VlcHMgdHJhY2sgb2YgaWYgdGhlIGNvbnRlbnQgaXMgZm9jdXNlZFxuICAgKi9cbiAgcHJpdmF0ZSBjb250ZW50Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUE9QT1ZFUl9UUklHR0VSKSBwcml2YXRlIHRyaWdnZXI/OiBQb3BvdmVyVHJpZ2dlclxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZW50Rm9jdXNlZCAmJiAhdGhpcy5ub0F1dG9Gb2N1cykge1xuICAgICAgdGhpcy5jb250ZW50V3JhcHBlcj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uRXNjYXBlJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBoYW5kbGVFc2NhcGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudHJpZ2dlcj8uY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBfY29udGVudEZvY3VzQ2hhbmdlZChvcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgdGhpcy5jb250ZW50Rm9jdXNlZCA9IG9yaWdpbiAhPSBudWxsO1xuICAgIGlmICghdGhpcy5jb250ZW50Rm9jdXNlZCkge1xuICAgICAgLy8gY2RrRm9jdXNDaGFuZ2UgZG9lc24ndCBnaXZlIGFjY2VzcyB0byB0aGUgbmF0aXZlIGV2ZW50LCBzbyB3ZSBjYW4ndCBmaWd1cmUgb3V0IHdoZXJlIHRoZVxuICAgICAgLy8gZm9jdXMgaXMgZ29pbmcuIFNvIHdlIGFzeW5jaHJvbm91c2x5IGNoZWNrIGlmIHRoZSBmb2N1cyBpcyBvdXRzaWRlIHRoZSB0cmlnZ2VyIGFuZCBjbG9zZVxuICAgICAgLy8gaW4gdGhhdCBjYXNlLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBJZiB0aGUgZm9jdXMgaXMgZ29pbmcgdG8gYm9keSwgZG9uJ3QgY2xvc2UgdGhlIHBvcG92ZXIuXG4gICAgICAgICAgICogc2ltaWxhciBjb25zaWRlcmF0aW9uIGluIHJlYWN0LWFyaWEncyB1c2VPdmVybGF5OlxuICAgICAgICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iLzJiZGE0Yzk3MWRkNTU3YmU3ZWNjNDQ2MTQ1NjlhODI4MWU2Y2I2ZGQvcGFja2FnZXMvJTQwcmVhY3QtYXJpYS9vdmVybGF5cy9zcmMvdXNlT3ZlcmxheS50cyNMMTI4LUwxMzBcbiAgICAgICAgICAgKlxuICAgICAgICAgICAqIEluIGFkZGl0aW9uIHRvIHRob3NlIHNjZW5hcmlvcywgdGhlIGZvY3VzZWQgZWxlbWVudCBtYXkgZ2V0IGRpc2FibGVkIGluIHRoZSBwb3BvdmVyLFxuICAgICAgICAgICAqIHdoaWNoIG1vdmVzIHRoZSBmb2N1cyB0byBib2R5LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkgJiZcbiAgICAgICAgICAhdGhpcy50cmlnZ2VyPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoXG4gICAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXI/LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuTk9URTogY2RrVHJhcEZvY3VzIGlzIHJlcXVpcmVkIGZvciBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSB0byB3b3JrLCB3aGljaCB3b3VsZCBiZSBzaW1pbGFyIHRvXG4gPEZvY3VzU2NvcGUgYXV0b0ZvY3VzIC8+IGluIHJlYWN0LWFyaWEuIEl0IGRvZXMgTk9UIHByZXZlbnQgZm9jdXMgZnJvbSBnb2luZyBvdXQgb2YgcG9wb3ZlcixcbiB3aGljaCBpcyBnb29kLCBhcyB3ZSB3YW50IHRoZSBwb3BvdmVyIHRvIGNsb3NlIG9uIGJsdXIuXG4gIC0tPlxuPGRpdlxuICAjY29udGVudFdyYXBwZXJcbiAgW2lkXT1cIklEXCJcbiAgcm9sZT1cImRpYWxvZ1wiXG4gIHRhYmluZGV4PVwiLTFcIlxuICBjZGtNb25pdG9yU3VidHJlZUZvY3VzXG4gIGNka1RyYXBGb2N1c1xuICBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwiIW5vQXV0b0ZvY3VzXCJcbiAgY2xhc3M9XCJkaWFsb2dcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGU/LklEXCJcbiAgKGNka0ZvY3VzQ2hhbmdlKT1cIl9jb250ZW50Rm9jdXNDaGFuZ2VkKCRldmVudClcIlxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
- import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output, QueryList, } from '@angular/core';
2
+ import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output, QueryList, ViewChild, } from '@angular/core';
3
3
  import { coerceNumberProperty, } from '@angular/cdk/coercion';
4
4
  import { CoerceBoolean } from '../../common/coerce-boolean.decorator';
5
5
  import { SegmentedTabComponent } from './segmented-tab.component';
@@ -16,8 +16,7 @@ export class SegmentedTabsComponent {
16
16
  this._selectedIndex = coerceNumberProperty(value);
17
17
  this._focusedIndex = this._selectedIndex;
18
18
  }
19
- constructor(host, zone, changeDetector) {
20
- this.host = host;
19
+ constructor(zone, changeDetector) {
21
20
  this.zone = zone;
22
21
  this.changeDetector = changeDetector;
23
22
  /** Size of tabs */
@@ -33,18 +32,6 @@ export class SegmentedTabsComponent {
33
32
  this._focusVisible = false;
34
33
  this.skipAnimationFrame();
35
34
  }
36
- ngOnInit() {
37
- this.resizeObserver = new ResizeObserver(() => {
38
- // zonejs doesn't monkey-patch resize observer (yet)
39
- this.zone.run(() => {
40
- this.setActiveTabPosition();
41
- });
42
- });
43
- this.resizeObserver.observe(this.host.nativeElement);
44
- this.selectedIndexChange.subscribe(() => {
45
- this.setActiveTabPosition();
46
- });
47
- }
48
35
  ngAfterContentInit() {
49
36
  this._tabIds = this.tabs.map((tab) => tab.id);
50
37
  this.tabs.changes.subscribe(() => {
@@ -64,9 +51,19 @@ export class SegmentedTabsComponent {
64
51
  // https://angular.io/errors/NG0100
65
52
  this.setActiveTabPosition();
66
53
  this.changeDetector.detectChanges();
54
+ this.resizeObserver = new ResizeObserver(() => {
55
+ // zonejs doesn't monkey-patch resize observer (yet)
56
+ this.zone.run(() => {
57
+ this.setActiveTabPosition();
58
+ });
59
+ });
60
+ this.resizeObserver.observe(this.segmentedControl.nativeElement);
61
+ this.selectedIndexChange.subscribe(() => {
62
+ this.setActiveTabPosition();
63
+ });
67
64
  }
68
65
  ngOnDestroy() {
69
- this.resizeObserver?.unobserve(this.host.nativeElement);
66
+ this.resizeObserver?.unobserve(this.segmentedControl.nativeElement);
70
67
  this.selectedIndexChange.unsubscribe();
71
68
  }
72
69
  getFocusedTab() {
@@ -190,15 +187,18 @@ export class SegmentedTabsComponent {
190
187
  }
191
188
  }
192
189
  }
193
- SegmentedTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabsComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
194
- SegmentedTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabsComponent, selector: "sp-segmented-tabs", inputs: { size: "size", keyboardActivation: "keyboardActivation", disabled: "disabled", selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange" }, providers: [ViewEncapsulationProvider], queries: [{ propertyName: "tabs", predicate: i0.forwardRef(function () { return SegmentedTabComponent; }) }], exportAs: ["spSegmentedTabs"], ngImport: i0, template: "<div\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--large]=\"size === 'large'\"\n [class.sapphire-segmented-control--small]=\"size === 'small'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{background-color:var(--sapphire-segmented-control-color-tray);border-radius:var(--sapphire-segmented-control-size-radius);padding:var(--sapphire-segmented-control-size-spacing-tray);display:inline-block;height:var(--sapphire-segmented-control-size-height-m);box-sizing:border-box}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;width:100%}.sapphire-segmented-control__glider{position:absolute;top:0;left:0;height:100%;display:block;background-color:var(--sapphire-segmented-control-color-glider);box-shadow:var(--sapphire-segmented-control-shadow-glider);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-segmented-control-time-transition) ease-in-out,left var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-segmented-control-font-name);font-weight:var(--sapphire-segmented-control-font-weight);font-size:var(--sapphire-segmented-control-size-font-m);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-segmented-control-size-min-width-tab);padding:0 var(--sapphire-segmented-control-size-spacing-tab-horizontal);background-color:transparent;color:var(--sapphire-segmented-control-color-content-inactive);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-segmented-control-color-content-active)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-segmented-control-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring);border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--large{height:var(--sapphire-segmented-control-size-height-l)}.sapphire-segmented-control--large .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-l)}.sapphire-segmented-control--small{height:var(--sapphire-segmented-control-size-height-s)}.sapphire-segmented-control--small .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-s)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}.sapphire-segmented-control{width:inherit;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }] });
190
+ SegmentedTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabsComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
191
+ SegmentedTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabsComponent, selector: "sp-segmented-tabs", inputs: { size: "size", keyboardActivation: "keyboardActivation", disabled: "disabled", selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange" }, providers: [ViewEncapsulationProvider], queries: [{ propertyName: "tabs", predicate: i0.forwardRef(function () { return SegmentedTabComponent; }) }], viewQueries: [{ propertyName: "segmentedControl", first: true, predicate: ["segmentedControl"], descendants: true }], exportAs: ["spSegmentedTabs"], ngImport: i0, template: "<div\n #segmentedControl\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--large]=\"size === 'large'\"\n [class.sapphire-segmented-control--small]=\"size === 'small'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{background-color:var(--sapphire-segmented-control-color-tray);border-radius:var(--sapphire-segmented-control-size-radius);padding:var(--sapphire-segmented-control-size-spacing-tray);display:inline-block;height:var(--sapphire-segmented-control-size-height-m);box-sizing:border-box}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;width:100%}.sapphire-segmented-control__glider{position:absolute;top:0;left:0;height:100%;display:block;background-color:var(--sapphire-segmented-control-color-glider);box-shadow:var(--sapphire-segmented-control-shadow-glider);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-segmented-control-time-transition) ease-in-out,left var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-segmented-control-font-name);font-weight:var(--sapphire-segmented-control-font-weight);font-size:var(--sapphire-segmented-control-size-font-m);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-segmented-control-size-min-width-tab);padding:0 var(--sapphire-segmented-control-size-spacing-tab-horizontal);background-color:transparent;color:var(--sapphire-segmented-control-color-content-inactive);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-segmented-control-color-content-active)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-segmented-control-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring);border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--large{height:var(--sapphire-segmented-control-size-height-l)}.sapphire-segmented-control--large .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-l)}.sapphire-segmented-control--small{height:var(--sapphire-segmented-control-size-height-s)}.sapphire-segmented-control--small .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-s)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}.sapphire-segmented-control{width:inherit;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }] });
195
192
  __decorate([
196
193
  CoerceBoolean
197
194
  ], SegmentedTabsComponent.prototype, "disabled", void 0);
198
195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabsComponent, decorators: [{
199
196
  type: Component,
200
- args: [{ selector: 'sp-segmented-tabs', providers: [ViewEncapsulationProvider], exportAs: 'spSegmentedTabs', template: "<div\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--large]=\"size === 'large'\"\n [class.sapphire-segmented-control--small]=\"size === 'small'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{background-color:var(--sapphire-segmented-control-color-tray);border-radius:var(--sapphire-segmented-control-size-radius);padding:var(--sapphire-segmented-control-size-spacing-tray);display:inline-block;height:var(--sapphire-segmented-control-size-height-m);box-sizing:border-box}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;width:100%}.sapphire-segmented-control__glider{position:absolute;top:0;left:0;height:100%;display:block;background-color:var(--sapphire-segmented-control-color-glider);box-shadow:var(--sapphire-segmented-control-shadow-glider);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-segmented-control-time-transition) ease-in-out,left var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-segmented-control-font-name);font-weight:var(--sapphire-segmented-control-font-weight);font-size:var(--sapphire-segmented-control-size-font-m);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-segmented-control-size-min-width-tab);padding:0 var(--sapphire-segmented-control-size-spacing-tab-horizontal);background-color:transparent;color:var(--sapphire-segmented-control-color-content-inactive);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-segmented-control-color-content-active)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-segmented-control-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring);border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--large{height:var(--sapphire-segmented-control-size-height-l)}.sapphire-segmented-control--large .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-l)}.sapphire-segmented-control--small{height:var(--sapphire-segmented-control-size-height-s)}.sapphire-segmented-control--small .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-s)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}.sapphire-segmented-control{width:inherit;display:inline-block}\n"] }]
201
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { size: [{
197
+ args: [{ selector: 'sp-segmented-tabs', providers: [ViewEncapsulationProvider], exportAs: 'spSegmentedTabs', template: "<div\n #segmentedControl\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--large]=\"size === 'large'\"\n [class.sapphire-segmented-control--small]=\"size === 'small'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{background-color:var(--sapphire-segmented-control-color-tray);border-radius:var(--sapphire-segmented-control-size-radius);padding:var(--sapphire-segmented-control-size-spacing-tray);display:inline-block;height:var(--sapphire-segmented-control-size-height-m);box-sizing:border-box}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;width:100%}.sapphire-segmented-control__glider{position:absolute;top:0;left:0;height:100%;display:block;background-color:var(--sapphire-segmented-control-color-glider);box-shadow:var(--sapphire-segmented-control-shadow-glider);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-segmented-control-time-transition) ease-in-out,left var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-segmented-control-font-name);font-weight:var(--sapphire-segmented-control-font-weight);font-size:var(--sapphire-segmented-control-size-font-m);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-segmented-control-size-min-width-tab);padding:0 var(--sapphire-segmented-control-size-spacing-tab-horizontal);background-color:transparent;color:var(--sapphire-segmented-control-color-content-inactive);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-segmented-control-color-content-active)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-segmented-control-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring);border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--large{height:var(--sapphire-segmented-control-size-height-l)}.sapphire-segmented-control--large .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-l)}.sapphire-segmented-control--small{height:var(--sapphire-segmented-control-size-height-s)}.sapphire-segmented-control--small .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-s)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}.sapphire-segmented-control{width:inherit;display:inline-block}\n"] }]
198
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { segmentedControl: [{
199
+ type: ViewChild,
200
+ args: ['segmentedControl']
201
+ }], size: [{
202
202
  type: Input
203
203
  }], keyboardActivation: [{
204
204
  type: Input
@@ -212,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
212
212
  type: ContentChildren,
213
213
  args: [forwardRef(() => SegmentedTabComponent)]
214
214
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG9CQUFvQixHQUVyQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQVNyRixNQUFNLE9BQU8sc0JBQXNCO0lBZ0JqQyxnQ0FBZ0M7SUFDaEMsSUFDSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsS0FBa0I7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDM0MsQ0FBQztJQWdCRCxZQUNVLElBQWdCLEVBQ2hCLElBQVksRUFDWixjQUFpQztRQUZqQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUF4QzNDLG1CQUFt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UGxDLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCLENBQUMseUJBQXlCLENBQUMsWUFDNUIsaUJBQWlCO3NKQU8zQixJQUFJO3NCQURILEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU1OLFFBQVE7c0JBRlAsS0FBSztnQkFNRixhQUFhO3NCQURoQixLQUFLO2dCQVdhLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFJRSxJQUFJO3NCQURaLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCb29sZWFuSW5wdXQsXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxuICBOdW1iZXJJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1ib29sZWFuLmRlY29yYXRvcic7XG5pbXBvcnQgeyBTZWdtZW50ZWRUYWJDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdFbmNhcHN1bGF0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9jb21tb24vc2FwcGhpcmUtdmlldy1lbmNhcHN1bGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Atc2VnbWVudGVkLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWdtZW50ZWQtdGFicy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtWaWV3RW5jYXBzdWxhdGlvblByb3ZpZGVyXSxcbiAgZXhwb3J0QXM6ICdzcFNlZ21lbnRlZFRhYnMnLFxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50ZWRUYWJzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqIFNpemUgb2YgdGFicyAqL1xuICBASW5wdXQoKVxuICBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSc7XG5cbiAgLyoqIFdoZXRoZXIgdGFicyBhcmUgYWN0aXZhdGVkIGF1dG9tYXRpY2FsbHkgb24gZm9jdXMgb3IgbWFudWFsbHkuICovXG4gIEBJbnB1dCgpXG4gIGtleWJvYXJkQWN0aXZhdGlvbj86ICdtYW51YWwnIHwgJ2F1dG9tYXRpYycgPSAnYXV0b21hdGljJztcblxuICAvKiogV2hldGhlciB0aGUgZW50aXJlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQgKi9cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcblxuICAvKiogSW5kZXggb2YgdGhlIHNlbGVjdGVkIHRhYiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4IHx8IDA7XG4gIH1cbiAgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICB9XG4gIHByaXZhdGUgX3NlbGVjdGVkSW5kZXg/OiBudW1iZXI7XG4gIHByaXZhdGUgX2ZvY3VzZWRJbmRleDogbnVtYmVyID0gMDtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBTZWdtZW50ZWRUYWJDb21wb25lbnQpKVxuICByZWFkb25seSB0YWJzOiBRdWVyeUxpc3Q8U2VnbWVudGVkVGFiQ29tcG9uZW50PiA9IG5ldyBRdWVyeUxpc3QoKTtcbiAgcHJpdmF0ZSBfdGFiSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgdW5kZWZpbmVkO1xuICBfYWN0aXZlVGFiUG9zaXRpb24gPSB7IGxlZnQ6ICcwcHgnLCB3aWR0aDogJzBweCcgfTtcbiAgX2FuaW1hdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgX2ZvY3VzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnNraXBBbmltYXRpb25GcmFtZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAvLyB6b25lanMgZG9lc24ndCBtb25rZXktcGF0Y2ggcmVzaXplIG9ic2VydmVyICh5ZXQpXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWJQb3NpdGlvbigpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRBY3RpdmVUYWJQb3NpdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3RhYklkcyA9IHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmlkKTtcbiAgICB0aGlzLnRhYnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vblRhYnNDaGFuZ2UoKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRGb2N1c2FibGVJbmRleCgwLCAncmlnaHQnKSB8fCAwO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gVGhlIHZhbHVlIG9mIFwiX2dldFRhYkNvbnRlbnRUZW1wbGF0ZVwiLCB3aGljaCBpcyBib3VuZCBpbiB0aGVcbiAgICAvLyB0ZW1wbGF0ZSwgY2hhbmdlcyBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiBjaGVja2VkLiBUaGlzXG4gICAgLy8gXCJkZXRlY3RDaGFuZ2VzKClcIiBhdm9pZHMgdGhlIFwiTkcwMTAwOiBFeHByZXNzaW9uIGhhc1xuICAgIC8vIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWRcIiBhbmd1bGFyIGVycm9yLlxuICAgIC8vXG4gICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzAxMDBcbiAgICB0aGlzLnNldEFjdGl2ZVRhYlBvc2l0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0Rm9jdXNlZFRhYigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKVt0aGlzLl9mb2N1c2VkSW5kZXhdO1xuICB9XG5cbiAgc2VsZWN0VGFiKHNlbGVjdGVkVGFiOiBTZWdtZW50ZWRUYWJDb21wb25lbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLnRhYnNcbiAgICAgIC50b0FycmF5KClcbiAgICAgIC5maW5kSW5kZXgoKHRhYikgPT4gdGFiID09PSBzZWxlY3RlZFRhYik7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQodGFiOiBTZWdtZW50ZWRUYWJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJzPy50b0FycmF5KCkuaW5kZXhPZih0YWIpID09PSB0aGlzLnNlbGVjdGVkSW5kZXg7XG4gIH1cblxuICBfZ2V0VGFiQ29udGVudFRlbXBsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnRhYnMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF0/Ll9jb250ZW50VGVtcGxhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIF9vbkZvY3VzQ2hhbmdlKG9yaWdpbjogRm9jdXNPcmlnaW4pIHtcbiAgICB0aGlzLl9mb2N1c1Zpc2libGUgPSBvcmlnaW4gPT09ICdrZXlib2FyZCc7XG4gICAgaWYgKCFvcmlnaW4pIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICB9XG4gIH1cblxuICBfb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgZm9jdXNOZXh0VmFsaWRUYWIgPSAoXG4gICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnXG4gICAgKSA9PiB7XG4gICAgICBpZiAodGhpcy50YWJzLnRvQXJyYXkoKS5ldmVyeSgodGFiKSA9PiB0YWIuZGlzYWJsZWQpKSByZXR1cm47XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZEZvY3VzYWJsZUluZGV4KHRhcmdldEluZGV4LCBkaXJlY3Rpb24pO1xuICAgICAgaWYgKGluZGV4ID09PSBudWxsKSByZXR1cm47XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLnRhYnMudG9BcnJheSgpW2luZGV4XS5fYnV0dG9uPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKCFidXR0b24pIHJldHVybjtcbiAgICAgIGJ1dHRvbi5mb2N1cygpO1xuICAgICAgaWYgKHRoaXMua2V5Ym9hcmRBY3RpdmF0aW9uID09PSAnYXV0b21hdGljJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgfVxuICAgIH07XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGZvY3VzTmV4dFZhbGlkVGFiKHRoaXMuX2ZvY3VzZWRJbmRleCAtIDEsICdsZWZ0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGZvY3VzTmV4dFZhbGlkVGFiKHRoaXMuX2ZvY3VzZWRJbmRleCArIDEsICdyaWdodCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0hvbWUnOiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb2N1c05leHRWYWxpZFRhYigwLCAncmlnaHQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdFbmQnOiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb2N1c05leHRWYWxpZFRhYih0aGlzLnRhYnMubGVuZ3RoIC0gMSwgJ2xlZnQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVUYWJQb3NpdGlvbigpIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF0/Ll9idXR0b24/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fYWN0aXZlVGFiUG9zaXRpb24gPSB7XG4gICAgICBsZWZ0OiBgJHt0YWI/Lm9mZnNldExlZnQgfHwgMH1weGAsXG4gICAgICB3aWR0aDogYCR7dGFiPy5jbGllbnRXaWR0aCB8fCAwfXB4YCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvblRhYnNDaGFuZ2UoKSB7XG4gICAgLy8gRW5zdXJlIHRoZSBjdXJyZW50IHRhYiBkb2Vzbid0IGNoYW5nZSBpZiB0YWJzIGNoYW5nZVxuICAgIC8vIGFuZCB0YWIgd2l0aCBjdXJyZW50bHkgc2VsZWN0ZWQgaWQgc3RpbGwgZXhpc3RzXG4gICAgY29uc3QgcHJldmlvdXNUYWJJZCA9IHRoaXMuX3RhYklkc1t0aGlzLnNlbGVjdGVkSW5kZXhdO1xuICAgIHRoaXMuX3RhYklkcyA9IHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmlkKTtcbiAgICBpZiAodGhpcy5fdGFiSWRzLmluY2x1ZGVzKHByZXZpb3VzVGFiSWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl90YWJJZHMuZmluZEluZGV4KFxuICAgICAgICAodGFiSWQpID0+IHRhYklkID09PSBwcmV2aW91c1RhYklkXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXhJbmRleCA9IHRoaXMudGFicy5sZW5ndGggLSAxO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IG1heEluZGV4KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG1heEluZGV4O1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNraXBBbmltYXRpb25GcmFtZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBza2lwQW5pbWF0aW9uRnJhbWUoKSB7XG4gICAgLy8gV2Ugd2FudCB0byBhdm9pZCBhbmltYXRpb24gb24gZmlyc3QgcmVuZGVyIGFuZCB3aGVuZXZlciB0YWIgY29udGVudCBjaGFuZ2VzXG4gICAgdGhpcy5fYW5pbWF0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9hbmltYXRpb25FbmFibGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEZvY3VzYWJsZUluZGV4KFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLnRhYnMudG9BcnJheSgpLmV2ZXJ5KCh0YWIpID0+IHRhYi5kaXNhYmxlZCkpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGNvbnN0cmFpbkluZGV4ID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChpbmRleCA+PSB0aGlzLnRhYnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgY29uc3RyYWluZWRJbmRleCA9IGNvbnN0cmFpbkluZGV4KGluZGV4KTtcbiAgICBpZiAodGhpcy50YWJzLnRvQXJyYXkoKVtjb25zdHJhaW5lZEluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEZvY3VzYWJsZUluZGV4KFxuICAgICAgICBjb25zdHJhaW5lZEluZGV4ICsgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gLTEgOiAxKSxcbiAgICAgICAgZGlyZWN0aW9uXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29uc3RyYWluZWRJbmRleDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbFwiXG4gIFtjbGFzcy5zYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbC0tbGFyZ2VdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gIFtjbGFzcy5zYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbC0tc21hbGxdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gIFtjbGFzcy5mb2N1cy12aXNpYmxlXT1cIl9mb2N1c1Zpc2libGVcIlxuICBbY2xhc3Muc2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2wtLW1hbnVhbC1rZXlib2FyZC1hY3RpdmF0aW9uXT1cIlxuICAgIGtleWJvYXJkQWN0aXZhdGlvbiA9PT0gJ21hbnVhbCdcbiAgXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2J1dHRvbi1jb250YWluZXJcIlxuICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICBhcmlhLW9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgY2RrTW9uaXRvclN1YnRyZWVGb2N1c1xuICAgIChjZGtGb2N1c0NoYW5nZSk9XCJfb25Gb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJfb25LZXlEb3duKCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3Atc2VnbWVudGVkLXRhYlwiPjwvbmctY29udGVudD5cbiAgICA8c3BhblxuICAgICAgW3N0eWxlLmxlZnRdPVwiX2FjdGl2ZVRhYlBvc2l0aW9uLmxlZnRcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cIl9hY3RpdmVUYWJQb3NpdGlvbi53aWR0aFwiXG4gICAgICBbY2xhc3Muc2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2dsaWRlci0td2l0aC10cmFuc2l0aW9uXT1cIlxuICAgICAgICBfYW5pbWF0aW9uRW5hYmxlZFxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwic2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2dsaWRlclwiXG4gICAgICByb2xlPVwibm9uZVwiXG4gICAgPjwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfZ2V0VGFiQ29udGVudFRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxvQkFBb0IsR0FFckIsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFTckYsTUFBTSxPQUFPLHNCQUFzQjtJQWtCakMsZ0NBQWdDO0lBQ2hDLElBQ0ksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLEtBQWtCO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzNDLENBQUM7SUFnQkQsWUFBb0IsSUFBWSxFQUFVLGNBQWlDO1FBQXZELFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFyQzNFLG1CQUFtQjtRQUVuQixTQUFJLEdBQWlDLFFBQVEsQ0FB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QUMsWUFDNUIsaUJBQWlCOzZIQUtJLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSTdCLElBQUk7c0JBREgsS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBTU4sUUFBUTtzQkFGUCxLQUFLO2dCQU1GLGFBQWE7c0JBRGhCLEtBQUs7Z0JBV2EsbUJBQW1CO3NCQUFyQyxNQUFNO2dCQUlFLElBQUk7c0JBRFosZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJvb2xlYW5JbnB1dCxcbiAgY29lcmNlTnVtYmVyUHJvcGVydHksXG4gIE51bWJlcklucHV0LFxufSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbmltcG9ydCB7IENvZXJjZUJvb2xlYW4gfSBmcm9tICcuLi8uLi9jb21tb24vY29lcmNlLWJvb2xlYW4uZGVjb3JhdG9yJztcbmltcG9ydCB7IFNlZ21lbnRlZFRhYkNvbXBvbmVudCB9IGZyb20gJy4vc2VnbWVudGVkLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld0VuY2Fwc3VsYXRpb25Qcm92aWRlciB9IGZyb20gJy4uLy4uL2NvbW1vbi9zYXBwaGlyZS12aWV3LWVuY2Fwc3VsYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcC1zZWdtZW50ZWQtdGFicycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWdtZW50ZWQtdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlZ21lbnRlZC10YWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1ZpZXdFbmNhcHN1bGF0aW9uUHJvdmlkZXJdLFxuICBleHBvcnRBczogJ3NwU2VnbWVudGVkVGFicycsXG59KVxuZXhwb3J0IGNsYXNzIFNlZ21lbnRlZFRhYnNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgnc2VnbWVudGVkQ29udHJvbCcpIHNlZ21lbnRlZENvbnRyb2whOiBFbGVtZW50UmVmO1xuXG4gIC8qKiBTaXplIG9mIHRhYnMgKi9cbiAgQElucHV0KClcbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuXG4gIC8qKiBXaGV0aGVyIHRhYnMgYXJlIGFjdGl2YXRlZCBhdXRvbWF0aWNhbGx5IG9uIGZvY3VzIG9yIG1hbnVhbGx5LiAqL1xuICBASW5wdXQoKVxuICBrZXlib2FyZEFjdGl2YXRpb24/OiAnbWFudWFsJyB8ICdhdXRvbWF0aWMnID0gJ2F1dG9tYXRpYyc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGVudGlyZSBjb21wb25lbnQgc2hvdWxkIGJlIGRpc2FibGVkICovXG4gIEBJbnB1dCgpXG4gIEBDb2VyY2VCb29sZWFuXG4gIGRpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqIEluZGV4IG9mIHRoZSBzZWxlY3RlZCB0YWIgKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleCB8fCAwO1xuICB9XG4gIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5fZm9jdXNlZEluZGV4ID0gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4PzogbnVtYmVyO1xuICBwcml2YXRlIF9mb2N1c2VkSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gU2VnbWVudGVkVGFiQ29tcG9uZW50KSlcbiAgcmVhZG9ubHkgdGFiczogUXVlcnlMaXN0PFNlZ21lbnRlZFRhYkNvbXBvbmVudD4gPSBuZXcgUXVlcnlMaXN0KCk7XG4gIHByaXZhdGUgX3RhYklkczogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlciB8IHVuZGVmaW5lZDtcbiAgX2FjdGl2ZVRhYlBvc2l0aW9uID0geyBsZWZ0OiAnMHB4Jywgd2lkdGg6ICcwcHgnIH07XG4gIF9hbmltYXRpb25FbmFibGVkID0gZmFsc2U7XG4gIF9mb2N1c1Zpc2libGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLnNraXBBbmltYXRpb25GcmFtZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3RhYklkcyA9IHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmlkKTtcbiAgICB0aGlzLnRhYnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vblRhYnNDaGFuZ2UoKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRGb2N1c2FibGVJbmRleCgwLCAncmlnaHQnKSB8fCAwO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gVGhlIHZhbHVlIG9mIFwiX2dldFRhYkNvbnRlbnRUZW1wbGF0ZVwiLCB3aGljaCBpcyBib3VuZCBpbiB0aGVcbiAgICAvLyB0ZW1wbGF0ZSwgY2hhbmdlcyBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiBjaGVja2VkLiBUaGlzXG4gICAgLy8gXCJkZXRlY3RDaGFuZ2VzKClcIiBhdm9pZHMgdGhlIFwiTkcwMTAwOiBFeHByZXNzaW9uIGhhc1xuICAgIC8vIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWRcIiBhbmd1bGFyIGVycm9yLlxuICAgIC8vXG4gICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzAxMDBcbiAgICB0aGlzLnNldEFjdGl2ZVRhYlBvc2l0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAvLyB6b25lanMgZG9lc24ndCBtb25rZXktcGF0Y2ggcmVzaXplIG9ic2VydmVyICh5ZXQpXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWJQb3NpdGlvbigpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5zZWdtZW50ZWRDb250cm9sLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRBY3RpdmVUYWJQb3NpdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMuc2VnbWVudGVkQ29udHJvbC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldEZvY3VzZWRUYWIoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFicy50b0FycmF5KClbdGhpcy5fZm9jdXNlZEluZGV4XTtcbiAgfVxuXG4gIHNlbGVjdFRhYihzZWxlY3RlZFRhYjogU2VnbWVudGVkVGFiQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy50YWJzXG4gICAgICAudG9BcnJheSgpXG4gICAgICAuZmluZEluZGV4KCh0YWIpID0+IHRhYiA9PT0gc2VsZWN0ZWRUYWIpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gIH1cblxuICBpc1NlbGVjdGVkKHRhYjogU2VnbWVudGVkVGFiQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFicz8udG9BcnJheSgpLmluZGV4T2YodGFiKSA9PT0gdGhpcy5zZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgX2dldFRhYkNvbnRlbnRUZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKVt0aGlzLnNlbGVjdGVkSW5kZXhdPy5fY29udGVudFRlbXBsYXRlIHx8IG51bGw7XG4gIH1cblxuICBfb25Gb2N1c0NoYW5nZShvcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgdGhpcy5fZm9jdXNWaXNpYmxlID0gb3JpZ2luID09PSAna2V5Ym9hcmQnO1xuICAgIGlmICghb3JpZ2luKSB7XG4gICAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSB0aGlzLnNlbGVjdGVkSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGZvY3VzTmV4dFZhbGlkVGFiID0gKFxuICAgICAgdGFyZ2V0SW5kZXg6IG51bWJlcixcbiAgICAgIGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0J1xuICAgICkgPT4ge1xuICAgICAgaWYgKHRoaXMudGFicy50b0FycmF5KCkuZXZlcnkoKHRhYikgPT4gdGFiLmRpc2FibGVkKSkgcmV0dXJuO1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbmRGb2N1c2FibGVJbmRleCh0YXJnZXRJbmRleCwgZGlyZWN0aW9uKTtcbiAgICAgIGlmIChpbmRleCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgY29uc3QgYnV0dG9uID0gdGhpcy50YWJzLnRvQXJyYXkoKVtpbmRleF0uX2J1dHRvbj8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICghYnV0dG9uKSByZXR1cm47XG4gICAgICBidXR0b24uZm9jdXMoKTtcbiAgICAgIGlmICh0aGlzLmtleWJvYXJkQWN0aXZhdGlvbiA9PT0gJ2F1dG9tYXRpYycpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSBpbmRleDtcbiAgICAgIH1cbiAgICB9O1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBmb2N1c05leHRWYWxpZFRhYih0aGlzLl9mb2N1c2VkSW5kZXggLSAxLCAnbGVmdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBmb2N1c05leHRWYWxpZFRhYih0aGlzLl9mb2N1c2VkSW5kZXggKyAxLCAncmlnaHQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdIb21lJzoge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZm9jdXNOZXh0VmFsaWRUYWIoMCwgJ3JpZ2h0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRW5kJzoge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZm9jdXNOZXh0VmFsaWRUYWIodGhpcy50YWJzLmxlbmd0aCAtIDEsICdsZWZ0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlVGFiUG9zaXRpb24oKSB7XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJzLnRvQXJyYXkoKVt0aGlzLnNlbGVjdGVkSW5kZXhdPy5fYnV0dG9uPy5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuX2FjdGl2ZVRhYlBvc2l0aW9uID0ge1xuICAgICAgbGVmdDogYCR7dGFiPy5vZmZzZXRMZWZ0IHx8IDB9cHhgLFxuICAgICAgd2lkdGg6IGAke3RhYj8uY2xpZW50V2lkdGggfHwgMH1weGAsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgb25UYWJzQ2hhbmdlKCkge1xuICAgIC8vIEVuc3VyZSB0aGUgY3VycmVudCB0YWIgZG9lc24ndCBjaGFuZ2UgaWYgdGFicyBjaGFuZ2VcbiAgICAvLyBhbmQgdGFiIHdpdGggY3VycmVudGx5IHNlbGVjdGVkIGlkIHN0aWxsIGV4aXN0c1xuICAgIGNvbnN0IHByZXZpb3VzVGFiSWQgPSB0aGlzLl90YWJJZHNbdGhpcy5zZWxlY3RlZEluZGV4XTtcbiAgICB0aGlzLl90YWJJZHMgPSB0aGlzLnRhYnMubWFwKCh0YWIpID0+IHRhYi5pZCk7XG4gICAgaWYgKHRoaXMuX3RhYklkcy5pbmNsdWRlcyhwcmV2aW91c1RhYklkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5fdGFiSWRzLmZpbmRJbmRleChcbiAgICAgICAgKHRhYklkKSA9PiB0YWJJZCA9PT0gcHJldmlvdXNUYWJJZFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWF4SW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoIC0gMTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiBtYXhJbmRleCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBtYXhJbmRleDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5za2lwQW5pbWF0aW9uRnJhbWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2tpcEFuaW1hdGlvbkZyYW1lKCkge1xuICAgIC8vIFdlIHdhbnQgdG8gYXZvaWQgYW5pbWF0aW9uIG9uIGZpcnN0IHJlbmRlciBhbmQgd2hlbmV2ZXIgdGFiIGNvbnRlbnQgY2hhbmdlc1xuICAgIHRoaXMuX2FuaW1hdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fYW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRGb2N1c2FibGVJbmRleChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0J1xuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy50YWJzLnRvQXJyYXkoKS5ldmVyeSgodGFiKSA9PiB0YWIuZGlzYWJsZWQpKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBjb25zdHJhaW5JbmRleCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoaW5kZXggPj0gdGhpcy50YWJzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMubGVuZ3RoIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGNvbnN0cmFpbmVkSW5kZXggPSBjb25zdHJhaW5JbmRleChpbmRleCk7XG4gICAgaWYgKHRoaXMudGFicy50b0FycmF5KClbY29uc3RyYWluZWRJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbmRGb2N1c2FibGVJbmRleChcbiAgICAgICAgY29uc3RyYWluZWRJbmRleCArIChkaXJlY3Rpb24gPT09ICdsZWZ0JyA/IC0xIDogMSksXG4gICAgICAgIGRpcmVjdGlvblxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnN0cmFpbmVkSW5kZXg7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gICNzZWdtZW50ZWRDb250cm9sXG4gIGNsYXNzPVwic2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xcIlxuICBbY2xhc3Muc2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2wtLWxhcmdlXT1cInNpemUgPT09ICdsYXJnZSdcIlxuICBbY2xhc3Muc2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2wtLXNtYWxsXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICBbY2xhc3MuZm9jdXMtdmlzaWJsZV09XCJfZm9jdXNWaXNpYmxlXCJcbiAgW2NsYXNzLnNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sLS1tYW51YWwta2V5Ym9hcmQtYWN0aXZhdGlvbl09XCJcbiAgICBrZXlib2FyZEFjdGl2YXRpb24gPT09ICdtYW51YWwnXG4gIFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19idXR0b24tY29udGFpbmVyXCJcbiAgICByb2xlPVwidGFibGlzdFwiXG4gICAgYXJpYS1vcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIGNka01vbml0b3JTdWJ0cmVlRm9jdXNcbiAgICAoY2RrRm9jdXNDaGFuZ2UpPVwiX29uRm9jdXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwiX29uS2V5RG93bigkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNwLXNlZ21lbnRlZC10YWJcIj48L25nLWNvbnRlbnQ+XG4gICAgPHNwYW5cbiAgICAgIFtzdHlsZS5sZWZ0XT1cIl9hY3RpdmVUYWJQb3NpdGlvbi5sZWZ0XCJcbiAgICAgIFtzdHlsZS53aWR0aF09XCJfYWN0aXZlVGFiUG9zaXRpb24ud2lkdGhcIlxuICAgICAgW2NsYXNzLnNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19nbGlkZXItLXdpdGgtdHJhbnNpdGlvbl09XCJcbiAgICAgICAgX2FuaW1hdGlvbkVuYWJsZWRcbiAgICAgIFwiXG4gICAgICBjbGFzcz1cInNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19nbGlkZXJcIlxuICAgICAgcm9sZT1cIm5vbmVcIlxuICAgID48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiX2dldFRhYkNvbnRlbnRUZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XG4iXX0=