@skyux/popovers 6.0.0-beta.4 → 6.0.0-beta.7

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.
@@ -300,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
300
300
  type: ContentChildren,
301
301
  args: [SkyDropdownItemComponent, { descendants: true }]
302
302
  }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXZFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNmOzs7R0FHRztBQVFILE1BQU0sT0FBTyx3QkFBd0I7SUF5Rm5DLFlBQ1UsY0FBaUMsRUFDakMsVUFBc0IsRUFDVixpQkFBdUM7UUFGbkQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBN0M3RDs7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ZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVMLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQzthQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDNUMsdUZBQXVGO1lBQ3ZGLG1CQUFtQjtZQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxPQUFPO29CQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxLQUFLLEtBQUssRUFDN0M7b0JBQ0EsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEQ7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7cUhBclZVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGtPQThFbEIsd0JBQXdCLGdEQ25IM0MsK01BUUE7MkZENkJhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7MEJBOEZsQyxRQUFROzRDQXJGSixjQUFjO3NCQURwQixLQUFLO2dCQWFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBaUJLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBbUJDLFdBQVc7c0JBRGpCLE1BQU07Z0JBMkJBLFNBQVM7c0JBRGYsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25NZW51Q2hhbmdlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZW51LWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZS10eXBlJztcblxubGV0IG5leHRJZCA9IDA7XG4vKipcbiAqIENyZWF0ZXMgYSBtZW51IHRoYXQgY29udGFpbnMgZHJvcGRvd24gbWVudSBpdGVtcy5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kcm9wZG93bi1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEcm9wZG93bk1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBIVE1MIGVsZW1lbnQgSUQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYCNgKSBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgZHJvcGRvd24gbWVudS4gVGhpcyBzZXRzIHRoZSBkcm9wZG93biBtZW51J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgcm9sZSBmb3IgdGhlIGRyb3Bkb3duIG1lbnVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KVxuICAgKiBieSBpbmRpY2F0aW5nIGhvdyB0aGUgZHJvcGRvd24gbWVudSBmdW5jdGlvbnMgYW5kIHdoYXQgaXQgY29udHJvbHMuIFRoZSBkcm9wZG93biBidXR0b25cbiAgICogaW5oZXJpdHMgdGhpcyB2YWx1ZSB0byBzZXQgaXRzIGBhcmlhLWhhc3BvcHVwYCBwcm9wZXJ0eS4gRm9yIGluZm9ybWF0aW9uXG4gICAqIGFib3V0IGhvdyBhbiBBUklBIHJvbGUgaW5kaWNhdGVzIHdoYXQgYW4gaXRlbSByZXByZXNlbnRzIG9uIGEgd2ViIHBhZ2UsIHNlZSB0aGVcbiAgICogW1dBSS1BUklBIHJvbGVzIG1vZGVsXShodHRwczovL3d3dy53My5vcmcvV0FJL1BGL2FyaWEvcm9sZXMpLlxuICAgKiBAZGVmYXVsdCBcIm1lbnVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhUm9sZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYXJpYVJvbGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYVJvbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXJpYVJvbGUgfHwgJ21lbnUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHVzZSB0aGUgYnJvd3NlcidzIG5hdGl2ZSBmb2N1cyBmdW5jdGlvbiB3aGVuIHVzZXJzIG5hdmlnYXRlIHRocm91Z2ggbWVudVxuICAgKiBpdGVtcyB3aXRoIHRoZSBrZXlib2FyZC4gVG8gZGlzYWJsZSB0aGUgbmF0aXZlIGZvY3VzIGZ1bmN0aW9uLCBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgZmFsc2VgLlxuICAgKiBGb3IgZXhhbXBsZSwgdG8gbGV0IHVzZXJzIGludGVyYWN0IHdpdGggdGhlIGRyb3Bkb3duIG1lbnUgYnV0IGtlZXAgdGhlIGtleWJvYXJkIGZvY3VzIG9uIGFcbiAgICogZGlmZmVyZW50IGVsZW1lbnQsIHNldCB0aGlzIHByb3BlcnR5IHRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdXNlTmF0aXZlRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl91c2VOYXRpdmVGb2N1cyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB1c2VOYXRpdmVGb2N1cygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdXNlTmF0aXZlRm9jdXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3VzZU5hdGl2ZUZvY3VzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGRyb3Bkb3duIG1lbnUncyBhY3RpdmUgaW5kZXggb3Igc2VsZWN0ZWQgaXRlbSBjaGFuZ2VzLiBUaGlzIGV2ZW50IHByb3ZpZGVzIGFuXG4gICAqIG9ic2VydmFibGUgdG8gZW1pdCBjaGFuZ2VzLCBhbmQgdGhlIHJlc3BvbnNlIGlzIG9mXG4gICAqIHRoZSBTa3lEcm9wZG93bk1lbnVDaGFuZ2UgdHlwZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbWVudUNoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPFNreURyb3Bkb3duTWVudUNoYW5nZT4oKTtcblxuICBwdWJsaWMgZHJvcGRvd25NZW51SWQgPSBgc2t5LWRyb3Bkb3duLW1lbnUtJHsrK25leHRJZH1gO1xuXG4gIHByaXZhdGUgZ2V0IGhhc0ZvY3VzYWJsZUl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5tZW51SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pc0ZvY3VzYWJsZSgpKTtcbiAgICByZXR1cm4gZm91bmQgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbWVudUluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubWVudUl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID49IHRoaXMubWVudUl0ZW1zLmxlbmd0aCkge1xuICAgICAgdmFsdWUgPSAwO1xuICAgIH1cblxuICAgIHRoaXMuX21lbnVJbmRleCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBtZW51SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudUluZGV4O1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIG1lbnVJdGVtczogUXVlcnlMaXN0PFNreURyb3Bkb3duSXRlbUNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9hcmlhUm9sZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgX21lbnVJbmRleCA9IDA7XG5cbiAgcHJpdmF0ZSBfdXNlTmF0aXZlRm9jdXM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZHJvcGRvd25Db21wb25lbnQ6IFNreURyb3Bkb3duQ29tcG9uZW50XG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnQpIHtcbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVudUlkID0gdGhpcy5kcm9wZG93bk1lbnVJZDtcbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVudUFyaWFSb2xlID0gdGhpcy5hcmlhUm9sZTtcblxuICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5tZXNzYWdlU3RyZWFtXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBTa3lEcm9wZG93bk1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW46XG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2U6XG4gICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbTpcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0SXRlbSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzTmV4dEl0ZW06XG4gICAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzUHJldmlvdXNJdGVtOlxuICAgICAgICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNMYXN0SXRlbTpcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c0xhc3RJdGVtKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMubWVudUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5RHJvcGRvd25NZW51Q2hhbmdlKSA9PiB7XG4gICAgICAgICAgLy8gQ2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gYSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAgICAgICAgaWYgKGNoYW5nZS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2hhbmdlLml0ZW1zKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHBvcG92ZXIgc3R5bGUgYW5kIHBvc2l0aW9uIHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgaXRlbXMgY2hhbmdlcy5cbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5SZXBvc2l0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IGRyb3Bkb3duIHdoZW5ldmVyIHRoZSBtZW51IGl0ZW1zIGNoYW5nZS5cbiAgICB0aGlzLm1lbnVJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBRdWVyeUxpc3Q8U2t5RHJvcGRvd25JdGVtQ29tcG9uZW50PikgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubWVudUNoYW5nZXMuZW1pdCh7XG4gICAgICAgICAgaXRlbXM6IGl0ZW1zLnRvQXJyYXkoKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0ZpcnN0SXRlbSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGFzRm9jdXNhYmxlSXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lbnVJbmRleCA9IDA7XG5cbiAgICBjb25zdCBmaXJzdEl0ZW0gPSB0aGlzLmdldEl0ZW1CeUluZGV4KHRoaXMubWVudUluZGV4KTtcbiAgICBpZiAoZmlyc3RJdGVtICYmIGZpcnN0SXRlbS5pc0ZvY3VzYWJsZSgpKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShmaXJzdEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzTmV4dEl0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNMYXN0SXRlbSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGFzRm9jdXNhYmxlSXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lbnVJbmRleCA9IHRoaXMubWVudUl0ZW1zLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBsYXN0SXRlbSA9IHRoaXMuZ2V0SXRlbUJ5SW5kZXgodGhpcy5tZW51SW5kZXgpO1xuICAgIGlmIChsYXN0SXRlbSAmJiBsYXN0SXRlbS5pc0ZvY3VzYWJsZSgpKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShsYXN0SXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNQcmV2aW91c0l0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNQcmV2aW91c0l0ZW0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc0ZvY3VzYWJsZUl0ZW1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tZW51SW5kZXgtLTtcblxuICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IHRoaXMuZ2V0SXRlbUJ5SW5kZXgodGhpcy5tZW51SW5kZXgpO1xuICAgIGlmIChwcmV2aW91c0l0ZW0gJiYgcHJldmlvdXNJdGVtLmlzRm9jdXNhYmxlKCkpIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtKHByZXZpb3VzSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNQcmV2aW91c0l0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNOZXh0SXRlbSgpIHtcbiAgICBpZiAoIXRoaXMuaGFzRm9jdXNhYmxlSXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lbnVJbmRleCsrO1xuXG4gICAgY29uc3QgbmV4dEl0ZW0gPSB0aGlzLmdldEl0ZW1CeUluZGV4KHRoaXMubWVudUluZGV4KTtcbiAgICBpZiAobmV4dEl0ZW0gJiYgbmV4dEl0ZW0uaXNGb2N1c2FibGUoKSkge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0obmV4dEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzTmV4dEl0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVudUluZGV4ID0gLTE7XG4gICAgdGhpcy5yZXNldEl0ZW1zQWN0aXZlU3RhdGUoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEl0ZW1zQWN0aXZlU3RhdGUoKSB7XG4gICAgdGhpcy5tZW51SXRlbXMuZm9yRWFjaCgoaXRlbTogU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50KSA9PiB7XG4gICAgICBpdGVtLnJlc2V0U3RhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNJdGVtKGl0ZW06IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRJdGVtc0FjdGl2ZVN0YXRlKCk7XG4gICAgaXRlbS5mb2N1c0VsZW1lbnQodGhpcy51c2VOYXRpdmVGb2N1cyk7XG4gICAgdGhpcy5tZW51Q2hhbmdlcy5lbWl0KHtcbiAgICAgIGFjdGl2ZUluZGV4OiB0aGlzLm1lbnVJbmRleCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbUJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMubWVudUl0ZW1zLmZpbmQoKGl0ZW06IGFueSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaSA9PT0gaW5kZXg7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEl0ZW1CeUV2ZW50VGFyZ2V0KHRhcmdldDogRXZlbnRUYXJnZXQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLm1lbnVJdGVtcy5maW5kKFxuICAgICAgKGl0ZW06IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KTtcblxuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICB0aGlzLm1lbnVJbmRleCA9IGk7XG4gICAgICAgICAgdGhpcy5tZW51Q2hhbmdlcy5uZXh0KHtcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiB0aGlzLm1lbnVJbmRleCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICB0aGlzLm1lbnVDaGFuZ2VzLm5leHQoe1xuICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbmRNZXNzYWdlKHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50Lm1lc3NhZ2VTdHJlYW0ubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGRyb3Bkb3duTWVudUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoZHJvcGRvd25NZW51RWxlbWVudCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtQnlFdmVudFRhcmdldChldmVudC50YXJnZXQpO1xuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGRyb3Bkb3duTWVudUVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b24pO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgICAgdGhpcy5mb2N1c05leHRJdGVtKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnQuZGlzbWlzc09uQmx1cikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzVHJpZ2dlckJ1dHRvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGRyb3Bkb3duTWVudUVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaXNNb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkcm9wZG93bk1lbnVFbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LmlzTW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICAvLyBBbGxvdyB0aGUgZHJvcGRvd24gY29tcG9uZW50IHRvIHNldCBpc01vdXNlRW50ZXIgYmVmb3JlIGNoZWNraW5nIGlmIHRoZSBjbG9zZSBhY3Rpb25cbiAgICAgICAgLy8gc2hvdWxkIGJlIHRha2VuLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LnRyaWdnZXIgPT09ICdob3ZlcicgJiZcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaXNNb3VzZUVudGVyID09PSBmYWxzZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktZHJvcGRvd24tbWVudSBza3ktc2hhZG93IHNreS1lbGV2YXRpb24tNFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLnJvbGVdPVwiYXJpYVJvbGVcIlxuICBbaWRdPVwiZHJvcGRvd25NZW51SWRcIlxuPlxuICA8bmctY29udGVudD4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXZFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNmOzs7R0FHRztBQVFILE1BQU0sT0FBTyx3QkFBd0I7SUF5Rm5DLFlBQ1UsY0FBaUMsRUFDakMsVUFBc0IsRUFDVixpQkFBdUM7UUFGbkQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBN0M3RDs7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ZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVMLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQzthQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDNUMsdUZBQXVGO1lBQ3ZGLG1CQUFtQjtZQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxPQUFPO29CQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxLQUFLLEtBQUssRUFDN0M7b0JBQ0EsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEQ7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7cUhBclZVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGtPQThFbEIsd0JBQXdCLGdEQ25IM0MsK01BUUE7MkZENkJhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7MEJBOEZsQyxRQUFROzRDQXJGSixjQUFjO3NCQURwQixLQUFLO2dCQWFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBaUJLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBbUJDLFdBQVc7c0JBRGpCLE1BQU07Z0JBMkJBLFNBQVM7c0JBRGYsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25NZW51Q2hhbmdlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZW51LWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZS10eXBlJztcblxubGV0IG5leHRJZCA9IDA7XG4vKipcbiAqIENyZWF0ZXMgYSBtZW51IHRoYXQgY29udGFpbnMgZHJvcGRvd24gbWVudSBpdGVtcy5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kcm9wZG93bi1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEcm9wZG93bk1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBIVE1MIGVsZW1lbnQgSUQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYCNgKSBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgZHJvcGRvd24gbWVudS4gVGhpcyBzZXRzIHRoZSBkcm9wZG93biBtZW51J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgcm9sZSBmb3IgdGhlIGRyb3Bkb3duIG1lbnVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KVxuICAgKiBieSBpbmRpY2F0aW5nIGhvdyB0aGUgZHJvcGRvd24gbWVudSBmdW5jdGlvbnMgYW5kIHdoYXQgaXQgY29udHJvbHMuIFRoZSBkcm9wZG93biBidXR0b25cbiAgICogaW5oZXJpdHMgdGhpcyB2YWx1ZSB0byBzZXQgaXRzIGBhcmlhLWhhc3BvcHVwYCBwcm9wZXJ0eS4gRm9yIGluZm9ybWF0aW9uXG4gICAqIGFib3V0IGhvdyBhbiBBUklBIHJvbGUgaW5kaWNhdGVzIHdoYXQgYW4gaXRlbSByZXByZXNlbnRzIG9uIGEgd2ViIHBhZ2UsIHNlZSB0aGVcbiAgICogW1dBSS1BUklBIHJvbGVzIG1vZGVsXShodHRwczovL3d3dy53My5vcmcvV0FJL1BGL2FyaWEvcm9sZXMpLlxuICAgKiBAZGVmYXVsdCBcIm1lbnVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhUm9sZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYXJpYVJvbGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYVJvbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXJpYVJvbGUgfHwgJ21lbnUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHVzZSB0aGUgYnJvd3NlcidzIG5hdGl2ZSBmb2N1cyBmdW5jdGlvbiB3aGVuIHVzZXJzIG5hdmlnYXRlIHRocm91Z2ggbWVudVxuICAgKiBpdGVtcyB3aXRoIHRoZSBrZXlib2FyZC4gVG8gZGlzYWJsZSB0aGUgbmF0aXZlIGZvY3VzIGZ1bmN0aW9uLCBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgZmFsc2VgLlxuICAgKiBGb3IgZXhhbXBsZSwgdG8gbGV0IHVzZXJzIGludGVyYWN0IHdpdGggdGhlIGRyb3Bkb3duIG1lbnUgYnV0IGtlZXAgdGhlIGtleWJvYXJkIGZvY3VzIG9uIGFcbiAgICogZGlmZmVyZW50IGVsZW1lbnQsIHNldCB0aGlzIHByb3BlcnR5IHRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdXNlTmF0aXZlRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl91c2VOYXRpdmVGb2N1cyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB1c2VOYXRpdmVGb2N1cygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdXNlTmF0aXZlRm9jdXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3VzZU5hdGl2ZUZvY3VzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGRyb3Bkb3duIG1lbnUncyBhY3RpdmUgaW5kZXggb3Igc2VsZWN0ZWQgaXRlbSBjaGFuZ2VzLiBUaGlzIGV2ZW50IHByb3ZpZGVzIGFuXG4gICAqIG9ic2VydmFibGUgdG8gZW1pdCBjaGFuZ2VzLCBhbmQgdGhlIHJlc3BvbnNlIGlzIG9mXG4gICAqIHRoZSBTa3lEcm9wZG93bk1lbnVDaGFuZ2UgdHlwZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbWVudUNoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPFNreURyb3Bkb3duTWVudUNoYW5nZT4oKTtcblxuICBwdWJsaWMgZHJvcGRvd25NZW51SWQgPSBgc2t5LWRyb3Bkb3duLW1lbnUtJHsrK25leHRJZH1gO1xuXG4gIHByaXZhdGUgZ2V0IGhhc0ZvY3VzYWJsZUl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5tZW51SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pc0ZvY3VzYWJsZSgpKTtcbiAgICByZXR1cm4gZm91bmQgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbWVudUluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubWVudUl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID49IHRoaXMubWVudUl0ZW1zLmxlbmd0aCkge1xuICAgICAgdmFsdWUgPSAwO1xuICAgIH1cblxuICAgIHRoaXMuX21lbnVJbmRleCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBtZW51SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudUluZGV4O1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIG1lbnVJdGVtczogUXVlcnlMaXN0PFNreURyb3Bkb3duSXRlbUNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9hcmlhUm9sZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgX21lbnVJbmRleCA9IDA7XG5cbiAgcHJpdmF0ZSBfdXNlTmF0aXZlRm9jdXM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZHJvcGRvd25Db21wb25lbnQ6IFNreURyb3Bkb3duQ29tcG9uZW50XG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnQpIHtcbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVudUlkID0gdGhpcy5kcm9wZG93bk1lbnVJZDtcbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVudUFyaWFSb2xlID0gdGhpcy5hcmlhUm9sZTtcblxuICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5tZXNzYWdlU3RyZWFtXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBTa3lEcm9wZG93bk1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW46XG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2U6XG4gICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbTpcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0SXRlbSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzTmV4dEl0ZW06XG4gICAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzUHJldmlvdXNJdGVtOlxuICAgICAgICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNMYXN0SXRlbTpcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c0xhc3RJdGVtKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMubWVudUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5RHJvcGRvd25NZW51Q2hhbmdlKSA9PiB7XG4gICAgICAgICAgLy8gQ2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gYSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAgICAgICAgaWYgKGNoYW5nZS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2hhbmdlLml0ZW1zKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHBvcG92ZXIgc3R5bGUgYW5kIHBvc2l0aW9uIHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgaXRlbXMgY2hhbmdlcy5cbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5SZXBvc2l0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IGRyb3Bkb3duIHdoZW5ldmVyIHRoZSBtZW51IGl0ZW1zIGNoYW5nZS5cbiAgICB0aGlzLm1lbnVJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBRdWVyeUxpc3Q8U2t5RHJvcGRvd25JdGVtQ29tcG9uZW50PikgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubWVudUNoYW5nZXMuZW1pdCh7XG4gICAgICAgICAgaXRlbXM6IGl0ZW1zLnRvQXJyYXkoKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0ZpcnN0SXRlbSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGFzRm9jdXNhYmxlSXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lbnVJbmRleCA9IDA7XG5cbiAgICBjb25zdCBmaXJzdEl0ZW0gPSB0aGlzLmdldEl0ZW1CeUluZGV4KHRoaXMubWVudUluZGV4KTtcbiAgICBpZiAoZmlyc3RJdGVtICYmIGZpcnN0SXRlbS5pc0ZvY3VzYWJsZSgpKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShmaXJzdEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzTmV4dEl0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNMYXN0SXRlbSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGFzRm9jdXNhYmxlSXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lbnVJbmRleCA9IHRoaXMubWVudUl0ZW1zLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBsYXN0SXRlbSA9IHRoaXMuZ2V0SXRlbUJ5SW5kZXgodGhpcy5tZW51SW5kZXgpO1xuICAgIGlmIChsYXN0SXRlbSAmJiBsYXN0SXRlbS5pc0ZvY3VzYWJsZSgpKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShsYXN0SXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNQcmV2aW91c0l0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNQcmV2aW91c0l0ZW0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc0ZvY3VzYWJsZUl0ZW1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tZW51SW5kZXgtLTtcblxuICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IHRoaXMuZ2V0SXRlbUJ5SW5kZXgodGhpcy5tZW51SW5kZXgpO1xuICAgIGlmIChwcmV2aW91c0l0ZW0gJiYgcHJldmlvdXNJdGVtLmlzRm9jdXNhYmxlKCkpIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtKHByZXZpb3VzSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNQcmV2aW91c0l0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNOZXh0SXRlbSgpIHtcbiAgICBpZiAoIXRoaXMuaGFzRm9jdXNhYmxlSXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lbnVJbmRleCsrO1xuXG4gICAgY29uc3QgbmV4dEl0ZW0gPSB0aGlzLmdldEl0ZW1CeUluZGV4KHRoaXMubWVudUluZGV4KTtcbiAgICBpZiAobmV4dEl0ZW0gJiYgbmV4dEl0ZW0uaXNGb2N1c2FibGUoKSkge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0obmV4dEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzTmV4dEl0ZW0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVudUluZGV4ID0gLTE7XG4gICAgdGhpcy5yZXNldEl0ZW1zQWN0aXZlU3RhdGUoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEl0ZW1zQWN0aXZlU3RhdGUoKSB7XG4gICAgdGhpcy5tZW51SXRlbXMuZm9yRWFjaCgoaXRlbTogU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50KSA9PiB7XG4gICAgICBpdGVtLnJlc2V0U3RhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNJdGVtKGl0ZW06IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRJdGVtc0FjdGl2ZVN0YXRlKCk7XG4gICAgaXRlbS5mb2N1c0VsZW1lbnQodGhpcy51c2VOYXRpdmVGb2N1cyk7XG4gICAgdGhpcy5tZW51Q2hhbmdlcy5lbWl0KHtcbiAgICAgIGFjdGl2ZUluZGV4OiB0aGlzLm1lbnVJbmRleCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbUJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMubWVudUl0ZW1zLmZpbmQoKGl0ZW06IGFueSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaSA9PT0gaW5kZXg7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEl0ZW1CeUV2ZW50VGFyZ2V0KHRhcmdldDogRXZlbnRUYXJnZXQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLm1lbnVJdGVtcy5maW5kKFxuICAgICAgKGl0ZW06IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KTtcblxuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICB0aGlzLm1lbnVJbmRleCA9IGk7XG4gICAgICAgICAgdGhpcy5tZW51Q2hhbmdlcy5uZXh0KHtcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiB0aGlzLm1lbnVJbmRleCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICB0aGlzLm1lbnVDaGFuZ2VzLm5leHQoe1xuICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbmRNZXNzYWdlKHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50Lm1lc3NhZ2VTdHJlYW0ubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGRyb3Bkb3duTWVudUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoZHJvcGRvd25NZW51RWxlbWVudCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtQnlFdmVudFRhcmdldChldmVudC50YXJnZXQpO1xuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGRyb3Bkb3duTWVudUVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b24pO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgICAgdGhpcy5mb2N1c05leHRJdGVtKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnQuZGlzbWlzc09uQmx1cikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzVHJpZ2dlckJ1dHRvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGRyb3Bkb3duTWVudUVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaXNNb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkcm9wZG93bk1lbnVFbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LmlzTW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICAvLyBBbGxvdyB0aGUgZHJvcGRvd24gY29tcG9uZW50IHRvIHNldCBpc01vdXNlRW50ZXIgYmVmb3JlIGNoZWNraW5nIGlmIHRoZSBjbG9zZSBhY3Rpb25cbiAgICAgICAgLy8gc2hvdWxkIGJlIHRha2VuLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LnRyaWdnZXIgPT09ICdob3ZlcicgJiZcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaXNNb3VzZUVudGVyID09PSBmYWxzZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktZHJvcGRvd24tbWVudSBza3ktc2hhZG93IHNreS1lbGV2YXRpb24tNFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLnJvbGVdPVwiYXJpYVJvbGVcIlxuICBbaWRdPVwiZHJvcGRvd25NZW51SWRcIlxuPlxuICA8bmctY29udGVudD4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -354,4 +354,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
