@mediusinc/mng-commons 2.0.0 → 2.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.
@@ -18,9 +18,9 @@ import * as i1 from "@ngx-translate/core";
18
18
  import * as i2 from "@ngx-formly/core";
19
19
  import * as i3 from "@angular/forms";
20
20
  import * as i4 from "primeng/button";
21
- import * as i5 from "primeng/api";
22
- import * as i6 from "primeng/ripple";
23
- import * as i7 from "primeng/dialog";
21
+ import * as i5 from "primeng/ripple";
22
+ import * as i6 from "primeng/dialog";
23
+ import * as i7 from "primeng/api";
24
24
  import * as i8 from "primeng/messages";
25
25
  import * as i9 from "primeng/inputtext";
26
26
  export class MngFormlyFieldLookupDialogComponent extends FieldType {
@@ -181,7 +181,7 @@ export class MngFormlyFieldLookupDialogComponent extends FieldType {
181
181
  }
182
182
  }
183
183
  MngFormlyFieldLookupDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
184
- MngFormlyFieldLookupDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngFormlyFieldLookupDialogComponent, isStandalone: true, selector: "mng-formly-field-lookup-dialog", viewQueries: [{ propertyName: "mngTable", first: true, predicate: MngTableComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!props.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate : {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate : {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnActionComponent]=\"config.table?.columnActionComponent\"\n [viewContainer]=\"viewContainer\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i7.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i8.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i9.InputText, selector: "[pInputText]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
184
+ MngFormlyFieldLookupDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngFormlyFieldLookupDialogComponent, isStandalone: true, selector: "mng-formly-field-lookup-dialog", viewQueries: [{ propertyName: "mngTable", first: true, predicate: MngTableComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!props.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate : {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate : {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnActionComponent]=\"config.table?.columnActionComponent\"\n [viewContainer]=\"viewContainer\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i5.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i8.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i9.InputText, selector: "[pInputText]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
185
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, decorators: [{
186
186
  type: Component,
187
187
  args: [{ standalone: true, selector: 'mng-formly-field-lookup-dialog', imports: [TranslateModule, FormlyModule, ReactiveFormsModule, ButtonModule, RippleModule, DialogModule, AsyncPipe, NgIf, MngTableComponent, MessagesModule, InputTextModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!props.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate : {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate : {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnActionComponent]=\"config.table?.columnActionComponent\"\n [viewContainer]=\"viewContainer\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n" }]
@@ -189,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
189
189
  type: ViewChild,
190
190
  args: [MngTableComponent]
191
191
  }] } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWxvb2t1cC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFhLGFBQWEsRUFBeUIsb0JB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QUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxtQkFDM0osdUJBQXVCLENBQUMsTUFBTTsrRkFHVixRQUFRO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RmllbGRUeXBlLCBGb3JtbHlNb2R1bGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtEaWFsb2dNb2R1bGV9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQge01lc3NhZ2VzTW9kdWxlfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtQnVpbGRlciwgTWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtGaWVsZExvb2t1cERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge0ZpZWxkTG9va3VwQ29uZmlnfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9pbnRlcmZhY2VzJztcbmltcG9ydCB7SVZpZXdDb250YWluZXJ9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ1RhYmxlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi90YWJsZXZpZXcnO1xuaW1wb3J0IHtNbmdGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvZm9ybS1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLCBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBGb3JtbHlNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEJ1dHRvbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEFzeW5jUGlwZSwgTmdJZiwgTW5nVGFibGVDb21wb25lbnQsIE1lc3NhZ2VzTW9kdWxlLCBJbnB1dFRleHRNb2R1bGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50PFQsIEVUPiBleHRlbmRzIEZpZWxkVHlwZTxNbmdGb3JtbHlGaWVsZENvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZChNbmdUYWJsZUNvbXBvbmVudCkgcHVibGljIG1uZ1RhYmxlPzogTW5nVGFibGVDb21wb25lbnQ8YW55LCBhbnk+O1xuXG4gICAgcHVibGljIGRlc2NyaXB0b3IhOiBGaWVsZExvb2t1cERlc2NyaXB0b3I8VCwgRVQ+O1xuICAgIHB1YmxpYyBjb25maWchOiBGaWVsZExvb2t1cENvbmZpZztcbiAgICBwdWJsaWMgZmllbGRMYWJlbEZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gICAgcHVibGljIGl0ZW1zU3ViamVjdDogU3ViamVjdDxUPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgIHB1YmxpYyBpdGVtc0FzeW5jOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5pdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGFkZEl0ZW1zU3ViamVjdDogU3ViamVjdDxNZWRpdXNRdWVyeVJlc3VsdDxUPj4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgICBwdWJsaWMgYWRkSXRlbXNBc3luYzogT2JzZXJ2YWJsZTxNZWRpdXNRdWVyeVJlc3VsdDxUPj4gPSB0aGlzLmFkZEl0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyBkaWFsb2dVc2VEYXRhUHJvdmlkZXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIGRpYWxvZ0RhdGFQcm92aWRlclNlcnZpY2U6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBkaWFsb2dJc0xvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG5cbiAgICBwdWJsaWMgaXNEaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgcHVibGljIGRpYWxvZ0FyZUl0ZW1zTG9hZGVkID0gZmFsc2U7XG4gICAgcHVibGljIGRpYWxvZ1NlbGVjdGVkSXRlbTogYW55ID0gbnVsbDtcbiAgICBwdWJsaWMgZGlhbG9nTWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuICAgIHB1YmxpYyBkaWFsb2dJc0xvYWRpbmckID0gdGhpcy5kaWFsb2dJc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIHVua25vd24+O1xuXG4gICAgcHJpdmF0ZSBsb29rdXBEYXRhUHJvdmlkZXJTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5wcm9wcy5kZXNjcmlwdG9yIGFzIEZpZWxkTG9va3VwRGVzY3JpcHRvcjxULCBFVD47XG4gICAgICAgIHRoaXMucHJvcHMuZmllbGRDb21wb25lbnQgPSB0aGlzO1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIgPSAodGhpcy5wcm9wcy5mb3JtRWRpdG9yQ29tcG9uZW50IGFzIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQ8dW5rbm93bj4pLnZpZXdDb250YWluZXJJbml0O1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9JTklUXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5kZXNjcmlwdG9yLmNvbmZpZyBhcyBGaWVsZExvb2t1cENvbmZpZztcbiAgICAgICAgaWYgKCF0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEYXRhUHJvdmlkZXIgJiYgdGhpcy5kZXNjcmlwdG9yLmRhdGFQcm92aWRlcj8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nVXNlRGF0YVByb3ZpZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YVByb3ZpZGVyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PGFueT4odGhpcy5kZXNjcmlwdG9yLmRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbml0IHZhbHVlc1xuICAgICAgICB0aGlzLnNldEZpZWxkTGFiZWxWYWx1ZSh0aGlzLmZvcm1Db250cm9sIS52YWx1ZSk7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGFyZVByb3AgPSB0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEZXNjcmlwdG9yIS5kYXRhS2V5UHJvcGVydHkgPz8gdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvciEubW9kZWwuaWRQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVQcm9wICYmIHR5cGVvZiBwcmV2ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgY3VyciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZbY29tcGFyZVByb3BdID09PSBjdXJyW2NvbXBhcmVQcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldiA9PT0gY3VycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RmllbGRMYWJlbFZhbHVlKHYpO1xuICAgICAgICAgICAgdGhpcy5pdGVtc1N1YmplY3QubmV4dCh2KTtcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5WYWx1ZUNoYW5nZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX1ZJRVdfSU5JVFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gd2FybmluZzogZm9ybWx5IGNhbGxzIG9uIGRlc3Ryb3kgYmVmb3JlIG9uIGluaXRcblxuICAgICAgICB0aGlzLmxvb2t1cERhdGFQcm92aWRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fREVTVFJPWVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuU2VsZWN0RGlhbG9nKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nQXJlSXRlbXNMb2FkZWQgJiYgdGhpcy5kaWFsb2dVc2VEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nSXNMb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbUJ1aWxkZXIgPSBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoNTApO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLmhhc0RlZmF1bHRTb3J0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvciEuZGVmYXVsdFNvcnRQcm9wZXJ0eS5mb3JFYWNoKChwLCBpZHgpID0+XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1CdWlsZGVyLndpdGhTb3J0KHAsIHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLmRlZmF1bHRTb3J0QXNjW2lkeF0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9va3VwRGF0YVByb3ZpZGVyU3Vic2NyaXB0aW9uID0gdGhpcy5kZXNjcmlwdG9yLmRhdGFQcm92aWRlcj8ubG9va3VwKHF1ZXJ5UGFyYW1CdWlsZGVyLmJ1aWxkKCksIHRoaXMuZGlhbG9nRGF0YVByb3ZpZGVyU2VydmljZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtcXIgPSBuZXcgTWVkaXVzUXVlcnlSZXN1bHQ8VD4oKTtcbiAgICAgICAgICAgICAgICAgICAgbXFyLnBhZ2VEYXRhID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICBtcXIuYWxsRGF0YUNvdW50ID0gcmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtc1N1YmplY3QubmV4dChtcXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0FyZUl0ZW1zTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5EYXRhUHJvdmlkZXIsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFN1YnR5cGU6ICdMb29rdXBOZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UmVzdWx0OiBtcXJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGF0YVByb3ZpZGVyLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiAnTG9va3VwRXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlSZXN1bHQ6IGVyclxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpYWxvZ1NlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNEaWFsb2dWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGlhbG9nTGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUuVklTSUJJTElUWSxcbiAgICAgICAgICAgIGRpYWxvZ1Zpc2libGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UoaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICBvbkNhcHRpb25DbXBJbnN0KGluc3RhbmNlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkRpYWxvZ0xpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlLlRBQkxFX0NBUFRJT05fQ09NUE9ORU5UX0lOU1RBTkNFLFxuICAgICAgICAgICAgY2FwdGlvbkNvbXBvbmVudEluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbkFjdGlvbkNtcEluc3QoaW5zdGFuY2U6IGFueSkge1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGlhbG9nTGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUuVEFCTEVfQ09MVU1OX0FDVElPTlNfQ09NUE9ORU5UX0lOU1RBTkNFLFxuICAgICAgICAgICAgY2FwdGlvbkNvbXBvbmVudEluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLmRpYWxvZ1NlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuZGlhbG9nQXJlSXRlbXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgaGlkZURpYWxvZygpIHtcbiAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGlhbG9nTGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUuVklTSUJJTElUWSxcbiAgICAgICAgICAgIGRpYWxvZ1Zpc2libGU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZEl0ZW0oKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5kaWFsb2dTZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmRpYWxvZ1NlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuZGlhbG9nQXJlSXRlbXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRGaWVsZExhYmVsVmFsdWUodmFsdWU6IFQpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZExhYmVsRm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbFByb3BlcnR5ID0gdGhpcy5kZXNjcmlwdG9yLml0ZW1zTGFiZWxQcm9wZXJ0eSA/PyB0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEZXNjcmlwdG9yPy5tb2RlbC50aXRsZVByb3BlcnR5TmFtZTtcbiAgICAgICAgICAgIGlmICghbGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGRldGVybWluZSBsYWJlbCBwcm9wZXJ0eS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZmllbGRMYWJlbEZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlW2xhYmVsUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkTGFiZWxGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IFtjbGFzc109XCIncC1pbnB1dGdyb3VwIG1uZy1kcm9wZG93bi1kaWFsb2cnICsgZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiIFtjbGFzcy5wLWlucHV0dGV4dC1zbV09XCJkZXNjcmlwdG9yLmlzU2l6ZVNtYWxsXCIgW2NsYXNzLnAtaW5wdXR0ZXh0LWxnXT1cImRlc2NyaXB0b3IuaXNTaXplTGFyZ2VcIj5cbiAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiIFtpZF09XCIkYW55KGtleSlcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCIgW2Zvcm1Db250cm9sXT1cImZpZWxkTGFiZWxGb3JtQ29udHJvbFwiIC8+XG4gICAgPGkgY2xhc3M9XCJtbmctZHJvcGRvd24tY2xlYXItaWNvbiBwaSBwaS10aW1lc1wiIChjbGljayk9XCJjbGVhcigpXCIgKm5nSWY9XCIhcHJvcHMucmVxdWlyZWQgJiYgZm9ybUNvbnRyb2w/LnZhbHVlICYmICFmb3JtQ29udHJvbD8uZGlzYWJsZWRcIj48L2k+XG4gICAgPGJ1dHRvblxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIHBSaXBwbGVcbiAgICAgICAgY2xhc3M9XCJtbmctZHJvcGRvd24tZGlhbG9nLXNlYXJjaC1idXR0b25cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2xhYmVsXT1cIidnZW5lcmFsLnNlYXJjaCcgfCB0cmFuc2xhdGUgOiB7aXRlbTogJyd9XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1Db250cm9sLmRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5TZWxlY3REaWFsb2coKVwiPjwvYnV0dG9uPlxuPC9kaXY+XG5cbjxwLWRpYWxvZ1xuICAgIFsodmlzaWJsZSldPVwiaXNEaWFsb2dWaXNpYmxlXCJcbiAgICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgICBbaGVhZGVyXT1cIidnZW5lcmFsLnNlYXJjaCcgfCB0cmFuc2xhdGUgOiB7aXRlbTogcHJvcHMubGFiZWwhfVwiXG4gICAgW21vZGFsXT1cInRydWVcIlxuICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgc3R5bGVDbGFzcz1cInAtZmx1aWQgbW5nLWRpYWxvZyBtbmctZm9ybWx5LWZpZWxkLWxvb2t1cC1kaWFsb2dcIj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPlxuICAgICAgICA8bW5nLXRhYmxlXG4gICAgICAgICAgICBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvciFcIlxuICAgICAgICAgICAgW2RhdGFQcm92aWRlcl09XCJkZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGF0YVByb3ZpZGVyXCJcbiAgICAgICAgICAgIFtxdWVyeVJlc3VsdF09XCJhZGRJdGVtc0FzeW5jXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25FbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiJ3NpbmdsZSdcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiZGlhbG9nSXNMb2FkaW5nJFwiXG4gICAgICAgICAgICBbY2FwdGlvbkNvbXBvbmVudF09XCJjb25maWcudGFibGU/LmNhcHRpb25Db21wb25lbnRcIlxuICAgICAgICAgICAgW2NvbHVtbkFjdGlvbkNvbXBvbmVudF09XCJjb25maWcudGFibGU/LmNvbHVtbkFjdGlvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICBbdmlld0NvbnRhaW5lcl09XCJ2aWV3Q29udGFpbmVyXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2FwdGlvbkNvbXBvbmVudEluc3RhbmNlKT1cIm9uQ2FwdGlvbkNtcEluc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY29sdW1uQWN0aW9uQ29tcG9uZW50SW5zdGFuY2UpPVwib25Db2x1bW5BY3Rpb25DbXBJbnN0KCRldmVudClcIj5cbiAgICAgICAgPC9tbmctdGFibGU+XG4gICAgICAgIDxwLW1lc3NhZ2VzIFt2YWx1ZV09XCJkaWFsb2dNZXNzYWdlc1wiPjwvcC1tZXNzYWdlcz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgW2xhYmVsXT1cIidnZW5lcmFsLmNhbmNlbCcgfCB0cmFuc2xhdGVcIiBpY29uPVwicGkgcGktdGltZXNcIiBjbGFzcz1cInAtYnV0dG9uLXRleHRcIiAoY2xpY2spPVwiaGlkZURpYWxvZygpXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidnZW5lcmFsLnNlbGVjdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLWNoZWNrXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkSXRlbSgpXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIihkaWFsb2dJc0xvYWRpbmckIHwgYXN5bmMpID8/IGZhbHNlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmRpc2FibGVkXCI+PC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvcC1kaWFsb2c+XG4iXX0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWxvb2t1cC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFhLGFBQWEsRUFBeUIsb0JB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QUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxtQkFDM0osdUJBQXVCLENBQUMsTUFBTTsrRkFHVixRQUFRO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RmllbGRUeXBlLCBGb3JtbHlNb2R1bGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtEaWFsb2dNb2R1bGV9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQge01lc3NhZ2VzTW9kdWxlfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtQnVpbGRlciwgTWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtGaWVsZExvb2t1cERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge0ZpZWxkTG9va3VwQ29uZmlnfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9pbnRlcmZhY2VzJztcbmltcG9ydCB7SVZpZXdDb250YWluZXJ9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ1RhYmxlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi90YWJsZXZpZXcnO1xuaW1wb3J0IHtNbmdGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvZm9ybS1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLCBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBGb3JtbHlNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEJ1dHRvbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEFzeW5jUGlwZSwgTmdJZiwgTW5nVGFibGVDb21wb25lbnQsIE1lc3NhZ2VzTW9kdWxlLCBJbnB1dFRleHRNb2R1bGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50PFQsIEVUPiBleHRlbmRzIEZpZWxkVHlwZTxNbmdGb3JtbHlGaWVsZENvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZChNbmdUYWJsZUNvbXBvbmVudCkgcHVibGljIG1uZ1RhYmxlPzogTW5nVGFibGVDb21wb25lbnQ8YW55LCBhbnk+O1xuXG4gICAgcHVibGljIGRlc2NyaXB0b3IhOiBGaWVsZExvb2t1cERlc2NyaXB0b3I8VCwgRVQ+O1xuICAgIHB1YmxpYyBjb25maWchOiBGaWVsZExvb2t1cENvbmZpZztcbiAgICBwdWJsaWMgZmllbGRMYWJlbEZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gICAgcHVibGljIGl0ZW1zU3ViamVjdDogU3ViamVjdDxUPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgIHB1YmxpYyBpdGVtc0FzeW5jOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5pdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGFkZEl0ZW1zU3ViamVjdDogU3ViamVjdDxNZWRpdXNRdWVyeVJlc3VsdDxUPj4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgICBwdWJsaWMgYWRkSXRlbXNBc3luYzogT2JzZXJ2YWJsZTxNZWRpdXNRdWVyeVJlc3VsdDxUPj4gPSB0aGlzLmFkZEl0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyBkaWFsb2dVc2VEYXRhUHJvdmlkZXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIGRpYWxvZ0RhdGFQcm92aWRlclNlcnZpY2U6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBkaWFsb2dJc0xvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG5cbiAgICBwdWJsaWMgaXNEaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgcHVibGljIGRpYWxvZ0FyZUl0ZW1zTG9hZGVkID0gZmFsc2U7XG4gICAgcHVibGljIGRpYWxvZ1NlbGVjdGVkSXRlbTogYW55ID0gbnVsbDtcbiAgICBwdWJsaWMgZGlhbG9nTWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuICAgIHB1YmxpYyBkaWFsb2dJc0xvYWRpbmckID0gdGhpcy5kaWFsb2dJc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIHVua25vd24+O1xuXG4gICAgcHJpdmF0ZSBsb29rdXBEYXRhUHJvdmlkZXJTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5wcm9wcy5kZXNjcmlwdG9yIGFzIEZpZWxkTG9va3VwRGVzY3JpcHRvcjxULCBFVD47XG4gICAgICAgIHRoaXMucHJvcHMuZmllbGRDb21wb25lbnQgPSB0aGlzO1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIgPSAodGhpcy5wcm9wcy5mb3JtRWRpdG9yQ29tcG9uZW50IGFzIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQ8dW5rbm93bj4pLnZpZXdDb250YWluZXJJbml0O1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9JTklUXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5kZXNjcmlwdG9yLmNvbmZpZyBhcyBGaWVsZExvb2t1cENvbmZpZztcbiAgICAgICAgaWYgKCF0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEYXRhUHJvdmlkZXIgJiYgdGhpcy5kZXNjcmlwdG9yLmRhdGFQcm92aWRlcj8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nVXNlRGF0YVByb3ZpZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YVByb3ZpZGVyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PGFueT4odGhpcy5kZXNjcmlwdG9yLmRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbml0IHZhbHVlc1xuICAgICAgICB0aGlzLnNldEZpZWxkTGFiZWxWYWx1ZSh0aGlzLmZvcm1Db250cm9sIS52YWx1ZSk7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGFyZVByb3AgPSB0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEZXNjcmlwdG9yIS5kYXRhS2V5UHJvcGVydHkgPz8gdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvciEubW9kZWwuaWRQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVQcm9wICYmIHR5cGVvZiBwcmV2ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgY3VyciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZbY29tcGFyZVByb3BdID09PSBjdXJyW2NvbXBhcmVQcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldiA9PT0gY3VycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RmllbGRMYWJlbFZhbHVlKHYpO1xuICAgICAgICAgICAgdGhpcy5pdGVtc1N1YmplY3QubmV4dCh2KTtcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5WYWx1ZUNoYW5nZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX1ZJRVdfSU5JVFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gd2FybmluZzogZm9ybWx5IGNhbGxzIG9uIGRlc3Ryb3kgYmVmb3JlIG9uIGluaXRcblxuICAgICAgICB0aGlzLmxvb2t1cERhdGFQcm92aWRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fREVTVFJPWVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuU2VsZWN0RGlhbG9nKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nQXJlSXRlbXNMb2FkZWQgJiYgdGhpcy5kaWFsb2dVc2VEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nSXNMb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbUJ1aWxkZXIgPSBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoNTApO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLmhhc0RlZmF1bHRTb3J0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvciEuZGVmYXVsdFNvcnRQcm9wZXJ0eS5mb3JFYWNoKChwLCBpZHgpID0+XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1CdWlsZGVyLndpdGhTb3J0KHAsIHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLmRlZmF1bHRTb3J0QXNjW2lkeF0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9va3VwRGF0YVByb3ZpZGVyU3Vic2NyaXB0aW9uID0gdGhpcy5kZXNjcmlwdG9yLmRhdGFQcm92aWRlcj8ubG9va3VwKHF1ZXJ5UGFyYW1CdWlsZGVyLmJ1aWxkKCksIHRoaXMuZGlhbG9nRGF0YVByb3ZpZGVyU2VydmljZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtcXIgPSBuZXcgTWVkaXVzUXVlcnlSZXN1bHQ8VD4oKTtcbiAgICAgICAgICAgICAgICAgICAgbXFyLnBhZ2VEYXRhID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICBtcXIuYWxsRGF0YUNvdW50ID0gcmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtc1N1YmplY3QubmV4dChtcXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0FyZUl0ZW1zTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5EYXRhUHJvdmlkZXIsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFN1YnR5cGU6ICdMb29rdXBOZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UmVzdWx0OiBtcXJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGF0YVByb3ZpZGVyLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiAnTG9va3VwRXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlSZXN1bHQ6IGVyclxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpYWxvZ1NlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNEaWFsb2dWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGlhbG9nTGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUuVklTSUJJTElUWSxcbiAgICAgICAgICAgIGRpYWxvZ1Zpc2libGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UoaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICBvbkNhcHRpb25DbXBJbnN0KGluc3RhbmNlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkRpYWxvZ0xpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlLlRBQkxFX0NBUFRJT05fQ09NUE9ORU5UX0lOU1RBTkNFLFxuICAgICAgICAgICAgY2FwdGlvbkNvbXBvbmVudEluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbkFjdGlvbkNtcEluc3QoaW5zdGFuY2U6IGFueSkge1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGlhbG9nTGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUuVEFCTEVfQ09MVU1OX0FDVElPTlNfQ09NUE9ORU5UX0lOU1RBTkNFLFxuICAgICAgICAgICAgY2FwdGlvbkNvbXBvbmVudEluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLmRpYWxvZ1NlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuZGlhbG9nQXJlSXRlbXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgaGlkZURpYWxvZygpIHtcbiAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGlhbG9nTGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUuVklTSUJJTElUWSxcbiAgICAgICAgICAgIGRpYWxvZ1Zpc2libGU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZEl0ZW0oKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5kaWFsb2dTZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmRpYWxvZ1NlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuZGlhbG9nQXJlSXRlbXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRGaWVsZExhYmVsVmFsdWUodmFsdWU6IFQpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZExhYmVsRm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbFByb3BlcnR5ID0gdGhpcy5kZXNjcmlwdG9yLml0ZW1zTGFiZWxQcm9wZXJ0eSA/PyB0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEZXNjcmlwdG9yPy5tb2RlbC50aXRsZVByb3BlcnR5TmFtZTtcbiAgICAgICAgICAgIGlmICghbGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGRldGVybWluZSBsYWJlbCBwcm9wZXJ0eS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZmllbGRMYWJlbEZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlW2xhYmVsUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkTGFiZWxGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IFtjbGFzc109XCIncC1pbnB1dGdyb3VwIG1uZy1kcm9wZG93bi1kaWFsb2cnICsgZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiIFtjbGFzcy5wLWlucHV0dGV4dC1zbV09XCJkZXNjcmlwdG9yLmlzU2l6ZVNtYWxsXCIgW2NsYXNzLnAtaW5wdXR0ZXh0LWxnXT1cImRlc2NyaXB0b3IuaXNTaXplTGFyZ2VcIj5cbiAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiIFtpZF09XCIkYW55KGtleSlcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCIgW2Zvcm1Db250cm9sXT1cImZpZWxkTGFiZWxGb3JtQ29udHJvbFwiIC8+XG4gICAgPGkgY2xhc3M9XCJtbmctZHJvcGRvd24tY2xlYXItaWNvbiBwaSBwaS10aW1lc1wiIChjbGljayk9XCJjbGVhcigpXCIgKm5nSWY9XCIhcHJvcHMucmVxdWlyZWQgJiYgZm9ybUNvbnRyb2w/LnZhbHVlICYmICFmb3JtQ29udHJvbD8uZGlzYWJsZWRcIj48L2k+XG4gICAgPGJ1dHRvblxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIHBSaXBwbGVcbiAgICAgICAgY2xhc3M9XCJtbmctZHJvcGRvd24tZGlhbG9nLXNlYXJjaC1idXR0b25cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2xhYmVsXT1cIidnZW5lcmFsLnNlYXJjaCcgfCB0cmFuc2xhdGUgOiB7aXRlbTogJyd9XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1Db250cm9sLmRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5TZWxlY3REaWFsb2coKVwiPjwvYnV0dG9uPlxuPC9kaXY+XG5cbjxwLWRpYWxvZ1xuICAgIFsodmlzaWJsZSldPVwiaXNEaWFsb2dWaXNpYmxlXCJcbiAgICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgICBbaGVhZGVyXT1cIidnZW5lcmFsLnNlYXJjaCcgfCB0cmFuc2xhdGUgOiB7aXRlbTogcHJvcHMubGFiZWwhfVwiXG4gICAgW21vZGFsXT1cInRydWVcIlxuICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgc3R5bGVDbGFzcz1cInAtZmx1aWQgbW5nLWRpYWxvZyBtbmctZm9ybWx5LWZpZWxkLWxvb2t1cC1kaWFsb2dcIj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPlxuICAgICAgICA8bW5nLXRhYmxlXG4gICAgICAgICAgICBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvciFcIlxuICAgICAgICAgICAgW2RhdGFQcm92aWRlcl09XCJkZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGF0YVByb3ZpZGVyXCJcbiAgICAgICAgICAgIFtxdWVyeVJlc3VsdF09XCJhZGRJdGVtc0FzeW5jXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25FbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiJ3NpbmdsZSdcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiZGlhbG9nSXNMb2FkaW5nJFwiXG4gICAgICAgICAgICBbY2FwdGlvbkNvbXBvbmVudF09XCJjb25maWcudGFibGU/LmNhcHRpb25Db21wb25lbnRcIlxuICAgICAgICAgICAgW2NvbHVtbkFjdGlvbkNvbXBvbmVudF09XCJjb25maWcudGFibGU/LmNvbHVtbkFjdGlvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICBbdmlld0NvbnRhaW5lcl09XCJ2aWV3Q29udGFpbmVyXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2FwdGlvbkNvbXBvbmVudEluc3RhbmNlKT1cIm9uQ2FwdGlvbkNtcEluc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY29sdW1uQWN0aW9uQ29tcG9uZW50SW5zdGFuY2UpPVwib25Db2x1bW5BY3Rpb25DbXBJbnN0KCRldmVudClcIj5cbiAgICAgICAgPC9tbmctdGFibGU+XG4gICAgICAgIDxwLW1lc3NhZ2VzIFt2YWx1ZV09XCJkaWFsb2dNZXNzYWdlc1wiPjwvcC1tZXNzYWdlcz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgW2xhYmVsXT1cIidnZW5lcmFsLmNhbmNlbCcgfCB0cmFuc2xhdGVcIiBpY29uPVwicGkgcGktdGltZXNcIiBjbGFzcz1cInAtYnV0dG9uLXRleHRcIiAoY2xpY2spPVwiaGlkZURpYWxvZygpXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidnZW5lcmFsLnNlbGVjdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLWNoZWNrXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkSXRlbSgpXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIihkaWFsb2dJc0xvYWRpbmckIHwgYXN5bmMpID8/IGZhbHNlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmRpc2FibGVkXCI+PC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvcC1kaWFsb2c+XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { AsyncPipe, NgClass, NgIf } from '@angular/common';
2
- import { Component, ElementRef } from '@angular/core';
2
+ import { Component, ElementRef, inject } from '@angular/core';
3
+ import { DomSanitizer } from '@angular/platform-browser';
3
4
  import { TranslateModule } from '@ngx-translate/core';
4
5
  import { MngEnumerateAsyncPipe } from '../../pipes';
5
6
  import { MngCommonsService } from '../../services';
@@ -13,6 +14,7 @@ export class MngTopbarUserComponent {
13
14
  this.mngCommons = mngCommons;
14
15
  this.mainLayoutService = mainLayoutService;
15
16
  this.elementRef = elementRef;
17
+ this.hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');
16
18
  this.subscriptions = [];
17
19
  }
18
20
  ngOnInit() {
@@ -36,9 +38,9 @@ export class MngTopbarUserComponent {
36
38
  }
37
39
  }
38
40
  MngTopbarUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngTopbarUserComponent, deps: [{ token: i1.MngCommonsService }, { token: i2.MngMainLayoutComponentService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
39
- MngTopbarUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngTopbarUserComponent, isStandalone: true, selector: "mng-topbar-user-component", ngImport: i0, template: "<a href=\"#\" class=\"user-block\" (click)=\"click($event)\">\n <i class=\"pi pi-fw pi-user\"></i>\n <span class=\"profile-item-username hidden sm:inline-block\">&nbsp; {{ user?.displayName ?? user?.username }}</span>\n</a>\n<ul class=\"fadeInDown dropdown-window\">\n <li role=\"menuitem\">\n <a>\n <div class=\"flex\">\n <div class=\"flex-grow-0\">\n <i class=\"pi pi-fw pi-user\"></i>\n </div>\n <div class=\"flex-grow-1\">\n <strong>{{ user?.displayName ?? user?.username }}</strong>\n <small *ngIf=\"((userRoles$ | async)?.length ?? 0) > 0\">\n <br />\n {{ userRoles$ | mgnEnumerateAsync : undefined : undefined : undefined : 'roles' | async }}\n </small>\n </div>\n </div>\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl ?? 'javascript:void(0)'\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: MngEnumerateAsyncPipe, name: "mgnEnumerateAsync" }] });
41
+ MngTopbarUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngTopbarUserComponent, isStandalone: true, selector: "mng-topbar-user-component", ngImport: i0, template: "<a href=\"#\" class=\"user-block\" (click)=\"click($event)\">\n <i class=\"pi pi-fw pi-user\"></i>\n <span class=\"profile-item-username hidden sm:inline-block\">&nbsp; {{ user?.displayName ?? user?.username }}</span>\n</a>\n<ul class=\"fadeInDown dropdown-window\">\n <li role=\"menuitem\">\n <a>\n <div class=\"flex\">\n <div class=\"flex-grow-0\">\n <i class=\"pi pi-fw pi-user\"></i>\n </div>\n <div class=\"flex-grow-1\">\n <strong>{{ user?.displayName ?? user?.username }}</strong>\n <small *ngIf=\"((userRoles$ | async)?.length ?? 0) > 0\">\n <br />\n {{ userRoles$ | mgnEnumerateAsync : undefined : undefined : undefined : 'roles' | async }}\n </small>\n </div>\n </div>\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl ?? hrefJsVoid\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: MngEnumerateAsyncPipe, name: "mgnEnumerateAsync" }] });
40
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngTopbarUserComponent, decorators: [{
41
43
  type: Component,
42
- args: [{ standalone: true, selector: 'mng-topbar-user-component', imports: [NgClass, NgIf, AsyncPipe, TranslateModule, MngEnumerateAsyncPipe], template: "<a href=\"#\" class=\"user-block\" (click)=\"click($event)\">\n <i class=\"pi pi-fw pi-user\"></i>\n <span class=\"profile-item-username hidden sm:inline-block\">&nbsp; {{ user?.displayName ?? user?.username }}</span>\n</a>\n<ul class=\"fadeInDown dropdown-window\">\n <li role=\"menuitem\">\n <a>\n <div class=\"flex\">\n <div class=\"flex-grow-0\">\n <i class=\"pi pi-fw pi-user\"></i>\n </div>\n <div class=\"flex-grow-1\">\n <strong>{{ user?.displayName ?? user?.username }}</strong>\n <small *ngIf=\"((userRoles$ | async)?.length ?? 0) > 0\">\n <br />\n {{ userRoles$ | mgnEnumerateAsync : undefined : undefined : undefined : 'roles' | async }}\n </small>\n </div>\n </div>\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl ?? 'javascript:void(0)'\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n</ul>\n" }]
44
+ args: [{ standalone: true, selector: 'mng-topbar-user-component', imports: [NgClass, NgIf, AsyncPipe, TranslateModule, MngEnumerateAsyncPipe], template: "<a href=\"#\" class=\"user-block\" (click)=\"click($event)\">\n <i class=\"pi pi-fw pi-user\"></i>\n <span class=\"profile-item-username hidden sm:inline-block\">&nbsp; {{ user?.displayName ?? user?.username }}</span>\n</a>\n<ul class=\"fadeInDown dropdown-window\">\n <li role=\"menuitem\">\n <a>\n <div class=\"flex\">\n <div class=\"flex-grow-0\">\n <i class=\"pi pi-fw pi-user\"></i>\n </div>\n <div class=\"flex-grow-1\">\n <strong>{{ user?.displayName ?? user?.username }}</strong>\n <small *ngIf=\"((userRoles$ | async)?.length ?? 0) > 0\">\n <br />\n {{ userRoles$ | mgnEnumerateAsync : undefined : undefined : undefined : 'roles' | async }}\n </small>\n </div>\n </div>\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl ?? hrefJsVoid\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n</ul>\n" }]
43
45
  }], ctorParameters: function () { return [{ type: i1.MngCommonsService }, { type: i2.MngMainLayoutComponentService }, { type: i0.ElementRef }]; } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC90b3BiYXItdXNlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L3RvcGJhci11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFJcEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLFlBQVksQ0FBQzs7Ozs7QUFRekQsTUFBTSxPQUFPLHNCQUFzQjtJQU0vQixZQUFtQixVQUE2QixFQUFTLGlCQUFnRCxFQUFTLFVBQXNCO1FBQXJILGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQVMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUErQjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7UUFGaEksa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBRWdHLENBQUM7SUFFNUksUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBdUIsRUFBRSxLQUFZO1FBQy9DLElBQUksT0FBTyxJQUFJLEVBQUUsTUFBTSxLQUFLLFVBQVUsRUFBRTtZQUNwQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkYsQ0FBQzs7bUhBL0JRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHFGQ2pCbkMseXRDQTRCQSw0Q0RkdUIsSUFBSSx3RkFBRSxTQUFTLDZDQUFFLGVBQWUsdUZBQUUscUJBQXFCOzJGQUdqRSxzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDJCQUEyQixXQUM1QixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0lVc2VyfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdFbnVtZXJhdGVBc3luY1BpcGV9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7TW5nTWFpbkxheW91dENvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRvcGJhci11c2VyLWNvbXBvbmVudCcsXG4gICAgaW1wb3J0czogW05nQ2xhc3MsIE5nSWYsIEFzeW5jUGlwZSwgVHJhbnNsYXRlTW9kdWxlLCBNbmdFbnVtZXJhdGVBc3luY1BpcGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b3BiYXItdXNlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nVG9wYmFyVXNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgdXNlcj86IElVc2VyO1xuICAgIHB1YmxpYyB1c2VyUm9sZXMkITogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbW5nQ29tbW9uczogTW5nQ29tbW9uc1NlcnZpY2UsIHB1YmxpYyBtYWluTGF5b3V0U2VydmljZTogTW5nTWFpbkxheW91dENvbXBvbmVudFNlcnZpY2UsIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5tbmdDb21tb25zLnVzZXIkLnN1YnNjcmliZSh1ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXIgPSB1O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51c2VyUm9sZXMkID0gdGhpcy5tbmdDb21tb25zLnVzZXJSb2xlcyQ7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHZhbHVlID0+IHZhbHVlLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2dvdXQodXNlcjogSVVzZXIgfCB1bmRlZmluZWQsIGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodHlwZW9mIHVzZXI/LmxvZ291dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdXNlci5sb2dvdXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGljayhldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMubWFpbkxheW91dFNlcnZpY2Uub25Ub3BiYXJJdGVtQ2xpY2soZXZlbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG59XG4iLCI8YSBocmVmPVwiI1wiIGNsYXNzPVwidXNlci1ibG9ja1wiIChjbGljayk9XCJjbGljaygkZXZlbnQpXCI+XG4gICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS11c2VyXCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1pdGVtLXVzZXJuYW1lIGhpZGRlbiBzbTppbmxpbmUtYmxvY2tcIj4mbmJzcDsge3sgdXNlcj8uZGlzcGxheU5hbWUgPz8gdXNlcj8udXNlcm5hbWUgfX08L3NwYW4+XG48L2E+XG48dWwgY2xhc3M9XCJmYWRlSW5Eb3duIGRyb3Bkb3duLXdpbmRvd1wiPlxuICAgIDxsaSByb2xlPVwibWVudWl0ZW1cIj5cbiAgICAgICAgPGE+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLXVzZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdXNlcj8uZGlzcGxheU5hbWUgPz8gdXNlcj8udXNlcm5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwiKCh1c2VyUm9sZXMkIHwgYXN5bmMpPy5sZW5ndGggPz8gMCkgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVzZXJSb2xlcyQgfCBtZ25FbnVtZXJhdGVBc3luYyA6IHVuZGVmaW5lZCA6IHVuZGVmaW5lZCA6IHVuZGVmaW5lZCA6ICdyb2xlcycgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSByb2xlPVwibWVudWl0ZW1cIiAqbmdJZj1cInVzZXI/LmxvZ291dCB8fCB1c2VyPy5sb2dvdXRVcmxcIj5cbiAgICAgICAgPGEgW2hyZWZdPVwidXNlcj8ubG9nb3V0VXJsID8/ICdqYXZhc2NyaXB0OnZvaWQoMCknXCIgKGNsaWNrKT1cImxvZ291dCh1c2VyLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLXNpZ24tb3V0XCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ21uZ1RvcGJhci5sb2dvdXQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbjwvdWw+XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC90b3BiYXItdXNlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L3RvcGJhci11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUlwRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sWUFBWSxDQUFDOzs7OztBQVF6RCxNQUFNLE9BQU8sc0JBQXNCO0lBTy9CLFlBQW1CLFVBQTZCLEVBQVMsaUJBQWdELEVBQVMsVUFBc0I7UUFBckgsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFBUyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQStCO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUpqSSxlQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFOUUsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBRWdHLENBQUM7SUFFNUksUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBdUIsRUFBRSxLQUFZO1FBQy9DLElBQUksT0FBTyxJQUFJLEVBQUUsTUFBTSxLQUFLLFVBQVUsRUFBRTtZQUNwQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkYsQ0FBQzs7bUhBaENRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHFGQ2xCbkMsK3NDQTRCQSw0Q0RidUIsSUFBSSx3RkFBRSxTQUFTLDZDQUFFLGVBQWUsdUZBQUUscUJBQXFCOzJGQUdqRSxzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDJCQUEyQixXQUM1QixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7SVVzZXJ9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0VudW1lcmF0ZUFzeW5jUGlwZX0gZnJvbSAnLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHtNbmdDb21tb25zU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtNbmdNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdG9wYmFyLXVzZXItY29tcG9uZW50JyxcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgTmdJZiwgQXN5bmNQaXBlLCBUcmFuc2xhdGVNb2R1bGUsIE1uZ0VudW1lcmF0ZUFzeW5jUGlwZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcGJhci11c2VyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNbmdUb3BiYXJVc2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyB1c2VyPzogSVVzZXI7XG4gICAgcHVibGljIHVzZXJSb2xlcyQhOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgICBwdWJsaWMgaHJlZkpzVm9pZCA9IGluamVjdChEb21TYW5pdGl6ZXIpLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoJ2phdmFzY3JpcHQ6dm9pZCgwKScpO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIG1uZ0NvbW1vbnM6IE1uZ0NvbW1vbnNTZXJ2aWNlLCBwdWJsaWMgbWFpbkxheW91dFNlcnZpY2U6IE1uZ01haW5MYXlvdXRDb21wb25lbnRTZXJ2aWNlLCBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMubW5nQ29tbW9ucy51c2VyJC5zdWJzY3JpYmUodSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyID0gdTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXNlclJvbGVzJCA9IHRoaXMubW5nQ29tbW9ucy51c2VyUm9sZXMkO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh2YWx1ZSA9PiB2YWx1ZS51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9nb3V0KHVzZXI6IElVc2VyIHwgdW5kZWZpbmVkLCBldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1c2VyPy5sb2dvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHVzZXIubG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2soZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLm1haW5MYXlvdXRTZXJ2aWNlLm9uVG9wYmFySXRlbUNsaWNrKGV2ZW50LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxufVxuIiwiPGEgaHJlZj1cIiNcIiBjbGFzcz1cInVzZXItYmxvY2tcIiAoY2xpY2spPVwiY2xpY2soJGV2ZW50KVwiPlxuICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktdXNlclwiPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtaXRlbS11c2VybmFtZSBoaWRkZW4gc206aW5saW5lLWJsb2NrXCI+Jm5ic3A7IHt7IHVzZXI/LmRpc3BsYXlOYW1lID8/IHVzZXI/LnVzZXJuYW1lIH19PC9zcGFuPlxuPC9hPlxuPHVsIGNsYXNzPVwiZmFkZUluRG93biBkcm9wZG93bi13aW5kb3dcIj5cbiAgICA8bGkgcm9sZT1cIm1lbnVpdGVtXCI+XG4gICAgICAgIDxhPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS11c2VyXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHVzZXI/LmRpc3BsYXlOYW1lID8/IHVzZXI/LnVzZXJuYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cIigodXNlclJvbGVzJCB8IGFzeW5jKT8ubGVuZ3RoID8/IDApID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB1c2VyUm9sZXMkIHwgbWduRW51bWVyYXRlQXN5bmMgOiB1bmRlZmluZWQgOiB1bmRlZmluZWQgOiB1bmRlZmluZWQgOiAncm9sZXMnIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbiAgICA8bGkgcm9sZT1cIm1lbnVpdGVtXCIgKm5nSWY9XCJ1c2VyPy5sb2dvdXQgfHwgdXNlcj8ubG9nb3V0VXJsXCI+XG4gICAgICAgIDxhIFtocmVmXT1cInVzZXI/LmxvZ291dFVybCA/PyBocmVmSnNWb2lkXCIgKGNsaWNrKT1cImxvZ291dCh1c2VyLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLXNpZ24tb3V0XCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ21uZ1RvcGJhci5sb2dvdXQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbjwvdWw+XG4iXX0=