@skyux/lists 8.0.3 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6721,7 +6721,7 @@
6721
6721
  {
6722
6722
  "fileName": "filter-demo.component.html",
6723
6723
  "filePath": "/projects/lists/documentation/code-examples/filter/inline/filter-demo.component.html",
6724
- "rawContents": "<sky-toolbar>\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-filter-button\n [active]=\"filtersActive\"\n [ariaControls]=\"inlineFilters.id\"\n [ariaExpanded]=\"showInlineFilters\"\n [showButtonText]=\"true\"\n (filterButtonClick)=\"filterButtonClicked()\"\n >\n </sky-filter-button>\n </sky-toolbar-item>\n </sky-toolbar-section>\n</sky-toolbar>\n\n<div skyId [hidden]=\"!showInlineFilters\" #inlineFilters>\n <sky-filter-inline>\n <sky-filter-inline-item>\n <label\n class=\"sky-control-label sky-margin-inline-lg\"\n [for]=\"fruitInput.id\"\n >\n Fruit type\n </label>\n <select\n skyId\n [ngModel]=\"fruitType\"\n (ngModelChange)=\"fruitTypeChange($event)\"\n #fruitInput\n >\n <option value=\"any\">Any fruit</option>\n <option value=\"citrus\">Citrus</option>\n <option value=\"berry\">Berry</option>\n </select>\n </sky-filter-inline-item>\n <sky-filter-inline-item>\n <sky-checkbox\n [ngModel]=\"hideOrange\"\n (ngModelChange)=\"hideOrangeChange($event)\"\n >\n <sky-checkbox-label> Hide orange fruits </sky-checkbox-label>\n </sky-checkbox>\n </sky-filter-inline-item>\n </sky-filter-inline>\n</div>\n\n<sky-repeater expandMode=\"none\">\n <sky-repeater-item *ngFor=\"let item of filteredItems\">\n <sky-repeater-item-title>\n {{ item.name }}\n </sky-repeater-item-title>\n </sky-repeater-item>\n</sky-repeater>\n"
6724
+ "rawContents": "<sky-toolbar>\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-filter-button\n [active]=\"filtersActive\"\n [ariaControls]=\"inlineFilters.id\"\n [ariaExpanded]=\"showInlineFilters\"\n [showButtonText]=\"true\"\n (filterButtonClick)=\"filterButtonClicked()\"\n >\n </sky-filter-button>\n </sky-toolbar-item>\n </sky-toolbar-section>\n</sky-toolbar>\n\n<div skyId [hidden]=\"!showInlineFilters\" #inlineFilters>\n <sky-filter-inline>\n <sky-filter-inline-item>\n <sky-input-box>\n <label class=\"sky-control-label\" [for]=\"fruitInput.id\">\n Fruit type\n </label>\n <select\n skyId\n class=\"sky-form-control\"\n [ngModel]=\"fruitType\"\n (ngModelChange)=\"fruitTypeChange($event)\"\n #fruitInput\n >\n <option value=\"any\">Any fruit</option>\n <option value=\"citrus\">Citrus</option>\n <option value=\"berry\">Berry</option>\n </select>\n </sky-input-box>\n </sky-filter-inline-item>\n <sky-filter-inline-item>\n <sky-checkbox\n [ngModel]=\"hideOrange\"\n (ngModelChange)=\"hideOrangeChange($event)\"\n >\n <sky-checkbox-label> Hide orange fruits </sky-checkbox-label>\n </sky-checkbox>\n </sky-filter-inline-item>\n </sky-filter-inline>\n</div>\n\n<sky-repeater expandMode=\"none\">\n <sky-repeater-item *ngFor=\"let item of filteredItems\">\n <sky-repeater-item-title>\n {{ item.name }}\n </sky-repeater-item-title>\n </sky-repeater-item>\n</sky-repeater>\n"
6725
6725
  },
6726
6726
  {
6727
6727
  "fileName": "filter-demo.component.ts",
@@ -6731,7 +6731,7 @@
6731
6731
  {
6732
6732
  "fileName": "filter-demo.module.ts",
6733
6733
  "filePath": "/projects/lists/documentation/code-examples/filter/inline/filter-demo.module.ts",
6734
- "rawContents": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyFilterModule, SkyRepeaterModule } from '@skyux/lists';\n\nimport { FilterDemoComponent } from './filter-demo.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SkyCheckboxModule,\n SkyIdModule,\n SkyFilterModule,\n SkyRepeaterModule,\n SkyToolbarModule,\n ],\n declarations: [FilterDemoComponent],\n exports: [FilterDemoComponent],\n})\nexport class FilterDemoModule {}\n"
6734
+ "rawContents": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyCheckboxModule, SkyInputBoxModule } from '@skyux/forms';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyFilterModule, SkyRepeaterModule } from '@skyux/lists';\n\nimport { FilterDemoComponent } from './filter-demo.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SkyCheckboxModule,\n SkyIdModule,\n SkyInputBoxModule,\n SkyFilterModule,\n SkyRepeaterModule,\n SkyToolbarModule,\n ],\n declarations: [FilterDemoComponent],\n exports: [FilterDemoComponent],\n})\nexport class FilterDemoModule {}\n"
6735
6735
  },
6736
6736
  {
6737
6737
  "fileName": "filter.ts",
@@ -6751,7 +6751,7 @@
6751
6751
  {
6752
6752
  "fileName": "filter-demo-modal.component.html",
6753
6753
  "filePath": "/projects/lists/documentation/code-examples/filter/modal/filter-demo-modal.component.html",
6754
- "rawContents": "<sky-modal>\n <sky-modal-header> Filter food preferences </sky-modal-header>\n <sky-modal-content>\n <label class=\"sky-control-label\" [for]=\"fruitInput.id\"> Fruit type </label>\n <select class=\"sky-form-control\" skyId [(ngModel)]=\"fruitType\" #fruitInput>\n <option value=\"any\">Any fruit</option>\n <option value=\"citrus\">Citrus</option>\n <option value=\"berry\">Berry</option>\n </select>\n <div style=\"margin-top: 15px\">\n <sky-checkbox [(ngModel)]=\"hideOrange\">\n <sky-checkbox-label> Hide orange fruits </sky-checkbox-label>\n </sky-checkbox>\n </div>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"applyFilters()\"\n >\n Apply\n </button>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n (click)=\"clearAllFilters()\"\n >\n Clear\n </button>\n <button class=\"sky-btn sky-btn-link\" type=\"button\" (click)=\"cancel()\">\n Cancel\n </button>\n </sky-modal-footer>\n</sky-modal>\n"
6754
+ "rawContents": "<sky-modal>\n <sky-modal-header> Filter food preferences </sky-modal-header>\n <sky-modal-content>\n <sky-input-box>\n <label class=\"sky-control-label\" [for]=\"fruitInput.id\">\n Fruit type\n </label>\n <select\n class=\"sky-form-control\"\n skyId\n [(ngModel)]=\"fruitType\"\n #fruitInput\n >\n <option value=\"any\">Any fruit</option>\n <option value=\"citrus\">Citrus</option>\n <option value=\"berry\">Berry</option>\n </select>\n </sky-input-box>\n <div style=\"margin-top: 15px\">\n <sky-checkbox [(ngModel)]=\"hideOrange\">\n <sky-checkbox-label> Hide orange fruits </sky-checkbox-label>\n </sky-checkbox>\n </div>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary\"\n type=\"button\"\n (click)=\"applyFilters()\"\n >\n Apply\n </button>\n <button\n class=\"sky-btn sky-btn-link\"\n type=\"button\"\n (click)=\"clearAllFilters()\"\n >\n Clear\n </button>\n <button class=\"sky-btn sky-btn-link\" type=\"button\" (click)=\"cancel()\">\n Cancel\n </button>\n </sky-modal-footer>\n</sky-modal>\n"
6755
6755
  },
6756
6756
  {
6757
6757
  "fileName": "filter-demo-modal.component.ts",
@@ -6771,7 +6771,7 @@
6771
6771
  {
6772
6772
  "fileName": "filter-demo.module.ts",
6773
6773
  "filePath": "/projects/lists/documentation/code-examples/filter/modal/filter-demo.module.ts",
6774
- "rawContents": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyFilterModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalModule } from '@skyux/modals';\n\nimport { FilterDemoModalComponent } from './filter-demo-modal.component';\nimport { FilterDemoComponent } from './filter-demo.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SkyIdModule,\n SkyCheckboxModule,\n SkyFilterModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkyToolbarModule,\n ],\n declarations: [FilterDemoComponent, FilterDemoModalComponent],\n exports: [FilterDemoComponent],\n})\nexport class FilterDemoModule {}\n"
6774
+ "rawContents": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyCheckboxModule, SkyInputBoxModule } from '@skyux/forms';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyFilterModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalModule } from '@skyux/modals';\n\nimport { FilterDemoModalComponent } from './filter-demo-modal.component';\nimport { FilterDemoComponent } from './filter-demo.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SkyCheckboxModule,\n SkyIdModule,\n SkyInputBoxModule,\n SkyFilterModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkyToolbarModule,\n ],\n declarations: [FilterDemoComponent, FilterDemoModalComponent],\n exports: [FilterDemoComponent],\n})\nexport class FilterDemoModule {}\n"
6775
6775
  },