354
354
  static: true,
355
355
  }]
356
356
  }] } });
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUdmLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQUd2RTs7R0FFRztBQU9ILE1BQU0sT0FBTyxvQkFBb0I7SUF5TC9CLFlBQ1UsY0FBaUMsRUFDakMsWUFBNkIsRUFDN0IsY0FBaUMsRUFDckIsUUFBMEI7UUFIdEMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDckIsYUFB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QkFjSyxhQUFhO3NCQUR2QixLQUFLO2dCQWtCQyxLQUFLO3NCQURYLEtBQUs7Z0JBUUssbUJBQW1CO3NCQUQ3QixLQUFLO2dCQWVDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQWNLLE9BQU87c0JBRGpCLEtBQUs7Z0JBcUJLLHVCQUF1QjtzQkFIakMsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRTt3QkFDcEMsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQTBCTyx3QkFBd0I7c0JBSi9CLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUU7d0JBQ3JDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxhQUFhO3NCQUpwQixTQUFTO3VCQUFDLGVBQWUsRUFBRTt3QkFDMUIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBwYXJzZUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB9IGZyb20gJy4vZHJvcGRvd24tZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLWhvcml6b250YWwtYWxpZ25tZW50JztcbmltcG9ydCB7IFNreURyb3Bkb3duTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25UcmlnZ2VyVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tdHJpZ2dlci10eXBlJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZHJvcGRvd24gbWVudSB0aGF0IGRpc3BsYXlzIG1lbnUgaXRlbXMgdGhhdCB1c2VycyBtYXkgc2VsZWN0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZHJvcGRvd24gYnV0dG9uLiBBdmFpbGFibGUgdmFsdWVzIGFyZSBgZGVmYXVsdGAgYW5kXG4gICAqIGBwcmltYXJ5YC4gVGhlc2UgdmFsdWVzIHNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIHRoZVxuICAgKiBbc2Vjb25kYXJ5IGFuZCBwcmltYXJ5IGJ1dHRvbiBjbGFzc2VzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvYnV0dG9uKSByZXNwZWN0aXZlbHkuXG4gICAqIEBkZWZhdWx0IFwiZGVmYXVsdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblN0eWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9idXR0b25TdHlsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25TdHlsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25TdHlsZSB8fCAnZGVmYXVsdCc7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGJ1dHRvbiB0byByZW5kZXIgYXMgdGhlIGRyb3Bkb3duJ3MgdHJpZ2dlciBlbGVtZW50LiBUbyBkaXNwbGF5IGEgYnV0dG9uXG4gICAqIHdpdGggdGV4dCBhbmQgYSBjYXJldCwgc3BlY2lmeSBgc2VsZWN0YCBhbmQgdGhlbiBlbnRlciB0aGUgYnV0dG9uIHRleHQgaW4gYVxuICAgKiBgc2t5LWRyb3Bkb3duLWJ1dHRvbmAgZWxlbWVudC4gVG8gZGlzcGxheSBhIHJvdW5kIGJ1dHRvbiB3aXRoIGFuIGVsbGlwc2lzLCBzcGVjaWZ5XG4gICAqIGBjb250ZXh0LW1lbnVgLiBBbmQgdG8gZGlzcGxheSBhIGJ1dHRvbiB3aXRoIGEgW0ZvbnQgQXdlc29tZSBpY29uXShodHRwOi8vZm9udGF3ZXNvbWUuaW8vaWNvbnMvKSwgc3BlY2lmeSB0aGUgaWNvbidzIGNsYXNzIG5hbWUuXG4gICAqIEZvciBleGFtcGxlLCB0byBkaXNwbGF5IHRoZSBgZmEtZmlsdGVyYCBpY29uLCBzcGVjaWZ5IGBmaWx0ZXJgLlxuICAgKiBAZGVmYXVsdCBcInNlbGVjdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvblR5cGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25UeXBlIHx8ICdzZWxlY3QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gY2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gdXNlcnMgY2xpY2sgYXdheSBmcm9tIHRoZSBtZW51LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc21pc3NPbkJsdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNtaXNzT25CbHVyID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc21pc3NPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2Rpc21pc3NPbkJsdXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc21pc3NPbkJsdXI7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgbGFiZWwgZm9yIHRoZSBkcm9wZG93bi4gVGhpcyBzZXRzIHRoZSBkcm9wZG93bidzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZSBkcm9wZG93biBtZW51IGluIHJlbGF0aW9uIHRvIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqIEBkZWZhdWx0IFwibGVmdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxBbGlnbm1lbnQodmFsdWU6IFNreURyb3Bkb3duSG9yaXpvbnRhbEFsaWdubWVudCkge1xuICAgIHRoaXMuX2hvcml6b250YWxBbGlnbm1lbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9yaXpvbnRhbEFsaWdubWVudCgpOiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsQWxpZ25tZW50IHx8ICdsZWZ0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhbiBvYnNlcnZhYmxlIHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIGRyb3Bkb3duLiBUaGUgY29tbWFuZHMgc2hvdWxkIHJlc3BlY3RcbiAgICogdGhlIFtbU2t5RHJvcGRvd25NZXNzYWdlXV0gdHlwZS5cbiAgICovXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRpdGxlIHRvIGRpc3BsYXkgaW4gYSB0b29sdGlwIHdoZW4gdXNlcnMgaG92ZXIgdGhlIG1vdXNlIG92ZXIgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHVzZXJzIGludGVyYWN0IHdpdGggdGhlIGRyb3Bkb3duIGJ1dHRvbiB0byBleHBvc2UgdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqIFdlIHJlY29tbWVuZCB0aGUgZGVmYXVsdCBgY2xpY2tgIHZhbHVlIGJlY2F1c2UgdGhlIGBob3ZlcmAgdmFsdWUgY2FuIHBvc2VcbiAgICogW2FjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkgaXNzdWVzXG4gICAqIGZvciB1c2VycyBvbiB0b3VjaCBkZXZpY2VzIHN1Y2ggYXMgcGhvbmVzIGFuZCB0YWJsZXRzLlxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBJZiB5b3UgY2hvb3NlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZFxuICAgKiBgaG92ZXJgIHZhbHVlIGFueXdheSwgd2UgcmVjb21tZW5kIHRoYXQgeW91IG5vdCB1c2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYHRpdGxlYFxuICAgKiBwcm9wZXJ0eS4gKFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4pXG4gICAqIEBkZWZhdWx0IFwiY2xpY2tcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0cmlnZ2VyKHZhbHVlOiBTa3lEcm9wZG93blRyaWdnZXJUeXBlKSB7XG4gICAgdGhpcy5fdHJpZ2dlciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IFNreURyb3Bkb3duVHJpZ2dlclR5cGUge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyIHx8ICdjbGljayc7XG4gIH1cblxuICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuIHx8IGZhbHNlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lckVsZW1lbnRSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIHNldCBtZW51Q29udGFpbmVyRWxlbWVudFJlZih2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fbWVudUNvbnRhaW5lckVsZW1lbnRSZWYgPSB2YWx1ZTtcbiAgICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgIHRoaXMuY3JlYXRlQWZmaXhlcigpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVDb250YWluZXJFbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLl9tZW51Q29udGFpbmVyRWxlbWVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBpc01vdXNlRW50ZXIgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgcHVibGljIG1lbnVJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBtZW51QXJpYVJvbGU6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdtZW51Q29udGFpbmVyVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIG1lbnVDb250YWluZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBfYnV0dG9uU3R5bGU6IHN0cmluZztcblxuICBwcml2YXRlIF9idXR0b25UeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfZGlzbWlzc09uQmx1cjogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ob3Jpem9udGFsQWxpZ25tZW50OiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQ7XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbWVudUNvbnRhaW5lckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogU2t5RHJvcGRvd25UcmlnZ2VyVHlwZTtcblxuICBwcml2YXRlIF9wb3NpdGlvblRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gTG9hZCBwcm9wZXIgaWNvbnMgb24gdGhlbWUgY2hhbmdlLlxuICAgIHRoaXMudGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fcG9zaXRpb25UaW1lb3V0KTtcblxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcm9wZG93biB0byBvcGVuLCB0aGVuIHNldCBmb2N1cyBvbiBmaXJzdCBpdGVtLlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzRmlyc3RJdGVtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzVHJpZ2dlckJ1dHRvbik7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMuZGlzbWlzc09uQmx1cikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzTGFzdEl0ZW0pO1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgICAgY2FzZSAnZG93bic6XG4gICAgICAgICAgY2FzZSAnICc6IC8vIFNwYWNlYmFyLlxuICAgICAgICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzRmlyc3RJdGVtKTtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNNb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdtb3VzZWxlYXZlJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNNb3VzZUVudGVyID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAvLyBBbGxvdyB0aGUgZHJvcGRvd24gbWVudSB0byBzZXQgaXNNb3VzZUVudGVyIGJlZm9yZSBjaGVja2luZyBpZiB0aGUgY2xvc2UgYWN0aW9uXG4gICAgICAgICAgLy8gc2hvdWxkIGJlIHRha2VuLlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTW91c2VFbnRlcikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgIGVuYWJsZVNjcm9sbDogdHJ1ZSxcbiAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKHRoaXMubWVudUNvbnRhaW5lclRlbXBsYXRlUmVmKTtcblxuICAgIG92ZXJsYXkuYmFja2Ryb3BDbGljay5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzbWlzc09uQmx1cikge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5ID0gb3ZlcmxheTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuYWZmaXhlcikge1xuICAgICAgdGhpcy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYWZmaXhlciA9IHRoaXMuYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIoXG4gICAgICB0aGlzLm1lbnVDb250YWluZXJFbGVtZW50UmVmXG4gICAgKTtcblxuICAgIGFmZml4ZXIucGxhY2VtZW50Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWZmaXhlciA9IGFmZml4ZXI7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3BlbjpcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkRyb3Bkb3duTWVudSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZTpcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuUmVwb3NpdGlvbjpcbiAgICAgICAgICAvLyBPbmx5IHJlcG9zaXRpb24gdGhlIGRyb3Bkb3duIGlmIGl0IGlzIGFscmVhZHkgb3Blbi5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmFmZml4ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYWZmaXhlci5yZWFmZml4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b246XG4gICAgICAgICAgdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbmRNZXNzYWdlKHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uRHJvcGRvd25NZW51KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIC8vIEV4cGxpY2l0bHkgZGVjbGFyZSB0aGUgYHNldFRpbWVvdXRgIGZyb20gdGhlIGB3aW5kb3dgIG9iamVjdCBpbiBvcmRlciB0byB1c2UgdGhlIERPTSB0eXBpbmdzXG4gICAgLy8gZHVyaW5nIGEgdW5pdCB0ZXN0IChpbnN0ZWFkIG9mIGNvbmZ1c2luZyB0aGlzIHdpdGggTm9kZSdzIGBzZXRUaW1lb3V0YCkuXG4gICAgdGhpcy5fcG9zaXRpb25UaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IHBhcnNlQWZmaXhIb3Jpem9udGFsQWxpZ25tZW50KFxuICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudFxuICAgICAgICApLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZHJvcGRvd25cIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwic2t5LWJ0biBza3ktZHJvcGRvd24tYnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpc09wZW4gPyBtZW51SWQgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIm1lbnVBcmlhUm9sZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgIGxhYmVsIHx8ICgnc2t5dXhfZHJvcGRvd25fY29udGV4dF9tZW51X2RlZmF1bHRfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgIFwiXG4gICAgW2F0dHIudGl0bGVdPVwidGl0bGVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgJ3NreS1kcm9wZG93bi1idXR0b24tdHlwZS0nICsgYnV0dG9uVHlwZSxcbiAgICAgICdza3ktYnRuLScgKyBidXR0b25TdHlsZVxuICAgIF1cIlxuICAgICN0cmlnZ2VyQnV0dG9uXG4gID5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJidXR0b25UeXBlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiY29udGV4dC1tZW51XCI+XG4gICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJlbGxpcHNpcy1oXCI+PC9za3ktaWNvbj5cbiAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgaWNvbj1cImVsbGlwc2lzXCJcbiAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJidXR0b25UeXBlID09PSAnc2VsZWN0JyB8fCBidXR0b25UeXBlID09PSAndGFiJyB8fCAhYnV0dG9uVHlwZVwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tYnV0dG9uLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWRyb3Bkb3duLWJ1dHRvbi1jb250ZW50LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWRyb3Bkb3duLWJ1dHRvblwiPiA8L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1kcm9wZG93bi1idXR0b24taWNvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWNhcmV0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNhcmV0LWRvd25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tY2FyZXRcIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYnV0dG9uVHlwZSAhPT0gJ3NlbGVjdCcgJiYgYnV0dG9uVHlwZSAhPT0gJ3RhYicgJiYgYnV0dG9uVHlwZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gW2ljb25dPVwiYnV0dG9uVHlwZVwiIHNpemU9XCJsZ1wiPjwvc2t5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZW51Q29udGFpbmVyVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kcm9wZG93bi1tZW51LWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLmhpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgICAjbWVudUNvbnRhaW5lckVsZW1lbnRSZWZcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kcm9wZG93bi1tZW51XCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUdmLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQUd2RTs7R0FFRztBQU9ILE1BQU0sT0FBTyxvQkFBb0I7SUF5TC9CLFlBQ1UsY0FBaUMsRUFDakMsWUFBNkIsRUFDN0IsY0FBaUMsRUFDckIsUUFBMEI7UUFIdEMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDckIsYUFB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QkFjSyxhQUFhO3NCQUR2QixLQUFLO2dCQWtCQyxLQUFLO3NCQURYLEtBQUs7Z0JBUUssbUJBQW1CO3NCQUQ3QixLQUFLO2dCQWVDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQWNLLE9BQU87c0JBRGpCLEtBQUs7Z0JBcUJLLHVCQUF1QjtzQkFIakMsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRTt3QkFDcEMsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQTBCTyx3QkFBd0I7c0JBSi9CLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUU7d0JBQ3JDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxhQUFhO3NCQUpwQixTQUFTO3VCQUFDLGVBQWUsRUFBRTt3QkFDMUIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBwYXJzZUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB9IGZyb20gJy4vZHJvcGRvd24tZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLWhvcml6b250YWwtYWxpZ25tZW50JztcbmltcG9ydCB7IFNreURyb3Bkb3duTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25UcmlnZ2VyVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tdHJpZ2dlci10eXBlJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZHJvcGRvd24gbWVudSB0aGF0IGRpc3BsYXlzIG1lbnUgaXRlbXMgdGhhdCB1c2VycyBtYXkgc2VsZWN0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZHJvcGRvd24gYnV0dG9uLiBBdmFpbGFibGUgdmFsdWVzIGFyZSBgZGVmYXVsdGAgYW5kXG4gICAqIGBwcmltYXJ5YC4gVGhlc2UgdmFsdWVzIHNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIHRoZVxuICAgKiBbc2Vjb25kYXJ5IGFuZCBwcmltYXJ5IGJ1dHRvbiBjbGFzc2VzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvYnV0dG9uKSByZXNwZWN0aXZlbHkuXG4gICAqIEBkZWZhdWx0IFwiZGVmYXVsdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblN0eWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9idXR0b25TdHlsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25TdHlsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25TdHlsZSB8fCAnZGVmYXVsdCc7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGJ1dHRvbiB0byByZW5kZXIgYXMgdGhlIGRyb3Bkb3duJ3MgdHJpZ2dlciBlbGVtZW50LiBUbyBkaXNwbGF5IGEgYnV0dG9uXG4gICAqIHdpdGggdGV4dCBhbmQgYSBjYXJldCwgc3BlY2lmeSBgc2VsZWN0YCBhbmQgdGhlbiBlbnRlciB0aGUgYnV0dG9uIHRleHQgaW4gYVxuICAgKiBgc2t5LWRyb3Bkb3duLWJ1dHRvbmAgZWxlbWVudC4gVG8gZGlzcGxheSBhIHJvdW5kIGJ1dHRvbiB3aXRoIGFuIGVsbGlwc2lzLCBzcGVjaWZ5XG4gICAqIGBjb250ZXh0LW1lbnVgLiBBbmQgdG8gZGlzcGxheSBhIGJ1dHRvbiB3aXRoIGEgW0ZvbnQgQXdlc29tZSBpY29uXShodHRwOi8vZm9udGF3ZXNvbWUuaW8vaWNvbnMvKSwgc3BlY2lmeSB0aGUgaWNvbidzIGNsYXNzIG5hbWUuXG4gICAqIEZvciBleGFtcGxlLCB0byBkaXNwbGF5IHRoZSBgZmEtZmlsdGVyYCBpY29uLCBzcGVjaWZ5IGBmaWx0ZXJgLlxuICAgKiBAZGVmYXVsdCBcInNlbGVjdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvblR5cGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25UeXBlIHx8ICdzZWxlY3QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gY2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gdXNlcnMgY2xpY2sgYXdheSBmcm9tIHRoZSBtZW51LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc21pc3NPbkJsdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNtaXNzT25CbHVyID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc21pc3NPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2Rpc21pc3NPbkJsdXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc21pc3NPbkJsdXI7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgbGFiZWwgZm9yIHRoZSBkcm9wZG93bi4gVGhpcyBzZXRzIHRoZSBkcm9wZG93bidzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIHRoZSBkcm9wZG93biBtZW51IGluIHJlbGF0aW9uIHRvIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqIEBkZWZhdWx0IFwibGVmdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxBbGlnbm1lbnQodmFsdWU6IFNreURyb3Bkb3duSG9yaXpvbnRhbEFsaWdubWVudCkge1xuICAgIHRoaXMuX2hvcml6b250YWxBbGlnbm1lbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9yaXpvbnRhbEFsaWdubWVudCgpOiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsQWxpZ25tZW50IHx8ICdsZWZ0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhbiBvYnNlcnZhYmxlIHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIGRyb3Bkb3duLiBUaGUgY29tbWFuZHMgc2hvdWxkIHJlc3BlY3RcbiAgICogdGhlIFtbU2t5RHJvcGRvd25NZXNzYWdlXV0gdHlwZS5cbiAgICovXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRpdGxlIHRvIGRpc3BsYXkgaW4gYSB0b29sdGlwIHdoZW4gdXNlcnMgaG92ZXIgdGhlIG1vdXNlIG92ZXIgdGhlIGRyb3Bkb3duIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHVzZXJzIGludGVyYWN0IHdpdGggdGhlIGRyb3Bkb3duIGJ1dHRvbiB0byBleHBvc2UgdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqIFdlIHJlY29tbWVuZCB0aGUgZGVmYXVsdCBgY2xpY2tgIHZhbHVlIGJlY2F1c2UgdGhlIGBob3ZlcmAgdmFsdWUgY2FuIHBvc2VcbiAgICogW2FjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkgaXNzdWVzXG4gICAqIGZvciB1c2VycyBvbiB0b3VjaCBkZXZpY2VzIHN1Y2ggYXMgcGhvbmVzIGFuZCB0YWJsZXRzLlxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBJZiB5b3UgY2hvb3NlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZFxuICAgKiBgaG92ZXJgIHZhbHVlIGFueXdheSwgd2UgcmVjb21tZW5kIHRoYXQgeW91IG5vdCB1c2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYHRpdGxlYFxuICAgKiBwcm9wZXJ0eS4gKFRoaXMgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4pXG4gICAqIEBkZWZhdWx0IFwiY2xpY2tcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0cmlnZ2VyKHZhbHVlOiBTa3lEcm9wZG93blRyaWdnZXJUeXBlKSB7XG4gICAgdGhpcy5fdHJpZ2dlciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmlnZ2VyKCk6IFNreURyb3Bkb3duVHJpZ2dlclR5cGUge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyIHx8ICdjbGljayc7XG4gIH1cblxuICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuIHx8IGZhbHNlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lckVsZW1lbnRSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIHNldCBtZW51Q29udGFpbmVyRWxlbWVudFJlZih2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fbWVudUNvbnRhaW5lckVsZW1lbnRSZWYgPSB2YWx1ZTtcbiAgICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgIHRoaXMuY3JlYXRlQWZmaXhlcigpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVDb250YWluZXJFbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLl9tZW51Q29udGFpbmVyRWxlbWVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBpc01vdXNlRW50ZXIgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgcHVibGljIG1lbnVJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBtZW51QXJpYVJvbGU6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdtZW51Q29udGFpbmVyVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIG1lbnVDb250YWluZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBfYnV0dG9uU3R5bGU6IHN0cmluZztcblxuICBwcml2YXRlIF9idXR0b25UeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfZGlzbWlzc09uQmx1cjogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ob3Jpem9udGFsQWxpZ25tZW50OiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQ7XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbWVudUNvbnRhaW5lckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogU2t5RHJvcGRvd25UcmlnZ2VyVHlwZTtcblxuICBwcml2YXRlIF9wb3NpdGlvblRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gTG9hZCBwcm9wZXIgaWNvbnMgb24gdGhlbWUgY2hhbmdlLlxuICAgIHRoaXMudGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fcG9zaXRpb25UaW1lb3V0KTtcblxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcm9wZG93biB0byBvcGVuLCB0aGVuIHNldCBmb2N1cyBvbiBmaXJzdCBpdGVtLlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzRmlyc3RJdGVtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzVHJpZ2dlckJ1dHRvbik7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMuZGlzbWlzc09uQmx1cikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzTGFzdEl0ZW0pO1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgICAgY2FzZSAnZG93bic6XG4gICAgICAgICAgY2FzZSAnICc6IC8vIFNwYWNlYmFyLlxuICAgICAgICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzRmlyc3RJdGVtKTtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNNb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5PcGVuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGJ1dHRvbkVsZW1lbnQsICdtb3VzZWxlYXZlJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNNb3VzZUVudGVyID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAvLyBBbGxvdyB0aGUgZHJvcGRvd24gbWVudSB0byBzZXQgaXNNb3VzZUVudGVyIGJlZm9yZSBjaGVja2luZyBpZiB0aGUgY2xvc2UgYWN0aW9uXG4gICAgICAgICAgLy8gc2hvdWxkIGJlIHRha2VuLlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTW91c2VFbnRlcikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgIGVuYWJsZVNjcm9sbDogdHJ1ZSxcbiAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKHRoaXMubWVudUNvbnRhaW5lclRlbXBsYXRlUmVmKTtcblxuICAgIG92ZXJsYXkuYmFja2Ryb3BDbGljay5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzbWlzc09uQmx1cikge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5ID0gb3ZlcmxheTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuYWZmaXhlcikge1xuICAgICAgdGhpcy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYWZmaXhlciA9IHRoaXMuYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIoXG4gICAgICB0aGlzLm1lbnVDb250YWluZXJFbGVtZW50UmVmXG4gICAgKTtcblxuICAgIGFmZml4ZXIucGxhY2VtZW50Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWZmaXhlciA9IGFmZml4ZXI7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZTogU2t5RHJvcGRvd25NZXNzYWdlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3BlbjpcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3NpdGlvbkRyb3Bkb3duTWVudSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZTpcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuUmVwb3NpdGlvbjpcbiAgICAgICAgICAvLyBPbmx5IHJlcG9zaXRpb24gdGhlIGRyb3Bkb3duIGlmIGl0IGlzIGFscmVhZHkgb3Blbi5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmFmZml4ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYWZmaXhlci5yZWFmZml4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b246XG4gICAgICAgICAgdGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbmRNZXNzYWdlKHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uRHJvcGRvd25NZW51KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIC8vIEV4cGxpY2l0bHkgZGVjbGFyZSB0aGUgYHNldFRpbWVvdXRgIGZyb20gdGhlIGB3aW5kb3dgIG9iamVjdCBpbiBvcmRlciB0byB1c2UgdGhlIERPTSB0eXBpbmdzXG4gICAgLy8gZHVyaW5nIGEgdW5pdCB0ZXN0IChpbnN0ZWFkIG9mIGNvbmZ1c2luZyB0aGlzIHdpdGggTm9kZSdzIGBzZXRUaW1lb3V0YCkuXG4gICAgdGhpcy5fcG9zaXRpb25UaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IHBhcnNlQWZmaXhIb3Jpem9udGFsQWxpZ25tZW50KFxuICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudFxuICAgICAgICApLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZHJvcGRvd25cIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwic2t5LWJ0biBza3ktZHJvcGRvd24tYnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpc09wZW4gPyBtZW51SWQgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIm1lbnVBcmlhUm9sZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgIGxhYmVsIHx8ICgnc2t5dXhfZHJvcGRvd25fY29udGV4dF9tZW51X2RlZmF1bHRfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgIFwiXG4gICAgW2F0dHIudGl0bGVdPVwidGl0bGVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgJ3NreS1kcm9wZG93bi1idXR0b24tdHlwZS0nICsgYnV0dG9uVHlwZSxcbiAgICAgICdza3ktYnRuLScgKyBidXR0b25TdHlsZVxuICAgIF1cIlxuICAgICN0cmlnZ2VyQnV0dG9uXG4gID5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJidXR0b25UeXBlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiY29udGV4dC1tZW51XCI+XG4gICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJlbGxpcHNpcy1oXCI+PC9za3ktaWNvbj5cbiAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgaWNvbj1cImVsbGlwc2lzXCJcbiAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJidXR0b25UeXBlID09PSAnc2VsZWN0JyB8fCBidXR0b25UeXBlID09PSAndGFiJyB8fCAhYnV0dG9uVHlwZVwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tYnV0dG9uLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWRyb3Bkb3duLWJ1dHRvbi1jb250ZW50LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWRyb3Bkb3duLWJ1dHRvblwiPiA8L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1kcm9wZG93bi1idXR0b24taWNvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWNhcmV0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNhcmV0LWRvd25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZHJvcGRvd24tY2FyZXRcIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYnV0dG9uVHlwZSAhPT0gJ3NlbGVjdCcgJiYgYnV0dG9uVHlwZSAhPT0gJ3RhYicgJiYgYnV0dG9uVHlwZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gW2ljb25dPVwiYnV0dG9uVHlwZVwiIHNpemU9XCJsZ1wiPjwvc2t5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZW51Q29udGFpbmVyVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kcm9wZG93bi1tZW51LWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLmhpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgICAjbWVudUNvbnRhaW5lckVsZW1lbnRSZWZcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kcm9wZG93bi1tZW51XCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=