@mediusinc/mng-commons 0.8.0-rc.1 → 0.8.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/i18n/en.json +3 -0
- package/assets/i18n/sl.json +3 -0
- package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +1 -1
- package/esm2020/lib/components/action/action.component.mjs +5 -2
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +1 -1
- package/esm2020/lib/components/action/models/action-execution.model.mjs +5 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +20 -3
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +1 -1
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +22 -2
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +7 -3
- package/esm2020/lib/components/tableview/table/table.component.mjs +1 -1
- package/esm2020/lib/components/tableview/tableview.component.mjs +6 -3
- package/esm2020/lib/config/formly.config.mjs +10 -1
- package/esm2020/lib/descriptors/column.descriptor.mjs +34 -6
- package/esm2020/lib/descriptors/field.descriptor.mjs +66 -25
- package/esm2020/lib/utils/action-data-provider.util.mjs +34 -5
- package/esm2020/lib/utils/editor-formly.util.mjs +6 -1
- package/fesm2015/mediusinc-mng-commons.mjs +392 -228
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +378 -220
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/api/services/get-all-api.abstract.service.d.ts +4 -1
- package/lib/components/action/action.component.d.ts +3 -1
- package/lib/components/action/models/action-execution.model.d.ts +3 -0
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +2 -0
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +1 -0
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +2 -0
- package/lib/components/tableview/tableview.component.d.ts +4 -0
- package/lib/descriptors/column.descriptor.d.ts +15 -5
- package/lib/descriptors/field.descriptor.d.ts +25 -9
- package/lib/utils/action-data-provider.util.d.ts +4 -0
- package/{mediusinc-mng-commons-0.8.0-rc.1.tgz → mediusinc-mng-commons-0.8.0-rc.2.tgz} +0 -0
- package/package.json +3 -2
package/assets/i18n/en.json
CHANGED
package/assets/i18n/sl.json
CHANGED
|
@@ -20,4 +20,4 @@ export class AMngGetAllApiService extends AMngApiService {
|
|
|
20
20
|
return '/get-all';
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFsbC1hcGkuYWJzdHJhY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3NlcnZpY2VzL2dldC1hbGwtYXBpLmFic3RyYWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSW5DLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQU10RCxNQUFNLE9BQWdCLG9CQUE0RCxTQUFRLGNBQWlCO0lBQ3ZHLFlBQXNCLElBQWtCLEVBQVksZUFBK0IsRUFBRSxJQUFnQjtRQUNqRyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRDhCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUVuRixDQUFDO0lBRU0sVUFBVSxDQUFDLGNBQWlDLEVBQUUsTUFBbUI7UUFDcEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQU0sR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7WUFDbkYsZUFBZSxFQUFFLElBQUk7WUFDckIsT0FBTyxFQUFFLE1BQU07WUFDZixjQUFjLEVBQUUsS0FBSztZQUNyQixNQUFNLEVBQUUsTUFBTTtTQUNqQixDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRVMsaUJBQWlCO1FBQ3ZCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDbGFzc1R5cGUsIElkVHlwZX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtLCBNZWRpdXNRdWVyeVJlc3VsdH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7QU1uZ0FwaVNlcnZpY2V9IGZyb20gJy4vYXBpLmFic3RyYWN0LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElNbmdHZXRBbGxBcGlTZXJ2aWNlPFFSVCBleHRlbmRzIE1lZGl1c1F1ZXJ5UmVzdWx0PGFueT4+IHtcbiAgICBnZXRBbGxQb3N0KHF1ZXJ5UGFyYW1Cb2R5PzogTWVkaXVzUXVlcnlQYXJhbSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8UVJUPjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFNbmdHZXRBbGxBcGlTZXJ2aWNlPFQsIFFSVCBleHRlbmRzIE1lZGl1c1F1ZXJ5UmVzdWx0PGFueT4+IGV4dGVuZHMgQU1uZ0FwaVNlcnZpY2U8VD4gaW1wbGVtZW50cyBJTW5nR2V0QWxsQXBpU2VydmljZTxRUlQ+IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogQ2xhc3NUeXBlPFQ+LCBwcm90ZWN0ZWQgcXVlcnlSZXN1bHRUeXBlOiBDbGFzc1R5cGU8UVJUPiwgaHR0cDogSHR0cENsaWVudCkge1xuICAgICAgICBzdXBlcih0eXBlLCBodHRwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsUG9zdChxdWVyeVBhcmFtQm9keT86IE1lZGl1c1F1ZXJ5UGFyYW0sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFFSVD4ge1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFVybCh0aGlzLmdldEdldEFsbFBvc3RQYXRoKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdDxhbnk+KHVybCwgcXVlcnlQYXJhbUJvZHkgPyB0aGlzLnNlcmlhbGl6ZVF1ZXJ5UGFyYW0ocXVlcnlQYXJhbUJvZHkpIDogdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHRoaXMuZGVzZXJpYWxpemVRdWVyeVJlc3VsdChyZXMsIHRoaXMucXVlcnlSZXN1bHRUeXBlKSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRHZXRBbGxQb3N0UGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJy9nZXQtYWxsJztcbiAgICB9XG59XG4iXX0=
|
|
@@ -82,6 +82,7 @@ export class MngActionComponent {
|
|
|
82
82
|
actionData['cmpId'] = this.cmpId;
|
|
83
83
|
const parameters = new ActionParameters(this.itemId, this.item)
|
|
84
84
|
.withActionData(actionData)
|
|
85
|
+
.withQueryParam(this.queryParam)
|
|
85
86
|
.withRoute(this.route)
|
|
86
87
|
.withViewContainer(this.viewContainer)
|
|
87
88
|
.withSourceComponent(this);
|
|
@@ -139,7 +140,7 @@ export class MngActionComponent {
|
|
|
139
140
|
}
|
|
140
141
|
}
|
|
141
142
|
MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.MngActionExecutorService }, { token: i4.ConfirmationService }, { token: i3.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
142
|
-
MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { finishEventEmitter: "finish" }, host: { properties: { "class": "this.hostClass" } }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i5.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i6.AsyncPipe, "linkFormatter": i10.MngLinkFormatterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
143
|
+
MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", queryParam: "queryParam", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { finishEventEmitter: "finish" }, host: { properties: { "class": "this.hostClass" } }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i5.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i6.AsyncPipe, "linkFormatter": i10.MngLinkFormatterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
143
144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionComponent, decorators: [{
|
|
144
145
|
type: Component,
|
|
145
146
|
args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"$isVisible | async\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
|
|
@@ -156,6 +157,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
156
157
|
type: Input
|
|
157
158
|
}], actionData: [{
|
|
158
159
|
type: Input
|
|
160
|
+
}], queryParam: [{
|
|
161
|
+
type: Input
|
|
159
162
|
}], dataProvider: [{
|
|
160
163
|
type: Input
|
|
161
164
|
}], inputDisabled: [{
|
|
@@ -171,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
171
174
|
type: Output,
|
|
172
175
|
args: ['finish']
|
|
173
176
|
}] } });
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWdDLFFBQVEsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBSWxLLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWEsYUFBYSxFQUFnQixvQkFBb0IsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHdkYsT0FBTyxFQUFtQixlQUFlLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUkxRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBNkIsZ0JBQWdCLEVBQTZCLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7QUFTbEcsTUFBTSxPQUFPLGtCQUFrQjtJQWdEM0IsWUFDWSxLQUFxQixFQUNyQixTQUEyQixFQUMzQixjQUF3QyxFQUN4QyxtQkFBd0MsRUFDNUIsb0JBQW1FO1FBSi9FLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQzVCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBK0M7UUFwRDNFLGlCQUFZLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxpQkFBWSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDdkMsbUJBQWMsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxpQkFBWSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBRS9CLGNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQVE1QixrQkFBYSxHQUF3QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsaUJBQVksR0FBd0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRzlDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRS9FLG1CQUFjLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsYUFBUSxHQUF3QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRW5FLFVBQUssR0FBVyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxxQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBVSxDQUFDLENBQUMsQ0FBQztRQUVsRCxlQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDOUUscUJBQWdCLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFFbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQWdCLENBQUMsQ0FBQyxDQUFDO1FBRXBELFdBQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDdEUsbUJBQWMsR0FBRyxJQUFJLGFBQWEsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFdEQsYUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUszRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQVN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxTQUFTLENBQUM7UUFFdEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxvQkFBb0IsRUFBRTtZQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDakM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLEVBQUU7WUFDdkksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCw2REFBNkQ7SUFDdEQsYUFBYSxDQUFDLEtBQVk7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRWpDLE1BQU0sVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzFELGNBQWMsQ0FBQyxVQUFVLENBQUM7YUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDckIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUNyQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTVFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUN2QixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQyxDQUFDO1NBQ0osQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0MsQ0FBQztTQUNKLENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25CLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1lBQzdCLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxDQUFDO1NBQ0osQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0sc0JBQXNCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFTSxpQ0FBaUMsQ0FBQyxNQUE2QjtRQUNsRSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQzthQUMxRCxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUMvQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsQ0FBQzthQUNsRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUvRyxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLEVBQUU7WUFDckQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDL0MsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLEVBQUU7WUFDckQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDL0MsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzNJLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUM3QyxDQUFDLENBQUM7U0FDTjtRQUVELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNqSixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDL0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7K0dBcktRLGtCQUFrQjttR0FBbEIsa0JBQWtCLCtZQUZoQixDQUFDLG1CQUFtQixDQUFDLCtDQ3BCcEMsaXZLQStGQTsyRkR6RWEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLG1CQUFtQixDQUFDOzswQkF1RDNCLFFBQVE7NENBM0NTLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFHSixNQUFNO3NCQUFyQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ29CLGFBQWE7c0JBQXRDLEtBQUs7dUJBQUMsVUFBVTtnQkFDUSxZQUFZO3NCQUFwQyxLQUFLO3VCQUFDLFNBQVM7Z0JBQ2UsaUJBQWlCO3NCQUEvQyxLQUFLO3VCQUFDLGVBQWU7Z0JBRUcsa0JBQWtCO3NCQUExQyxNQUFNO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgb2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0lEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgQWN0aW9uTGV2ZWxFbnVtLCBBY3Rpb25MaW5rRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtJVmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLCBNbmdWaWV3Q29udGFpbmVyQ29tcG9uZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtJZFR5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7STE4blV0aWxzfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge0FjdGlvbkRhdGEsIEFjdGlvbkluc3RhbmNlLCBBY3Rpb25QYXJhbWV0ZXJzLCBJQWN0aW9uQ29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAnLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1hY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0NvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvbkNvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIElBY3Rpb25Db25maXJtYXRpb25TZXJ2aWNlIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGV2ZWxEZWZhdWx0ID0gQWN0aW9uTGV2ZWxFbnVtLkRlZmF1bHQ7XG4gICAgcHVibGljIHJlYWRvbmx5IGxldmVsUHJpbWFyeSA9IEFjdGlvbkxldmVsRW51bS5QcmltYXJ5O1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbFNlY29uZGFyeSA9IEFjdGlvbkxldmVsRW51bS5TZWNvbmRhcnk7XG4gICAgcHVibGljIHJlYWRvbmx5IGxldmVsSW5mbyA9IEFjdGlvbkxldmVsRW51bS5JbmZvO1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbEhlbHAgPSBBY3Rpb25MZXZlbEVudW0uSGVscDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGV2ZWxTdWNjZXNzID0gQWN0aW9uTGV2ZWxFbnVtLlN1Y2Nlc3M7XG4gICAgcHVibGljIHJlYWRvbmx5IGxldmVsV2FybmluZyA9IEFjdGlvbkxldmVsRW51bS5XYXJuaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbERhbmdlciA9IEFjdGlvbkxldmVsRW51bS5EYW5nZXI7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgaG9zdENsYXNzID0gJ21uZy1hY3Rpb24tYnV0dG9uJztcblxuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb24hOiBBY3Rpb25EZXNjcmlwdG9yPFQ+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtPzogVDtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbUlkPzogSWRUeXBlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25EYXRhPzogQWN0aW9uRGF0YTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxULCBTPjtcbiAgICBASW5wdXQoJ2Rpc2FibGVkJykgcHVibGljIGlucHV0RGlzYWJsZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XG4gICAgQElucHV0KCdsb2FkaW5nJykgcHVibGljIGlucHV0TG9hZGluZzogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG9mKGZhbHNlKTtcbiAgICBASW5wdXQoJ3ZpZXdDb250YWluZXInKSBwdWJsaWMgdmlld0NvbnRhaW5lckluaXQ/OiBJVmlld0NvbnRhaW5lcjxULCBTPjtcblxuICAgIEBPdXRwdXQoJ2ZpbmlzaCcpIHB1YmxpYyBmaW5pc2hFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkluc3RhbmNlPFQsIFM+PigpO1xuXG4gICAgcHJpdmF0ZSBsb2FkaW5nU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICAgIHB1YmxpYyAkbG9hZGluZzogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMubG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwdWJsaWMgY21wSWQ6IHN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcbiAgICBwcml2YXRlIGlzVmlzaWJsZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBwcml2YXRlIGlzVmlzaWJsZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgJGlzVmlzaWJsZSA9IHRoaXMuaXNWaXNpYmxlU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIHByaXZhdGUgaXNFbmFibGVkU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICAgIHByaXZhdGUgaXNFbmFibGVkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyAkaXNFbmFibGVkID0gdGhpcy5pc0VuYWJsZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcHJpdmF0ZSBsYWJlbFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmcgfCBudWxsPigxKTtcbiAgICBwcml2YXRlIGxhYmVsU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyAkbGFiZWwgPSB0aGlzLmxhYmVsU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIHByaXZhdGUgdG9vbHRpcFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmcgfCBudWxsPigxKTtcbiAgICBwcml2YXRlIHRvb2x0aXBTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljICR0b29sdGlwID0gdGhpcy50b29sdGlwU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8VCwgUz47XG5cbiAgICBwdWJsaWMgYWN0aW9uTGluaz86IEFjdGlvbkxpbmtEZXNjcmlwdG9yPFQ+O1xuICAgIHB1YmxpYyBoYXNOb1RpdGxlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGlvbkV4ZWN1dG9yOiBNbmdBY3Rpb25FeGVjdXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB2aWV3Q29udGFpbmVyU2VydmljZTogTW5nVmlld0NvbnRhaW5lckNvbXBvbmVudFNlcnZpY2U8VCwgUz4gfCBudWxsXG4gICAgKSB7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIgPSB0aGlzLnZpZXdDb250YWluZXJJbml0ID8/IHRoaXMudmlld0NvbnRhaW5lclNlcnZpY2UgPz8gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuaGFzTm9UaXRsZSA9IHRoaXMuYWN0aW9uLnRpdGxlID09PSBudWxsO1xuICAgICAgICB0aGlzLmlzRW5hYmxlZFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMubGFiZWxTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMudG9vbHRpcFN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3Vic2NyaXB0aW9ucygpO1xuXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkxpbmtEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbkxpbmsgPSB0aGlzLmFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbi5jbGFzc05hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuaG9zdENsYXNzID0gdGhpcy5hY3Rpb24uY2xhc3NOYW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIShjaGFuZ2VzWydpdGVtJ10/LmZpcnN0Q2hhbmdlID8/IHRydWUpIHx8ICEoY2hhbmdlc1snaXRlbUlkJ10/LmZpcnN0Q2hhbmdlID8/IHRydWUpIHx8ICEoY2hhbmdlc1snYWN0aW9uRGF0YSddPy5maXJzdENoYW5nZSA/PyB0cnVlKSkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmlzRW5hYmxlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5sYWJlbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50b29sdGlwU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyB0cmlnZ2VyQWN0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBhY3Rpb25EYXRhID0gdGhpcy5hY3Rpb25EYXRhID8gdGhpcy5hY3Rpb25EYXRhIDoge307XG4gICAgICAgIGFjdGlvbkRhdGFbJ2NtcElkJ10gPSB0aGlzLmNtcElkO1xuXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBuZXcgQWN0aW9uUGFyYW1ldGVycyh0aGlzLml0ZW1JZCwgdGhpcy5pdGVtKVxuICAgICAgICAgICAgLndpdGhBY3Rpb25EYXRhKGFjdGlvbkRhdGEpXG4gICAgICAgICAgICAud2l0aFJvdXRlKHRoaXMucm91dGUpXG4gICAgICAgICAgICAud2l0aFZpZXdDb250YWluZXIodGhpcy52aWV3Q29udGFpbmVyKVxuICAgICAgICAgICAgLndpdGhTb3VyY2VDb21wb25lbnQodGhpcyk7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5hY3Rpb25FeGVjdXRvci50cmlnZ2VyQWN0aW9uKHRoaXMuYWN0aW9uLCBwYXJhbWV0ZXJzKTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIGluc3RhbmNlLnJlc3VsdCQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaEV2ZW50RW1pdHRlci5uZXh0KGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIGluc3RhbmNlLmVycm9yJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmluaXNoRXZlbnRFbWl0dGVyLm5leHQoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgaW5zdGFuY2UuaXNSdW5Mb2FkaW5nJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2VJbnN0YW5jZUtleShhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICByZXR1cm4gYCR7YWN0aW9uLmFjdGlvbk5hbWV9XyR7dGhpcy5jbXBJZH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N1YnNjcmlwdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBuZXcgQWN0aW9uUGFyYW1ldGVycyh0aGlzLml0ZW1JZCwgdGhpcy5pdGVtKVxuICAgICAgICAgICAgLndpdGhBY3Rpb25EYXRhKHRoaXMuYWN0aW9uRGF0YSlcbiAgICAgICAgICAgIC53aXRoVmlld0NvbnRhaW5lcih0aGlzLnZpZXdDb250YWluZXIgPz8gdW5kZWZpbmVkKVxuICAgICAgICAgICAgLndpdGhTb3VyY2VDb21wb25lbnQodGhpcyk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmFjdGlvbkV4ZWN1dG9yLnByZXBhcmVBY3Rpb25Db250ZXh0VmFsaWRhdGlvbih0aGlzLmFjdGlvbiwgcGFyYW1ldGVycywgdGhpcy5kYXRhUHJvdmlkZXIpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb24uaXNWaXNpYmxlRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJzY3JpcHRpb24gPSB0aGlzLmFjdGlvbi5pc1Zpc2libGVGdW5jdGlvbihjb250ZXh0KS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLmlzVmlzaWJsZVN1YmplY3QubmV4dChyZXMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uLmlzRW5hYmxlZEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmlzRW5hYmxlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuaXNFbmFibGVkU3Vic2NyaXB0aW9uID0gdGhpcy5hY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gdGhpcy5pc0VuYWJsZWRTdWJqZWN0Lm5leHQocmVzKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaGFzTm9UaXRsZSkge1xuICAgICAgICAgICAgdGhpcy5sYWJlbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMubGFiZWxTdWJzY3JpcHRpb24gPSBJMThuVXRpbHMuQWN0aW9uLmdldEFzeW5jKHRoaXMudHJhbnNsYXRlLCB0aGlzLmFjdGlvbiwgJ3RpdGxlJywgdGhpcy5hY3Rpb24/LnRpdGxlID8/IHVuZGVmaW5lZCwgdGhpcy5pdGVtKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGkxOG4gPT4gdGhpcy5sYWJlbFN1YmplY3QubmV4dChpMThuKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2x0aXBTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbiA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0QXN5bmModGhpcy50cmFuc2xhdGUsIHRoaXMuYWN0aW9uLCAndG9vbHRpcCcsIHRoaXMuYWN0aW9uPy50b29sdGlwID8/IHVuZGVmaW5lZCwgdGhpcy5pdGVtKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogaTE4biA9PiB0aGlzLnRvb2x0aXBTdWJqZWN0Lm5leHQoaTE4bilcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiRpc1Zpc2libGUgfCBhc3luY1wiPlxuICAgIDxhXG4gICAgICAgICpuZ0lmPVwiYWN0aW9uTGluayAmJiBhY3Rpb25MaW5rLnVybCAhPT0gJyc7IGVsc2Ugcm91dGVyTGlua1wiXG4gICAgICAgIHBCdXR0b25cbiAgICAgICAgcFJpcHBsZVxuICAgICAgICBbaWNvbl09XCIkYW55KGFjdGlvbi5pY29uKVwiXG4gICAgICAgIFtocmVmXT1cIigkaXNFbmFibGVkIHwgYXN5bmMpID09PSBmYWxzZSB8fCAoKGlucHV0RGlzYWJsZWQgfCBhc3luYykgPz8gZmFsc2UpID8gbnVsbCA6IGFjdGlvbkxpbmsudXJsXCJcbiAgICAgICAgW3RhcmdldF09XCJhY3Rpb25MaW5rLnRhcmdldFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoJGlzRW5hYmxlZCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgKChpbnB1dERpc2FibGVkIHwgYXN5bmMpID8/IGZhbHNlKVwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1yb3VuZGVkXT1cImhhc05vVGl0bGVcIlxuICAgICAgICBbY2xhc3MubW5nLWFjdGlvbi1idXR0b24taWNvbl09XCJoYXNOb1RpdGxlXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXRleHRdPVwiYWN0aW9uLmlzU3R5bGVUZXh0XCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWxpbmtdPVwiYWN0aW9uTGluay5pc1N0eWxlTGlua1wiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1yYWlzZWRdPVwiYWN0aW9uLmlzU3R5bGVSYWlzZWRcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tb3V0bGluZWRdPVwiYWN0aW9uLmlzU3R5bGVPdXRsaW5lZFwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXhzXT1cImFjdGlvbi5pc1NpemVFeHRyYVNtYWxsXCJcbiAgICAgICAgW2NsYXNzLm1uZy1idXR0b24tc21dPVwiYWN0aW9uLmlzU2l6ZVNtYWxsXCJcbiAgICAgICAgW2NsYXNzLm1uZy1idXR0b24tbGddPVwiYWN0aW9uLmlzU2l6ZUxhcmdlXCJcbiAgICAgICAgW2NsYXNzLm1uZy1idXR0b24teGxdPVwiYWN0aW9uLmlzU2l6ZUV4dHJhTGFyZ2VcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tZGVmYXVsdF09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsRGVmYXVsdFwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1wcmltYXJ5XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxQcmltYXJ5XCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXNlY29uZGFyeV09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsU2Vjb25kYXJ5XCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWluZm9dPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbEluZm9cIlxuICAgICAgICBbY2xhc3MucC1idXR0b24taGVscF09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsSGVscFwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1zdWNjZXNzXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxTdWNjZXNzXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXdhcm5pbmddPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFdhcm5pbmdcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tZGFuZ2VyXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxEYW5nZXJcIlxuICAgICAgICA+e3sgKCRsYWJlbCB8IGFzeW5jKSA/PyAnJyB9fTwvYVxuICAgID5cbiAgICA8bmctdGVtcGxhdGUgI3JvdXRlckxpbms+XG4gICAgICAgIDxhXG4gICAgICAgICAgICAqbmdJZj1cImFjdGlvbkxpbms7IGVsc2UgYnV0dG9uXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgIFtpY29uXT1cIiRhbnkoYWN0aW9uLmljb24pXCJcbiAgICAgICAgICAgIFt0YXJnZXRdPVwiYWN0aW9uTGluay50YXJnZXRcIlxuICAgICAgICAgICAgW3JlcGxhY2VVcmxdPVwiYWN0aW9uTGluay5yZXBsYWNlVXJsXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlxuICAgICAgICAgICAgICAgICgkaXNFbmFibGVkIHwgYXN5bmMpID09PSBmYWxzZSB8fCAoKGlucHV0RGlzYWJsZWQgfCBhc3luYykgPz8gZmFsc2UpID8gbnVsbCA6IChhY3Rpb25MaW5rLnBhdGhTZWdtZW50cyB8IGxpbmtGb3JtYXR0ZXI6IGl0ZW1JZDppdGVtOmFjdGlvbi5tb2RlbDphY3Rpb25EYXRhKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJhY3Rpb25MaW5rLnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImFjdGlvbkxpbmsucXVlcnlQYXJhbXNIYW5kbGluZ1wiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCRpc0VuYWJsZWQgfCBhc3luYykgPT09IGZhbHNlIHx8ICgoaW5wdXREaXNhYmxlZCB8IGFzeW5jKSA/PyBmYWxzZSlcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXJvdW5kZWRdPVwiaGFzTm9UaXRsZVwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWFjdGlvbi1idXR0b24taWNvbl09XCJoYXNOb1RpdGxlXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi10ZXh0XT1cImFjdGlvbi5pc1N0eWxlVGV4dFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tbGlua109XCJhY3Rpb25MaW5rLmlzU3R5bGVMaW5rXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1yYWlzZWRdPVwiYWN0aW9uLmlzU3R5bGVSYWlzZWRcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLW91dGxpbmVkXT1cImFjdGlvbi5pc1N0eWxlT3V0bGluZWRcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1idXR0b24teHNdPVwiYWN0aW9uLmlzU2l6ZUV4dHJhU21hbGxcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1idXR0b24tc21dPVwiYWN0aW9uLmlzU2l6ZVNtYWxsXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLWxnXT1cImFjdGlvbi5pc1NpemVMYXJnZVwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi14bF09XCJhY3Rpb24uaXNTaXplRXh0cmFMYXJnZVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tZGVmYXVsdF09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsRGVmYXVsdFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tcHJpbWFyeV09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsUHJpbWFyeVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tc2Vjb25kYXJ5XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxTZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWluZm9dPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbEluZm9cIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWhlbHBdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbEhlbHBcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXN1Y2Nlc3NdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFN1Y2Nlc3NcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXdhcm5pbmddPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFdhcm5pbmdcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRhbmdlcl09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsRGFuZ2VyXCJcbiAgICAgICAgICAgID57eyAoJGxhYmVsIHwgYXN5bmMpID8/ICcnIH19PC9hXG4gICAgICAgID5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgIFtpY29uXT1cIiRhbnkoYWN0aW9uLmljb24pXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCIoJGxhYmVsIHwgYXN5bmMpID8/ICcnXCJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCIkYW55KCR0b29sdGlwIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIigoJGxvYWRpbmcgfCBhc3luYykgPz8gZmFsc2UpIHx8ICgoaW5wdXRMb2FkaW5nIHwgYXN5bmMpID8/IGZhbHNlKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCRpc0VuYWJsZWQgfCBhc3luYykgPT09IGZhbHNlIHx8ICgoaW5wdXREaXNhYmxlZCB8IGFzeW5jKSA/PyBmYWxzZSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tcm91bmRlZF09XCJoYXNOb1RpdGxlXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYWN0aW9uLWJ1dHRvbi1pY29uXT1cImhhc05vVGl0bGVcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXRleHRdPVwiYWN0aW9uLmlzU3R5bGVUZXh0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1yYWlzZWRdPVwiYWN0aW9uLmlzU3R5bGVSYWlzZWRcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLW91dGxpbmVkXT1cImFjdGlvbi5pc1N0eWxlT3V0bGluZWRcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1idXR0b24teHNdPVwiYWN0aW9uLmlzU2l6ZUV4dHJhU21hbGxcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1idXR0b24tc21dPVwiYWN0aW9uLmlzU2l6ZVNtYWxsXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLWxnXT1cImFjdGlvbi5pc1NpemVMYXJnZVwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi14bF09XCJhY3Rpb24uaXNTaXplRXh0cmFMYXJnZVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tZGVmYXVsdF09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsRGVmYXVsdFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tcHJpbWFyeV09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsUHJpbWFyeVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tc2Vjb25kYXJ5XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxTZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWluZm9dPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbEluZm9cIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWhlbHBdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbEhlbHBcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXN1Y2Nlc3NdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFN1Y2Nlc3NcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXdhcm5pbmddPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFdhcm5pbmdcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRhbmdlcl09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsRGFuZ2VyXCI+PC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8cC1jb25maXJtRGlhbG9nICpuZ0lmPVwiYWN0aW9uLmhhc1J1bkNvbmZpcm1hdGlvblwiIFtrZXldPVwiYWN0aW9uLmFjdGlvbk5hbWUgKyAnXycgKyBjbXBJZFwiIFtiYXNlWkluZGV4XT1cIjUwXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLWNvbmZpcm1EaWFsb2c+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWdDLFFBQVEsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBSWxLLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWEsYUFBYSxFQUFnQixvQkFBb0IsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJdkYsT0FBTyxFQUFtQixlQUFlLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUkxRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBNkIsZ0JBQWdCLEVBQTZCLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7QUFTbEcsTUFBTSxPQUFPLGtCQUFrQjtJQWlEM0IsWUFDWSxLQUFxQixFQUNyQixTQUEyQixFQUMzQixjQUF3QyxFQUN4QyxtQkFBd0MsRUFDNUIsb0JBQW1FO1FBSi9FLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQzVCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBK0M7UUFyRDNFLGlCQUFZLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxpQkFBWSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDdkMsbUJBQWMsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxpQkFBWSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBRS9CLGNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQVM1QixrQkFBYSxHQUF3QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsaUJBQVksR0FBd0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRzlDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRS9FLG1CQUFjLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsYUFBUSxHQUF3QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRW5FLFVBQUssR0FBVyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxxQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBVSxDQUFDLENBQUMsQ0FBQztRQUVsRCxlQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDOUUscUJBQWdCLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFFbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQWdCLENBQUMsQ0FBQyxDQUFDO1FBRXBELFdBQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDdEUsbUJBQWMsR0FBRyxJQUFJLGFBQWEsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFdEQsYUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUszRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQVN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxTQUFTLENBQUM7UUFFdEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxvQkFBb0IsRUFBRTtZQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDakM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLEVBQUU7WUFDdkksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCw2REFBNkQ7SUFDdEQsYUFBYSxDQUFDLEtBQVk7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRWpDLE1BQU0sVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzFELGNBQWMsQ0FBQyxVQUFVLENBQUM7YUFDMUIsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDckIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUNyQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTVFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUN2QixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQyxDQUFDO1NBQ0osQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0MsQ0FBQztTQUNKLENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25CLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1lBQzdCLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxDQUFDO1NBQ0osQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0sc0JBQXNCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFTSxpQ0FBaUMsQ0FBQyxNQUE2QjtRQUNsRSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQzthQUMxRCxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUMvQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsQ0FBQzthQUNsRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUvRyxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLEVBQUU7WUFDckQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDL0MsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLEVBQUU7WUFDckQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDL0MsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzNJLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUM3QyxDQUFDLENBQUM7U0FDTjtRQUVELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNqSixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDL0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7K0dBdktRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlhQUZoQixDQUFDLG1CQUFtQixDQUFDLCtDQ3JCcEMsaXZLQStGQTsyRkR4RWEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLG1CQUFtQixDQUFDOzswQkF3RDNCLFFBQVE7NENBNUNTLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFHSixNQUFNO3NCQUFyQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDb0IsYUFBYTtzQkFBdEMsS0FBSzt1QkFBQyxVQUFVO2dCQUNRLFlBQVk7c0JBQXBDLEtBQUs7dUJBQUMsU0FBUztnQkFDZSxpQkFBaUI7c0JBQS9DLEtBQUs7dUJBQUMsZUFBZTtnQkFFRyxrQkFBa0I7c0JBQTFDLE1BQU07dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBvZn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TWVkaXVzUXVlcnlQYXJhbX0gZnJvbSAnLi4vLi4vYXBpL21vZGVscyc7XG5pbXBvcnQge0lEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgQWN0aW9uTGV2ZWxFbnVtLCBBY3Rpb25MaW5rRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtJVmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLCBNbmdWaWV3Q29udGFpbmVyQ29tcG9uZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtJZFR5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7STE4blV0aWxzfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge0FjdGlvbkRhdGEsIEFjdGlvbkluc3RhbmNlLCBBY3Rpb25QYXJhbWV0ZXJzLCBJQWN0aW9uQ29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAnLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1hY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0NvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvbkNvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIElBY3Rpb25Db25maXJtYXRpb25TZXJ2aWNlIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGV2ZWxEZWZhdWx0ID0gQWN0aW9uTGV2ZWxFbnVtLkRlZmF1bHQ7XG4gICAgcHVibGljIHJlYWRvbmx5IGxldmVsUHJpbWFyeSA9IEFjdGlvbkxldmVsRW51bS5QcmltYXJ5O1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbFNlY29uZGFyeSA9IEFjdGlvbkxldmVsRW51bS5TZWNvbmRhcnk7XG4gICAgcHVibGljIHJlYWRvbmx5IGxldmVsSW5mbyA9IEFjdGlvbkxldmVsRW51bS5JbmZvO1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbEhlbHAgPSBBY3Rpb25MZXZlbEVudW0uSGVscDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGV2ZWxTdWNjZXNzID0gQWN0aW9uTGV2ZWxFbnVtLlN1Y2Nlc3M7XG4gICAgcHVibGljIHJlYWRvbmx5IGxldmVsV2FybmluZyA9IEFjdGlvbkxldmVsRW51bS5XYXJuaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbERhbmdlciA9IEFjdGlvbkxldmVsRW51bS5EYW5nZXI7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgaG9zdENsYXNzID0gJ21uZy1hY3Rpb24tYnV0dG9uJztcblxuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb24hOiBBY3Rpb25EZXNjcmlwdG9yPFQ+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtPzogVDtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbUlkPzogSWRUeXBlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25EYXRhPzogQWN0aW9uRGF0YTtcbiAgICBASW5wdXQoKSBwdWJsaWMgcXVlcnlQYXJhbT86IE1lZGl1c1F1ZXJ5UGFyYW07XG4gICAgQElucHV0KCkgcHVibGljIGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8VCwgUz47XG4gICAgQElucHV0KCdkaXNhYmxlZCcpIHB1YmxpYyBpbnB1dERpc2FibGVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoZmFsc2UpO1xuICAgIEBJbnB1dCgnbG9hZGluZycpIHB1YmxpYyBpbnB1dExvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XG4gICAgQElucHV0KCd2aWV3Q29udGFpbmVyJykgcHVibGljIHZpZXdDb250YWluZXJJbml0PzogSVZpZXdDb250YWluZXI8VCwgUz47XG5cbiAgICBAT3V0cHV0KCdmaW5pc2gnKSBwdWJsaWMgZmluaXNoRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25JbnN0YW5jZTxULCBTPj4oKTtcblxuICAgIHByaXZhdGUgbG9hZGluZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBwdWJsaWMgJGxvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIGNtcElkOiBzdHJpbmcgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG4gICAgcHJpdmF0ZSBpc1Zpc2libGVTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHJpdmF0ZSBpc1Zpc2libGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljICRpc1Zpc2libGUgPSB0aGlzLmlzVmlzaWJsZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICBwcml2YXRlIGlzRW5hYmxlZFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBwcml2YXRlIGlzRW5hYmxlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgJGlzRW5hYmxlZCA9IHRoaXMuaXNFbmFibGVkU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIHByaXZhdGUgbGFiZWxTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nIHwgbnVsbD4oMSk7XG4gICAgcHJpdmF0ZSBsYWJlbFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgJGxhYmVsID0gdGhpcy5sYWJlbFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICBwcml2YXRlIHRvb2x0aXBTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nIHwgbnVsbD4oMSk7XG4gICAgcHJpdmF0ZSB0b29sdGlwU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyAkdG9vbHRpcCA9IHRoaXMudG9vbHRpcFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPFQsIFM+O1xuXG4gICAgcHVibGljIGFjdGlvbkxpbms/OiBBY3Rpb25MaW5rRGVzY3JpcHRvcjxUPjtcbiAgICBwdWJsaWMgaGFzTm9UaXRsZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhY3Rpb25FeGVjdXRvcjogTW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lclNlcnZpY2U6IE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlPFQsIFM+IHwgbnVsbFxuICAgICkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyID0gdGhpcy52aWV3Q29udGFpbmVySW5pdCA/PyB0aGlzLnZpZXdDb250YWluZXJTZXJ2aWNlID8/IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLmhhc05vVGl0bGUgPSB0aGlzLmFjdGlvbi50aXRsZSA9PT0gbnVsbDtcbiAgICAgICAgdGhpcy5pc0VuYWJsZWRTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmxhYmVsU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLnRvb2x0aXBTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N1YnNjcmlwdGlvbnMoKTtcblxuICAgICAgICBpZiAodGhpcy5hY3Rpb24gaW5zdGFuY2VvZiBBY3Rpb25MaW5rRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25MaW5rID0gdGhpcy5hY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3Rpb24uY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmhvc3RDbGFzcyA9IHRoaXMuYWN0aW9uLmNsYXNzTmFtZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEoY2hhbmdlc1snaXRlbSddPy5maXJzdENoYW5nZSA/PyB0cnVlKSB8fCAhKGNoYW5nZXNbJ2l0ZW1JZCddPy5maXJzdENoYW5nZSA/PyB0cnVlKSB8fCAhKGNoYW5nZXNbJ2FjdGlvbkRhdGEnXT8uZmlyc3RDaGFuZ2UgPz8gdHJ1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1N1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc0VuYWJsZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubGFiZWxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgdHJpZ2dlckFjdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uRGF0YSA9IHRoaXMuYWN0aW9uRGF0YSA/IHRoaXMuYWN0aW9uRGF0YSA6IHt9O1xuICAgICAgICBhY3Rpb25EYXRhWydjbXBJZCddID0gdGhpcy5jbXBJZDtcblxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0gbmV3IEFjdGlvblBhcmFtZXRlcnModGhpcy5pdGVtSWQsIHRoaXMuaXRlbSlcbiAgICAgICAgICAgIC53aXRoQWN0aW9uRGF0YShhY3Rpb25EYXRhKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtKHRoaXMucXVlcnlQYXJhbSlcbiAgICAgICAgICAgIC53aXRoUm91dGUodGhpcy5yb3V0ZSlcbiAgICAgICAgICAgIC53aXRoVmlld0NvbnRhaW5lcih0aGlzLnZpZXdDb250YWluZXIpXG4gICAgICAgICAgICAud2l0aFNvdXJjZUNvbXBvbmVudCh0aGlzKTtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmFjdGlvbkV4ZWN1dG9yLnRyaWdnZXJBY3Rpb24odGhpcy5hY3Rpb24sIHBhcmFtZXRlcnMpO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgaW5zdGFuY2UucmVzdWx0JC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmluaXNoRXZlbnRFbWl0dGVyLm5leHQoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgaW5zdGFuY2UuZXJyb3IkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5pc2hFdmVudEVtaXR0ZXIubmV4dChpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICBpbnN0YW5jZS5pc1J1bkxvYWRpbmckLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uU2VydmljZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZUluc3RhbmNlS2V5KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+KSB7XG4gICAgICAgIHJldHVybiBgJHthY3Rpb24uYWN0aW9uTmFtZX1fJHt0aGlzLmNtcElkfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3Vic2NyaXB0aW9ucygpIHtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IG5ldyBBY3Rpb25QYXJhbWV0ZXJzKHRoaXMuaXRlbUlkLCB0aGlzLml0ZW0pXG4gICAgICAgICAgICAud2l0aEFjdGlvbkRhdGEodGhpcy5hY3Rpb25EYXRhKVxuICAgICAgICAgICAgLndpdGhWaWV3Q29udGFpbmVyKHRoaXMudmlld0NvbnRhaW5lciA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICAud2l0aFNvdXJjZUNvbXBvbmVudCh0aGlzKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucHJlcGFyZUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uKHRoaXMuYWN0aW9uLCBwYXJhbWV0ZXJzLCB0aGlzLmRhdGFQcm92aWRlcik7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbi5pc1Zpc2libGVGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmlzVmlzaWJsZVN1YnNjcmlwdGlvbiA9IHRoaXMuYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uKGNvbnRleHQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHRoaXMuaXNWaXNpYmxlU3ViamVjdC5uZXh0KHJlcylcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFbmFibGVkU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5pc0VuYWJsZWRTdWJzY3JpcHRpb24gPSB0aGlzLmFjdGlvbi5pc0VuYWJsZWRGdW5jdGlvbihjb250ZXh0KS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLmlzRW5hYmxlZFN1YmplY3QubmV4dChyZXMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXNOb1RpdGxlKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5sYWJlbFN1YnNjcmlwdGlvbiA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0QXN5bmModGhpcy50cmFuc2xhdGUsIHRoaXMuYWN0aW9uLCAndGl0bGUnLCB0aGlzLmFjdGlvbj8udGl0bGUgPz8gdW5kZWZpbmVkLCB0aGlzLml0ZW0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogaTE4biA9PiB0aGlzLmxhYmVsU3ViamVjdC5uZXh0KGkxOG4pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50b29sdGlwU3Vic2NyaXB0aW9uID0gSTE4blV0aWxzLkFjdGlvbi5nZXRBc3luYyh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24sICd0b29sdGlwJywgdGhpcy5hY3Rpb24/LnRvb2x0aXAgPz8gdW5kZWZpbmVkLCB0aGlzLml0ZW0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiBpMThuID0+IHRoaXMudG9vbHRpcFN1YmplY3QubmV4dChpMThuKVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiJGlzVmlzaWJsZSB8IGFzeW5jXCI+XG4gICAgPGFcbiAgICAgICAgKm5nSWY9XCJhY3Rpb25MaW5rICYmIGFjdGlvbkxpbmsudXJsICE9PSAnJzsgZWxzZSByb3V0ZXJMaW5rXCJcbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBwUmlwcGxlXG4gICAgICAgIFtpY29uXT1cIiRhbnkoYWN0aW9uLmljb24pXCJcbiAgICAgICAgW2hyZWZdPVwiKCRpc0VuYWJsZWQgfCBhc3luYykgPT09IGZhbHNlIHx8ICgoaW5wdXREaXNhYmxlZCB8IGFzeW5jKSA/PyBmYWxzZSkgPyBudWxsIDogYWN0aW9uTGluay51cmxcIlxuICAgICAgICBbdGFyZ2V0XT1cImFjdGlvbkxpbmsudGFyZ2V0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIigkaXNFbmFibGVkIHwgYXN5bmMpID09PSBmYWxzZSB8fCAoKGlucHV0RGlzYWJsZWQgfCBhc3luYykgPz8gZmFsc2UpXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXJvdW5kZWRdPVwiaGFzTm9UaXRsZVwiXG4gICAgICAgIFtjbGFzcy5tbmctYWN0aW9uLWJ1dHRvbi1pY29uXT1cImhhc05vVGl0bGVcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tdGV4dF09XCJhY3Rpb24uaXNTdHlsZVRleHRcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tbGlua109XCJhY3Rpb25MaW5rLmlzU3R5bGVMaW5rXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXJhaXNlZF09XCJhY3Rpb24uaXNTdHlsZVJhaXNlZFwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1vdXRsaW5lZF09XCJhY3Rpb24uaXNTdHlsZU91dGxpbmVkXCJcbiAgICAgICAgW2NsYXNzLm1uZy1idXR0b24teHNdPVwiYWN0aW9uLmlzU2l6ZUV4dHJhU21hbGxcIlxuICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi1zbV09XCJhY3Rpb24uaXNTaXplU21hbGxcIlxuICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi1sZ109XCJhY3Rpb24uaXNTaXplTGFyZ2VcIlxuICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi14bF09XCJhY3Rpb24uaXNTaXplRXh0cmFMYXJnZVwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1kZWZhdWx0XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxEZWZhdWx0XCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXByaW1hcnldPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFByaW1hcnlcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tc2Vjb25kYXJ5XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxTZWNvbmRhcnlcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24taW5mb109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsSW5mb1wiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1oZWxwXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxIZWxwXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXN1Y2Nlc3NdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFN1Y2Nlc3NcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24td2FybmluZ109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsV2FybmluZ1wiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1kYW5nZXJdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbERhbmdlclwiXG4gICAgICAgID57eyAoJGxhYmVsIHwgYXN5bmMpID8/ICcnIH19PC9hXG4gICAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjcm91dGVyTGluaz5cbiAgICAgICAgPGFcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uTGluazsgZWxzZSBidXR0b25cIlxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgW2ljb25dPVwiJGFueShhY3Rpb24uaWNvbilcIlxuICAgICAgICAgICAgW3RhcmdldF09XCJhY3Rpb25MaW5rLnRhcmdldFwiXG4gICAgICAgICAgICBbcmVwbGFjZVVybF09XCJhY3Rpb25MaW5rLnJlcGxhY2VVcmxcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiXG4gICAgICAgICAgICAgICAgKCRpc0VuYWJsZWQgfCBhc3luYykgPT09IGZhbHNlIHx8ICgoaW5wdXREaXNhYmxlZCB8IGFzeW5jKSA/PyBmYWxzZSkgPyBudWxsIDogKGFjdGlvbkxpbmsucGF0aFNlZ21lbnRzIHwgbGlua0Zvcm1hdHRlcjogaXRlbUlkOml0ZW06YWN0aW9uLm1vZGVsOmFjdGlvbkRhdGEpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImFjdGlvbkxpbmsucXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiYWN0aW9uTGluay5xdWVyeVBhcmFtc0hhbmRsaW5nXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoJGlzRW5hYmxlZCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgKChpbnB1dERpc2FibGVkIHwgYXN5bmMpID8/IGZhbHNlKVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tcm91bmRlZF09XCJoYXNOb1RpdGxlXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYWN0aW9uLWJ1dHRvbi1pY29uXT1cImhhc05vVGl0bGVcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXRleHRdPVwiYWN0aW9uLmlzU3R5bGVUZXh0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1saW5rXT1cImFjdGlvbkxpbmsuaXNTdHlsZUxpbmtcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXJhaXNlZF09XCJhY3Rpb24uaXNTdHlsZVJhaXNlZFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tb3V0bGluZWRdPVwiYWN0aW9uLmlzU3R5bGVPdXRsaW5lZFwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi14c109XCJhY3Rpb24uaXNTaXplRXh0cmFTbWFsbFwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi1zbV09XCJhY3Rpb24uaXNTaXplU21hbGxcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1idXR0b24tbGddPVwiYWN0aW9uLmlzU2l6ZUxhcmdlXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXhsXT1cImFjdGlvbi5pc1NpemVFeHRyYUxhcmdlXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1kZWZhdWx0XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxEZWZhdWx0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1wcmltYXJ5XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxQcmltYXJ5XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1zZWNvbmRhcnldPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFNlY29uZGFyeVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24taW5mb109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsSW5mb1wiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24taGVscF09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsSGVscFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tc3VjY2Vzc109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsU3VjY2Vzc1wiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24td2FybmluZ109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsV2FybmluZ1wiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tZGFuZ2VyXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxEYW5nZXJcIlxuICAgICAgICAgICAgPnt7ICgkbGFiZWwgfCBhc3luYykgPz8gJycgfX08L2FcbiAgICAgICAgPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNidXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgW2ljb25dPVwiJGFueShhY3Rpb24uaWNvbilcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIigkbGFiZWwgfCBhc3luYykgPz8gJydcIlxuICAgICAgICAgICAgW3BUb29sdGlwXT1cIiRhbnkoJHRvb2x0aXAgfCBhc3luYylcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiKCgkbG9hZGluZyB8IGFzeW5jKSA/PyBmYWxzZSkgfHwgKChpbnB1dExvYWRpbmcgfCBhc3luYykgPz8gZmFsc2UpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoJGlzRW5hYmxlZCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgKChpbnB1dERpc2FibGVkIHwgYXN5bmMpID8/IGZhbHNlKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1yb3VuZGVkXT1cImhhc05vVGl0bGVcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1hY3Rpb24tYnV0dG9uLWljb25dPVwiaGFzTm9UaXRsZVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tdGV4dF09XCJhY3Rpb24uaXNTdHlsZVRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXJhaXNlZF09XCJhY3Rpb24uaXNTdHlsZVJhaXNlZFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tb3V0bGluZWRdPVwiYWN0aW9uLmlzU3R5bGVPdXRsaW5lZFwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi14c109XCJhY3Rpb24uaXNTaXplRXh0cmFTbWFsbFwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi1zbV09XCJhY3Rpb24uaXNTaXplU21hbGxcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1idXR0b24tbGddPVwiYWN0aW9uLmlzU2l6ZUxhcmdlXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXhsXT1cImFjdGlvbi5pc1NpemVFeHRyYUxhcmdlXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1kZWZhdWx0XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxEZWZhdWx0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1wcmltYXJ5XT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxQcmltYXJ5XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1zZWNvbmRhcnldPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFNlY29uZGFyeVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24taW5mb109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsSW5mb1wiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24taGVscF09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsSGVscFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tc3VjY2Vzc109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsU3VjY2Vzc1wiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24td2FybmluZ109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsV2FybmluZ1wiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tZGFuZ2VyXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxEYW5nZXJcIj48L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxwLWNvbmZpcm1EaWFsb2cgKm5nSWY9XCJhY3Rpb24uaGFzUnVuQ29uZmlybWF0aW9uXCIgW2tleV09XCJhY3Rpb24uYWN0aW9uTmFtZSArICdfJyArIGNtcElkXCIgW2Jhc2VaSW5kZXhdPVwiNTBcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtY29uZmlybURpYWxvZz5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -191,7 +191,7 @@ export class MngActionEditorComponent {
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
MngActionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionEditorComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.MngActionExecutorService }, { token: i2.MngCommonsService }, { token: i2.MngNavigationService }, { token: i3.DynamicDialogRef, optional: true }, { token: i3.DynamicDialogConfig, optional: true }, { token: i2.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
-
MngActionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionEditorComponent, selector: "mng-action-editor", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { actionRunEventEmitter: "actionSubmit" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: MngFormEditorComponent, descendants: true }], ngImport: i0, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n", components: [{ type: i4.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: i5.MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["finish"] }, { type: i6.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { type: i7.MngFormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["formSubmit"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i8.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
194
|
+
MngActionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionEditorComponent, selector: "mng-action-editor", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { actionRunEventEmitter: "actionSubmit" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: MngFormEditorComponent, descendants: true }], ngImport: i0, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n", components: [{ type: i4.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: i5.MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["finish"] }, { type: i6.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { type: i7.MngFormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["formSubmit"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i8.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
195
195
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionEditorComponent, decorators: [{
|
|
196
196
|
type: Component,
|
|
197
197
|
args: [{ selector: 'mng-action-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n" }]
|
|
@@ -194,6 +194,10 @@ export class ActionParameters {
|
|
|
194
194
|
this.actionData = actionData;
|
|
195
195
|
return this;
|
|
196
196
|
}
|
|
197
|
+
withQueryParam(queryParam) {
|
|
198
|
+
this.queryParam = queryParam;
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
197
201
|
withViewContainer(viewContainer) {
|
|
198
202
|
this.viewContainer = viewContainer;
|
|
199
203
|
return this;
|
|
@@ -228,4 +232,4 @@ export var ActionInstanceStateEnum;
|
|
|
228
232
|
ActionInstanceStateEnum[ActionInstanceStateEnum["FinishError"] = 16] = "FinishError";
|
|
229
233
|
ActionInstanceStateEnum[ActionInstanceStateEnum["FinishDismissed"] = 17] = "FinishDismissed"; // action was dismissed by user
|
|
230
234
|
})(ActionInstanceStateEnum || (ActionInstanceStateEnum = {}));
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWV4ZWN1dGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vbW9kZWxzL2FjdGlvbi1leGVjdXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFnQixvQkFBb0IsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQU83RyxNQUFNLE9BQU8sV0FBVztJQUNwQixZQUNvQixLQUFVLEVBQUUsZ0JBQWdCO0lBQzVCLFlBQXFCLEtBQUssQ0FBQyxVQUFVOztRQURyQyxVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ1YsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFDM0MsQ0FBQztDQUNQO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQWdDdkIsWUFBWSxNQUEyQixFQUFFLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxZQUFZLEVBQVMsUUFBUSxLQUFLO1FBQWIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQTNCM0cscUJBQXFCO1FBQ0wsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFLaEQsYUFBUSxHQUErQixFQUFFLENBQUM7UUFDMUMscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQXdCLENBQUM7UUFDdkQsOEJBQXlCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBMEIsQ0FBQyxDQUFDLENBQUM7UUFDL0Qsa0JBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBVyxDQUFDLENBQUMsQ0FBQztRQUMvQyxpQkFBWSxHQUFHLElBQUksYUFBYSxDQUFjLENBQUMsQ0FBQyxDQUFDO1FBRTFELGtDQUE2QixHQUF3QixFQUFFLENBQUM7UUFlNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0RSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsS0FBSyxDQUFDLEtBQThCO1FBQzNDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsZ0JBQWdCLGFBQWEsS0FBSyxLQUFLLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNqSDtZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsTUFBTSxDQUFDLE1BQTRCO1FBQzFDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1lBQy9CLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxnQkFBZ0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLEtBQUssQ0FBQyxLQUE4QjtRQUMzQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUM5QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsZ0JBQWdCLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzRTtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUFXO1FBQ3hCLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkUsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUE0QixFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQ2pFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxnQkFBZ0Isa0JBQWtCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1NBQ3JHO1FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLGNBQWMsRUFBRTtZQUNoQixjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQ25DLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzlDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ3JELENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FDbkMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMxRCxDQUFDLENBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUU7WUFDakUsSUFBSSxDQUFDLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxhQUFhLENBQUM7U0FDdEQ7UUFDRCx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFNdEIsWUFDb0IsUUFBOEIsRUFDOUIsVUFBK0IsRUFDL0IsWUFBd0MsRUFDeEMsWUFBa0MsRUFDbEMsZUFBbUIsRUFDbEIsbUJBQW1CLElBQUksYUFBYSxDQUF1QixDQUFDLENBQUMsRUFDN0QsNEJBQTRCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztRQU52RCxhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUMvQixpQkFBWSxHQUFaLFlBQVksQ0FBNEI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFJO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBNkM7UUFDN0QsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUE2QjtRQUV2RSxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLG1CQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFTSxjQUFjO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGVBQWUsb0JBQW9CLENBQUMsQ0FBQztTQUM1RTtRQUNELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUEwQixFQUFFLE1BQU0sR0FBRyxJQUFJO1FBQzFELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGVBQWUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9GO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVNLGlCQUFpQjtRQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksQ0FBQyxlQUFlLHVCQUF1QixDQUFDLENBQUM7U0FDL0U7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sY0FBYyxDQUFDLEdBQWE7UUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLENBQUMsZUFBZSxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNqRjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUMsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLFlBQ29CLFVBQStCLEVBQy9CLFVBQStCLEVBQy9CLFlBQWtDLEVBQ2xDLGVBQW1CO1FBSG5CLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBQy9CLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBQy9CLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBSTtJQUNwQyxDQUFDO0NBQ1A7QUFFRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTXpCLFlBQW1CLE1BQWUsRUFBUyxJQUFRO1FBQWhDLFdBQU0sR0FBTixNQUFNLENBQVM7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFJO0lBQUcsQ0FBQztJQUVoRCxjQUFjLENBQUMsVUFBdUI7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGlCQUFpQixDQUFJLGFBQW9DO1FBQzVELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxlQUFxQjtRQUM1QyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQXNCO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSjtBQUVELE1BQU0sQ0FBTixJQUFZLHVCQW1CWDtBQW5CRCxXQUFZLHVCQUF1QjtJQUMvQixxRkFBWSxDQUFBO0lBQ1osaUZBQVUsQ0FBQTtJQUNWLDJGQUFlLENBQUE7SUFDZix1RkFBYSxDQUFBO0lBQ2IsaUZBQVUsQ0FBQTtJQUNWLDZFQUFRLENBQUE7SUFDUixpRkFBVSxDQUFBO0lBQ1YscUdBQW9CLENBQUE7SUFDcEIsNkdBQXdCLENBQUE7SUFDeEIsNkdBQXdCLENBQUE7SUFDeEIsOEVBQVEsQ0FBQTtJQUNSLDBFQUFNLENBQUE7SUFDTiw4RUFBUSxDQUFBO0lBQ1IsNEZBQWUsQ0FBQTtJQUNmLHdGQUFhLENBQUE7SUFDYix3RkFBYSxDQUFBO0lBQ2Isb0ZBQVcsQ0FBQTtJQUNYLDRGQUFlLENBQUEsQ0FBQywrQkFBK0I7QUFDbkQsQ0FBQyxFQW5CVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBbUJsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7Q29uZmlybWF0aW9uLCBNZXNzYWdlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0R5bmFtaWNEaWFsb2dSZWZ9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7SURhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0lWaWV3Q29udGFpbmVyLCBNbmdFcnJvcn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7SWRUeXBlfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25FcnJvciB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlcnJvcjogYW55LCAvLyBlcnJvciBkZXRhaWxzXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBkaXNtaXNzZWQ6IGJvb2xlYW4gPSBmYWxzZSAvLyBieSB1c2VyXG4gICAgKSB7fVxufVxuXG4vKipcbiAqIEFjdGlvbiBleGVjdXRpb24gaW5zdGFuY2UgY29udGFpbmluZyBkYXRhIGFib3V0IGV4ZWN1dGlvbiBzdGF0ZSBvZiBhY3Rpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEFjdGlvbkluc3RhbmNlPFQsIFM+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VJZDogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZUxvbmdOYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxUPjtcblxuICAgIC8vIGZ1bmN0aW9uIGV4ZWN1dGlvblxuICAgIHB1YmxpYyByZWFkb25seSBpc1J1bkxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvLyBwYXJhbWV0ZXJzLCBjb250ZXh0cywgc3RhdGVzXG4gICAgcHVibGljIHRyaWdnZXJQYXJhbWV0ZXJzPzogQWN0aW9uUGFyYW1ldGVyczxUPjtcbiAgICBwdWJsaWMgYWN0aXZhdGlvblBhcmFtZXRlcnM/OiBBY3Rpb25QYXJhbWV0ZXJzPFQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dHM6IEFycmF5PEFjdGlvbkNvbnRleHQ8VCwgUz4+ID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRpb25TdWJqZWN0ID0gbmV3IFN1YmplY3Q8VCB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRpb25Jc1J1bm5pbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkluc3RhbmNlU3RhdGVFbnVtPigxKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3VsdFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxUIHwgbnVsbD4oMSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvclN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxBY3Rpb25FcnJvcj4oMSk7XG5cbiAgICBwcml2YXRlIGNvbnRleHRFeGVjdXRpb25TdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG5cbiAgICAvLyByZXN1bHQgb3IgZXJyb3JcbiAgICBwcml2YXRlIF9yZXN1bHQ/OiBUIHwgbnVsbDtcbiAgICBwcml2YXRlIF9lcnJvcj86IEFjdGlvbkVycm9yO1xuXG4gICAgLy8gYWRkaXRpb25hbCBkYXRhIGZyb20gdHJpZ2dlci9hY3RpdmF0aW9uXG4gICAgcHVibGljIHRyaWdnZXJSb3V0ZU5hdmlnYXRpb24/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHB1YmxpYyBhY3RpdmF0aW9uRGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcblxuICAgIC8vIGxpbmtlZCBhY3Rpb25zXG4gICAgcHVibGljIG5leHRBY3Rpb25JbnN0YW5jZT86IEFjdGlvbkluc3RhbmNlPHVua25vd24sIHVua25vd24+O1xuICAgIHB1YmxpYyBlcnJvckFjdGlvbkluc3RhbmNlPzogQWN0aW9uSW5zdGFuY2U8dW5rbm93biwgdW5rbm93bj47XG5cbiAgICBjb25zdHJ1Y3RvcihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8VD4sIHN0YXRlID0gQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uVHJpZ2dlclN0YXJ0LCBwdWJsaWMgZGVidWcgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLmluc3RhbmNlSWQgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG4gICAgICAgIHRoaXMuaW5zdGFuY2VMb25nTmFtZSA9IGAke2FjdGlvbi5hY3Rpb25OYW1lTG9uZ31fJHt0aGlzLmluc3RhbmNlSWR9YDtcbiAgICAgICAgdGhpcy5hY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzUnVuTG9hZGluZyQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUnVuTG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb250ZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0cy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiB0aGlzLmNvbnRleHRzW3RoaXMuY29udGV4dHMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBleGVjdXRpb24kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhlY3V0aW9uSXNSdW5uaW5nJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0aW9uSXNSdW5uaW5nU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlU3ViamVjdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHN0YXRlKHN0YXRlOiBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bSkge1xuICAgICAgICBpZiAoc3RhdGUgPiB0aGlzLnN0YXRlU3ViamVjdC52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBBY3Rpb25JbnN0YW5jZSAke3RoaXMuaW5zdGFuY2VMb25nTmFtZX0gLSBzdGF0ZSAjJHtzdGF0ZX06ICR7QWN0aW9uSW5zdGFuY2VTdGF0ZUVudW1bc3RhdGVdfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN0YXRlJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1bHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCByZXN1bHQocmVzdWx0OiBUIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgQWN0aW9uSW5zdGFuY2UgJHt0aGlzLmluc3RhbmNlTG9uZ05hbWV9IC0gcmVzdWx0YCwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgIHRoaXMucmVzdWx0U3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1bHQkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGVycm9yKGVycm9yOiBBY3Rpb25FcnJvciB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGVycm9yID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBBY3Rpb25JbnN0YW5jZSAke3RoaXMuaW5zdGFuY2VMb25nTmFtZX0gLSBlcnJvcmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KGVycm9yKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVycm9yJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb250ZXh0QXQoaWR4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGlkeCA8IHRoaXMuY29udGV4dHMubGVuZ3RoID8gdGhpcy5jb250ZXh0c1tpZHhdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXdDb250ZXh0KGNvbnRleHQ6IEFjdGlvbkNvbnRleHQ8VCwgUz4sIGZpbmlzaFByZXZpb3VzID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgQWN0aW9uSW5zdGFuY2UgJHt0aGlzLmluc3RhbmNlTG9uZ05hbWV9IC0gbmV3IGNvbnRleHQgJHtjb250ZXh0LmNvbnRleHRMb25nTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgICAgICAgICBjdXJyZW50Q29udGV4dC5leGVjdXRpb25Db21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGV4dEV4ZWN1dGlvblN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuY29udGV4dEV4ZWN1dGlvblN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5jb250ZXh0RXhlY3V0aW9uU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgY29udGV4dC5leGVjdXRpb24kLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogbmV4dCA9PiB0aGlzLmV4ZWN1dGlvblN1YmplY3QubmV4dChuZXh0KSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgPT4gdGhpcy5leGVjdXRpb25TdWJqZWN0LmVycm9yKGVycm9yKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0RXhlY3V0aW9uU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgY29udGV4dC5leGVjdXRpb25Jc1J1bm5pbmckLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogbmV4dCA9PiB0aGlzLmV4ZWN1dGlvbklzUnVubmluZ1N1YmplY3QubmV4dChuZXh0KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5pc2goKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlU3ViamVjdC52YWx1ZSA8IEFjdGlvbkluc3RhbmNlU3RhdGVFbnVtLkZpbmlzaFN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5GaW5pc2hTdWNjZXNzO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbXBsZXRlIGFsbCBzdWJqZWN0c1xuICAgICAgICB0aGlzLmNvbnRleHRzLmZvckVhY2goYyA9PiBjLmZpbmlzaCgpKTtcbiAgICAgICAgdGhpcy5leGVjdXRpb25TdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZXhlY3V0aW9uSXNSdW5uaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnJlc3VsdFN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QuY29tcGxldGUoKTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgY29udGFpbmluZyBhbGwgbWFpbiBkYXRhIGZvciBhY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4gcnVuL2ZldGNoL3N1Ym1pdCBzdGF0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBY3Rpb25Db250ZXh0PFQsIFM+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udGV4dExvbmdOYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHByZXZpb3VzQWN0aW9uSW5zdGFuY2U/OiBBY3Rpb25JbnN0YW5jZTx1bmtub3duLCB1bmtub3duPjtcbiAgICBwdWJsaWMgY29uZmlybWF0aW9uPzogQ29uZmlybWF0aW9uO1xuICAgIHB1YmxpYyBub3RpZmljYXRpb24/OiBNZXNzYWdlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZTogQWN0aW9uSW5zdGFuY2U8VCwgUz4sXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBwYXJhbWV0ZXJzOiBBY3Rpb25QYXJhbWV0ZXJzPFQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiAncnVuJyB8ICdmZXRjaCcgfCAnc3VibWl0JyxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8VCwgUz4sXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlSW5zdGFuY2U/OiBTLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGV4ZWN1dGlvblN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxUIHwgbnVsbCB8IHVuZGVmaW5lZD4oMSksXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZXhlY3V0aW9uSXNSdW5uaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29udGV4dExvbmdOYW1lID0gYCR7dGhpcy5pbnN0YW5jZS5pbnN0YW5jZUxvbmdOYW1lfV8ke2Z1bmN0aW9uTmFtZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhlY3V0aW9uJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGV4ZWN1dGlvbklzUnVubmluZyQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGlvbklzUnVubmluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhlY3V0aW9uU3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBBY3Rpb25Db250ZXh0ICR7dGhpcy5jb250ZXh0TG9uZ05hbWV9IC0gZXhlY3V0aW9uIHN0YXJ0YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leGVjdXRpb25Jc1J1bm5pbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4ZWN1dGlvbk5leHQobmV4dDogVCB8IG51bGwgfCB1bmRlZmluZWQsIGZpbmlzaCA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UuZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYEFjdGlvbkNvbnRleHQgJHt0aGlzLmNvbnRleHRMb25nTmFtZX0gLSBleGVjdXRpb24gbmV4dCBldmVudGAsIG5leHQsIGZpbmlzaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leGVjdXRpb25TdWJqZWN0Lm5leHQobmV4dCk7XG4gICAgICAgIGlmIChmaW5pc2gpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0aW9uQ29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRpb25Db21wbGV0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UuZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYEFjdGlvbkNvbnRleHQgJHt0aGlzLmNvbnRleHRMb25nTmFtZX0gLSBleGVjdXRpb24gY29tcGxldGVgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4ZWN1dGlvblN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5leGVjdXRpb25Jc1J1bm5pbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRpb25FcnJvcihlcnI6IE1uZ0Vycm9yKSB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBBY3Rpb25Db250ZXh0ICR7dGhpcy5jb250ZXh0TG9uZ05hbWV9IC0gZXhlY3V0aW9uIGVycm9yYCwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4ZWN1dGlvblN1YmplY3QuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5leGVjdXRpb25Jc1J1bm5pbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5pc2goKSB7XG4gICAgICAgIHRoaXMuZXhlY3V0aW9uU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmV4ZWN1dGlvbklzUnVubmluZ1N1YmplY3QuY29tcGxldGUoKTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgY29udGFpbmluZyBhbGwgbWFpbiBkYXRhIGZvciBhY3Rpb24gdmFsaWRhdGlvbnMgKGVuYWJsZWQvdmlzaWJsZSkgdG8gYmUgZXhlY3V0ZWQgaW4gdmFsaWRhdGlvbiBzdGF0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjxULCBTPiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdG9yOiBBY3Rpb25EZXNjcmlwdG9yPFQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcGFyYW1ldGVyczogQWN0aW9uUGFyYW1ldGVyczxUPixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8VCwgUz4sXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlSW5zdGFuY2U/OiBTXG4gICAgKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uUGFyYW1ldGVyczxUPiB7XG4gICAgcHVibGljIGFjdGlvbkRhdGE/OiBBY3Rpb25EYXRhO1xuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8VCwgdW5rbm93bj47XG4gICAgcHVibGljIHNvdXJjZUNvbXBvbmVudD86IGFueTtcbiAgICBwdWJsaWMgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtSWQ/OiBJZFR5cGUsIHB1YmxpYyBpdGVtPzogVCkge31cblxuICAgIHB1YmxpYyB3aXRoQWN0aW9uRGF0YShhY3Rpb25EYXRhPzogQWN0aW9uRGF0YSkge1xuICAgICAgICB0aGlzLmFjdGlvbkRhdGEgPSBhY3Rpb25EYXRhO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFZpZXdDb250YWluZXI8Uz4odmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPFQsIFM+KSB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lciA9IHZpZXdDb250YWluZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU291cmNlQ29tcG9uZW50KHNvdXJjZUNvbXBvbmVudD86IGFueSkge1xuICAgICAgICB0aGlzLnNvdXJjZUNvbXBvbmVudCA9IHNvdXJjZUNvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZShyb3V0ZT86IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgICAgIHRoaXMucm91dGUgPSByb3V0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bSB7XG4gICAgVHJpZ2dlclN0YXJ0LCAvLyBhY3Rpb24gd2FzIHRyaWdnZXJlZCAoY2xpY2sgb3IgZGlyZWN0KVxuICAgIFRyaWdnZXJFbmQsXG4gICAgQWN0aXZhdGlvblN0YXJ0LCAvLyBhY3Rpb24gYWN0aXZhdGlvbiBzdGFydGVkIChkaXJlY3QsIGV2ZW50IG9yIGVkaXRvcilcbiAgICBBY3RpdmF0aW9uRW5kLCAvLyBhY3Rpb24gYWN0aXZhdGlvbiBlbmRlZFxuICAgIEZldGNoU3RhcnQsIC8vIGZldGNoIHN0YXJ0ZWRcbiAgICBGZXRjaEVuZCwgLy8gZmV0Y2ggZW5kZWRcbiAgICBGZXRjaEVycm9yLCAvLyBmZXRjaCBlcnJvclxuICAgIFJ1bkNvbmZpcm1hdGlvblN0YXJ0LCAvLyBjb25maXJtYXRpb24gZm9yIHJ1biBpcyBzdGFydGVkXG4gICAgUnVuQ29uZmlybWF0aW9uRW5kQWNjZXB0LCAvLyBjb25maXJtYXRpb24gYWNjZXB0ZWRcbiAgICBSdW5Db25maXJtYXRpb25FbmRSZWplY3QsIC8vIGNvbmZpcm1hdGlvbiByZWplY3RlZFxuICAgIFJ1blN0YXJ0LCAvLyBhY3Rpb24gd2FzIHJ1biBieSBjYWxsaW5nIG1haW4gZnVuY3Rpb25cbiAgICBSdW5FbmQsIC8vIGFjdGlvbiBydW4gZnVuY3Rpb24gZXhlY3V0ZWRcbiAgICBSdW5FcnJvciwgLy8gYWN0aW9uIHJ1biBmdW5jdGlvbiBleGVjdXRlZFxuICAgIE5leHRBY3Rpb25TdGFydCwgLy8gbmV4dCBhY3Rpb24gc3RhcnRlZFxuICAgIE5leHRBY3Rpb25FbmQsIC8vIG5leHQgYWN0aW9uIGZpbmlzaGVkXG4gICAgRmluaXNoU3VjY2VzcywgLy8gYWN0aW9uIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseVxuICAgIEZpbmlzaEVycm9yLCAvLyBhY3Rpb24gZXhlY3V0ZWQgd2l0aCBlcnJvclxuICAgIEZpbmlzaERpc21pc3NlZCAvLyBhY3Rpb24gd2FzIGRpc21pc3NlZCBieSB1c2VyXG59XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRhdGEgPSB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufTtcbiJdfQ==
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWV4ZWN1dGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vbW9kZWxzL2FjdGlvbi1leGVjdXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFnQixvQkFBb0IsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQVE3RyxNQUFNLE9BQU8sV0FBVztJQUNwQixZQUNvQixLQUFVLEVBQUUsZ0JBQWdCO0lBQzVCLFlBQXFCLEtBQUssQ0FBQyxVQUFVOztRQURyQyxVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ1YsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFDM0MsQ0FBQztDQUNQO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQWdDdkIsWUFBWSxNQUEyQixFQUFFLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxZQUFZLEVBQVMsUUFBUSxLQUFLO1FBQWIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQTNCM0cscUJBQXFCO1FBQ0wsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFLaEQsYUFBUSxHQUErQixFQUFFLENBQUM7UUFDMUMscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQXdCLENBQUM7UUFDdkQsOEJBQXlCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBMEIsQ0FBQyxDQUFDLENBQUM7UUFDL0Qsa0JBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBVyxDQUFDLENBQUMsQ0FBQztRQUMvQyxpQkFBWSxHQUFHLElBQUksYUFBYSxDQUFjLENBQUMsQ0FBQyxDQUFDO1FBRTFELGtDQUE2QixHQUF3QixFQUFFLENBQUM7UUFlNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMs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bnQiOlsiaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtDb25maXJtYXRpb24sIE1lc3NhZ2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7RHluYW1pY0RpYWxvZ1JlZn0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtfSBmcm9tICcuLi8uLi8uLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7SURhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0lWaWV3Q29udGFpbmVyLCBNbmdFcnJvcn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7SWRUeXBlfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25FcnJvciB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlcnJvcjogYW55LCAvLyBlcnJvciBkZXRhaWxzXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBkaXNtaXNzZWQ6IGJvb2xlYW4gPSBmYWxzZSAvLyBieSB1c2VyXG4gICAgKSB7fVxufVxuXG4vKipcbiAqIEFjdGlvbiBleGVjdXRpb24gaW5zdGFuY2UgY29udGFpbmluZyBkYXRhIGFib3V0IGV4ZWN1dGlvbiBzdGF0ZSBvZiBhY3Rpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEFjdGlvbkluc3RhbmNlPFQsIFM+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VJZDogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZUxvbmdOYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxUPjtcblxuICAgIC8vIGZ1bmN0aW9uIGV4ZWN1dGlvblxuICAgIHB1YmxpYyByZWFkb25seSBpc1J1bkxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvLyBwYXJhbWV0ZXJzLCBjb250ZXh0cywgc3RhdGVzXG4gICAgcHVibGljIHRyaWdnZXJQYXJhbWV0ZXJzPzogQWN0aW9uUGFyYW1ldGVyczxUPjtcbiAgICBwdWJsaWMgYWN0aXZhdGlvblBhcmFtZXRlcnM/OiBBY3Rpb25QYXJhbWV0ZXJzPFQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dHM6IEFycmF5PEFjdGlvbkNvbnRleHQ8VCwgUz4+ID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRpb25TdWJqZWN0ID0gbmV3IFN1YmplY3Q8VCB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRpb25Jc1J1bm5pbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkluc3RhbmNlU3RhdGVFbnVtPigxKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3VsdFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxUIHwgbnVsbD4oMSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvclN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxBY3Rpb25FcnJvcj4oMSk7XG5cbiAgICBwcml2YXRlIGNvbnRleHRFeGVjdXRpb25TdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG5cbiAgICAvLyByZXN1bHQgb3IgZXJyb3JcbiAgICBwcml2YXRlIF9yZXN1bHQ/OiBUIHwgbnVsbDtcbiAgICBwcml2YXRlIF9lcnJvcj86IEFjdGlvbkVycm9yO1xuXG4gICAgLy8gYWRkaXRpb25hbCBkYXRhIGZyb20gdHJpZ2dlci9hY3RpdmF0aW9uXG4gICAgcHVibGljIHRyaWdnZXJSb3V0ZU5hdmlnYXRpb24/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHB1YmxpYyBhY3RpdmF0aW9uRGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcblxuICAgIC8vIGxpbmtlZCBhY3Rpb25zXG4gICAgcHVibGljIG5leHRBY3Rpb25JbnN0YW5jZT86IEFjdGlvbkluc3RhbmNlPHVua25vd24sIHVua25vd24+O1xuICAgIHB1YmxpYyBlcnJvckFjdGlvbkluc3RhbmNlPzogQWN0aW9uSW5zdGFuY2U8dW5rbm93biwgdW5rbm93bj47XG5cbiAgICBjb25zdHJ1Y3RvcihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8VD4sIHN0YXRlID0gQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uVHJpZ2dlclN0YXJ0LCBwdWJsaWMgZGVidWcgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLmluc3RhbmNlSWQgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG4gICAgICAgIHRoaXMuaW5zdGFuY2VMb25nTmFtZSA9IGAke2FjdGlvbi5hY3Rpb25OYW1lTG9uZ31fJHt0aGlzLmluc3RhbmNlSWR9YDtcbiAgICAgICAgdGhpcy5hY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzUnVuTG9hZGluZyQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUnVuTG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb250ZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0cy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiB0aGlzLmNvbnRleHRzW3RoaXMuY29udGV4dHMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBleGVjdXRpb24kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhlY3V0aW9uSXNSdW5uaW5nJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0aW9uSXNSdW5uaW5nU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlU3ViamVjdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHN0YXRlKHN0YXRlOiBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bSkge1xuICAgICAgICBpZiAoc3RhdGUgPiB0aGlzLnN0YXRlU3ViamVjdC52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBBY3Rpb25JbnN0YW5jZSAke3RoaXMuaW5zdGFuY2VMb25nTmFtZX0gLSBzdGF0ZSAjJHtzdGF0ZX06ICR7QWN0aW9uSW5zdGFuY2VTdGF0ZUVudW1bc3RhdGVdfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN0YXRlJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1bHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCByZXN1bHQocmVzdWx0OiBUIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgQWN0aW9uSW5zdGFuY2UgJHt0aGlzLmluc3RhbmNlTG9uZ05hbWV9IC0gcmVzdWx0YCwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgIHRoaXMucmVzdWx0U3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1bHQkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGVycm9yKGVycm9yOiBBY3Rpb25FcnJvciB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGVycm9yID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBBY3Rpb25JbnN0YW5jZSAke3RoaXMuaW5zdGFuY2VMb25nTmFtZX0gLSBlcnJvcmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KGVycm9yKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVycm9yJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb250ZXh0QXQoaWR4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGlkeCA8IHRoaXMuY29udGV4dHMubGVuZ3RoID8gdGhpcy5jb250ZXh0c1tpZHhdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXdDb250ZXh0KGNvbnRleHQ6IEFjdGlvbkNvbnRleHQ8VCwgUz4sIGZpbmlzaFByZXZpb3VzID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgQWN0aW9uSW5zdGFuY2UgJHt0aGlzLmluc3RhbmNlTG9uZ05hbWV9IC0gbmV3IGNvbnRleHQgJHtjb250ZXh0LmNvbnRleHRMb25nTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgICAgICAgICBjdXJyZW50Q29udGV4dC5leGVjdXRpb25Db21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGV4dEV4ZWN1dGlvblN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuY29udGV4dEV4ZWN1dGlvblN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5jb250ZXh0RXhlY3V0aW9uU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgY29udGV4dC5leGVjdXRpb24kLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogbmV4dCA9PiB0aGlzLmV4ZWN1dGlvblN1YmplY3QubmV4dChuZXh0KSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgPT4gdGhpcy5leGVjdXRpb25TdWJqZWN0LmVycm9yKGVycm9yKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0RXhlY3V0aW9uU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgY29udGV4dC5leGVjdXRpb25Jc1J1bm5pbmckLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogbmV4dCA9PiB0aGlzLmV4ZWN1dGlvbklzUnVubmluZ1N1YmplY3QubmV4dChuZXh0KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5pc2goKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlU3ViamVjdC52YWx1ZSA8IEFjdGlvbkluc3RhbmNlU3RhdGVFbnVtLkZpbmlzaFN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5GaW5pc2hTdWNjZXNzO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbXBsZXRlIGFsbCBzdWJqZWN0c1xuICAgICAgICB0aGlzLmNvbnRleHRzLmZvckVhY2goYyA9PiBjLmZpbmlzaCgpKTtcbiAgICAgICAgdGhpcy5leGVjdXRpb25TdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZXhlY3V0aW9uSXNSdW5uaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnJlc3VsdFN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QuY29tcGxldGUoKTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgY29udGFpbmluZyBhbGwgbWFpbiBkYXRhIGZvciBhY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4gcnVuL2ZldGNoL3N1Ym1pdCBzdGF0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBY3Rpb25Db250ZXh0PFQsIFM+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udGV4dExvbmdOYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHByZXZpb3VzQWN0aW9uSW5zdGFuY2U/OiBBY3Rpb25JbnN0YW5jZTx1bmtub3duLCB1bmtub3duPjtcbiAgICBwdWJsaWMgY29uZmlybWF0aW9uPzogQ29uZmlybWF0aW9uO1xuICAgIHB1YmxpYyBub3RpZmljYXRpb24/OiBNZXNzYWdlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZTogQWN0aW9uSW5zdGFuY2U8VCwgUz4sXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBwYXJhbWV0ZXJzOiBBY3Rpb25QYXJhbWV0ZXJzPFQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiAncnVuJyB8ICdmZXRjaCcgfCAnc3VibWl0JyxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8VCwgUz4sXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlSW5zdGFuY2U/OiBTLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGV4ZWN1dGlvblN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxUIHwgbnVsbCB8IHVuZGVmaW5lZD4oMSksXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZXhlY3V0aW9uSXNSdW5uaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29udGV4dExvbmdOYW1lID0gYCR7dGhpcy5pbnN0YW5jZS5pbnN0YW5jZUxvbmdOYW1lfV8ke2Z1bmN0aW9uTmFtZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhlY3V0aW9uJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGV4ZWN1dGlvbklzUnVubmluZyQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGlvbklzUnVubmluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhlY3V0aW9uU3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBBY3Rpb25Db250ZXh0ICR7dGhpcy5jb250ZXh0TG9uZ05hbWV9IC0gZXhlY3V0aW9uIHN0YXJ0YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leGVjdXRpb25Jc1J1bm5pbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4ZWN1dGlvbk5leHQobmV4dDogVCB8IG51bGwgfCB1bmRlZmluZWQsIGZpbmlzaCA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UuZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYEFjdGlvbkNvbnRleHQgJHt0aGlzLmNvbnRleHRMb25nTmFtZX0gLSBleGVjdXRpb24gbmV4dCBldmVudGAsIG5leHQsIGZpbmlzaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leGVjdXRpb25TdWJqZWN0Lm5leHQobmV4dCk7XG4gICAgICAgIGlmIChmaW5pc2gpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0aW9uQ29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRpb25Db21wbGV0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UuZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYEFjdGlvbkNvbnRleHQgJHt0aGlzLmNvbnRleHRMb25nTmFtZX0gLSBleGVjdXRpb24gY29tcGxldGVgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4ZWN1dGlvblN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5leGVjdXRpb25Jc1J1bm5pbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRpb25FcnJvcihlcnI6IE1uZ0Vycm9yKSB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBBY3Rpb25Db250ZXh0ICR7dGhpcy5jb250ZXh0TG9uZ05hbWV9IC0gZXhlY3V0aW9uIGVycm9yYCwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4ZWN1dGlvblN1YmplY3QuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5leGVjdXRpb25Jc1J1bm5pbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5pc2goKSB7XG4gICAgICAgIHRoaXMuZXhlY3V0aW9uU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmV4ZWN1dGlvbklzUnVubmluZ1N1YmplY3QuY29tcGxldGUoKTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgY29udGFpbmluZyBhbGwgbWFpbiBkYXRhIGZvciBhY3Rpb24gdmFsaWRhdGlvbnMgKGVuYWJsZWQvdmlzaWJsZSkgdG8gYmUgZXhlY3V0ZWQgaW4gdmFsaWRhdGlvbiBzdGF0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjxULCBTPiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdG9yOiBBY3Rpb25EZXNjcmlwdG9yPFQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcGFyYW1ldGVyczogQWN0aW9uUGFyYW1ldGVyczxUPixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8VCwgUz4sXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlSW5zdGFuY2U/OiBTXG4gICAgKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uUGFyYW1ldGVyczxUPiB7XG4gICAgcHVibGljIGFjdGlvbkRhdGE/OiBBY3Rpb25EYXRhO1xuICAgIHB1YmxpYyBxdWVyeVBhcmFtPzogTWVkaXVzUXVlcnlQYXJhbTtcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPFQsIHVua25vd24+O1xuICAgIHB1YmxpYyBzb3VyY2VDb21wb25lbnQ/OiBhbnk7XG4gICAgcHVibGljIHJvdXRlPzogQWN0aXZhdGVkUm91dGU7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaXRlbUlkPzogSWRUeXBlLCBwdWJsaWMgaXRlbT86IFQpIHt9XG5cbiAgICBwdWJsaWMgd2l0aEFjdGlvbkRhdGEoYWN0aW9uRGF0YT86IEFjdGlvbkRhdGEpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25EYXRhID0gYWN0aW9uRGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhRdWVyeVBhcmFtKHF1ZXJ5UGFyYW0/OiBNZWRpdXNRdWVyeVBhcmFtKSB7XG4gICAgICAgIHRoaXMucXVlcnlQYXJhbSA9IHF1ZXJ5UGFyYW07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmlld0NvbnRhaW5lcjxTPih2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8VCwgUz4pIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyID0gdmlld0NvbnRhaW5lcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3VyY2VDb21wb25lbnQoc291cmNlQ29tcG9uZW50PzogYW55KSB7XG4gICAgICAgIHRoaXMuc291cmNlQ29tcG9uZW50ID0gc291cmNlQ29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJvdXRlKHJvdXRlPzogQWN0aXZhdGVkUm91dGUpIHtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvbkluc3RhbmNlU3RhdGVFbnVtIHtcbiAgICBUcmlnZ2VyU3RhcnQsIC8vIGFjdGlvbiB3YXMgdHJpZ2dlcmVkIChjbGljayBvciBkaXJlY3QpXG4gICAgVHJpZ2dlckVuZCxcbiAgICBBY3RpdmF0aW9uU3RhcnQsIC8vIGFjdGlvbiBhY3RpdmF0aW9uIHN0YXJ0ZWQgKGRpcmVjdCwgZXZlbnQgb3IgZWRpdG9yKVxuICAgIEFjdGl2YXRpb25FbmQsIC8vIGFjdGlvbiBhY3RpdmF0aW9uIGVuZGVkXG4gICAgRmV0Y2hTdGFydCwgLy8gZmV0Y2ggc3RhcnRlZFxuICAgIEZldGNoRW5kLCAvLyBmZXRjaCBlbmRlZFxuICAgIEZldGNoRXJyb3IsIC8vIGZldGNoIGVycm9yXG4gICAgUnVuQ29uZmlybWF0aW9uU3RhcnQsIC8vIGNvbmZpcm1hdGlvbiBmb3IgcnVuIGlzIHN0YXJ0ZWRcbiAgICBSdW5Db25maXJtYXRpb25FbmRBY2NlcHQsIC8vIGNvbmZpcm1hdGlvbiBhY2NlcHRlZFxuICAgIFJ1bkNvbmZpcm1hdGlvbkVuZFJlamVjdCwgLy8gY29uZmlybWF0aW9uIHJlamVjdGVkXG4gICAgUnVuU3RhcnQsIC8vIGFjdGlvbiB3YXMgcnVuIGJ5IGNhbGxpbmcgbWFpbiBmdW5jdGlvblxuICAgIFJ1bkVuZCwgLy8gYWN0aW9uIHJ1biBmdW5jdGlvbiBleGVjdXRlZFxuICAgIFJ1bkVycm9yLCAvLyBhY3Rpb24gcnVuIGZ1bmN0aW9uIGV4ZWN1dGVkXG4gICAgTmV4dEFjdGlvblN0YXJ0LCAvLyBuZXh0IGFjdGlvbiBzdGFydGVkXG4gICAgTmV4dEFjdGlvbkVuZCwgLy8gbmV4dCBhY3Rpb24gZmluaXNoZWRcbiAgICBGaW5pc2hTdWNjZXNzLCAvLyBhY3Rpb24gZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5XG4gICAgRmluaXNoRXJyb3IsIC8vIGFjdGlvbiBleGVjdXRlZCB3aXRoIGVycm9yXG4gICAgRmluaXNoRGlzbWlzc2VkIC8vIGFjdGlvbiB3YXMgZGlzbWlzc2VkIGJ5IHVzZXJcbn1cblxuZXhwb3J0IHR5cGUgQWN0aW9uRGF0YSA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59O1xuIl19
|