tnx-shared 5.3.429 → 5.3.431

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.
@@ -248,9 +248,9 @@ export class EntityPickerDataComponent extends DataListBase {
248
248
  EntityPickerDataComponent.decorators = [
249
249
  { type: Component, args: [{
250
250
  selector: 'app-entity-picker-data',
251
- template: "<crud-list #crudList [templates]=\"templates\" [menuButtons]=\"getMenuButtons\" [model]=\"model\" [setting]=\"setting\"\n [dataSource]=\"model.dataSource\" [showScrollHorizontal]=\"true\" (onContentInit)=\"onContentInit.emit($event)\"\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onRowSelect)=\"handleRowSelect($event)\"\n (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\"\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\n <ng-template #customTitle>\n <h1 [innerHTML]=\"dom.bypassSecurityTrustHtml(control.titleUnPicked)\"></h1>\n <div class=\"header-search-box\" *ngIf=\"control.templateFilterHeader\">\n <ng-container *ngTemplateOutlet=\"control.templateFilterHeader; context: filterHeaderContext\">\n </ng-container>\n </div>\n </ng-template>\n\n <ng-template #toolbar let-crudList=\"crudList\" let-selectedItems=\"selectedItems\">\n <button\n *ngIf=\"(isSingleSelection || model.total <= 0) && !model.dataSource.length && setting.hiddenAdvanceSearch\"\n pButton style=\"visibility: hidden\"></button>\n <button *ngIf=\"!isSingleSelection && model.total > 0\" type=\"button\" pButton pRipple\n label=\"L\u1EA5y t\u1EA5t c\u1EA3 ({{model.total}})\" icon=\"pi pi-angle-double-right\" class=\"p-button-text p-button-success\"\n [disabled]=\"model.loading\" (click)=\"pickAll()\"></button>\n <button *ngIf=\"!isSingleSelection && selectedItems.length > 0\" type=\"button\" pButton pRipple\n label=\"L\u1EA5y m\u1EE5c \u0111\u00E3 ch\u1ECDn ({{selectedItems.length}})\" icon=\"pi pi-angle-right\"\n class=\"p-button-text p-button-success\" [disabled]=\"model.loading\"\n (click)=\"pickSelected(selectedItems)\"></button>\n <button *ngIf=\"datasourceFieldFilter.length\" type=\"button\" pButton pRipple label=\"T\u00ECm ki\u1EBFm nhi\u1EC1u ng\u01B0\u1EDDi d\u00F9ng\"\n icon=\"pi pi-search\" class=\"p-button-text p-button-primary\" [disabled]=\"model.loading\"\n (click)=\"handleAdvansearch()\"></button>\n <button *ngIf=\"datasourceFieldFilter.length && searchData\" type=\"button\" pButton pRipple\n label=\"X\u00F3a danh s\u00E1ch t\u00ECm ki\u1EBFm\" pTooltip=\"X\u00F3a t\u1EA5t c\u1EA3 ng\u01B0\u1EDDi d\u00F9ng \u1EDF Danh s\u00E1ch t\u00ECm ki\u1EBFm\" icon=\"pi pi-times\"\n class=\"p-button-text p-button-primary\" [disabled]=\"model.loading\" (click)=\"handleSearch(null)\"></button>\n </ng-template>\n <ng-template let-crudList=\"crudList\" #function let-rowData=\"rowData\">\n <button pButton type=\"button\" class=\"link-or-action p-button-success p-button-text p-button-rounded\"\n icon=\"pi pi-check\" pTooltip=\"Ch\u1ECDn m\u1EE5c n\u00E0y\" tooltipPosition=\"top\" [disabled]=\"rowData.disabled\"\n (click)=\"pickEntity(rowData)\"></button>\n </ng-template>\n</crud-list>\n\n\n<tn-dialog *ngIf=\"showFormAdvancedSearch\" #dialog [styleClass]=\"'address-form'\" [header]=\"'T\u00ECm ki\u1EBFm nhi\u1EC1u ng\u01B0\u1EDDi d\u00F9ng'\"\n [popupSize]=\"popupSizeSearchForm\" [maskClass]=\"setting.maskClass\" (onHide)=\"showFormAdvancedSearch = false\">\n <entity-picker-search-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [parentSetting]=\"setting\"\n [datasourceFieldFilter]=\"datasourceFieldFilter\" [lstDataNotExist]=\"lstDataNotExist\" [model]=\"formModel\"\n (onSearch)=\"handleSearch($event)\" (onCancel)=\"showFormAdvancedSearch = false;\">\n </entity-picker-search-form>\n</tn-dialog>",
251
+ template: "<div class=\"entity-picker-data-body\"\n [class.has-left-filter]=\"control.filterHeaderAsLeftPanel && control.templateFilterHeader\">\n <div class=\"left-filter-panel\" *ngIf=\"control.filterHeaderAsLeftPanel && control.templateFilterHeader\">\n <ng-container *ngTemplateOutlet=\"control.templateFilterHeader; context: filterHeaderContext\"></ng-container>\n </div>\n <crud-list class=\"entity-picker-data-list\" #crudList [templates]=\"templates\" [menuButtons]=\"getMenuButtons\"\n [model]=\"model\" [setting]=\"setting\"\n [dataSource]=\"model.dataSource\" [showScrollHorizontal]=\"true\" (onContentInit)=\"onContentInit.emit($event)\"\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onRowSelect)=\"handleRowSelect($event)\"\n (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\"\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\n <ng-template #customTitle>\n <h1 [innerHTML]=\"dom.bypassSecurityTrustHtml(control.titleUnPicked)\"></h1>\n <div class=\"header-search-box\" *ngIf=\"control.templateFilterHeader && !control.filterHeaderAsLeftPanel\">\n <ng-container *ngTemplateOutlet=\"control.templateFilterHeader; context: filterHeaderContext\">\n </ng-container>\n </div>\n </ng-template>\n\n <ng-template #toolbar let-crudList=\"crudList\" let-selectedItems=\"selectedItems\">\n <button\n *ngIf=\"(isSingleSelection || model.total <= 0) && !model.dataSource.length && setting.hiddenAdvanceSearch\"\n pButton style=\"visibility: hidden\"></button>\n <button *ngIf=\"!isSingleSelection && model.total > 0\" type=\"button\" pButton pRipple\n label=\"L\u1EA5y t\u1EA5t c\u1EA3 ({{model.total}})\" icon=\"pi pi-angle-double-right\" class=\"p-button-text p-button-success\"\n [disabled]=\"model.loading\" (click)=\"pickAll()\"></button>\n <button *ngIf=\"!isSingleSelection && selectedItems.length > 0\" type=\"button\" pButton pRipple\n label=\"L\u1EA5y m\u1EE5c \u0111\u00E3 ch\u1ECDn ({{selectedItems.length}})\" icon=\"pi pi-angle-right\"\n class=\"p-button-text p-button-success\" [disabled]=\"model.loading\"\n (click)=\"pickSelected(selectedItems)\"></button>\n <button *ngIf=\"datasourceFieldFilter.length\" type=\"button\" pButton pRipple label=\"T\u00ECm ki\u1EBFm nhi\u1EC1u ng\u01B0\u1EDDi d\u00F9ng\"\n icon=\"pi pi-search\" class=\"p-button-text p-button-primary\" [disabled]=\"model.loading\"\n (click)=\"handleAdvansearch()\"></button>\n <button *ngIf=\"datasourceFieldFilter.length && searchData\" type=\"button\" pButton pRipple\n label=\"X\u00F3a danh s\u00E1ch t\u00ECm ki\u1EBFm\" pTooltip=\"X\u00F3a t\u1EA5t c\u1EA3 ng\u01B0\u1EDDi d\u00F9ng \u1EDF Danh s\u00E1ch t\u00ECm ki\u1EBFm\" icon=\"pi pi-times\"\n class=\"p-button-text p-button-primary\" [disabled]=\"model.loading\" (click)=\"handleSearch(null)\"></button>\n </ng-template>\n <ng-template let-crudList=\"crudList\" #function let-rowData=\"rowData\">\n <button pButton type=\"button\" class=\"link-or-action p-button-success p-button-text p-button-rounded\"\n icon=\"pi pi-check\" pTooltip=\"Ch\u1ECDn m\u1EE5c n\u00E0y\" tooltipPosition=\"top\" [disabled]=\"rowData.disabled\"\n (click)=\"pickEntity(rowData)\"></button>\n </ng-template>\n</crud-list>\n</div>\n\n\n<tn-dialog *ngIf=\"showFormAdvancedSearch\" #dialog [styleClass]=\"'address-form'\" [header]=\"'T\u00ECm ki\u1EBFm nhi\u1EC1u ng\u01B0\u1EDDi d\u00F9ng'\"\n [popupSize]=\"popupSizeSearchForm\" [maskClass]=\"setting.maskClass\" (onHide)=\"showFormAdvancedSearch = false\">\n <entity-picker-search-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [parentSetting]=\"setting\"\n [datasourceFieldFilter]=\"datasourceFieldFilter\" [lstDataNotExist]=\"lstDataNotExist\" [model]=\"formModel\"\n (onSearch)=\"handleSearch($event)\" (onCancel)=\"showFormAdvancedSearch = false;\">\n </entity-picker-search-form>\n</tn-dialog>",
252
252
  providers: [ComponentContextService],
253
- styles: ["::ng-deep app-entity-picker-data .custom-card{padding:.5em!important}::ng-deep app-entity-picker-data .header-search-box{padding:1rem 0}::ng-deep app-entity-picker-data .header-search-box p-dropdown .p-dropdown{min-width:300px}"]
253
+ styles: ["::ng-deep app-entity-picker-data .custom-card{padding:.5em!important}::ng-deep app-entity-picker-data .header-search-box{padding:1rem 0}::ng-deep app-entity-picker-data .header-search-box p-dropdown .p-dropdown{min-width:300px}::ng-deep app-entity-picker-data .entity-picker-data-body{display:contents}::ng-deep app-entity-picker-data .entity-picker-data-body.has-left-filter{display:flex;align-items:stretch;gap:12px;height:72vh}::ng-deep app-entity-picker-data .entity-picker-data-body.has-left-filter .left-filter-panel{flex:0 0 320px;max-width:320px;border-right:1px solid #e5e7eb;padding-right:8px;overflow:hidden}::ng-deep app-entity-picker-data .entity-picker-data-body.has-left-filter .entity-picker-data-list{flex:1 1 auto;min-width:0;height:100%}"]
254
254
  },] }
255
255
  ];
256
256
  EntityPickerDataComponent.ctorParameters = () => [
@@ -275,4 +275,4 @@ EntityPickerDataComponent.propDecorators = {
275
275
  onPickSelected: [{ type: Output }],
276
276
  children: [{ type: ContentChildren, args: [TemplateRef,] }]
277
277
  };
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLWRhdGEvZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQVEzRixNQUFNLE9BQU8seUJBQTBCLFNB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LFlBQVksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7O1lBeFFKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxxb0hBQWtEO2dCQUVsRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWxCa0QsUUFBUTtZQUVsRCxxQkFBcUI7WUFEckIsWUFBWTs7O3dCQW1CaEIsS0FBSzs0QkFDTCxLQUFLOzBCQUNMLEtBQUs7c0JBQ0wsS0FBSztvQ0FDTCxLQUFLOzRCQUlMLEtBQUs7Z0NBTUwsS0FBSztzQkFDTCxLQUFLOzBCQUVMLEtBQUs7NEJBRUwsTUFBTTswQkFDTixNQUFNO3FCQUNOLE1BQU07d0JBQ04sTUFBTTs2QkFDTixNQUFNO3VCQUVOLGVBQWUsU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xuaW1wb3J0IHsgQ29sdW1uU2NoZW1hQmFzZSwgQ3J1ZExpc3RTZXR0aW5nLCBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hLCBIZWlnaHRUeXBlLCBPcGVyYXRvciwgUG9wdXBTaXplIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBGaWx0ZXIsIEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb250cm9sVHJlZU5vZGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jcnVkL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEFkdmFuY2VEYXRhRW50aXR5UGlja2VyLCBTZWFyY2hEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9hZHZhbmNlLWRhdGEnO1xuaW1wb3J0IHsgYXBwZW5kRGVmYXVsdEZpbHRlciB9IGZyb20gJy4vLi4vLi4vLi4vLi4vLi4vdXRpbHMvY29tbW9uJztcbmltcG9ydCB7IENhbkJvSG9Tb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IERhdGFzb3VyY2VGaWx0ZXJDYW5CbyB9IGZyb20gJy4uLy4uLy4uLy4uL3VzZXItcGlja2VyL21vZGVscy91c2VyLXBpY2tlci1zZXR0aW5nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtZW50aXR5LXBpY2tlci1kYXRhJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lbnRpdHktcGlja2VyLWRhdGEuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyRGF0YUNvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG4gICAgQElucHV0KCkgcGFyZW50U2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xuICAgIEBJbnB1dCgpIGFkdmFuY2VEYXRhOiBBZHZhbmNlRGF0YUVudGl0eVBpY2tlcjtcbiAgICBASW5wdXQoKSBjb250cm9sOiBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hO1xuICAgIEBJbnB1dCgpIGRhdGFzb3VyY2VGaWVsZEZpbHRlciA9IFtdO1xuICAgIF9zZWxlY3RlZFZhbHVlOiBhbnk7XG4gICAgX3ZhbHVlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUHJvY2Vzc0RhdGEoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBpc1NpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGZpbHRlcnM6IEZpbHRlcltdO1xuXG4gICAgQElucHV0KCkgY3VycmVudE5vZGU6IENvbnRyb2xUcmVlTm9kZTsgLy8gQ3VycmVudCBub2RlIGNobyBsw7pjIGNvbXBvbmVudCDEkWFuZyDhu58gdHJvbmcgZm9ybVxuXG4gICAgQE91dHB1dCgpIG9uQ29udGVudEluaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvblJvd1NlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uUGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uUGlja0FsbDogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25QaWNrU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGVtcGxhdGU6IGFueSA9IHt9O1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVSZWYpIGNoaWxkcmVuOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvLyBDb250ZXh0IHRydXnhu4FuIHbDoG8gdGVtcGxhdGVGaWx0ZXJIZWFkZXIgxJHhu4MgdGVtcGxhdGUgZ+G7jWkgbmfGsOG7o2MgbOG6oWkgKG9uQ2hhbmdlL3JlbG9hZClcbiAgICBmaWx0ZXJIZWFkZXJDb250ZXh0OiBhbnkgPSB7XG4gICAgICAgICRpbXBsaWNpdDogdGhpcyxcbiAgICAgICAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB0aGlzLmhhbmRsZUZpbHRlckhlYWRlckNoYW5nZSh2YWx1ZSksXG4gICAgICAgIHJlbG9hZDogKCkgPT4gdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCksXG4gICAgfTtcblxuICAgIHNob3dGb3JtQWR2YW5jZWRTZWFyY2ggPSBmYWxzZTtcbiAgICBwb3B1cFNpemVTZWFyY2hGb3JtID0gbmV3IFBvcHVwU2l6ZSh7IHdpZHRoOiAxMDAwLCBoZWlnaHQ6IDcwMCB9KTtcbiAgICBzZWFyY2hEYXRhOiBTZWFyY2hEYXRhTW9kZWw7XG4gICAgc2NoZW1hRGF0YTogYW55ID0ge307XG4gICAgbHN0RGF0YU5vdEV4aXN0ID0gW107XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHB1YmxpYyBfZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBkb206IERvbVNhbml0aXplclxuICAgICkge1xuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvYWREZXRhaWxGcm9tUXVlcnlQYXJhbSA9IHRydWU7XG4gICAgICAgIHRoaXMucGx1c1VybCA9IHRoaXMuY29udHJvbC5wbHVzVXJsO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQXV0aG9yaXplQnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLnNldHRpbmcucGFnZVNldHRpbmcucGFnZVNpemUgPSB0aGlzLmNvbnRyb2wucGFnZVNpemUgPz8gMzA7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9ICF0aGlzLmNvbnRyb2wubXVsdGlwbGU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5jdXN0b207XG4gICAgICAgIHRoaXMuc2V0dGluZy5zaG93RWRpdExpbmsgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNldHRpbmdLZXkgPSAnZW50aXR5UGlja2VyRGF0YSc7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5BZHZhbmNlU2VhcmNoID0gdGhpcy5wYXJlbnRTZXR0aW5nLmhpZGRlbkFkdmFuY2VTZWFyY2g7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nV29ya2Zsb3cgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuV29ya2Zsb3dDb2x1bW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuV29ya2Zsb3dIaXN0b3J5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnRpdGxlID0gJ0Rhbmggc8OhY2ggY8OhYyBt4bulYyBjaMawYSBjaOG7jW4nO1xuICAgICAgICAvLyB0aGlzLnNldHRpbmcuY29scyA9IFsuLi50aGlzLnBhcmVudFNldHRpbmcuY29scy5tYXAocCA9PiAoeyAuLi5wIH0pKV07XG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2x1bW5TZXR0aW5nID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHVtblNldHRpbmc7XG4gICAgICAgIHRoaXMuc2V0dGluZy5maWVsZFNlYXJjaFRleHQgPSB0aGlzLnBhcmVudFNldHRpbmcuZmllbGRTZWFyY2hUZXh0O1xuICAgICAgICB0aGlzLnNldHRpbmcubXVsdGlwbGVDaGVja1doZW5DbGlja1JvdyA9ICF0aGlzLmlzU2luZ2xlU2VsZWN0aW9uO1xuICAgICAgICAvLyBUb2RvOiBIaWV1TkRcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSBpbnN0YW5jZW9mIENhbkJvSG9Tb1NlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZUZpZWxkRmlsdGVyID0gRGF0YXNvdXJjZUZpbHRlckNhbkJvO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZGF0YXNvdXJjZUZpZWxkRmlsdGVyPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZUZpZWxkRmlsdGVyID0gdGhpcy5jb250cm9sLmRhdGFzb3VyY2VGaWVsZEZpbHRlcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRyb2wuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzRGlzcGxheSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbCA9IG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5jb2RlLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogY29sdW1uLm11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogY29sdW1uLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICBpc0FycmF5RmllbGQ6IGNvbHVtbi5pc0FycmF5RmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29sdW1uLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IGNvbHVtbi5kYXRhVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogY29sdW1uLm1kV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogY29sdW1uLnRleHRBbGlnbixcbiAgICAgICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IGNvbHVtbi5iYXNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogY29sdW1uLnZhbHVlRmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogY29sdW1uLmRpc3BsYXlGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRQbHVzOiBjb2x1bW4uZmllbGRQbHVzLFxuICAgICAgICAgICAgICAgICAgICBzb3J0RmllbGQ6IGNvbHVtbi5zb3J0RmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHNvcnREaXI6IGNvbHVtbi5zb3J0RGlyLFxuICAgICAgICAgICAgICAgICAgICBzb3J0OiBjb2x1bW4uc29ydCxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6IGNvbHVtbi5maWVsZEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGNvbHVtbi5hbGxvd0ZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZ5RmlsdGVyOiBjb2x1bW4ubW9kaWZ5RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyczogY29sdW1uLmRlZmF1bHRGaWx0ZXJzLFxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUZpbHRlcjogY29sdW1uLnRlbXBsYXRlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICBmdW5jR2V0TGFiZWw6IGNvbHVtbi5mdW5jR2V0TGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNTZXRWYWx1ZVJvdzogY29sdW1uLmZ1bmNTZXRWYWx1ZVJvdyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogY29sdW1uLmRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQ29kZTogY29sdW1uLmdyb3VwQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgaXNPdmVycmlkZUZpbHRlcjogY29sdW1uLmlzT3ZlcnJpZGVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjb2x1bW4ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIGlzVHJlZTogY29sdW1uLmlzVHJlZSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUcmVlOiBjb2x1bW4uZmllbGRUcmVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IGNvbHVtbi52YWx1ZVBhcmVudFJvb3QsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PSAnY3VzdG9tJykge1xuICAgICAgICAgICAgICAgICAgICBuZXdDb2wuZGF0YVR5cGUgPSBjb2x1bW4uY29kZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMucHVzaChuZXdDb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fc2VsZWN0ZWRWYWx1ZS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX3NlbGVjdGVkVmFsdWVbdGhpcy5jb250cm9sLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlUm93U2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdChldmVudC5kYXRhKTtcbiAgICB9XG5cbiAgICBwaWNrRW50aXR5KGRhdGEpIHtcbiAgICAgICAgdGhpcy5vblBpY2suZW1pdChkYXRhKTtcbiAgICB9XG5cbiAgICBhc3luYyBwaWNrQWxsKCkge1xuICAgICAgICBjb25zdCBsc3REYXRhID0gKGF3YWl0IHRoaXMuc2V0dGluZy5iYXNlU2VydmljZS5nZXREYXRhQ3VzdG9tUm91dGUodGhpcy5wbHVzVXJsLCB0aGlzLmN1cnJlbnRHcmlkSW5mby5maWx0ZXJzLCB0aGlzLmNvbnRyb2wuZmllbGRzUGlja2VkID8/IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkLCB0aGlzLmN1cnJlbnRHcmlkSW5mby5zb3J0cywgLTEpKS5kYXRhID8/IFtdO1xuICAgICAgICBpZiAobHN0RGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMub25QaWNrQWxsLmVtaXQobHN0RGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwaWNrU2VsZWN0ZWQoZGF0YSkge1xuICAgICAgICB0aGlzLm9uUGlja1NlbGVjdGVkLmVtaXQoZGF0YSk7XG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm86IEdyaWRJbmZvKSB7XG4gICAgICAgIGdyaWRJbmZvLmZpZWxkcyA9IHRoaXMuYWR2YW5jZURhdGEuZmllbGRzO1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2wudmFsdWVGaWVsZCwgT3BlcmF0b3Iubm90SW4sIHRoaXMuX3ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLl92YWx1ZVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoaXMuX3ZhbHVlKSA9PSAnb2JqZWN0JylcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl92YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZCA/PyAnaWQnXTtcbiAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sLnZhbHVlRmllbGQsIE9wZXJhdG9yLm5vdEVxdWFsLCB2YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZ3JpZEluZm8uZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tb2RpZnlGaWx0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93ID0gYXdhaXQgdGhpcy5jb250cm9sLm1vZGlmeUZpbHRlcihncmlkSW5mby5maWx0ZXJzLCB0aGlzLCB0aGlzLmN1cnJlbnROb2RlKTtcbiAgICAgICAgICAgIGlmIChhbGxvdyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZpbHRlcldoaWxlUHJvY2Vzcykge1xuICAgICAgICAgICAgYXdhaXQgYXBwZW5kRGVmYXVsdEZpbHRlcihncmlkSW5mby5maWx0ZXJzLCB0aGlzLmNvbnRyb2wuZmlsdGVyV2hpbGVQcm9jZXNzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAodGhpcy5zZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydEZpZWxkKSB7XG4gICAgICAgIC8vICAgICBncmlkSW5mby5zb3J0cy5wdXNoKDxTb3J0PntcbiAgICAgICAgLy8gICAgICAgICBmaWVsZDogdGhpcy5zZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydEZpZWxkLFxuICAgICAgICAvLyAgICAgICAgIGRpcjogdGhpcy5zZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydERpciA/IDEgOiAtMVxuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoRGF0YSAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2VhcmNoRGF0YS5sc3REYXRhKSkge1xuICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKHRoaXMuc2VhcmNoRGF0YS5maWVsZEZpbHRlciwgT3BlcmF0b3IuaW4sIHRoaXMuc2VhcmNoRGF0YS5sc3REYXRhKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBiZWZvcmVSZW5kZXJEYXRhU291cmNlKGRhdGEpIHtcbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaXRlbS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iZWZvcmVSZW5kZXJEYXRhU291cmNlVW5QaWNrZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29udHJvbC5iZWZvcmVSZW5kZXJEYXRhU291cmNlVW5QaWNrZWQoZGF0YSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgYXN5bmMgYWZ0ZXJHZXREYXRhKCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLmFmdGVyR2V0RGF0YVVuUGlja2VkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRyb2wuYWZ0ZXJHZXREYXRhVW5QaWNrZWQodGhpcy5tb2RlbC5kYXRhU291cmNlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWFyY2hEYXRhICYmIHRoaXMuc2hvd0Zvcm1BZHZhbmNlZFNlYXJjaFxuICAgICAgICAgICAgJiYgdGhpcy5tb2RlbC5kYXRhU291cmNlLmxlbmd0aCAhPSB0aGlzLnNlYXJjaERhdGEubHN0RGF0YS5sZW5ndGhcbiAgICAgICAgICAgICYmIHRoaXMubW9kZWwudG90YWwgPCB0aGlzLnNlYXJjaERhdGEubHN0RGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckNoZWNrRXhpc3QgPSBbdGhpcy5uZXdGaWx0ZXIodGhpcy5zZWFyY2hEYXRhLmZpZWxkRmlsdGVyLCBPcGVyYXRvci5pbiwgdGhpcy5zZWFyY2hEYXRhLmxzdERhdGEpXTtcbiAgICAgICAgICAgIGNvbnN0IGxzdERhdGFDaGVja0V4aXN0ID0gKGF3YWl0IHRoaXMuc2V0dGluZy5iYXNlU2VydmljZS5nZXRBbGxXaXRoSWdub3JlKGZpbHRlckNoZWNrRXhpc3QsIHRoaXMuc2VhcmNoRGF0YS5maWVsZEZpbHRlcikpLmRhdGE7XG5cbiAgICAgICAgICAgIHRoaXMubHN0RGF0YU5vdEV4aXN0ID0gdGhpcy5zZWFyY2hEYXRhLmxzdERhdGEuZmlsdGVyKHAgPT4gIWxzdERhdGFDaGVja0V4aXN0LnNvbWUoYyA9PiBjW3RoaXMuc2VhcmNoRGF0YS5maWVsZEZpbHRlcl0gPT0gcCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybUFkdmFuY2VkU2VhcmNoID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWwoKSB7XG4gICAgfVxuXG4gICAgb25VbnNlbGVjdFBpY2tlclVzZXIoJGV2ZW50KSB7XG4gICAgfVxuXG4gICAgb25TZWxlY3RQaWNrZXJVc2VyKCRldmVudCkge1xuICAgIH1cblxuICAgIG9uVG9wYmFyU2VhcmNoQ2xpY2soKSB7XG4gICAgfVxuXG4gICAgY2xlYXJGaWx0ZXIoZXZ0KSB7XG4gICAgfVxuXG4gICAgaGFuZGxlQWR2YW5zZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1BZHZhbmNlZFNlYXJjaCA9IHRydWU7XG4gICAgfVxuICAgIGhhbmRsZVNlYXJjaChtb2RlbCkge1xuICAgICAgICB0aGlzLnNlYXJjaERhdGEgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlRmlsdGVySGVhZGVyQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAgICAvLyBOaOG6rW4gc+G7sSBraeG7h24gb25DaGFuZ2UgdOG7qyB0ZW1wbGF0ZUZpbHRlckhlYWRlciwgbeG6t2MgxJHhu4tuaCBs4buNYyBs4bqhaSBsxrDhu5tpXG4gICAgICAgIHRoaXMuX3RyaWdnZXJQcm9jZXNzRGF0YSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kVGVtcGxhdGUodGVtcGxhdGVOYW1lOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1vblNlcnZpY2UuZmluZFRlbXBsYXRlRnJvbUxpc3QodGhpcy5jaGlsZHJlbiwgdGVtcGxhdGVOYW1lKVxuICAgICAgICAgICAgPz8gdGhpcy5fY29tbW9uU2VydmljZS5maW5kVGVtcGxhdGVGcm9tTGlzdCh0aGlzLnRlbXBsYXRlcywgdGVtcGxhdGVOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzVGVtcGxhdGUodGVtcGxhdGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVbdGVtcGxhdGVOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlW3RlbXBsYXRlTmFtZV0gPSB0aGlzLmZpbmRUZW1wbGF0ZSh0ZW1wbGF0ZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlW3RlbXBsYXRlTmFtZV0gIT0gbnVsbDtcbiAgICB9XG4gICAgcHVibGljIGdldFRlbXBsYXRlKHRlbXBsYXRlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlW3RlbXBsYXRlTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVt0ZW1wbGF0ZU5hbWVdID0gdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVt0ZW1wbGF0ZU5hbWVdO1xuICAgIH1cbn1cblxuIl19
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLWRhdGEvZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQVEzRixNQUFNLE9BQU8seUJBQTBCLFNB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LFlBQVksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7O1lBeFFKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQywybElBQWtEO2dCQUVsRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWxCa0QsUUFBUTtZQUVsRCxxQkFBcUI7WUFEckIsWUFBWTs7O3dCQW1CaEIsS0FBSzs0QkFDTCxLQUFLOzBCQUNMLEtBQUs7c0JBQ0wsS0FBSztvQ0FDTCxLQUFLOzRCQUlMLEtBQUs7Z0NBTUwsS0FBSztzQkFDTCxLQUFLOzBCQUVMLEtBQUs7NEJBRUwsTUFBTTswQkFDTixNQUFNO3FCQUNOLE1BQU07d0JBQ04sTUFBTTs2QkFDTixNQUFNO3VCQUVOLGVBQWUsU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xuaW1wb3J0IHsgQ29sdW1uU2NoZW1hQmFzZSwgQ3J1ZExpc3RTZXR0aW5nLCBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hLCBIZWlnaHRUeXBlLCBPcGVyYXRvciwgUG9wdXBTaXplIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBGaWx0ZXIsIEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb250cm9sVHJlZU5vZGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jcnVkL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEFkdmFuY2VEYXRhRW50aXR5UGlja2VyLCBTZWFyY2hEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9hZHZhbmNlLWRhdGEnO1xuaW1wb3J0IHsgYXBwZW5kRGVmYXVsdEZpbHRlciB9IGZyb20gJy4vLi4vLi4vLi4vLi4vLi4vdXRpbHMvY29tbW9uJztcbmltcG9ydCB7IENhbkJvSG9Tb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IERhdGFzb3VyY2VGaWx0ZXJDYW5CbyB9IGZyb20gJy4uLy4uLy4uLy4uL3VzZXItcGlja2VyL21vZGVscy91c2VyLXBpY2tlci1zZXR0aW5nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtZW50aXR5LXBpY2tlci1kYXRhJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lbnRpdHktcGlja2VyLWRhdGEuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyRGF0YUNvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG4gICAgQElucHV0KCkgcGFyZW50U2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xuICAgIEBJbnB1dCgpIGFkdmFuY2VEYXRhOiBBZHZhbmNlRGF0YUVudGl0eVBpY2tlcjtcbiAgICBASW5wdXQoKSBjb250cm9sOiBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hO1xuICAgIEBJbnB1dCgpIGRhdGFzb3VyY2VGaWVsZEZpbHRlciA9IFtdO1xuICAgIF9zZWxlY3RlZFZhbHVlOiBhbnk7XG4gICAgX3ZhbHVlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUHJvY2Vzc0RhdGEoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBpc1NpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGZpbHRlcnM6IEZpbHRlcltdO1xuXG4gICAgQElucHV0KCkgY3VycmVudE5vZGU6IENvbnRyb2xUcmVlTm9kZTsgLy8gQ3VycmVudCBub2RlIGNobyBsw7pjIGNvbXBvbmVudCDEkWFuZyDhu58gdHJvbmcgZm9ybVxuXG4gICAgQE91dHB1dCgpIG9uQ29udGVudEluaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvblJvd1NlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uUGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uUGlja0FsbDogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25QaWNrU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGVtcGxhdGU6IGFueSA9IHt9O1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVSZWYpIGNoaWxkcmVuOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvLyBDb250ZXh0IHRydXnhu4FuIHbDoG8gdGVtcGxhdGVGaWx0ZXJIZWFkZXIgxJHhu4MgdGVtcGxhdGUgZ+G7jWkgbmfGsOG7o2MgbOG6oWkgKG9uQ2hhbmdlL3JlbG9hZClcbiAgICBmaWx0ZXJIZWFkZXJDb250ZXh0OiBhbnkgPSB7XG4gICAgICAgICRpbXBsaWNpdDogdGhpcyxcbiAgICAgICAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB0aGlzLmhhbmRsZUZpbHRlckhlYWRlckNoYW5nZSh2YWx1ZSksXG4gICAgICAgIHJlbG9hZDogKCkgPT4gdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCksXG4gICAgfTtcblxuICAgIHNob3dGb3JtQWR2YW5jZWRTZWFyY2ggPSBmYWxzZTtcbiAgICBwb3B1cFNpemVTZWFyY2hGb3JtID0gbmV3IFBvcHVwU2l6ZSh7IHdpZHRoOiAxMDAwLCBoZWlnaHQ6IDcwMCB9KTtcbiAgICBzZWFyY2hEYXRhOiBTZWFyY2hEYXRhTW9kZWw7XG4gICAgc2NoZW1hRGF0YTogYW55ID0ge307XG4gICAgbHN0RGF0YU5vdEV4aXN0ID0gW107XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHB1YmxpYyBfZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBkb206IERvbVNhbml0aXplclxuICAgICkge1xuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvYWREZXRhaWxGcm9tUXVlcnlQYXJhbSA9IHRydWU7XG4gICAgICAgIHRoaXMucGx1c1VybCA9IHRoaXMuY29udHJvbC5wbHVzVXJsO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQXV0aG9yaXplQnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLnNldHRpbmcucGFnZVNldHRpbmcucGFnZVNpemUgPSB0aGlzLmNvbnRyb2wucGFnZVNpemUgPz8gMzA7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9ICF0aGlzLmNvbnRyb2wubXVsdGlwbGU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5jdXN0b207XG4gICAgICAgIHRoaXMuc2V0dGluZy5zaG93RWRpdExpbmsgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNldHRpbmdLZXkgPSAnZW50aXR5UGlja2VyRGF0YSc7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5BZHZhbmNlU2VhcmNoID0gdGhpcy5wYXJlbnRTZXR0aW5nLmhpZGRlbkFkdmFuY2VTZWFyY2g7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nV29ya2Zsb3cgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuV29ya2Zsb3dDb2x1bW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuV29ya2Zsb3dIaXN0b3J5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnRpdGxlID0gJ0Rhbmggc8OhY2ggY8OhYyBt4bulYyBjaMawYSBjaOG7jW4nO1xuICAgICAgICAvLyB0aGlzLnNldHRpbmcuY29scyA9IFsuLi50aGlzLnBhcmVudFNldHRpbmcuY29scy5tYXAocCA9PiAoeyAuLi5wIH0pKV07XG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2x1bW5TZXR0aW5nID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHVtblNldHRpbmc7XG4gICAgICAgIHRoaXMuc2V0dGluZy5maWVsZFNlYXJjaFRleHQgPSB0aGlzLnBhcmVudFNldHRpbmcuZmllbGRTZWFyY2hUZXh0O1xuICAgICAgICB0aGlzLnNldHRpbmcubXVsdGlwbGVDaGVja1doZW5DbGlja1JvdyA9ICF0aGlzLmlzU2luZ2xlU2VsZWN0aW9uO1xuICAgICAgICAvLyBUb2RvOiBIaWV1TkRcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSBpbnN0YW5jZW9mIENhbkJvSG9Tb1NlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZUZpZWxkRmlsdGVyID0gRGF0YXNvdXJjZUZpbHRlckNhbkJvO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZGF0YXNvdXJjZUZpZWxkRmlsdGVyPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZUZpZWxkRmlsdGVyID0gdGhpcy5jb250cm9sLmRhdGFzb3VyY2VGaWVsZEZpbHRlcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRyb2wuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzRGlzcGxheSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbCA9IG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5jb2RlLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogY29sdW1uLm11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogY29sdW1uLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICBpc0FycmF5RmllbGQ6IGNvbHVtbi5pc0FycmF5RmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29sdW1uLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IGNvbHVtbi5kYXRhVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogY29sdW1uLm1kV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogY29sdW1uLnRleHRBbGlnbixcbiAgICAgICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IGNvbHVtbi5iYXNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogY29sdW1uLnZhbHVlRmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogY29sdW1uLmRpc3BsYXlGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRQbHVzOiBjb2x1bW4uZmllbGRQbHVzLFxuICAgICAgICAgICAgICAgICAgICBzb3J0RmllbGQ6IGNvbHVtbi5zb3J0RmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHNvcnREaXI6IGNvbHVtbi5zb3J0RGlyLFxuICAgICAgICAgICAgICAgICAgICBzb3J0OiBjb2x1bW4uc29ydCxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6IGNvbHVtbi5maWVsZEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGNvbHVtbi5hbGxvd0ZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZ5RmlsdGVyOiBjb2x1bW4ubW9kaWZ5RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyczogY29sdW1uLmRlZmF1bHRGaWx0ZXJzLFxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUZpbHRlcjogY29sdW1uLnRlbXBsYXRlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICBmdW5jR2V0TGFiZWw6IGNvbHVtbi5mdW5jR2V0TGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNTZXRWYWx1ZVJvdzogY29sdW1uLmZ1bmNTZXRWYWx1ZVJvdyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogY29sdW1uLmRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQ29kZTogY29sdW1uLmdyb3VwQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgaXNPdmVycmlkZUZpbHRlcjogY29sdW1uLmlzT3ZlcnJpZGVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjb2x1bW4ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIGlzVHJlZTogY29sdW1uLmlzVHJlZSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUcmVlOiBjb2x1bW4uZmllbGRUcmVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IGNvbHVtbi52YWx1ZVBhcmVudFJvb3QsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PSAnY3VzdG9tJykge1xuICAgICAgICAgICAgICAgICAgICBuZXdDb2wuZGF0YVR5cGUgPSBjb2x1bW4uY29kZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMucHVzaChuZXdDb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fc2VsZWN0ZWRWYWx1ZS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX3NlbGVjdGVkVmFsdWVbdGhpcy5jb250cm9sLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlUm93U2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdChldmVudC5kYXRhKTtcbiAgICB9XG5cbiAgICBwaWNrRW50aXR5KGRhdGEpIHtcbiAgICAgICAgdGhpcy5vblBpY2suZW1pdChkYXRhKTtcbiAgICB9XG5cbiAgICBhc3luYyBwaWNrQWxsKCkge1xuICAgICAgICBjb25zdCBsc3REYXRhID0gKGF3YWl0IHRoaXMuc2V0dGluZy5iYXNlU2VydmljZS5nZXREYXRhQ3VzdG9tUm91dGUodGhpcy5wbHVzVXJsLCB0aGlzLmN1cnJlbnRHcmlkSW5mby5maWx0ZXJzLCB0aGlzLmNvbnRyb2wuZmllbGRzUGlja2VkID8/IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkLCB0aGlzLmN1cnJlbnRHcmlkSW5mby5zb3J0cywgLTEpKS5kYXRhID8/IFtdO1xuICAgICAgICBpZiAobHN0RGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMub25QaWNrQWxsLmVtaXQobHN0RGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwaWNrU2VsZWN0ZWQoZGF0YSkge1xuICAgICAgICB0aGlzLm9uUGlja1NlbGVjdGVkLmVtaXQoZGF0YSk7XG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm86IEdyaWRJbmZvKSB7XG4gICAgICAgIGdyaWRJbmZvLmZpZWxkcyA9IHRoaXMuYWR2YW5jZURhdGEuZmllbGRzO1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2wudmFsdWVGaWVsZCwgT3BlcmF0b3Iubm90SW4sIHRoaXMuX3ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLl92YWx1ZVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHRoaXMuX3ZhbHVlKSA9PSAnb2JqZWN0JylcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl92YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZCA/PyAnaWQnXTtcbiAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sLnZhbHVlRmllbGQsIE9wZXJhdG9yLm5vdEVxdWFsLCB2YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZ3JpZEluZm8uZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tb2RpZnlGaWx0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93ID0gYXdhaXQgdGhpcy5jb250cm9sLm1vZGlmeUZpbHRlcihncmlkSW5mby5maWx0ZXJzLCB0aGlzLCB0aGlzLmN1cnJlbnROb2RlKTtcbiAgICAgICAgICAgIGlmIChhbGxvdyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZpbHRlcldoaWxlUHJvY2Vzcykge1xuICAgICAgICAgICAgYXdhaXQgYXBwZW5kRGVmYXVsdEZpbHRlcihncmlkSW5mby5maWx0ZXJzLCB0aGlzLmNvbnRyb2wuZmlsdGVyV2hpbGVQcm9jZXNzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAodGhpcy5zZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydEZpZWxkKSB7XG4gICAgICAgIC8vICAgICBncmlkSW5mby5zb3J0cy5wdXNoKDxTb3J0PntcbiAgICAgICAgLy8gICAgICAgICBmaWVsZDogdGhpcy5zZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydEZpZWxkLFxuICAgICAgICAvLyAgICAgICAgIGRpcjogdGhpcy5zZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydERpciA/IDEgOiAtMVxuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoRGF0YSAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2VhcmNoRGF0YS5sc3REYXRhKSkge1xuICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKHRoaXMuc2VhcmNoRGF0YS5maWVsZEZpbHRlciwgT3BlcmF0b3IuaW4sIHRoaXMuc2VhcmNoRGF0YS5sc3REYXRhKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBiZWZvcmVSZW5kZXJEYXRhU291cmNlKGRhdGEpIHtcbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaXRlbS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iZWZvcmVSZW5kZXJEYXRhU291cmNlVW5QaWNrZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29udHJvbC5iZWZvcmVSZW5kZXJEYXRhU291cmNlVW5QaWNrZWQoZGF0YSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgYXN5bmMgYWZ0ZXJHZXREYXRhKCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLmFmdGVyR2V0RGF0YVVuUGlja2VkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRyb2wuYWZ0ZXJHZXREYXRhVW5QaWNrZWQodGhpcy5tb2RlbC5kYXRhU291cmNlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWFyY2hEYXRhICYmIHRoaXMuc2hvd0Zvcm1BZHZhbmNlZFNlYXJjaFxuICAgICAgICAgICAgJiYgdGhpcy5tb2RlbC5kYXRhU291cmNlLmxlbmd0aCAhPSB0aGlzLnNlYXJjaERhdGEubHN0RGF0YS5sZW5ndGhcbiAgICAgICAgICAgICYmIHRoaXMubW9kZWwudG90YWwgPCB0aGlzLnNlYXJjaERhdGEubHN0RGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckNoZWNrRXhpc3QgPSBbdGhpcy5uZXdGaWx0ZXIodGhpcy5zZWFyY2hEYXRhLmZpZWxkRmlsdGVyLCBPcGVyYXRvci5pbiwgdGhpcy5zZWFyY2hEYXRhLmxzdERhdGEpXTtcbiAgICAgICAgICAgIGNvbnN0IGxzdERhdGFDaGVja0V4aXN0ID0gKGF3YWl0IHRoaXMuc2V0dGluZy5iYXNlU2VydmljZS5nZXRBbGxXaXRoSWdub3JlKGZpbHRlckNoZWNrRXhpc3QsIHRoaXMuc2VhcmNoRGF0YS5maWVsZEZpbHRlcikpLmRhdGE7XG5cbiAgICAgICAgICAgIHRoaXMubHN0RGF0YU5vdEV4aXN0ID0gdGhpcy5zZWFyY2hEYXRhLmxzdERhdGEuZmlsdGVyKHAgPT4gIWxzdERhdGFDaGVja0V4aXN0LnNvbWUoYyA9PiBjW3RoaXMuc2VhcmNoRGF0YS5maWVsZEZpbHRlcl0gPT0gcCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybUFkdmFuY2VkU2VhcmNoID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWwoKSB7XG4gICAgfVxuXG4gICAgb25VbnNlbGVjdFBpY2tlclVzZXIoJGV2ZW50KSB7XG4gICAgfVxuXG4gICAgb25TZWxlY3RQaWNrZXJVc2VyKCRldmVudCkge1xuICAgIH1cblxuICAgIG9uVG9wYmFyU2VhcmNoQ2xpY2soKSB7XG4gICAgfVxuXG4gICAgY2xlYXJGaWx0ZXIoZXZ0KSB7XG4gICAgfVxuXG4gICAgaGFuZGxlQWR2YW5zZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1BZHZhbmNlZFNlYXJjaCA9IHRydWU7XG4gICAgfVxuICAgIGhhbmRsZVNlYXJjaChtb2RlbCkge1xuICAgICAgICB0aGlzLnNlYXJjaERhdGEgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlRmlsdGVySGVhZGVyQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAgICAvLyBOaOG6rW4gc+G7sSBraeG7h24gb25DaGFuZ2UgdOG7qyB0ZW1wbGF0ZUZpbHRlckhlYWRlciwgbeG6t2MgxJHhu4tuaCBs4buNYyBs4bqhaSBsxrDhu5tpXG4gICAgICAgIHRoaXMuX3RyaWdnZXJQcm9jZXNzRGF0YSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kVGVtcGxhdGUodGVtcGxhdGVOYW1lOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1vblNlcnZpY2UuZmluZFRlbXBsYXRlRnJvbUxpc3QodGhpcy5jaGlsZHJlbiwgdGVtcGxhdGVOYW1lKVxuICAgICAgICAgICAgPz8gdGhpcy5fY29tbW9uU2VydmljZS5maW5kVGVtcGxhdGVGcm9tTGlzdCh0aGlzLnRlbXBsYXRlcywgdGVtcGxhdGVOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzVGVtcGxhdGUodGVtcGxhdGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVbdGVtcGxhdGVOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlW3RlbXBsYXRlTmFtZV0gPSB0aGlzLmZpbmRUZW1wbGF0ZSh0ZW1wbGF0ZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlW3RlbXBsYXRlTmFtZV0gIT0gbnVsbDtcbiAgICB9XG4gICAgcHVibGljIGdldFRlbXBsYXRlKHRlbXBsYXRlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlW3RlbXBsYXRlTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVt0ZW1wbGF0ZU5hbWVdID0gdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVt0ZW1wbGF0ZU5hbWVdO1xuICAgIH1cbn1cblxuIl19
@@ -100,7 +100,7 @@ export class TnDialogComponent {
100
100
  TnDialogComponent.decorators = [
101
101
  { type: Component, args: [{
102
102
  selector: 'tn-dialog',
103
- template: "<p-dialog #dialog [closeOnEscape]=\"closeOnEscape\" [appendTo]=\"'body'\" [focusOnShow]=\"false\" [focusTrap]=\"false\"\n [(visible)]=\"visible\" [modal]=\"modal\" [responsive]=\"true\" [maximizable]=\"maximizable\" [autoZIndex]=\"true\"\n [styleClass]=\"styleClass\" [maskStyleClass]=\"maskClass\" [showHeader]=\"showHeader\"\n [style]=\"{'width': popupSize.width + 'px', 'min-width': popupSize.width + 'px', 'height': popupSize.height + 'px', 'min-height': popupSize.height + 'px'}\"\n (onShow)=\"handleShowDialog($event)\" (onHide)=\"handleHideDialog($event)\">\n <tn-custom-scrollbar #scrollbar [useDefaultScrollBar]=\"useDefaultScrollBar\" [class]=\"scrollBarStyleClass\"\n [config]=\"scrollConfig\" [style]=\"scrollStyle\" class=\"tn-dialog-scrollbar\">\n <ng-content></ng-content>\n </tn-custom-scrollbar>\n <p-header *ngIf=\"showHeader\">\n <ng-container *ngIf=\"header && !headerTemplate\">\n <div>{{header | translate}}</div>\n </ng-container>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </p-header>\n <p-footer *ngIf=\"showFooter\">\n <p-footer *ngIf=\"formBase && formBase.buttonTemplate\" style=\"display: flex;float: right\">\n <ng-container *ngTemplateOutlet=\"formBase.buttonTemplate\">\n </ng-container>\n </p-footer>\n <ng-container *ngIf=\"!formBase || !formBase.buttonTemplate\">\n <p-footer *ngIf=\"footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </p-footer>\n <p-footer *ngIf=\"buttonTemplateInput\">\n <ng-container *ngTemplateOutlet=\"buttonTemplateInput\"></ng-container>\n </p-footer>\n <p-footer *ngIf=\"!footer && !buttonTemplateInput\">\n <button pButton preventTab type=\"button\" icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"handleHideDialog($event)\"></button>\n </p-footer>\n </ng-container>\n </p-footer>\n</p-dialog>",
103
+ template: "<p-dialog #dialog [closeOnEscape]=\"closeOnEscape\" [appendTo]=\"'body'\" [focusOnShow]=\"false\" [focusTrap]=\"false\"\n [(visible)]=\"visible\" [modal]=\"modal\" [responsive]=\"true\" [maximizable]=\"maximizable\" [autoZIndex]=\"true\"\n [styleClass]=\"styleClass\" [maskStyleClass]=\"maskClass\" [showHeader]=\"showHeader\"\n [style]=\"{'width': popupSize.width + 'px', 'min-width': popupSize.width + 'px', 'height': popupSize.height + 'px', 'min-height': popupSize.height + 'px'}\"\n (onShow)=\"handleShowDialog($event)\" (onHide)=\"handleHideDialog($event)\">\n <tn-custom-scrollbar #scrollbar [useDefaultScrollBar]=\"useDefaultScrollBar\" [class]=\"scrollBarStyleClass\"\n [config]=\"scrollConfig\" [style]=\"scrollStyle\" class=\"tn-dialog-scrollbar\">\n <ng-content></ng-content>\n </tn-custom-scrollbar>\n <p-header *ngIf=\"showHeader\">\n <ng-container *ngIf=\"header && !headerTemplate\">\n <div>{{header | translate}}</div>\n </ng-container>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </p-header>\n <p-footer *ngIf=\"showFooter\">\n <p-footer *ngIf=\"formBase && formBase.buttonTemplate\" style=\"display: flex;float: right\">\n <button *ngFor=\"let butt of formBase.buttons\" pButton [icon]=\"butt.icon\" class=\"p-button-text\"\n [label]=\"butt.label\" (click)=\"butt.command()\"></button>\n <ng-container *ngTemplateOutlet=\"formBase.buttonTemplate\">\n </ng-container>\n </p-footer>\n <ng-container *ngIf=\"!formBase || !formBase.buttonTemplate\">\n <p-footer *ngIf=\"footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </p-footer>\n <p-footer *ngIf=\"buttonTemplateInput\">\n <ng-container *ngTemplateOutlet=\"buttonTemplateInput\"></ng-container>\n </p-footer>\n <p-footer *ngIf=\"!footer && !buttonTemplateInput\">\n <button pButton preventTab type=\"button\" icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"handleHideDialog($event)\"></button>\n </p-footer>\n </ng-container>\n </p-footer>\n</p-dialog>",
104
104
  styles: [""]
105
105
  },] }
106
106
  ];
@@ -137,4 +137,4 @@ TnDialogComponent.propDecorators = {
137
137
  onHide: [{ type: Output }],
138
138
  onResize: [{ type: HostListener, args: ['window:resize',] }]
139
139
  };
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RuLWRpYWxvZy90bi1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQU9sRyxNQUFNLE9BQU8saUJBQWlCO0lBOEMxQixZQUNZLFNBQW1CLEVBQ25CLHNCQUE2QztRQUQ3QyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUE1QmhELFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBR2Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixlQUFVLEdBQUcsSUFBSSxDQUFD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QVE7WUFRSCxxQkFBcUI7OztxQkFjekIsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7d0JBQ3BDLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3VCQUV2QyxZQUFZLFNBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtxQkFRMUMsWUFBWSxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7NkJBQ3ZDLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7dUJBQy9DLGVBQWUsU0FBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO3dCQUVsRCxLQUFLO3lCQUNMLEtBQUs7a0NBQ0wsS0FBSztrQ0FDTCxLQUFLO3NCQUNMLEtBQUs7NkJBQ0wsS0FBSztvQkFDTCxLQUFLO3FCQUNMLEtBQUs7d0JBQ0wsS0FBSzs0QkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzttQkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzt5QkFDTCxLQUFLO3FCQUNMLE1BQU07dUJBQ04sTUFBTTtxQkFDTixNQUFNO3FCQUNOLE1BQU07dUJBdUROLFlBQVksU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2VXaXRoQnV0dG9uIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlLXdpdGgtYnV0dG9uJztcbmltcG9ydCB7IFBvcHVwU2l6ZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb20uc2VydmljZSc7XG5pbXBvcnQgeyBUbkN1c3RvbVNjcm9sbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3RuLWN1c3RvbS1zY3JvbGxiYXIvdG4tY3VzdG9tLXNjcm9sbGJhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RuLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RuLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG4tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVG5EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZzogRGlhbG9nO1xuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbGJhcicsIHsgc3RhdGljOiB0cnVlIH0pIHNjcm9sbGJhcjogVG5DdXN0b21TY3JvbGxiYXJDb21wb25lbnQ7XG4gICAgX2Zvcm1CYXNlOiBDb21wb25lbnRCYXNlV2l0aEJ1dHRvbjtcbiAgICBAQ29udGVudENoaWxkKCdmb3JtQmFzZScsIHsgc3RhdGljOiBmYWxzZSB9KSBzZXQgZm9ybUJhc2UodmFsdWU6IENvbXBvbmVudEJhc2VXaXRoQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuX2Zvcm1CYXNlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm1CYXNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUJhc2U7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZCgnZm9vdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgZm9vdGVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlclRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZVJlZiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBjaGlsZHJlbjogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgQElucHV0KCkgbWFza0NsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNjcm9sbEJhclN0eWxlQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSB1c2VEZWZhdWx0U2Nyb2xsQmFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHZpc2libGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkQnV0dG9uID0gZmFsc2U7XG4gICAgQElucHV0KCkgbW9kYWwgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBvcHVwU2l6ZTogUG9wdXBTaXplO1xuICAgIEBJbnB1dCgpIGNsb3NlT25Fc2NhcGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHNob3dGb290ZXIgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uVG9wOiBudW1iZXI7XG4gICAgQElucHV0KCkgbWluWTogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGhpZGRlblNhdmUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIG1heGltaXphYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBzaG93SGVhZGVyID0gdHJ1ZTtcbiAgICBAT3V0cHV0KCkgb25TYXZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBidXR0b25UZW1wbGF0ZUlucHV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHNjcm9sbENvbmZpZyA9IHsgc3VwcHJlc3NTY3JvbGxYOiB0cnVlLCBzdXBwcmVzc1Njcm9sbFk6IGZhbHNlIH07XG4gICAgc2Nyb2xsU3R5bGUgPSB7fTtcbiAgICBkaWFsb2dDb250ZW50RG9tOiBhbnk7XG4gICAgaXNPbk1vYmlsZTtcblxuICAgIHByb3RlY3RlZCBfZG9tU2VydmljZTogRG9tU2VydmljZTtcbiAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIF9kZXZpY2VEZXRlY3RvclNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl9kb21TZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KERvbVNlcnZpY2UpO1xuICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KENvbW1vblNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmlzT25Nb2JpbGUgPSB0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNNb2JpbGUoKTtcbiAgICAgICAgaWYgKCF0aGlzLnBvcHVwU2l6ZSkgdGhpcy5wb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKCk7XG4gICAgICAgIGlmICh0aGlzLnBvcHVwU2l6ZS5tYXhpbWl6ZSB8fCB0aGlzLmlzT25Nb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMucG9wdXBTaXplLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB0aGlzLnBvcHVwU2l6ZS5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wdXBTaXplLndpZHRoKSB0aGlzLnBvcHVwU2l6ZS53aWR0aCA9IDgwMDtcbiAgICAgICAgICAgIGlmICghdGhpcy5wb3B1cFNpemUuaGVpZ2h0KSB0aGlzLnBvcHVwU2l6ZS5oZWlnaHQgPSA1MDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldHVwU2Nyb2xsU3R5bGUoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29tcG9uZW50QnlUeXBlKCdidXR0b25UZW1wbGF0ZScpO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTaG93RGlhbG9nKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nQ29udGVudERvbSA9IHRoaXMuZGlhbG9nLndyYXBwZXI7XG4gICAgICAgIGlmICh0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgdGhpcy5tYXhpbWl6ZSgpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cubWF4aW1pemFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnBvcHVwU2l6ZS5tYXhpbWl6ZSkge1xuICAgICAgICAgICAgdGhpcy5tYXhpbWl6ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgdGhpcy5vblJlc2l6ZSgpO1xuICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBoYW5kbGVIaWRlRGlhbG9nKGV2ZW50KSB7XG4gICAgICAgIHRoaXMub25IaWRlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIG9uUmVzaXplKCkge1xuICAgICAgICBpZiAodGhpcy5wb3B1cFNpemUud2lkdGggJiYgdGhpcy5fZG9tU2VydmljZS5tYXhpbWl6ZURpYWxvZyh0aGlzLmRpYWxvZ0NvbnRlbnREb20sIHRoaXMucG9wdXBTaXplKSkge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgdGhpcy5wb3B1cFNpemUud2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVwU2l6ZS53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lckhlaWdodCA8IHRoaXMucG9wdXBTaXplLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wdXBTaXplLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0dXBTY3JvbGxTdHlsZSgpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cubWF4aW1pemFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldHVwU2Nyb2xsU3R5bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc09uTW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFN0eWxlID0geyBtaW5IZWlnaHQ6ICh0aGlzLnBvcHVwU2l6ZS5oZWlnaHQgLSAxMDQpICsgJ3B4JyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2VudGVyKCkge1xuICAgICAgICB0aGlzLmRpYWxvZy5jZW50ZXIoKTtcbiAgICB9XG5cbiAgICBtYXhpbWl6ZSgpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cubWF4aW1pemUoKTtcbiAgICAgICAgLy8gVHJpY2sgZm9yIGJ1ZyBwcmltZW5nXG4gICAgICAgIHRoaXMuZGlhbG9nLm1heGltaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0Q29tcG9uZW50QnlUeXBlKGNvbnRyb2xUeXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1vblNlcnZpY2UuZmluZFRlbXBsYXRlRnJvbUxpc3QodGhpcy5jaGlsZHJlbiwgY29udHJvbFR5cGUpO1xuICAgIH1cbn1cbiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RuLWRpYWxvZy90bi1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQU9sRyxNQUFNLE9BQU8saUJBQWlCO0lBOEMxQixZQUNZLFNBQW1CLEVBQ25CLHNCQUE2QztRQUQ3QyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUE1QmhELFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBR2Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixlQUFVLEdBQUcsSUFBSSxDQUFD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QVE7WUFRSCxxQkFBcUI7OztxQkFjekIsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7d0JBQ3BDLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3VCQUV2QyxZQUFZLFNBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtxQkFRMUMsWUFBWSxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7NkJBQ3ZDLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7dUJBQy9DLGVBQWUsU0FBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO3dCQUVsRCxLQUFLO3lCQUNMLEtBQUs7a0NBQ0wsS0FBSztrQ0FDTCxLQUFLO3NCQUNMLEtBQUs7NkJBQ0wsS0FBSztvQkFDTCxLQUFLO3FCQUNMLEtBQUs7d0JBQ0wsS0FBSzs0QkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzttQkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzt5QkFDTCxLQUFLO3FCQUNMLE1BQU07dUJBQ04sTUFBTTtxQkFDTixNQUFNO3FCQUNOLE1BQU07dUJBdUROLFlBQVksU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2VXaXRoQnV0dG9uIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlLXdpdGgtYnV0dG9uJztcbmltcG9ydCB7IFBvcHVwU2l6ZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb20uc2VydmljZSc7XG5pbXBvcnQgeyBUbkN1c3RvbVNjcm9sbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3RuLWN1c3RvbS1zY3JvbGxiYXIvdG4tY3VzdG9tLXNjcm9sbGJhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RuLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RuLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG4tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVG5EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZzogRGlhbG9nO1xuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbGJhcicsIHsgc3RhdGljOiB0cnVlIH0pIHNjcm9sbGJhcjogVG5DdXN0b21TY3JvbGxiYXJDb21wb25lbnQ7XG4gICAgX2Zvcm1CYXNlOiBDb21wb25lbnRCYXNlV2l0aEJ1dHRvbjtcbiAgICBAQ29udGVudENoaWxkKCdmb3JtQmFzZScsIHsgc3RhdGljOiBmYWxzZSB9KSBzZXQgZm9ybUJhc2UodmFsdWU6IENvbXBvbmVudEJhc2VXaXRoQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuX2Zvcm1CYXNlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm1CYXNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUJhc2U7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZCgnZm9vdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgZm9vdGVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlclRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZVJlZiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBjaGlsZHJlbjogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgQElucHV0KCkgbWFza0NsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNjcm9sbEJhclN0eWxlQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSB1c2VEZWZhdWx0U2Nyb2xsQmFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHZpc2libGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkQnV0dG9uID0gZmFsc2U7XG4gICAgQElucHV0KCkgbW9kYWwgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBvcHVwU2l6ZTogUG9wdXBTaXplO1xuICAgIEBJbnB1dCgpIGNsb3NlT25Fc2NhcGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHNob3dGb290ZXIgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uVG9wOiBudW1iZXI7XG4gICAgQElucHV0KCkgbWluWTogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGhpZGRlblNhdmUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIG1heGltaXphYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBzaG93SGVhZGVyID0gdHJ1ZTtcbiAgICBAT3V0cHV0KCkgb25TYXZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBidXR0b25UZW1wbGF0ZUlucHV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHNjcm9sbENvbmZpZyA9IHsgc3VwcHJlc3NTY3JvbGxYOiB0cnVlLCBzdXBwcmVzc1Njcm9sbFk6IGZhbHNlIH07XG4gICAgc2Nyb2xsU3R5bGUgPSB7fTtcbiAgICBkaWFsb2dDb250ZW50RG9tOiBhbnk7XG4gICAgaXNPbk1vYmlsZTtcblxuICAgIHByb3RlY3RlZCBfZG9tU2VydmljZTogRG9tU2VydmljZTtcbiAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIF9kZXZpY2VEZXRlY3RvclNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl9kb21TZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KERvbVNlcnZpY2UpO1xuICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KENvbW1vblNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmlzT25Nb2JpbGUgPSB0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNNb2JpbGUoKTtcbiAgICAgICAgaWYgKCF0aGlzLnBvcHVwU2l6ZSkgdGhpcy5wb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKCk7XG4gICAgICAgIGlmICh0aGlzLnBvcHVwU2l6ZS5tYXhpbWl6ZSB8fCB0aGlzLmlzT25Nb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMucG9wdXBTaXplLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB0aGlzLnBvcHVwU2l6ZS5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wdXBTaXplLndpZHRoKSB0aGlzLnBvcHVwU2l6ZS53aWR0aCA9IDgwMDtcbiAgICAgICAgICAgIGlmICghdGhpcy5wb3B1cFNpemUuaGVpZ2h0KSB0aGlzLnBvcHVwU2l6ZS5oZWlnaHQgPSA1MDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldHVwU2Nyb2xsU3R5bGUoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29tcG9uZW50QnlUeXBlKCdidXR0b25UZW1wbGF0ZScpO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTaG93RGlhbG9nKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nQ29udGVudERvbSA9IHRoaXMuZGlhbG9nLndyYXBwZXI7XG4gICAgICAgIGlmICh0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgdGhpcy5tYXhpbWl6ZSgpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cubWF4aW1pemFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnBvcHVwU2l6ZS5tYXhpbWl6ZSkge1xuICAgICAgICAgICAgdGhpcy5tYXhpbWl6ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgdGhpcy5vblJlc2l6ZSgpO1xuICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBoYW5kbGVIaWRlRGlhbG9nKGV2ZW50KSB7XG4gICAgICAgIHRoaXMub25IaWRlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIG9uUmVzaXplKCkge1xuICAgICAgICBpZiAodGhpcy5wb3B1cFNpemUud2lkdGggJiYgdGhpcy5fZG9tU2VydmljZS5tYXhpbWl6ZURpYWxvZyh0aGlzLmRpYWxvZ0NvbnRlbnREb20sIHRoaXMucG9wdXBTaXplKSkge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgdGhpcy5wb3B1cFNpemUud2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVwU2l6ZS53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lckhlaWdodCA8IHRoaXMucG9wdXBTaXplLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wdXBTaXplLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0dXBTY3JvbGxTdHlsZSgpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cubWF4aW1pemFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldHVwU2Nyb2xsU3R5bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc09uTW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFN0eWxlID0geyBtaW5IZWlnaHQ6ICh0aGlzLnBvcHVwU2l6ZS5oZWlnaHQgLSAxMDQpICsgJ3B4JyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2VudGVyKCkge1xuICAgICAgICB0aGlzLmRpYWxvZy5jZW50ZXIoKTtcbiAgICB9XG5cbiAgICBtYXhpbWl6ZSgpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cubWF4aW1pemUoKTtcbiAgICAgICAgLy8gVHJpY2sgZm9yIGJ1ZyBwcmltZW5nXG4gICAgICAgIHRoaXMuZGlhbG9nLm1heGltaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0Q29tcG9uZW50QnlUeXBlKGNvbnRyb2xUeXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1vblNlcnZpY2UuZmluZFRlbXBsYXRlRnJvbUxpc3QodGhpcy5jaGlsZHJlbiwgY29udHJvbFR5cGUpO1xuICAgIH1cbn1cbiJdfQ==