6776
6776
  {
6777
6777
  "fileName": "filter.ts",
@@ -153,7 +153,7 @@ export class SkyRepeaterComponent {
153
153
  __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").activateItemByIndex(this.activeIndex);
154
154
  }
155
155
  }
156
- if (changes.reorderable) {
156
+ if (changes['reorderable']) {
157
157
  if (this.items) {
158
158
  __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateReorderability).call(this);
159
159
  }
@@ -354,4 +354,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
354
354
  type: ContentChildren,
355
355
  args: [SkyRepeaterItemComponent]
356
356
  }] } });
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdHMvc3JjL2xpYi9tb2R1bGVzL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUV4RDs7R0FFRztBQVlILE1BQU0sT0FBTyxvQkFBb0I7SUE4Qi9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSCxJQUNXLFVBQVUsQ0FB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O1FBQ2xCLHlCQUF5QjtRQUN6Qiw0QkFBNEI7S0FDN0IsZ0RBNEVnQix3QkFBd0Isa0RDMUgzQyx1VUFXQTsyRkRzQ2Esb0JBQW9CO2tCQVhoQyxTQUFTOytCQUNFLGNBQWMsYUFHYjt3QkFDVCxrQkFBa0I7d0JBQ2xCLHlCQUF5Qjt3QkFDekIsNEJBQTRCO3FCQUM3QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTswRUFZeEMsV0FBVztzQkFEakIsS0FBSztnQkFXQyxTQUFTO3NCQURmLEtBQUs7Z0JBU0MsV0FBVztzQkFEakIsS0FBSztnQkF1QkssVUFBVTtzQkFEcEIsS0FBSztnQkFjQyxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBU0EsV0FBVztzQkFGakIsTUFBTTtnQkFLQSxLQUFLO3NCQURYLGVBQWU7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lTY3JvbGxhYmxlSG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IERyYWd1bGFTZXJ2aWNlIH0gZnJvbSAnbmcyLWRyYWd1bGEnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJBdXRvU2Nyb2xsU2VydmljZSB9IGZyb20gJy4vcmVwZWF0ZXItYXV0by1zY3JvbGwuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckF1dG9TY3JvbGxlciB9IGZyb20gJy4vcmVwZWF0ZXItYXV0by1zY3JvbGxlcic7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckV4cGFuZE1vZGVUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1leHBhbmQtbW9kZS10eXBlJztcbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbVJvbGVzVHlwZSB9IGZyb20gJy4vcmVwZWF0ZXItaXRlbS1yb2xlcy50eXBlJztcbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcmVwZWF0ZXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJSb2xlVHlwZSB9IGZyb20gJy4vcmVwZWF0ZXItcm9sZS50eXBlJztcbmltcG9ydCB7IFNreVJlcGVhdGVyU2VydmljZSB9IGZyb20gJy4vcmVwZWF0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbnRhaW5lciB0byBkaXNwbGF5IHJlcGVhdGVyIGl0ZW1zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcmVwZWF0ZXInLFxuICBzdHlsZVVybHM6IFsnLi9yZXBlYXRlci5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lSZXBlYXRlclNlcnZpY2UsXG4gICAgU2t5UmVwZWF0ZXJBZGFwdGVyU2VydmljZSxcbiAgICBTa3lSZXBlYXRlckF1dG9TY3JvbGxTZXJ2aWNlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UmVwZWF0ZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0XG57XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIHJlcGVhdGVyIGl0ZW0gdG8gdmlzdWFsbHkgaGlnaGxpZ2h0IGFzIGFjdGl2ZS5cbiAgICogRm9yIGV4YW1wbGUsIHVzZSB0aGlzIHByb3BlcnR5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlXG4gICAqIFtzcGxpdCB2aWV3IGNvbXBvbmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3NwbGl0LXZpZXcpXG4gICAqIHRvIGhpZ2hsaWdodCBhIHJlcGVhdGVyIGl0ZW0gd2hpbGUgdXNlcnMgZWRpdCBpdC4gT25seSBvbmUgaXRlbSBjYW4gYmUgYWN0aXZlIGF0IGEgdGltZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY3RpdmVJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHJlcGVhdGVyIGxpc3QuXG4gICAqIFRoaXMgc2V0cyB0aGUgcmVwZWF0ZXIgbGlzdCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZWZhdWx0IFwiTGlzdCBvZiBpdGVtc1wiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXNlcnMgY2FuIGNoYW5nZSB0aGUgb3JkZXIgb2YgaXRlbXMgaW4gdGhlIHJlcGVhdGVyIGxpc3QuXG4gICAqIEVhY2ggcmVwZWF0ZXIgaXRlbSBhbHNvIGhhcyBgcmVvcmRlcmFibGVgIHByb3BlcnR5IHRvIGluZGljYXRlIHdoZXRoZXJcbiAgICogdXNlcnMgY2FuIGNoYW5nZSBpdHMgb3JkZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVvcmRlcmFibGU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGxheW91dCB0aGF0IGRldGVybWluZXMgd2hpY2ggcmVwZWF0ZXIgaXRlbXMgYXJlIGV4cGFuZGVkIGJ5IGRlZmF1bHQgYW5kIHdoZXRoZXJcbiAgICogcmVwZWF0ZXIgaXRlbXMgYXJlIGV4cGFuZGFibGUgYW5kIGNvbGxhcHNpYmxlLiBDb2xsYXBzZWQgaXRlbXMgZGlzcGxheSB0aXRsZXMgb25seS5cbiAgICogVGhlIHZhbGlkIG9wdGlvbnMgYXJlIGBtdWx0aXBsZWAsIGBub25lYCwgYW5kIGBzaW5nbGVgLlxuICAgKiAtIGBtdWx0aXBsZWAgbG9hZHMgcmVwZWF0ZXIgaXRlbXMgaW4gYW4gZXhwYW5kZWQgc3RhdGUgdW5sZXNzIGBpc0V4cGFuZGVkYCBpcyBzZXQgdG9cbiAgICogYGZhbHNlYCBmb3IgYSByZXBlYXRlciBpdGVtLiBUaGlzIGxheW91dCBhbGxvd3MgdXNlcnMgdG8gZXhwYW5kIGFuZCBjb2xsYXBzZVxuICAgKiBhcyBtYW55IHJlcGVhdGVyIGl0ZW1zIGFzIG5lY2Vzc2FyeS4gSXQgaXMgYmVzdC1zdWl0ZWQgdG8gcmVwZWF0ZXIgaXRlbXMgd2hlcmUgYm9keVxuICAgKiBjb250ZW50IGlzIGltcG9ydGFudCBidXQgdXNlcnMgZG9uJ3QgYWx3YXlzIG5lZWQgdG8gc2VlIGl0LlxuICAgKiAtIGBub25lYCBsb2FkcyBhbGwgcmVwZWF0ZXIgaXRlbXMgaW4gYW4gZXhwYW5kZWQgc3RhdGUgYW5kIGRvZXMgbm90IGFsbG93IHVzZXJzIHRvXG4gICAqIGNvbGxhcHNlIHRoZW0uIFRoaXMgZGVmYXVsdCBsYXlvdXQgcHJvdmlkZXMgdGhlIHF1aWNrZXN0IGFjY2VzcyB0byB0aGUgZGV0YWlscyBpbiB0aGVcbiAgICogcmVwZWF0ZXIgaXRlbXMuIEl0IGlzIGJlc3Qtc3VpdGVkIHRvIHJlcGVhdGVyIGl0ZW1zIHdpdGggY29uY2lzZSBjb250ZW50XG4gICAqIHRoYXQgdXNlcnMgbmVlZCB0byB2aWV3IGZyZXF1ZW50bHkuXG4gICAqIC0gYHNpbmdsZWAgbG9hZHMgb25lIHJlcGVhdGVyIGl0ZW0gaW4gYW4gZXhwYW5kZWQgc3RhdGUgYW5kIGNvbGxhcHNlcyBhbGwgb3RoZXJzLlxuICAgKiBUaGUgZXhwYW5kZWQgcmVwZWF0ZXIgaXRlbSBpcyB0aGUgZmlyc3Qgb25lIHdoZXJlIGBpc0V4cGFuZGVkYCBpcyBzZXQgdG8gYHRydWVgLiBUaGlzIGxheW91dFxuICAgKiBhbGxvd3MgdXNlcnMgdG8gZXhwYW5kIG9uZSBpdGVtIGF0IGEgdGltZS4gSXQgcHJvdmlkZXMgdGhlIG1vc3QgY29tcGFjdCB2aWV3IGFuZCBpc1xuICAgKiBiZXN0LXN1aXRlZCB0byByZXBlYXRlciBpdGVtcyB3aGVyZSB0aGUgbW9zdCBpbXBvcnRhbnQgaW5mb3JtYXRpb24gaXMgaW4gdGhlIHRpdGxlc1xuICAgKiBhbmQgdXNlcnMgb25seSBvY2Nhc2lvbmFsbHkgbmVlZCB0byB2aWV3IHRoZSBib2R5IGNvbnRlbnQuXG4gICAqIEBkZWZhdWx0IFwibm9uZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGV4cGFuZE1vZGUodmFsdWU6IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuZXhwYW5kTW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvckV4cGFuZE1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXhwYW5kTW9kZSgpOiBTa3lSZXBlYXRlckV4cGFuZE1vZGVUeXBlIHtcbiAgICByZXR1cm4gdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmV4cGFuZE1vZGU7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWN0aXZlIHJlcGVhdGVyIGl0ZW0gY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWN0aXZlSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjaGFuZ2UgdGhlIG9yZGVyIG9mIHJlcGVhdGVyIGl0ZW1zLlxuICAgKiBUaGlzIGV2ZW50IGVtaXRzIGFuIG9yZGVyZWQgYXJyYXkgb2YgdGhlIGB0YWdgIHByb3BlcnRpZXMgdGhhdCB0aGUgY29uc3VtZXIgcHJvdmlkZXMgZm9yIGVhY2ggcmVwZWF0ZXIgaXRlbS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgb3JkZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KVxuICBwdWJsaWMgaXRlbXM6IFF1ZXJ5TGlzdDxTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBkcmFndWxhR3JvdXBOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHJvbGU6IFNreVJlcGVhdGVyUm9sZVR5cGUgfCB1bmRlZmluZWQ7XG5cbiAgI2F1dG9TY3JvbGxlcjogU2t5UmVwZWF0ZXJBdXRvU2Nyb2xsZXIgfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI2l0ZW1OYW1lV2FybmVkID0gZmFsc2U7XG5cbiAgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVJlcGVhdGVyQWRhcHRlclNlcnZpY2UpO1xuICAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAjZHJhZ3VsYVNlcnZpY2UgPSBpbmplY3QoRHJhZ3VsYVNlcnZpY2UpO1xuICAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICNyZXBlYXRlclNlcnZpY2UgPSBpbmplY3QoU2t5UmVwZWF0ZXJTZXJ2aWNlKTtcbiAgI2F1dG9TY3JvbGxTdmMgPSBpbmplY3QoU2t5UmVwZWF0ZXJBdXRvU2Nyb2xsU2VydmljZSk7XG4gICNzY3JvbGxhYmxlSG9zdFN2YyA9IGluamVjdChTa3lTY3JvbGxhYmxlSG9zdFNlcnZpY2UpO1xuICAjbG9nU3ZjID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSA9IGBza3ktcmVwZWF0ZXItZHJhZ3VsYS0ke1xuICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLnJlcGVhdGVyR3JvdXBJZFxuICAgIH1gO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLml0ZW1Db2xsYXBzZVN0YXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kTW9kZSA9PT0gJ3NpbmdsZScgJiYgaXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaCgob3RoZXJJdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG90aGVySXRlbSAhPT0gaXRlbSAmJlxuICAgICAgICAgICAgICBvdGhlckl0ZW0uaXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgICBvdGhlckl0ZW0uaXNDb2xsYXBzaWJsZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG90aGVySXRlbS5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2ZUl0ZW1JbmRleENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSB0aGlzLmFjdGl2ZUluZGV4KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLm9yZGVyQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jZW1pdFRhZ3MoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSgpO1xuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0UmVwZWF0ZXJIb3N0KHRoaXMuI2VsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy4jaW5pdGlhbGl6ZURyYWdBbmREcm9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8vIElmIGFjdGl2ZUluZGV4IGhhcyBiZWVuIHNldCBvbiBpbml0LCBjYWxsIHNlcnZpY2UgdG8gYWN0aXZhdGUgdGhlIGFwcHJvcHJpYXRlIGl0ZW0uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCB8fCB0aGlzLmFjdGl2ZUluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5hY3RpdmF0ZUl0ZW1CeUluZGV4KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiN2YWxpZGF0ZVRhZ3MoKTtcbiAgICB9KTtcblxuICAgIC8vIEhBQ0s6IE5vdCB1cGRhdGluZyBmb3IgZXhwYW5kIG1vZGUgaW4gYSB0aW1lb3V0IGNhdXNlcyBhbiBlcnJvci5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy82MDA1XG4gICAgdGhpcy5pdGVtcz8uY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSh0aGlzLml0ZW1zLmxhc3QpO1xuXG4gICAgICAgICAgdGhpcy4jdXBkYXRlUmVvcmRlcmFiaWxpdHkoKTtcblxuICAgICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtcyA9IHRoaXMuaXRlbXMudG9BcnJheSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5hY3RpdmF0ZUl0ZW1CeUluZGV4KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuXG4gICAgICAgIHRoaXMuI3ZhbGlkYXRlVGFncygpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI3VwZGF0ZUZvckV4cGFuZE1vZGUoKTtcblxuICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLnJlb3JkZXJhYmxlID0gdGhpcy5yZW9yZGVyYWJsZTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jaXRlbU5hbWVXYXJuZWQgJiYgdGhpcy5pdGVtcz8uc29tZSgoaXRlbSkgPT4gIWl0ZW0uaXRlbU5hbWUpKSB7XG4gICAgICB0aGlzLiNsb2dTdmM/LmRlcHJlY2F0ZWQoJ1NreVJlcGVhdGVySXRlbUNvbXBvbmVudCB3aXRob3V0IGBpdGVtTmFtZWAnLCB7XG4gICAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA4LFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnQWx3YXlzIHNwZWNpZnkgYW4gYGl0ZW1OYW1lYCBwcm9wZXJ0eS4nLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2l0ZW1OYW1lV2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydhY3RpdmVJbmRleCddKSB7XG4gICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuZW5hYmxlQWN0aXZlU3RhdGUgPSB0cnVlO1xuICAgICAgaWYgKFxuICAgICAgICBjaGFuZ2VzWydhY3RpdmVJbmRleCddLmN1cnJlbnRWYWx1ZSAhPT1cbiAgICAgICAgY2hhbmdlc1snYWN0aXZlSW5kZXgnXS5wcmV2aW91c1ZhbHVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2YXRlSXRlbUJ5SW5kZXgodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMucmVvcmRlcmFibGUpIHtcbiAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVJlb3JkZXJhYmlsaXR5KCk7XG4gICAgICB9XG4gICAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG5cbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jZGVzdHJveURyYWdBbmREcm9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2RrT2JzZXJ2ZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuICB9XG5cbiAgI3VwZGF0ZUZvckV4cGFuZE1vZGUoaXRlbUFkZGVkPzogU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIGxldCBmb3VuZEV4cGFuZGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBpc0NvbGxhcHNpYmxlID0gdGhpcy5leHBhbmRNb2RlICE9PSAnbm9uZSc7XG4gICAgICBjb25zdCBpc1NpbmdsZSA9IHRoaXMuZXhwYW5kTW9kZSA9PT0gJ3NpbmdsZSc7XG5cbiAgICAgIC8vIEtlZXAgYW55IG5ld2x5LWFkZGVkIGV4cGFuZGVkIGl0ZW0gZXhwYW5kZWQgYW5kIGNvbGxhcHNlIHRoZSByZXN0LlxuICAgICAgaWYgKGl0ZW1BZGRlZCAmJiBpdGVtQWRkZWQuaXNFeHBhbmRlZCkge1xuICAgICAgICBmb3VuZEV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgaXRlbS5pc0NvbGxhcHNpYmxlID0gaXNDb2xsYXBzaWJsZSAmJiAhIWl0ZW0uaGFzSXRlbUNvbnRlbnQ7XG5cbiAgICAgICAgLy8gQ29sbGFwc2UgYW55IGl0ZW1zIHRoYXQgYXJlbid0IHRoZSBpdGVtIHRoYXQgd2FzIGp1c3QgYWRkZWQuXG4gICAgICAgIGlmIChpdGVtICE9PSBpdGVtQWRkZWQgJiYgaXNTaW5nbGUgJiYgaXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgaWYgKGZvdW5kRXhwYW5kZWQpIHtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXRlbSBpcyBiZWluZyBjb2xsYXBzZWQgYmVjYXVzZSBhIG5ldyBpdGVtIHdhc1xuICAgICAgICAgICAgLy8gYWRkZWQsIGFuaW1hdGUgaXQuXG4gICAgICAgICAgICBpdGVtLnVwZGF0ZUZvckV4cGFuZGVkKGZhbHNlLCAhIWl0ZW1BZGRlZCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm91bmRFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuICAgIH1cbiAgfVxuXG4gICNpbml0aWFsaXplRHJhZ0FuZERyb3AoKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrIHRoYXQgd2UgaGF2ZW4ndCBhbHJlYWR5IHNldCB1cCBkcmFnZ2luZyBhYmlsaXRpZXMgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy4jZHJhZ3VsYVNlcnZpY2UuZmluZCh0aGlzLmRyYWd1bGFHcm91cE5hbWUpKSB7XG4gICAgICB0aGlzLiNkcmFndWxhU2VydmljZS5jcmVhdGVHcm91cCh0aGlzLmRyYWd1bGFHcm91cE5hbWUsIHtcbiAgICAgICAgbW92ZXM6IChlbCwgX2NvbnRhaW5lciwgaGFuZGxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZWw/LnF1ZXJ5U2VsZWN0b3IoJy5za3ktcmVwZWF0ZXItaXRlbS1ncmFiLWhhbmRsZScpO1xuICAgICAgICAgIHJldHVybiAhIShcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmFibGUgJiYgdGFyZ2V0Py5jb250YWlucyhoYW5kbGUgYXMgRWxlbWVudCB8IG51bGwpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBkcmFnZ2VkSXRlbUluZGV4ID0gLTE7XG5cbiAgICB0aGlzLiNkcmFndWxhU2VydmljZVxuICAgICAgLmRyYWcodGhpcy5kcmFndWxhR3JvdXBOYW1lKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoYXJncy5uYW1lID09PSB0aGlzLmRyYWd1bGFHcm91cE5hbWUpIHtcbiAgICAgICAgICB0aGlzLiNkZXN0cm95QXV0b1Njcm9sbCgpO1xuXG4gICAgICAgICAgdGhpcy4jYXV0b1Njcm9sbGVyID0gdGhpcy4jYXV0b1Njcm9sbFN2Yy5hdXRvU2Nyb2xsKFxuICAgICAgICAgICAgW3RoaXMuI3Njcm9sbGFibGVIb3N0U3ZjLmdldFNjcm9sbGFibGVIb3N0KHRoaXMuI2VsZW1lbnRSZWYpXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiAyMCxcbiAgICAgICAgICAgICAgbWF4U3BlZWQ6IDEwLFxuICAgICAgICAgICAgICBzY3JvbGxXaGVuT3V0c2lkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXV0b1Njcm9sbDogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3MoYXJncy5lbCwgJ3NreS1yZXBlYXRlci1pdGVtLWRyYWdnaW5nJyk7XG4gICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldFJlcGVhdGVySXRlbUluZGV4KFxuICAgICAgICAgICAgYXJncy5lbCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZHJhZ3VsYVNlcnZpY2VcbiAgICAgIC5kcmFnZW5kKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFyZ3MpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGFyZ3MubmFtZSA9PT0gdGhpcy5kcmFndWxhR3JvdXBOYW1lKSB7XG4gICAgICAgICAgdGhpcy4jZGVzdHJveUF1dG9TY3JvbGwoKTtcblxuICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNsYXNzKGFyZ3MuZWwsICdza3ktcmVwZWF0ZXItaXRlbS1kcmFnZ2luZycpO1xuICAgICAgICAgIGNvbnN0IG5ld0l0ZW1JbmRleCA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldFJlcGVhdGVySXRlbUluZGV4KFxuICAgICAgICAgICAgYXJncy5lbCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5yZW9yZGVySXRlbShkcmFnZ2VkSXRlbUluZGV4LCBuZXdJdGVtSW5kZXgpO1xuICAgICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCA9IC0xO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuI2VtaXRUYWdzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI2Rlc3Ryb3lEcmFnQW5kRHJvcCgpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgdGhhdCB3ZSBoYXZlIHNldCB1cCBkcmFnZ2luZyBhYmlsaXRpZXMgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNkcmFndWxhU2VydmljZS5maW5kKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkpIHtcbiAgICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlLmRlc3Ryb3kodGhpcy5kcmFndWxhR3JvdXBOYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLiNkZXN0cm95QXV0b1Njcm9sbCgpO1xuICB9XG5cbiAgI2Rlc3Ryb3lBdXRvU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNhdXRvU2Nyb2xsZXIpIHtcbiAgICAgIHRoaXMuI2F1dG9TY3JvbGxlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhdXRvU2Nyb2xsZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2VtaXRUYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLiNyZXBlYXRlclNlcnZpY2UuaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnRhZyk7XG4gICAgdGhpcy5vcmRlckNoYW5nZS5lbWl0KHRhZ3MpO1xuICB9XG5cbiAgI2V2ZXJ5SXRlbUhhc1RhZygpOiBib29sZWFuIHtcbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXRoaXMuaXRlbXMgfHwgdGhpcy5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMudG9BcnJheSgpLmV2ZXJ5KChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gaXRlbS50YWcgIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gICN1cGRhdGVSb2xlKCk6IHZvaWQge1xuICAgIC8vIERldGVybWluZSBhIHJvbGUgdXNpbmcgYSBoaWVyYXJjaHkgYmFzZWQgb24gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy0xLjEvXG4gICAgLy8gICAxLiBJZiB0aGVyZSBhcmUgb25lIG9yIG1vcmUgaW50ZXJhY3Rpb25zIGluIHRoZSByZXBlYXRlciBpdGVtIHByb2plY3RlZCBjb250ZW50LCB1c2UgZ3JpZC5cbiAgICAvLyAgIDIuIElmIHRoZXJlIGFyZSBzZWxlY3RhYmxlIHJlcGVhdGVyIGl0ZW1zIGFuZCBubyBvdGhlciBpbnRlcmFjdGlvbnMsIHVzZSBsaXN0Ym94LlxuICAgIC8vICAgMy4gSWYgdGhlcmUgYXJlIG5vIGludGVyYWN0aW9ucywgdXNlIGxpc3QuXG5cbiAgICAvLyBEZWZhdWx0IHRvIGxpc3Qgcm9sZS5cbiAgICBsZXQgYXV0b1JvbGU6IFNreVJlcGVhdGVyUm9sZVR5cGUgPSAnbGlzdCc7XG5cbiAgICBjb25zdCByb2xlTWFwOiBSZWNvcmQ8U2t5UmVwZWF0ZXJSb2xlVHlwZSwgU2t5UmVwZWF0ZXJJdGVtUm9sZXNUeXBlPiA9IHtcbiAgICAgIGxpc3Q6IHsgaXRlbTogJ2xpc3RpdGVtJywgdGl0bGU6IHVuZGVmaW5lZCwgY29udGVudDogdW5kZWZpbmVkIH0sXG4gICAgICBsaXN0Ym94OiB7IGl0ZW06ICdvcHRpb24nLCB0aXRsZTogdW5kZWZpbmVkLCBjb250ZW50OiB1bmRlZmluZWQgfSxcbiAgICAgIGdyaWQ6IHsgaXRlbTogJ3JvdycsIHRpdGxlOiAncm93aGVhZGVyJywgY29udGVudDogJ2dyaWRjZWxsJyB9LFxuICAgIH07XG5cbiAgICAvLyBCYXNlZCBvbiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNpbnRlcmFjdGl2ZS1jb250ZW50XG4gICAgY29uc3QgaW50ZXJhY3Rpb25TZWxlY3RvciA9IFtcbiAgICAgICdhW2hyZWZdJyxcbiAgICAgICdhdWRpb1tjb250cm9sc10nLFxuICAgICAgJ2J1dHRvbicsXG4gICAgICAnZGV0YWlscycsXG4gICAgICAnZW1iZWQnLFxuICAgICAgJ2lmcmFtZScsXG4gICAgICAnaW1nW3VzZW1hcF0nLFxuICAgICAgJ2lucHV0Om5vdChbdHlwZT1cImhpZGRlblwiXSknLFxuICAgICAgJ2xhYmVsJyxcbiAgICAgICdzZWxlY3QnLFxuICAgICAgJ3RleHRhcmVhJyxcbiAgICAgICd2aWRlb1tjb250cm9sc10nLFxuICAgICAgJ1tjb250ZW50ZWRpdGFibGVdJyxcbiAgICAgICcuc2t5LXJlcGVhdGVyW3JvbGU9XCJncmlkXCJdJyxcbiAgICBdXG4gICAgICAubWFwKFxuICAgICAgICAoc2VsZWN0b3IpID0+XG4gICAgICAgICAgYHNreS1yZXBlYXRlci1pdGVtLXRpdGxlICR7c2VsZWN0b3J9Om5vdChbaGlkZGVuXSksIHNreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQgJHtzZWxlY3Rvcn06bm90KFtoaWRkZW5dKWBcbiAgICAgIClcbiAgICAgIC5jb25jYXQoW2Bza3l1eC1kcm9wZG93bmBdKVxuICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICBjb25zdCBoYXNJbnRlcmFjdGlvbiA9XG4gICAgICB0aGlzLnJlb3JkZXJhYmxlIHx8XG4gICAgICB0aGlzLml0ZW1zPy5zb21lKChpdGVtKSA9PiBpdGVtLmlzQ29sbGFwc2libGUpIHx8XG4gICAgICB0aGlzLml0ZW1zPy5zb21lKChpdGVtKSA9PiAhIWl0ZW0uc2VsZWN0YWJsZSkgfHxcbiAgICAgICEhKHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcihcbiAgICAgICAgaW50ZXJhY3Rpb25TZWxlY3RvclxuICAgICAgKTtcblxuICAgIGlmIChoYXNJbnRlcmFjdGlvbikge1xuICAgICAgLy8gSWYgdGhlIHJlcGVhdGVyIG1hdGNoZXMgaW50ZXJhY3Rpb24gc2VsZWN0b3IgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy0xLjEvI2dyaWRcbiAgICAgIGF1dG9Sb2xlID0gJ2dyaWQnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvbGUgIT09IGF1dG9Sb2xlKSB7XG4gICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuaXRlbVJvbGUubmV4dCh7XG4gICAgICAgIC4uLnJvbGVNYXBbYXV0b1JvbGVdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJvbGUgPSBgJHthdXRvUm9sZX1gO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVJlb3JkZXJhYmlsaXR5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgICBpdGVtLnJlb3JkZXJhYmxlID0gdGhpcy5yZW9yZGVyYWJsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjdmFsaWRhdGVUYWdzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlb3JkZXJhYmxlICYmICF0aGlzLiNldmVyeUl0ZW1IYXNUYWcoKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnUGxlYXNlIHN1cHBseSB0YWcgcHJvcGVydGllcyBmb3IgZWFjaCByZXBlYXRlciBpdGVtIHdoZW4gcmVvcmRlcmluZyBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI3JlcGVhdGVySG9zdD5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LXJlcGVhdGVyXCJcbiAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgnc2t5dXhfcmVwZWF0ZXJfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVwiXG4gICAgW2RyYWd1bGFdPVwiZHJhZ3VsYUdyb3VwTmFtZVwiXG4gICAgKGNka09ic2VydmVDb250ZW50KT1cIm9uQ2RrT2JzZXJ2ZUNvbnRlbnQoKVwiXG4gID5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdHMvc3JjL2xpYi9tb2R1bGVzL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUV4RDs7R0FFRztBQVlILE1BQU0sT0FBTyxvQkFBb0I7SUE4Qi9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSCxJQUNXLFVBQVUsQ0FB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QkFBa0I7UUFDbEIseUJBQXlCO1FBQ3pCLDRCQUE0QjtLQUM3QixnREE0RWdCLHdCQUF3QixrREMxSDNDLHVVQVdBOzJGRHNDYSxvQkFBb0I7a0JBWGhDLFNBQVM7K0JBQ0UsY0FBYyxhQUdiO3dCQUNULGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6Qiw0QkFBNEI7cUJBQzdCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzBFQVl4QyxXQUFXO3NCQURqQixLQUFLO2dCQVdDLFNBQVM7c0JBRGYsS0FBSztnQkFTQyxXQUFXO3NCQURqQixLQUFLO2dCQXVCSyxVQUFVO3NCQURwQixLQUFLO2dCQWNDLGlCQUFpQjtzQkFEdkIsTUFBTTtnQkFTQSxXQUFXO3NCQUZqQixNQUFNO2dCQUtBLEtBQUs7c0JBRFgsZUFBZTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreVNjcm9sbGFibGVIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgRHJhZ3VsYVNlcnZpY2UgfSBmcm9tICduZzItZHJhZ3VsYSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVyQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3JlcGVhdGVyLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckF1dG9TY3JvbGxTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci1hdXRvLXNjcm9sbC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVJlcGVhdGVyQXV0b1Njcm9sbGVyIH0gZnJvbSAnLi9yZXBlYXRlci1hdXRvLXNjcm9sbGVyJztcbmltcG9ydCB7IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUgfSBmcm9tICcuL3JlcGVhdGVyLWV4cGFuZC1tb2RlLXR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtUm9sZXNUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLXJvbGVzLnR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlclJvbGVUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1yb2xlLnR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29udGFpbmVyIHRvIGRpc3BsYXkgcmVwZWF0ZXIgaXRlbXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yZXBlYXRlcicsXG4gIHN0eWxlVXJsczogWycuL3JlcGVhdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBlYXRlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVJlcGVhdGVyU2VydmljZSxcbiAgICBTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreVJlcGVhdGVyQXV0b1Njcm9sbFNlcnZpY2UsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXRcbntcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgcmVwZWF0ZXIgaXRlbSB0byB2aXN1YWxseSBoaWdobGlnaHQgYXMgYWN0aXZlLlxuICAgKiBGb3IgZXhhbXBsZSwgdXNlIHRoaXMgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcbiAgICogW3NwbGl0IHZpZXcgY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvc3BsaXQtdmlldylcbiAgICogdG8gaGlnaGxpZ2h0IGEgcmVwZWF0ZXIgaXRlbSB3aGlsZSB1c2VycyBlZGl0IGl0LiBPbmx5IG9uZSBpdGVtIGNhbiBiZSBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgcmVwZWF0ZXIgbGlzdC5cbiAgICogVGhpcyBzZXRzIHRoZSByZXBlYXRlciBsaXN0J3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICogQGRlZmF1bHQgXCJMaXN0IG9mIGl0ZW1zXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB1c2VycyBjYW4gY2hhbmdlIHRoZSBvcmRlciBvZiBpdGVtcyBpbiB0aGUgcmVwZWF0ZXIgbGlzdC5cbiAgICogRWFjaCByZXBlYXRlciBpdGVtIGFsc28gaGFzIGByZW9yZGVyYWJsZWAgcHJvcGVydHkgdG8gaW5kaWNhdGUgd2hldGhlclxuICAgKiB1c2VycyBjYW4gY2hhbmdlIGl0cyBvcmRlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW9yZGVyYWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF5b3V0IHRoYXQgZGV0ZXJtaW5lcyB3aGljaCByZXBlYXRlciBpdGVtcyBhcmUgZXhwYW5kZWQgYnkgZGVmYXVsdCBhbmQgd2hldGhlclxuICAgKiByZXBlYXRlciBpdGVtcyBhcmUgZXhwYW5kYWJsZSBhbmQgY29sbGFwc2libGUuIENvbGxhcHNlZCBpdGVtcyBkaXNwbGF5IHRpdGxlcyBvbmx5LlxuICAgKiBUaGUgdmFsaWQgb3B0aW9ucyBhcmUgYG11bHRpcGxlYCwgYG5vbmVgLCBhbmQgYHNpbmdsZWAuXG4gICAqIC0gYG11bHRpcGxlYCBsb2FkcyByZXBlYXRlciBpdGVtcyBpbiBhbiBleHBhbmRlZCBzdGF0ZSB1bmxlc3MgYGlzRXhwYW5kZWRgIGlzIHNldCB0b1xuICAgKiBgZmFsc2VgIGZvciBhIHJlcGVhdGVyIGl0ZW0uIFRoaXMgbGF5b3V0IGFsbG93cyB1c2VycyB0byBleHBhbmQgYW5kIGNvbGxhcHNlXG4gICAqIGFzIG1hbnkgcmVwZWF0ZXIgaXRlbXMgYXMgbmVjZXNzYXJ5LiBJdCBpcyBiZXN0LXN1aXRlZCB0byByZXBlYXRlciBpdGVtcyB3aGVyZSBib2R5XG4gICAqIGNvbnRlbnQgaXMgaW1wb3J0YW50IGJ1dCB1c2VycyBkb24ndCBhbHdheXMgbmVlZCB0byBzZWUgaXQuXG4gICAqIC0gYG5vbmVgIGxvYWRzIGFsbCByZXBlYXRlciBpdGVtcyBpbiBhbiBleHBhbmRlZCBzdGF0ZSBhbmQgZG9lcyBub3QgYWxsb3cgdXNlcnMgdG9cbiAgICogY29sbGFwc2UgdGhlbS4gVGhpcyBkZWZhdWx0IGxheW91dCBwcm92aWRlcyB0aGUgcXVpY2tlc3QgYWNjZXNzIHRvIHRoZSBkZXRhaWxzIGluIHRoZVxuICAgKiByZXBlYXRlciBpdGVtcy4gSXQgaXMgYmVzdC1zdWl0ZWQgdG8gcmVwZWF0ZXIgaXRlbXMgd2l0aCBjb25jaXNlIGNvbnRlbnRcbiAgICogdGhhdCB1c2VycyBuZWVkIHRvIHZpZXcgZnJlcXVlbnRseS5cbiAgICogLSBgc2luZ2xlYCBsb2FkcyBvbmUgcmVwZWF0ZXIgaXRlbSBpbiBhbiBleHBhbmRlZCBzdGF0ZSBhbmQgY29sbGFwc2VzIGFsbCBvdGhlcnMuXG4gICAqIFRoZSBleHBhbmRlZCByZXBlYXRlciBpdGVtIGlzIHRoZSBmaXJzdCBvbmUgd2hlcmUgYGlzRXhwYW5kZWRgIGlzIHNldCB0byBgdHJ1ZWAuIFRoaXMgbGF5b3V0XG4gICAqIGFsbG93cyB1c2VycyB0byBleHBhbmQgb25lIGl0ZW0gYXQgYSB0aW1lLiBJdCBwcm92aWRlcyB0aGUgbW9zdCBjb21wYWN0IHZpZXcgYW5kIGlzXG4gICAqIGJlc3Qtc3VpdGVkIHRvIHJlcGVhdGVyIGl0ZW1zIHdoZXJlIHRoZSBtb3N0IGltcG9ydGFudCBpbmZvcm1hdGlvbiBpcyBpbiB0aGUgdGl0bGVzXG4gICAqIGFuZCB1c2VycyBvbmx5IG9jY2FzaW9uYWxseSBuZWVkIHRvIHZpZXcgdGhlIGJvZHkgY29udGVudC5cbiAgICogQGRlZmF1bHQgXCJub25lXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZXhwYW5kTW9kZSh2YWx1ZTogU2t5UmVwZWF0ZXJFeHBhbmRNb2RlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5leHBhbmRNb2RlID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBleHBhbmRNb2RlKCk6IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUge1xuICAgIHJldHVybiB0aGlzLiNyZXBlYXRlclNlcnZpY2UuZXhwYW5kTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgcmVwZWF0ZXIgaXRlbSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNoYW5nZSB0aGUgb3JkZXIgb2YgcmVwZWF0ZXIgaXRlbXMuXG4gICAqIFRoaXMgZXZlbnQgZW1pdHMgYW4gb3JkZXJlZCBhcnJheSBvZiB0aGUgYHRhZ2AgcHJvcGVydGllcyB0aGF0IHRoZSBjb25zdW1lciBwcm92aWRlcyBmb3IgZWFjaCByZXBlYXRlciBpdGVtLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHB1YmxpYyBvcmRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpXG4gIHB1YmxpYyBpdGVtczogUXVlcnlMaXN0PFNreVJlcGVhdGVySXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGRyYWd1bGFHcm91cE5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgcm9sZTogU2t5UmVwZWF0ZXJSb2xlVHlwZSB8IHVuZGVmaW5lZDtcblxuICAjYXV0b1Njcm9sbGVyOiBTa3lSZXBlYXRlckF1dG9TY3JvbGxlciB8IHVuZGVmaW5lZDtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjaXRlbU5hbWVXYXJuZWQgPSBmYWxzZTtcblxuICAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5UmVwZWF0ZXJBZGFwdGVyU2VydmljZSk7XG4gICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICNkcmFndWxhU2VydmljZSA9IGluamVjdChEcmFndWxhU2VydmljZSk7XG4gICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgI3JlcGVhdGVyU2VydmljZSA9IGluamVjdChTa3lSZXBlYXRlclNlcnZpY2UpO1xuICAjYXV0b1Njcm9sbFN2YyA9IGluamVjdChTa3lSZXBlYXRlckF1dG9TY3JvbGxTZXJ2aWNlKTtcbiAgI3Njcm9sbGFibGVIb3N0U3ZjID0gaW5qZWN0KFNreVNjcm9sbGFibGVIb3N0U2VydmljZSk7XG4gICNsb2dTdmMgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kcmFndWxhR3JvdXBOYW1lID0gYHNreS1yZXBlYXRlci1kcmFndWxhLSR7XG4gICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UucmVwZWF0ZXJHcm91cElkXG4gICAgfWA7XG5cbiAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuaXRlbUNvbGxhcHNlU3RhdGVDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5leHBhbmRNb2RlID09PSAnc2luZ2xlJyAmJiBpdGVtLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zPy5mb3JFYWNoKChvdGhlckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3RoZXJJdGVtICE9PSBpdGVtICYmXG4gICAgICAgICAgICAgIG90aGVySXRlbS5pc0V4cGFuZGVkICYmXG4gICAgICAgICAgICAgIG90aGVySXRlbS5pc0NvbGxhcHNpYmxlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgb3RoZXJJdGVtLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuYWN0aXZlSXRlbUluZGV4Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggIT09IHRoaXMuYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgdGhpcy5hY3RpdmVJbmRleENoYW5nZS5lbWl0KGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2Uub3JkZXJDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNlbWl0VGFncygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiN1cGRhdGVGb3JFeHBhbmRNb2RlKCk7XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRSZXBlYXRlckhvc3QodGhpcy4jZWxlbWVudFJlZik7XG5cbiAgICB0aGlzLiNpbml0aWFsaXplRHJhZ0FuZERyb3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgLy8gSWYgYWN0aXZlSW5kZXggaGFzIGJlZW4gc2V0IG9uIGluaXQsIGNhbGwgc2VydmljZSB0byBhY3RpdmF0ZSB0aGUgYXBwcm9wcmlhdGUgaXRlbS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4IHx8IHRoaXMuYWN0aXZlSW5kZXggPT09IDApIHtcbiAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2YXRlSXRlbUJ5SW5kZXgodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI3ZhbGlkYXRlVGFncygpO1xuICAgIH0pO1xuXG4gICAgLy8gSEFDSzogTm90IHVwZGF0aW5nIGZvciBleHBhbmQgbW9kZSBpbiBhIHRpbWVvdXQgY2F1c2VzIGFuIGVycm9yLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzYwMDVcbiAgICB0aGlzLml0ZW1zPy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVGb3JFeHBhbmRNb2RlKHRoaXMuaXRlbXMubGFzdCk7XG5cbiAgICAgICAgICB0aGlzLiN1cGRhdGVSZW9yZGVyYWJpbGl0eSgpO1xuXG4gICAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLml0ZW1zID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2YXRlSXRlbUJ5SW5kZXgodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG5cbiAgICAgICAgdGhpcy4jdmFsaWRhdGVUYWdzKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSgpO1xuXG4gICAgICB0aGlzLml0ZW1zPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0ucmVvcmRlcmFibGUgPSB0aGlzLnJlb3JkZXJhYmxlO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNpdGVtTmFtZVdhcm5lZCAmJiB0aGlzLml0ZW1zPy5zb21lKChpdGVtKSA9PiAhaXRlbS5pdGVtTmFtZSkpIHtcbiAgICAgIHRoaXMuI2xvZ1N2Yz8uZGVwcmVjYXRlZCgnU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IHdpdGhvdXQgYGl0ZW1OYW1lYCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDgsXG4gICAgICAgIHJlcGxhY2VtZW50UmVjb21tZW5kYXRpb246ICdBbHdheXMgc3BlY2lmeSBhbiBgaXRlbU5hbWVgIHByb3BlcnR5LicsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy4jaXRlbU5hbWVXYXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGl2ZUluZGV4J10pIHtcbiAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5lbmFibGVBY3RpdmVTdGF0ZSA9IHRydWU7XG4gICAgICBpZiAoXG4gICAgICAgIGNoYW5nZXNbJ2FjdGl2ZUluZGV4J10uY3VycmVudFZhbHVlICE9PVxuICAgICAgICBjaGFuZ2VzWydhY3RpdmVJbmRleCddLnByZXZpb3VzVmFsdWVcbiAgICAgICkge1xuICAgICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuYWN0aXZhdGVJdGVtQnlJbmRleCh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sncmVvcmRlcmFibGUnXSkge1xuICAgICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgICAgdGhpcy4jdXBkYXRlUmVvcmRlcmFiaWxpdHkoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcblxuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiNkZXN0cm95RHJhZ0FuZERyb3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DZGtPYnNlcnZlQ29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG4gIH1cblxuICAjdXBkYXRlRm9yRXhwYW5kTW9kZShpdGVtQWRkZWQ/OiBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgbGV0IGZvdW5kRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGlzQ29sbGFwc2libGUgPSB0aGlzLmV4cGFuZE1vZGUgIT09ICdub25lJztcbiAgICAgIGNvbnN0IGlzU2luZ2xlID0gdGhpcy5leHBhbmRNb2RlID09PSAnc2luZ2xlJztcblxuICAgICAgLy8gS2VlcCBhbnkgbmV3bHktYWRkZWQgZXhwYW5kZWQgaXRlbSBleHBhbmRlZCBhbmQgY29sbGFwc2UgdGhlIHJlc3QuXG4gICAgICBpZiAoaXRlbUFkZGVkICYmIGl0ZW1BZGRlZC5pc0V4cGFuZGVkKSB7XG4gICAgICAgIGZvdW5kRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgICBpdGVtLmlzQ29sbGFwc2libGUgPSBpc0NvbGxhcHNpYmxlICYmICEhaXRlbS5oYXNJdGVtQ29udGVudDtcblxuICAgICAgICAvLyBDb2xsYXBzZSBhbnkgaXRlbXMgdGhhdCBhcmVuJ3QgdGhlIGl0ZW0gdGhhdCB3YXMganVzdCBhZGRlZC5cbiAgICAgICAgaWYgKGl0ZW0gIT09IGl0ZW1BZGRlZCAmJiBpc1NpbmdsZSAmJiBpdGVtLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgICBpZiAoZm91bmRFeHBhbmRlZCkge1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpdGVtIGlzIGJlaW5nIGNvbGxhcHNlZCBiZWNhdXNlIGEgbmV3IGl0ZW0gd2FzXG4gICAgICAgICAgICAvLyBhZGRlZCwgYW5pbWF0ZSBpdC5cbiAgICAgICAgICAgIGl0ZW0udXBkYXRlRm9yRXhwYW5kZWQoZmFsc2UsICEhaXRlbUFkZGVkKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3VuZEV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG4gICAgfVxuICB9XG5cbiAgI2luaXRpYWxpemVEcmFnQW5kRHJvcCgpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgdGhhdCB3ZSBoYXZlbid0IGFscmVhZHkgc2V0IHVwIGRyYWdnaW5nIGFiaWxpdGllcyAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKCF0aGlzLiNkcmFndWxhU2VydmljZS5maW5kKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkpIHtcbiAgICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlLmNyZWF0ZUdyb3VwKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSwge1xuICAgICAgICBtb3ZlczogKGVsLCBfY29udGFpbmVyLCBoYW5kbGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBlbD8ucXVlcnlTZWxlY3RvcignLnNreS1yZXBlYXRlci1pdGVtLWdyYWItaGFuZGxlJyk7XG4gICAgICAgICAgcmV0dXJuICEhKFxuICAgICAgICAgICAgdGhpcy5yZW9yZGVyYWJsZSAmJiB0YXJnZXQ/LmNvbnRhaW5zKGhhbmRsZSBhcyBFbGVtZW50IHwgbnVsbClcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IGRyYWdnZWRJdGVtSW5kZXggPSAtMTtcblxuICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlXG4gICAgICAuZHJhZyh0aGlzLmRyYWd1bGFHcm91cE5hbWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChhcmdzLm5hbWUgPT09IHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkge1xuICAgICAgICAgIHRoaXMuI2Rlc3Ryb3lBdXRvU2Nyb2xsKCk7XG5cbiAgICAgICAgICB0aGlzLiNhdXRvU2Nyb2xsZXIgPSB0aGlzLiNhdXRvU2Nyb2xsU3ZjLmF1dG9TY3JvbGwoXG4gICAgICAgICAgICBbdGhpcy4jc2Nyb2xsYWJsZUhvc3RTdmMuZ2V0U2Nyb2xsYWJsZUhvc3QodGhpcy4jZWxlbWVudFJlZildLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXJnaW46IDIwLFxuICAgICAgICAgICAgICBtYXhTcGVlZDogMTAsXG4gICAgICAgICAgICAgIHNjcm9sbFdoZW5PdXRzaWRlOiB0cnVlLFxuICAgICAgICAgICAgICBhdXRvU2Nyb2xsOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhhcmdzLmVsLCAnc2t5LXJlcGVhdGVyLWl0ZW0tZHJhZ2dpbmcnKTtcbiAgICAgICAgICBkcmFnZ2VkSXRlbUluZGV4ID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0UmVwZWF0ZXJJdGVtSW5kZXgoXG4gICAgICAgICAgICBhcmdzLmVsIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLiNkcmFndWxhU2VydmljZVxuICAgICAgLmRyYWdlbmQodGhpcy5kcmFndWxhR3JvdXBOYW1lKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoYXJncy5uYW1lID09PSB0aGlzLmRyYWd1bGFHcm91cE5hbWUpIHtcbiAgICAgICAgICB0aGlzLiNkZXN0cm95QXV0b1Njcm9sbCgpO1xuXG4gICAgICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MoYXJncy5lbCwgJ3NreS1yZXBlYXRlci1pdGVtLWRyYWdnaW5nJyk7XG4gICAgICAgICAgY29uc3QgbmV3SXRlbUluZGV4ID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0UmVwZWF0ZXJJdGVtSW5kZXgoXG4gICAgICAgICAgICBhcmdzLmVsIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRyYWdnZWRJdGVtSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLnJlb3JkZXJJdGVtKGRyYWdnZWRJdGVtSW5kZXgsIG5ld0l0ZW1JbmRleCk7XG4gICAgICAgICAgICBkcmFnZ2VkSXRlbUluZGV4ID0gLTE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy4jZW1pdFRhZ3MoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAjZGVzdHJveURyYWdBbmREcm9wKCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGhhdmUgc2V0IHVwIGRyYWdnaW5nIGFiaWxpdGllcyAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI2RyYWd1bGFTZXJ2aWNlLmZpbmQodGhpcy5kcmFndWxhR3JvdXBOYW1lKSkge1xuICAgICAgdGhpcy4jZHJhZ3VsYVNlcnZpY2UuZGVzdHJveSh0aGlzLmRyYWd1bGFHcm91cE5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMuI2Rlc3Ryb3lBdXRvU2Nyb2xsKCk7XG4gIH1cblxuICAjZGVzdHJveUF1dG9TY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2F1dG9TY3JvbGxlcikge1xuICAgICAgdGhpcy4jYXV0b1Njcm9sbGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuI2F1dG9TY3JvbGxlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjZW1pdFRhZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udGFnKTtcbiAgICB0aGlzLm9yZGVyQ2hhbmdlLmVtaXQodGFncyk7XG4gIH1cblxuICAjZXZlcnlJdGVtSGFzVGFnKCk6IGJvb2xlYW4ge1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pdGVtcy50b0FycmF5KCkuZXZlcnkoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiBpdGVtLnRhZyAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgI3VwZGF0ZVJvbGUoKTogdm9pZCB7XG4gICAgLy8gRGV0ZXJtaW5lIGEgcm9sZSB1c2luZyBhIGhpZXJhcmNoeSBiYXNlZCBvbiBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS9cbiAgICAvLyAgIDEuIElmIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBpbnRlcmFjdGlvbnMgaW4gdGhlIHJlcGVhdGVyIGl0ZW0gcHJvamVjdGVkIGNvbnRlbnQsIHVzZSBncmlkLlxuICAgIC8vICAgMi4gSWYgdGhlcmUgYXJlIHNlbGVjdGFibGUgcmVwZWF0ZXIgaXRlbXMgYW5kIG5vIG90aGVyIGludGVyYWN0aW9ucywgdXNlIGxpc3Rib3guXG4gICAgLy8gICAzLiBJZiB0aGVyZSBhcmUgbm8gaW50ZXJhY3Rpb25zLCB1c2UgbGlzdC5cblxuICAgIC8vIERlZmF1bHQgdG8gbGlzdCByb2xlLlxuICAgIGxldCBhdXRvUm9sZTogU2t5UmVwZWF0ZXJSb2xlVHlwZSA9ICdsaXN0JztcblxuICAgIGNvbnN0IHJvbGVNYXA6IFJlY29yZDxTa3lSZXBlYXRlclJvbGVUeXBlLCBTa3lSZXBlYXRlckl0ZW1Sb2xlc1R5cGU+ID0ge1xuICAgICAgbGlzdDogeyBpdGVtOiAnbGlzdGl0ZW0nLCB0aXRsZTogdW5kZWZpbmVkLCBjb250ZW50OiB1bmRlZmluZWQgfSxcbiAgICAgIGxpc3Rib3g6IHsgaXRlbTogJ29wdGlvbicsIHRpdGxlOiB1bmRlZmluZWQsIGNvbnRlbnQ6IHVuZGVmaW5lZCB9LFxuICAgICAgZ3JpZDogeyBpdGVtOiAncm93JywgdGl0bGU6ICdyb3doZWFkZXInLCBjb250ZW50OiAnZ3JpZGNlbGwnIH0sXG4gICAgfTtcblxuICAgIC8vIEJhc2VkIG9uIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI2ludGVyYWN0aXZlLWNvbnRlbnRcbiAgICBjb25zdCBpbnRlcmFjdGlvblNlbGVjdG9yID0gW1xuICAgICAgJ2FbaHJlZl0nLFxuICAgICAgJ2F1ZGlvW2NvbnRyb2xzXScsXG4gICAgICAnYnV0dG9uJyxcbiAgICAgICdkZXRhaWxzJyxcbiAgICAgICdlbWJlZCcsXG4gICAgICAnaWZyYW1lJyxcbiAgICAgICdpbWdbdXNlbWFwXScsXG4gICAgICAnaW5wdXQ6bm90KFt0eXBlPVwiaGlkZGVuXCJdKScsXG4gICAgICAnbGFiZWwnLFxuICAgICAgJ3NlbGVjdCcsXG4gICAgICAndGV4dGFyZWEnLFxuICAgICAgJ3ZpZGVvW2NvbnRyb2xzXScsXG4gICAgICAnW2NvbnRlbnRlZGl0YWJsZV0nLFxuICAgICAgJy5za3ktcmVwZWF0ZXJbcm9sZT1cImdyaWRcIl0nLFxuICAgIF1cbiAgICAgIC5tYXAoXG4gICAgICAgIChzZWxlY3RvcikgPT5cbiAgICAgICAgICBgc2t5LXJlcGVhdGVyLWl0ZW0tdGl0bGUgJHtzZWxlY3Rvcn06bm90KFtoaWRkZW5dKSwgc2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudCAke3NlbGVjdG9yfTpub3QoW2hpZGRlbl0pYFxuICAgICAgKVxuICAgICAgLmNvbmNhdChbYHNreXV4LWRyb3Bkb3duYF0pXG4gICAgICAuam9pbignLCAnKTtcblxuICAgIGNvbnN0IGhhc0ludGVyYWN0aW9uID1cbiAgICAgIHRoaXMucmVvcmRlcmFibGUgfHxcbiAgICAgIHRoaXMuaXRlbXM/LnNvbWUoKGl0ZW0pID0+IGl0ZW0uaXNDb2xsYXBzaWJsZSkgfHxcbiAgICAgIHRoaXMuaXRlbXM/LnNvbWUoKGl0ZW0pID0+ICEhaXRlbS5zZWxlY3RhYmxlKSB8fFxuICAgICAgISEodGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBpbnRlcmFjdGlvblNlbGVjdG9yXG4gICAgICApO1xuXG4gICAgaWYgKGhhc0ludGVyYWN0aW9uKSB7XG4gICAgICAvLyBJZiB0aGUgcmVwZWF0ZXIgbWF0Y2hlcyBpbnRlcmFjdGlvbiBzZWxlY3RvciBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8jZ3JpZFxuICAgICAgYXV0b1JvbGUgPSAnZ3JpZCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm9sZSAhPT0gYXV0b1JvbGUpIHtcbiAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtUm9sZS5uZXh0KHtcbiAgICAgICAgLi4ucm9sZU1hcFthdXRvUm9sZV0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMucm9sZSA9IGAke2F1dG9Sb2xlfWA7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlUmVvcmRlcmFiaWxpdHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICAgIGl0ZW0ucmVvcmRlcmFibGUgPSB0aGlzLnJlb3JkZXJhYmxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICN2YWxpZGF0ZVRhZ3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVvcmRlcmFibGUgJiYgIXRoaXMuI2V2ZXJ5SXRlbUhhc1RhZygpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdQbGVhc2Ugc3VwcGx5IHRhZyBwcm9wZXJ0aWVzIGZvciBlYWNoIHJlcGVhdGVyIGl0ZW0gd2hlbiByZW9yZGVyaW5nIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAjcmVwZWF0ZXJIb3N0PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktcmVwZWF0ZXJcIlxuICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgKCdza3l1eF9yZXBlYXRlcl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMpXCJcbiAgICBbZHJhZ3VsYV09XCJkcmFndWxhR3JvdXBOYW1lXCJcbiAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwib25DZGtPYnNlcnZlQ29udGVudCgpXCJcbiAgPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1478,7 +1478,7 @@ class SkyRepeaterComponent {
1478
1478
  __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").activateItemByIndex(this.activeIndex);
1479
1479
  }
1480
1480
  }
1481
- if (changes.reorderable) {
1481
+ if (changes['reorderable']) {
1482
1482
  if (this.items) {
1483
1483
  __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateReorderability).call(this);
1484
1484
  }