mmhglobal-dynamicform 2.10.4 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -1
- package/esm2020/lib/services/main.service.mjs +85 -20
- package/esm2020/lib/services/zcomponent.debug.service.mjs +8 -5
- package/esm2020/lib/services/zcomponent.service.mjs +4 -4
- package/esm2020/lib/sfquerybuilder/sfquerybuilder.component.mjs +4 -3
- package/esm2020/lib/uibulletin/uibulletin.component.mjs +11 -8
- package/esm2020/lib/uiheader/uiheader.component.mjs +22 -6
- package/esm2020/lib/uipage/uipage.component.mjs +41 -3
- package/esm2020/lib/zcard/zcard.component.mjs +2 -2
- package/esm2020/lib/zform/zform.component.mjs +39 -12
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +9 -4
- package/esm2020/lib/zgrid/zgrid.component.mjs +6 -4
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -3
- package/esm2020/lib/ztree/ztree.component.mjs +2 -2
- package/esm2020/lib/zupload/zupload.component.mjs +29 -6
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +14 -1
- package/fesm2015/mmhglobal-dynamicform.mjs +269 -69
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +266 -69
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/services/main.service.d.ts +9 -4
- package/lib/services/zcomponent.debug.service.d.ts +5 -2
- package/lib/uibulletin/uibulletin.component.d.ts +4 -4
- package/lib/uiheader/uiheader.component.d.ts +4 -2
- package/lib/uipage/uipage.component.d.ts +2 -0
- package/lib/zform/zform.component.d.ts +4 -2
- package/lib/zgrid/zgrid.binding.directive.d.ts +4 -2
- package/lib/zgrid/zgrid.component.d.ts +3 -2
- package/lib/zupload/zupload.component.d.ts +3 -2
- package/package.json +1 -1
|
@@ -159,6 +159,19 @@ export class ZworkflowbuttonsComponent extends ButtonFieldBase {
|
|
|
159
159
|
const formGroup = this.group.form;
|
|
160
160
|
const attributes = JSON.parse(button.Attributes);
|
|
161
161
|
const buttonTypeCode = button.TypeCode.toUpperCase();
|
|
162
|
+
//// Skip if the button's click event includes backnavigation
|
|
163
|
+
//if (buttonTypeCode === 'GOTO') {
|
|
164
|
+
// // Check if the form has unsaved changes
|
|
165
|
+
// if (!this.data.SkipCheckFormDirty && !formGroup.dirty) {
|
|
166
|
+
// console.warn(`Record not saved because the form is not dirty.`);
|
|
167
|
+
// return;
|
|
168
|
+
// }
|
|
169
|
+
// // Check if the form is valid
|
|
170
|
+
// if (this.data.UseDefaultValidate && !formGroup.valid) {
|
|
171
|
+
// this.componentErrorHandlerService.showFormGroupErrorMessage(this.group, formGroup);
|
|
172
|
+
// return;
|
|
173
|
+
// }
|
|
174
|
+
//}
|
|
162
175
|
// Type 1 == functional;
|
|
163
176
|
// Type 2 == GOTO;
|
|
164
177
|
this.group.isTriggered = button.disableTrigger != undefined ? !button.disableTrigger : true;
|
|
@@ -223,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
223
236
|
type: Component,
|
|
224
237
|
args: [{ selector: 'app-zworkflowbuttons', template: "<div class=\"e1tag-style\"\r\n *ngIf=\"!group.isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && items.length > 0\"\r\n [style]=\"componentProperties.style.style\">\r\n <div class=\"ion-margin-vertical e1tag-style1\" *ngIf=\"isMobileScreen() && items.length > 1 && FirstZbtn === false\" [style]=\"componentProperties.style.style1\">\r\n <kendo-dropdownbutton [data]=\"items\" size=\"large\" [look]=\"'outline'\" class=\"ion-activatable ripple-parent e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n Actions\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </kendo-dropdownbutton>\r\n </div>\r\n\r\n <div *ngIf=\"!isMobileScreen() || items.length === 1\" [ngClass]=\"data.DivClass\" class=\"btn-container e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n <!-- <button *ngFor=\"let item of items; let i = index\" (click)=\"buttonClick(item.fieldAttribute)\"\r\n kendoButton [togglable]=\"true\" [icon]=\"item.icon\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n style=\"margin-right: 5px;\">\r\n {{item.text}}\r\n </button> -->\r\n <div class=\"btn-left e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <ion-button [fill]=\"item.fill\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\" *ngFor=\"let item of leftBtns; let i = index\"\r\n [ngClass]=\"item.class\" (click)=\"buttonClick(item.fieldAttribute)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\">\r\n <fa-icon class=\"btn-icon\" *ngIf=\"item.icon\" [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span *ngIf=\"item.text\" [class.btn-label]=\"item.icon\" class=\"ion-text-capitalize\">{{item.text}}</span>\r\n </ion-button>\r\n </div>\r\n <div class=\"btn-right e1tag-style6\" [style]=\"componentProperties.style.style6\">\r\n <ion-button [fill]=\"item.fill\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\" *ngFor=\"let item of rightBtns; let i = index\"\r\n [ngClass]=\"item.class\" (click)=\"buttonClick(item.fieldAttribute)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered\" [style]=\"componentProperties.style.style7\" class=\"e1tag-style7\">\r\n <fa-icon class=\"btn-icon\" *ngIf=\"item.icon\" [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span *ngIf=\"item.text\" [class.btn-label]=\"item.icon\" class=\"ion-text-capitalize\">{{item.text}}</span>\r\n </ion-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.btn-container{padding:5px 0;display:flex;flex-direction:row;justify-content:space-between}ion-button{font-size:var(--button-font-size);margin-left:10px;--border-radius: var(--button-border-radius);--box-shadow: 1px 2px 4px 0px rgba(0, 0, 0, .25)}ion-button.useCustomClass{--background-hover-opacity: 1;--border-width: 2px;--border-style: solid;--background: #fff;--background-hover: rgba(var(--ion-color-primary-rgb), .05);--color: var(--ion-color-primary);--border-color: var(--ion-color-primary)}ion-button.primary-light{--background: rgba(var(--ion-color-primary-rgb), .05);--background-hover: #fff;--color: var(--ion-color-primary);--border-color: var(--ion-color-primary)}ion-button.primary{--background: var(--ion-color-primary);--background-hover: var(--ion-color-primary-tint);--color: var(--ion-color-primary-contrast);--border-color: var(--ion-color-primary-shade)}ion-button.success{--background: var(--ion-color-success);--background-hover: var(--ion-color-success-tint);--color: var(--ion-color-success-contrast);--border-color: var(--ion-color-success-shade)}ion-button.danger{--background: var(--ion-color-danger);--background-hover: var(--ion-color-danger-tint2);--color: var(--ion-color-danger-contrast);--border-color: var(--ion-color-danger-shade)}ion-button.warning{--background: var(--ion-color-warning);--background-hover: var(--ion-color-warning-tint);--color: #000;--border-color: var(--ion-color-warning-shade)}ion-button.no-shadow{--box-shadow: none}.btn-label{padding-left:8px}\n"] }]
|
|
225
238
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FontAweSomeService }, { type: i2.WebApiService }, { type: i2.ResourceApiService }, { type: i2.ComponentErrorHandlerService }, { type: i2.WorkflowService }]; } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiendvcmtmbG93YnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96d29ya2Zsb3didXR0b25zL3p3b3JrZmxvd2J1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvendvcmtmbG93YnV0dG9ucy96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxPQUFPLEVBRU8sZ0JBQWdCLEVBQzdCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsZUFBZTtJQWlCNUQsWUFDUyxnQkFBbUMsRUFDbkMsa0JBQXNDLEVBQ3JDLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0Qyw0QkFBMEQsRUFDMUQsZUFBZ0M7UUFFeEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFQakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUNBQTRCLEdB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QVMsR0FBRztZQUNoQixHQUFHLE1BQU07WUFDVCxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7WUFDekMsY0FBYyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztTQUMvRCxDQUFDO1FBRUYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQVksRUFBRSxNQUFXO1FBQ3RELE9BQU8sTUFBTSxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7O3NIQXJQVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixtRkN6QnRDLDhxRkFrQ0E7MkZEVGEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IEJ1dHRvbkZpZWxkQmFzZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYnV0dG9uZmllbGRiYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlJzsgXHJcbmltcG9ydCB7XHJcbiAgV2ViQXBpU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXb3JrZmxvd1NlcnZpY2UsIEZvbnRBd2VTb21lU2VydmljZSwgQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaRmllbGRcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXp3b3JrZmxvd2J1dHRvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBad29ya2Zsb3didXR0b25zQ29tcG9uZW50IGV4dGVuZHMgQnV0dG9uRmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICAvLyBVUkwgcmVxdWlyZWRcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uLG5vLXVuZGVyc2NvcmUtZGFuZ2xlLGlkLWJsYWNrbGlzdCxpZC1tYXRjaFxyXG4gIGUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFwiZTF3ZnNfd2ZjR2V0V29ya2Zsb3dCdXR0b25VUkxcIik7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbixuby11bmRlcnNjb3JlLWRhbmdsZSxpZC1ibGFja2xpc3QsaWQtbWF0Y2hcclxuICBlMXdmc193ZmNfZ2V0V29ya2Zsb3dJbml0aWFsU3RhdHVzVVJMID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFwiZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTFwiKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uLCBuby11bmRlcnNjb3JlLWRhbmdsZSwgaWQtYmxhY2tsaXN0LCBpZC1tYXRjaFxyXG4gIGUxd2ZzX3dmY19nZXREb2N1bWVudFN0YXR1c1VSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY19nZXREb2N1bWVudFN0YXR1c1VSTFwiKTtcclxuXHJcbiAgLy9kb21haW5VUkwgPSBcImh0dHBzOi8vbG9jYWxob3N0OjQ0MzAwL1wiO1xyXG4gIC8vZTF3ZnNfd2ZjR2V0V29ya2Zsb3dCdXR0b25VUkwgPSB0aGlzLmRvbWFpblVSTCArIFwiL2FwaS9Xb3JrZmxvd0NsaWVudHMvR2V0V29ya2Zsb3dDbGllbnRCdXR0b25zL1wiO1xyXG4gIC8vZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTCA9IHRoaXMuZG9tYWluVVJMICsgXCIvYXBpL1dvcmtmbG93Q2xpZW50cy9HZXRXb3JrZmxvd0luaXRpYWxTdGF0dXMvXCI7XHJcbiAgLy9lMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwgPSB0aGlzLmRvbWFpblVSTCArIFwiL2FwaS9Xb3JrZmxvd0NsaWVudHMvR2V0RG9jdW1lbnRTdGF0dXMvXCI7XHJcbiAgZGF0YUZvcm1GaWVsZHM6IGFueSA9IHt9O1xyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgaXNMb2NhbEhvc3RBUEk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZm9udEF3ZVNvbWVTZXJ2aWNlOiBGb250QXdlU29tZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRFcnJvckhhbmRsZXJTZXJ2aWNlOiBDb21wb25lbnRFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3b3JrZmxvd1NlcnZpY2U6IFdvcmtmbG93U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgICAgLy8gQ2hlY2sgcHJvamVjdCByZXNvdXJjZVVSTCBpcyBpdCBsb2NhbGhvc3RcclxuICAgICAgaWYgKHRoaXMuZ3JvdXAucmVzb3VyY2VVUkwpIHtcclxuICAgICAgICB0aGlzLmlzTG9jYWxIb3N0QVBJID0gdGhpcy5ncm91cC5yZXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibG9jYWxob3N0XCIpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmxvYWRCdXR0b24oKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRCdXR0b24oKSB7XHJcbiAgICB0aGlzLmxlZnRCdG5zID0gW107XHJcbiAgICB0aGlzLnJpZ2h0QnRucyA9IFtdO1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG5cclxuICAgIC8vIEdldCBXRlNfRG9jdW1lbnRJZCBpZiBhbnkuXHJcbiAgICBsZXQgZG9jdW1lbnRJZCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ncm91cC56TW9kZWwpIHtcclxuICAgICAgZG9jdW1lbnRJZCA9IHRoaXMuZ3JvdXAuek1vZGVsWydXRlNfRG9jdW1lbnRJZCddO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZG9jdW1lbnRJZCB0byB0aGUgc2VydmljZVxyXG4gICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuYXBwZW5kV0ZTX0RvY3VtZW50c0luZm8odGhpcy5kYXRhLldvcmtmbG93Q29kZSwgZG9jdW1lbnRJZCk7XHJcblxyXG4gICAgLy8gYnV0dG9uIGNvdW50XHJcbiAgICB0aGlzLmdyb3VwLnpCdXR0b25zQ291bnQrKztcclxuICAgIGlmICh0aGlzLmdyb3VwLnpCdXR0b25zQ291bnQgPT09IDEpIHtcclxuICAgICAgdGhpcy5GaXJzdFpidG4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBvZih0cnVlKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcclxuICAgICAgICAgICAgLy8gcmV0cmlldmUgdGhlIHdvcmtmbG93IGJ1dHRvblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy53b3JrZmxvd1NlcnZpY2UuZ2V0V29ya2Zsb3dCdXR0b25zRmllbGQoXHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRhLldvcmtmbG93Q29kZSxcclxuICAgICAgICAgICAgICB0aGlzLmUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMLFxyXG4gICAgICAgICAgICAgIFN0cmluZyh0aGlzLmlzTG9jYWxIb3N0QVBJKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHRhcChyZXN1bHREYXRhID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdERhdGEpIHtcclxuICAgICAgICAgICAgICByZXN1bHREYXRhLmZvckVhY2goKGJ1dHRvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWJ1dHRvbi5MYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgICBidXR0b24uTGFiZWwgPSBidXR0b24uTmFtZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRCdXR0b25MYWJlbChidXR0b24pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNVc2VDdXN0b21DbGFzcyA9IGF0dHJpYnV0ZXMuQ29sb3IgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgYnV0dG9uID0gdGhpcy5hcHBlbmRUb0F0dHJpYnV0ZVVzZWZ1bERldGFpbChidXR0b24pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJ0biA9IHtcclxuICAgICAgICAgICAgICAgICAgbmFtZTogYnV0dG9uLk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ6IGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiBaQ29tcG9uZW50SGVscGVyLmdldEljb24oYXR0cmlidXRlcy5JY29uKSxcclxuICAgICAgICAgICAgICAgICAgdmlzaWJsZTogYXR0cmlidXRlcy5WaXNpYmxlLFxyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogaXNVc2VDdXN0b21DbGFzcyA/ICcnIDogKGF0dHJpYnV0ZXMuQ29sb3IgfHwgJ3ByaW1hcnknKSxcclxuICAgICAgICAgICAgICAgICAgZmlsbDogaXNVc2VDdXN0b21DbGFzcyA/ICcnIDogKGF0dHJpYnV0ZXMuRmlsbCB8fCAnc29saWQnKSxcclxuICAgICAgICAgICAgICAgICAgc2l6ZTogYXR0cmlidXRlcy5TaXplIHx8ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgY2xhc3M6IGlzVXNlQ3VzdG9tQ2xhc3MgPyBgJHthdHRyaWJ1dGVzLkNsYXNzfSB1c2VDdXN0b21DbGFzc2AgOiBhdHRyaWJ1dGVzLkNsYXNzLFxyXG4gICAgICAgICAgICAgICAgICBmaWVsZEF0dHJpYnV0ZTogYnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgICBpY29uTmFtZTogYXR0cmlidXRlcy5JY29uLFxyXG4gICAgICAgICAgICAgICAgICBjbGljazogKHkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkNsaWNrKGJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5Qb3NpdGlvblggJiYgYXR0cmlidXRlcy5Qb3NpdGlvblggPT09IFwicmlnaHRcIikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0QnRucy5wdXNoKGJ0bik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sZWZ0QnRucy5wdXNoKGJ0bik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgJ3JvbGUnOiBbXSxcclxuICAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAncGFyZW50U3RhdHVzJzogW11cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAvL1pDb21wb25lbnRIZWxwZXIuY29sbGVjdFdvcmtmbG93QnV0dG9uKHRoaXMuZ3JvdXAsIHRoaXMuZGF0YS5Xb3JrZmxvd0NvZGUsIGJ1dHRvbkxhYmVsLCBidXR0b24sIGF0dHJpYnV0ZXMsIG1hcHBlZEluZm8pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goLi4udGhpcy5sZWZ0QnRucywgLi4udGhpcy5yaWdodEJ0bnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybigndW5hYmxlIHRvIGdldCB3b3JrZmxvdyBidXR0b24uIGRhdGEgcmV0dXJuZWQgbnVsbC4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gc3VwZXIudHJhbnNsYXRlQnV0dG9uc0xhYmVsKHRoaXMuaXRlbXMpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5EaXNhYmxlU3luY1dvcmtmbG93U3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgLy8gU2V0IGRlZmF1bHQgc3RhdHVzXHJcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuZ3JvdXAuek1vZGVsW1wiV0ZTX1N0YXR1c05hbWVcIl0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgICAgXCJXb3JrZmxvd01hc3RlckNvZGVcIjogdGhpcy5kYXRhLldvcmtmbG93Q29kZVxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBQb3N0JCh0aGlzLmUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkwsIHBhcmFtcykucGlwZShcclxuICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLnByZXNldE1vZGVsVmFsdWUoXCJXRlNfU3RhdHVzSWRcIiwgcmVzLkRhdGFbXCJJZFwiXSwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLnByZXNldE1vZGVsVmFsdWUoXCJXRlNfU3RhdHVzTmFtZVwiLCByZXMuRGF0YVtcIk5hbWVcIl0sIHRoaXMuZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgWkNvbXBvbmVudEhlbHBlci5wcmVzZXRNb2RlbFZhbHVlKFwiV0ZTX1N0YXR1c0NvZGVcIiwgcmVzLkRhdGFbXCJDb2RlXCJdLCB0aGlzLmdyb3VwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5zZXRDdXJyZW50RG9jdW1lbnRTdGF0dXMocmVzLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gV2hlbiBsb2FkaW5nIGFsc28gdG8gZ2V0IGN1cnJlbnQgU3RhdHVzIEluZm9ybWF0aW9uIGlmIGFueS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGRvY0luZm9QYXJhbSA9IHtcclxuICAgICAgICAgICAgICAgICAgXCJXb3JrZmxvd01hc3RlckNvZGVcIjogdGhpcy5kYXRhLldvcmtmbG93Q29kZSxcclxuICAgICAgICAgICAgICAgICAgXCJEb2N1bWVudElkXCI6IGRvY3VtZW50SWQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMud2ViQXBpU2VydmljZS5odHRwUG9zdCQodGhpcy5lMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwsIGRvY0luZm9QYXJhbSkucGlwZShcclxuICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NlcnZpY2Uuc2V0Q3VycmVudERvY3VtZW50U3RhdHVzKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5zZXRDdXJyZW50RG9jdW1lbnRTdGF0dXMocmVzLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidXR0b25DbGljayhidXR0b246IGFueSkge1xyXG4gICAgLy8gR2V0IHRoZSBmb3JtIGdyb3VwXHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLmdyb3VwLmZvcm0gYXMgRm9ybUdyb3VwO1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgY29uc3QgYnV0dG9uVHlwZUNvZGUgPSBidXR0b24uVHlwZUNvZGUudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAvLyBUeXBlIDEgPT0gZnVuY3Rpb25hbDtcclxuICAgIC8vIFR5cGUgMiA9PSBHT1RPOyBcclxuICAgIHRoaXMuZ3JvdXAuaXNUcmlnZ2VyZWQgPSBidXR0b24uZGlzYWJsZVRyaWdnZXIgIT0gdW5kZWZpbmVkID8gIWJ1dHRvbi5kaXNhYmxlVHJpZ2dlciA6IHRydWU7XHJcbiAgICBzd2l0Y2ggKGJ1dHRvblR5cGVDb2RlKSB7XHJcbiAgICAgIGNhc2UgXCJGVU5DVElPTlwiOlxyXG4gICAgICAgIC8vIEhhbmRsZSBmdW5jdGlvbmFsIGJ1dHRvbnNcclxuICAgICAgICBpZiAoIXRoaXMuZ3JvdXAuaXNUcmlnZ2VyZWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cDtcclxuXHJcbiAgICAgICAgLy8gRGlzYWJsZSB0cmlnZ2VyIHRpbWVyXHJcbiAgICAgICAgaWYgKCFhdHRyaWJ1dGVzWydEaXNhYmxlVHJpZ2dlclRpbWVyJ10pIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBncm91cFsnaXNUcmlnZ2VyZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRnVuY3Rpb25hbCBCdXR0b246IFwiLCBidXR0b24uTmFtZSk7XHJcblxyXG4gICAgICAgIC8vIENhbGwgdGhlIHdvcmtmbG93IHNlcnZpY2UgdG8gaGFuZGxlIHRoZSBmdW5jdGlvbmFsIGJ1dHRvbiBjbGljayBldmVudFxyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmZ1bmN0aW9uYWxCdXR0b25fT25DbGljayhhdHRyaWJ1dGVzLCB0aGlzLmdyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkdPVE9cIjpcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkdPVE8gQnV0dG9uOiBcIiwgYnV0dG9uLk5hbWUpO1xyXG4gICAgICAgIC8vIENhbGwgdGhlIHdvcmtmbG93IHNlcnZpY2UgdG8gaGFuZGxlIHRoZSBHT1RPIGJ1dHRvbiBjbGljayBldmVudCBcclxuICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5nb3RvQnV0dG9uX09uY2xpY2soYnV0dG9uLCB0aGlzLmRhdGEsIGF0dHJpYnV0ZXMsIHRoaXMuZ3JvdXAsIHRoaXMuaXNMb2NhbEhvc3RBUEkpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgLy8gUmVsb2FkIHRoZSBidXR0b25cclxuICAgICAgICAgIHRoaXMubG9hZEJ1dHRvbigpO1xyXG5cclxuICAgICAgICAgIC8vIFJlc2V0IHRyaWdnZXIgc3RhdHVzXHJcbiAgICAgICAgICB0aGlzLmdyb3VwLmlzVHJpZ2dlcmVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAvLyBUcmlnZ2VyIGVtYWlsIHNlbmRpbmdcclxuICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NlcnZpY2UudHJpZ2dlclNlbmRFbWFpbCh0aGlzLmdyb3VwKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb25zb2xlLndhcm4oYEludmFsaWQgQnV0dG9uIFR5cGU6ICR7YnV0dG9uLk5hbWV9YCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGVuZFRvQXR0cmlidXRlVXNlZnVsRGV0YWlsKGJ1dHRvbjogYW55KSB7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gSlNPTi5wYXJzZShidXR0b24uQXR0cmlidXRlcyk7XHJcblxyXG4gICAgY29uc3QgbmV3QXR0cmlidXRlcyA9IHtcclxuICAgICAgLi4uYXR0cmlidXRlcyxcclxuICAgICAgekJ1dHRvbk5hbWU6IHRoaXMuZGF0YS5OYW1lLFxyXG4gICAgICBUeXBlQ29kZTogYnV0dG9uLlR5cGVDb2RlLFxyXG4gICAgICBXb3JrZmxvd0NvZGU6IHRoaXMuZGF0YS5Xb3JrZmxvd0NvZGUsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG5ld0J1dHRvbiA9IHtcclxuICAgICAgLi4uYnV0dG9uLFxyXG4gICAgICBBdHRyaWJ1dGVzOiBKU09OLnN0cmluZ2lmeShuZXdBdHRyaWJ1dGVzKSxcclxuICAgICAgZGlzYWJsZVRyaWdnZXI6IHRoaXMuaXNCdXR0b25EaXNhYmxlVHJpZ2dlcih0aGlzLmRhdGEsIGJ1dHRvbiksXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBuZXdCdXR0b247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQnV0dG9uRGlzYWJsZVRyaWdnZXIoZGF0YTogWkZpZWxkLCBidXR0b246IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGJ1dHRvbi5EaXNhYmxlVHJpZ2dlciAhPSB1bmRlZmluZWQgPyBidXR0b24uRGlzYWJsZVRyaWdnZXIgOiAoZGF0YS5EaXNhYmxlVHJpZ2dlciAhPSB1bmRlZmluZWQgPyBkYXRhLkRpc2FibGVUcmlnZ2VyIDogZmFsc2UpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZTF0YWctc3R5bGVcIlxyXG4gICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZyAmJiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSkgJiYgaXRlbXMubGVuZ3RoID4gMFwiXHJcbiAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW9uLW1hcmdpbi12ZXJ0aWNhbCBlMXRhZy1zdHlsZTFcIiAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKCkgJiYgaXRlbXMubGVuZ3RoID4gMSAmJiBGaXJzdFpidG4gPT09IGZhbHNlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICA8a2VuZG8tZHJvcGRvd25idXR0b24gW2RhdGFdPVwiaXRlbXNcIiBzaXplPVwibGFyZ2VcIiBbbG9va109XCInb3V0bGluZSdcIiBjbGFzcz1cImlvbi1hY3RpdmF0YWJsZSByaXBwbGUtcGFyZW50IGUxdGFnLXN0eWxlMlwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiPlxyXG4gICAgICBBY3Rpb25zXHJcbiAgICAgIDxpb24tcmlwcGxlLWVmZmVjdD48L2lvbi1yaXBwbGUtZWZmZWN0PlxyXG4gICAgPC9rZW5kby1kcm9wZG93bmJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMVwiIFtuZ0NsYXNzXT1cImRhdGEuRGl2Q2xhc3NcIiBjbGFzcz1cImJ0bi1jb250YWluZXIgZTF0YWctc3R5bGUzXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCI+XHJcbiAgICA8IS0tIDxidXR0b24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpID0gaW5kZXhcIiAoY2xpY2spPVwiYnV0dG9uQ2xpY2soaXRlbS5maWVsZEF0dHJpYnV0ZSlcIlxyXG4gICAgICAgICAgICBrZW5kb0J1dHRvbiBbdG9nZ2xhYmxlXT1cInRydWVcIiBbaWNvbl09XCJpdGVtLmljb25cIiBbaGlkZGVuXT1cIiFpc0J0blZpc2libGUoaXRlbS52aXNpYmxlKVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCI+XHJcbiAgICAgIHt7aXRlbS50ZXh0fX1cclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJidG4tbGVmdCBlMXRhZy1zdHlsZTRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj5cclxuICAgICAgPGlvbi1idXR0b24gW2ZpbGxdPVwiaXRlbS5maWxsXCIgW3NpemVdPVwiaXRlbS5zaXplXCIgW2NvbG9yXT1cIml0ZW0uY29sb3JcIiBzdHJvbmc9XCJ0cnVlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVmdEJ0bnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NcIiAoY2xpY2spPVwiYnV0dG9uQ2xpY2soaXRlbS5maWVsZEF0dHJpYnV0ZSlcIiBbaGlkZGVuXT1cIiFpc0J0blZpc2libGUoaXRlbS52aXNpYmxlKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmlzVHJpZ2dlcmVkXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTVcIj5cclxuICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImJ0bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIiBbaWNvbl09XCJnZXRGb250QXdlc29tZShpdGVtLmljb24sIGZvbnRBd2VTb21lU2VydmljZSlcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnRleHRcIiBbY2xhc3MuYnRuLWxhYmVsXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPnt7aXRlbS50ZXh0fX08L3NwYW4+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImJ0bi1yaWdodCBlMXRhZy1zdHlsZTZcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTZcIj5cclxuICAgICAgPGlvbi1idXR0b24gW2ZpbGxdPVwiaXRlbS5maWxsXCIgW3NpemVdPVwiaXRlbS5zaXplXCIgW2NvbG9yXT1cIml0ZW0uY29sb3JcIiBzdHJvbmc9XCJ0cnVlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmlnaHRCdG5zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCIgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKGl0ZW0uZmllbGRBdHRyaWJ1dGUpXCIgW2hpZGRlbl09XCIhaXNCdG5WaXNpYmxlKGl0ZW0udmlzaWJsZSlcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJncm91cC5pc1RyaWdnZXJlZFwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlN1wiIGNsYXNzPVwiZTF0YWctc3R5bGU3XCI+XHJcbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJidG4taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW2ljb25dPVwiZ2V0Rm9udEF3ZXNvbWUoaXRlbS5pY29uLCBmb250QXdlU29tZVNlcnZpY2UpXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS50ZXh0XCIgW2NsYXNzLmJ0bi1sYWJlbF09XCJpdGVtLmljb25cIiBjbGFzcz1cImlvbi10ZXh0LWNhcGl0YWxpemVcIj57e2l0ZW0udGV4dH19PC9zcGFuPlxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiendvcmtmbG93YnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96d29ya2Zsb3didXR0b25zL3p3b3JrZmxvd2J1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvendvcmtmbG93YnV0dG9ucy96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxPQUFPLEVBRU8sZ0JBQWdCLEVBQzdCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsZUFBZTtJQWlCNUQsWUFDUyxnQkFBbUMsRUFDbkMsa0JBQXNDLEVBQ3JDLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0Qyw0QkFBMEQsRUFDMUQsZUFBZ0M7UUFFeEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFQakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUNBQTRCLEdB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QUc7WUFDcEIsR0FBRyxVQUFVO1lBQ2IsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUMzQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtTQUNyQyxDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUc7WUFDaEIsR0FBRyxNQUFNO1lBQ1QsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1lBQ3pDLGNBQWMsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDL0QsQ0FBQztRQUVGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsTUFBVztRQUN0RCxPQUFPLE1BQU0sQ0FBQyxjQUFjLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2SSxDQUFDOztzSEFwUVUseUJBQXlCOzBHQUF6Qix5QkFBeUIsbUZDekJ0Qyw4cUZBa0NBOzJGRFRhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBCdXR0b25GaWVsZEJhc2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2J1dHRvbmZpZWxkYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgV2ViQXBpU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXb3JrZmxvd1NlcnZpY2UsIEZvbnRBd2VTb21lU2VydmljZSwgQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaRmllbGRcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXp3b3JrZmxvd2J1dHRvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBad29ya2Zsb3didXR0b25zQ29tcG9uZW50IGV4dGVuZHMgQnV0dG9uRmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICAvLyBVUkwgcmVxdWlyZWRcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uLG5vLXVuZGVyc2NvcmUtZGFuZ2xlLGlkLWJsYWNrbGlzdCxpZC1tYXRjaFxyXG4gIGUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFwiZTF3ZnNfd2ZjR2V0V29ya2Zsb3dCdXR0b25VUkxcIik7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbixuby11bmRlcnNjb3JlLWRhbmdsZSxpZC1ibGFja2xpc3QsaWQtbWF0Y2hcclxuICBlMXdmc193ZmNfZ2V0V29ya2Zsb3dJbml0aWFsU3RhdHVzVVJMID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFwiZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTFwiKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uLCBuby11bmRlcnNjb3JlLWRhbmdsZSwgaWQtYmxhY2tsaXN0LCBpZC1tYXRjaFxyXG4gIGUxd2ZzX3dmY19nZXREb2N1bWVudFN0YXR1c1VSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY19nZXREb2N1bWVudFN0YXR1c1VSTFwiKTtcclxuXHJcbiAgLy9kb21haW5VUkwgPSBcImh0dHBzOi8vbG9jYWxob3N0OjQ0MzAwL1wiO1xyXG4gIC8vZTF3ZnNfd2ZjR2V0V29ya2Zsb3dCdXR0b25VUkwgPSB0aGlzLmRvbWFpblVSTCArIFwiL2FwaS9Xb3JrZmxvd0NsaWVudHMvR2V0V29ya2Zsb3dDbGllbnRCdXR0b25zL1wiO1xyXG4gIC8vZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTCA9IHRoaXMuZG9tYWluVVJMICsgXCIvYXBpL1dvcmtmbG93Q2xpZW50cy9HZXRXb3JrZmxvd0luaXRpYWxTdGF0dXMvXCI7XHJcbiAgLy9lMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwgPSB0aGlzLmRvbWFpblVSTCArIFwiL2FwaS9Xb3JrZmxvd0NsaWVudHMvR2V0RG9jdW1lbnRTdGF0dXMvXCI7XHJcbiAgZGF0YUZvcm1GaWVsZHM6IGFueSA9IHt9O1xyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgaXNMb2NhbEhvc3RBUEk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZm9udEF3ZVNvbWVTZXJ2aWNlOiBGb250QXdlU29tZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRFcnJvckhhbmRsZXJTZXJ2aWNlOiBDb21wb25lbnRFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3b3JrZmxvd1NlcnZpY2U6IFdvcmtmbG93U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgICAgLy8gQ2hlY2sgcHJvamVjdCByZXNvdXJjZVVSTCBpcyBpdCBsb2NhbGhvc3RcclxuICAgICAgaWYgKHRoaXMuZ3JvdXAucmVzb3VyY2VVUkwpIHtcclxuICAgICAgICB0aGlzLmlzTG9jYWxIb3N0QVBJID0gdGhpcy5ncm91cC5yZXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibG9jYWxob3N0XCIpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmxvYWRCdXR0b24oKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRCdXR0b24oKSB7XHJcbiAgICB0aGlzLmxlZnRCdG5zID0gW107XHJcbiAgICB0aGlzLnJpZ2h0QnRucyA9IFtdO1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG5cclxuICAgIC8vIEdldCBXRlNfRG9jdW1lbnRJZCBpZiBhbnkuXHJcbiAgICBsZXQgZG9jdW1lbnRJZCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ncm91cC56TW9kZWwpIHtcclxuICAgICAgZG9jdW1lbnRJZCA9IHRoaXMuZ3JvdXAuek1vZGVsWydXRlNfRG9jdW1lbnRJZCddO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZG9jdW1lbnRJZCB0byB0aGUgc2VydmljZVxyXG4gICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuYXBwZW5kV0ZTX0RvY3VtZW50c0luZm8odGhpcy5kYXRhLldvcmtmbG93Q29kZSwgZG9jdW1lbnRJZCk7XHJcblxyXG4gICAgLy8gYnV0dG9uIGNvdW50XHJcbiAgICB0aGlzLmdyb3VwLnpCdXR0b25zQ291bnQrKztcclxuICAgIGlmICh0aGlzLmdyb3VwLnpCdXR0b25zQ291bnQgPT09IDEpIHtcclxuICAgICAgdGhpcy5GaXJzdFpidG4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBvZih0cnVlKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcclxuICAgICAgICAgICAgLy8gcmV0cmlldmUgdGhlIHdvcmtmbG93IGJ1dHRvblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy53b3JrZmxvd1NlcnZpY2UuZ2V0V29ya2Zsb3dCdXR0b25zRmllbGQoXHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRhLldvcmtmbG93Q29kZSxcclxuICAgICAgICAgICAgICB0aGlzLmUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMLFxyXG4gICAgICAgICAgICAgIFN0cmluZyh0aGlzLmlzTG9jYWxIb3N0QVBJKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHRhcChyZXN1bHREYXRhID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdERhdGEpIHtcclxuICAgICAgICAgICAgICByZXN1bHREYXRhLmZvckVhY2goKGJ1dHRvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWJ1dHRvbi5MYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgICBidXR0b24uTGFiZWwgPSBidXR0b24uTmFtZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRCdXR0b25MYWJlbChidXR0b24pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNVc2VDdXN0b21DbGFzcyA9IGF0dHJpYnV0ZXMuQ29sb3IgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgYnV0dG9uID0gdGhpcy5hcHBlbmRUb0F0dHJpYnV0ZVVzZWZ1bERldGFpbChidXR0b24pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJ0biA9IHtcclxuICAgICAgICAgICAgICAgICAgbmFtZTogYnV0dG9uLk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ6IGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiBaQ29tcG9uZW50SGVscGVyLmdldEljb24oYXR0cmlidXRlcy5JY29uKSxcclxuICAgICAgICAgICAgICAgICAgdmlzaWJsZTogYXR0cmlidXRlcy5WaXNpYmxlLFxyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogaXNVc2VDdXN0b21DbGFzcyA/ICcnIDogKGF0dHJpYnV0ZXMuQ29sb3IgfHwgJ3ByaW1hcnknKSxcclxuICAgICAgICAgICAgICAgICAgZmlsbDogaXNVc2VDdXN0b21DbGFzcyA/ICcnIDogKGF0dHJpYnV0ZXMuRmlsbCB8fCAnc29saWQnKSxcclxuICAgICAgICAgICAgICAgICAgc2l6ZTogYXR0cmlidXRlcy5TaXplIHx8ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgY2xhc3M6IGlzVXNlQ3VzdG9tQ2xhc3MgPyBgJHthdHRyaWJ1dGVzLkNsYXNzfSB1c2VDdXN0b21DbGFzc2AgOiBhdHRyaWJ1dGVzLkNsYXNzLFxyXG4gICAgICAgICAgICAgICAgICBmaWVsZEF0dHJpYnV0ZTogYnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgICBpY29uTmFtZTogYXR0cmlidXRlcy5JY29uLFxyXG4gICAgICAgICAgICAgICAgICBjbGljazogKHkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkNsaWNrKGJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5Qb3NpdGlvblggJiYgYXR0cmlidXRlcy5Qb3NpdGlvblggPT09IFwicmlnaHRcIikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0QnRucy5wdXNoKGJ0bik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sZWZ0QnRucy5wdXNoKGJ0bik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgJ3JvbGUnOiBbXSxcclxuICAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAncGFyZW50U3RhdHVzJzogW11cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAvL1pDb21wb25lbnRIZWxwZXIuY29sbGVjdFdvcmtmbG93QnV0dG9uKHRoaXMuZ3JvdXAsIHRoaXMuZGF0YS5Xb3JrZmxvd0NvZGUsIGJ1dHRvbkxhYmVsLCBidXR0b24sIGF0dHJpYnV0ZXMsIG1hcHBlZEluZm8pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goLi4udGhpcy5sZWZ0QnRucywgLi4udGhpcy5yaWdodEJ0bnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybigndW5hYmxlIHRvIGdldCB3b3JrZmxvdyBidXR0b24uIGRhdGEgcmV0dXJuZWQgbnVsbC4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gc3VwZXIudHJhbnNsYXRlQnV0dG9uc0xhYmVsKHRoaXMuaXRlbXMpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5EaXNhYmxlU3luY1dvcmtmbG93U3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgLy8gU2V0IGRlZmF1bHQgc3RhdHVzXHJcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuZ3JvdXAuek1vZGVsW1wiV0ZTX1N0YXR1c05hbWVcIl0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgICAgXCJXb3JrZmxvd01hc3RlckNvZGVcIjogdGhpcy5kYXRhLldvcmtmbG93Q29kZVxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBQb3N0JCh0aGlzLmUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkwsIHBhcmFtcykucGlwZShcclxuICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLnByZXNldE1vZGVsVmFsdWUoXCJXRlNfU3RhdHVzSWRcIiwgcmVzLkRhdGFbXCJJZFwiXSwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLnByZXNldE1vZGVsVmFsdWUoXCJXRlNfU3RhdHVzTmFtZVwiLCByZXMuRGF0YVtcIk5hbWVcIl0sIHRoaXMuZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgWkNvbXBvbmVudEhlbHBlci5wcmVzZXRNb2RlbFZhbHVlKFwiV0ZTX1N0YXR1c0NvZGVcIiwgcmVzLkRhdGFbXCJDb2RlXCJdLCB0aGlzLmdyb3VwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5zZXRDdXJyZW50RG9jdW1lbnRTdGF0dXMocmVzLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gV2hlbiBsb2FkaW5nIGFsc28gdG8gZ2V0IGN1cnJlbnQgU3RhdHVzIEluZm9ybWF0aW9uIGlmIGFueS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGRvY0luZm9QYXJhbSA9IHtcclxuICAgICAgICAgICAgICAgICAgXCJXb3JrZmxvd01hc3RlckNvZGVcIjogdGhpcy5kYXRhLldvcmtmbG93Q29kZSxcclxuICAgICAgICAgICAgICAgICAgXCJEb2N1bWVudElkXCI6IGRvY3VtZW50SWQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMud2ViQXBpU2VydmljZS5odHRwUG9zdCQodGhpcy5lMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwsIGRvY0luZm9QYXJhbSkucGlwZShcclxuICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NlcnZpY2Uuc2V0Q3VycmVudERvY3VtZW50U3RhdHVzKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5zZXRDdXJyZW50RG9jdW1lbnRTdGF0dXMocmVzLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidXR0b25DbGljayhidXR0b246IGFueSkge1xyXG4gICAgLy8gR2V0IHRoZSBmb3JtIGdyb3VwXHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLmdyb3VwLmZvcm0gYXMgRm9ybUdyb3VwO1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgY29uc3QgYnV0dG9uVHlwZUNvZGUgPSBidXR0b24uVHlwZUNvZGUudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAvLy8vIFNraXAgaWYgdGhlIGJ1dHRvbidzIGNsaWNrIGV2ZW50IGluY2x1ZGVzIGJhY2tuYXZpZ2F0aW9uXHJcbiAgICAvL2lmIChidXR0b25UeXBlQ29kZSA9PT0gJ0dPVE8nKSB7XHJcbiAgICAvLyAgLy8gQ2hlY2sgaWYgdGhlIGZvcm0gaGFzIHVuc2F2ZWQgY2hhbmdlc1xyXG4gICAgLy8gIGlmICghdGhpcy5kYXRhLlNraXBDaGVja0Zvcm1EaXJ0eSAmJiAhZm9ybUdyb3VwLmRpcnR5KSB7XHJcbiAgICAvLyAgICBjb25zb2xlLndhcm4oYFJlY29yZCBub3Qgc2F2ZWQgYmVjYXVzZSB0aGUgZm9ybSBpcyBub3QgZGlydHkuYCk7XHJcbiAgICAvLyAgICByZXR1cm47XHJcbiAgICAvLyAgfVxyXG5cclxuICAgIC8vICAvLyBDaGVjayBpZiB0aGUgZm9ybSBpcyB2YWxpZFxyXG4gICAgLy8gIGlmICh0aGlzLmRhdGEuVXNlRGVmYXVsdFZhbGlkYXRlICYmICFmb3JtR3JvdXAudmFsaWQpIHtcclxuICAgIC8vICAgIHRoaXMuY29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZS5zaG93Rm9ybUdyb3VwRXJyb3JNZXNzYWdlKHRoaXMuZ3JvdXAsIGZvcm1Hcm91cCk7XHJcbiAgICAvLyAgICByZXR1cm47XHJcbiAgICAvLyAgfVxyXG4gICAgLy99XHJcblxyXG4gICAgLy8gVHlwZSAxID09IGZ1bmN0aW9uYWw7XHJcbiAgICAvLyBUeXBlIDIgPT0gR09UTzsgXHJcbiAgICB0aGlzLmdyb3VwLmlzVHJpZ2dlcmVkID0gYnV0dG9uLmRpc2FibGVUcmlnZ2VyICE9IHVuZGVmaW5lZCA/ICFidXR0b24uZGlzYWJsZVRyaWdnZXIgOiB0cnVlO1xyXG4gICAgc3dpdGNoIChidXR0b25UeXBlQ29kZSkge1xyXG4gICAgICBjYXNlIFwiRlVOQ1RJT05cIjpcclxuICAgICAgICAvLyBIYW5kbGUgZnVuY3Rpb25hbCBidXR0b25zXHJcbiAgICAgICAgaWYgKCF0aGlzLmdyb3VwLmlzVHJpZ2dlcmVkKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXA7XHJcblxyXG4gICAgICAgIC8vIERpc2FibGUgdHJpZ2dlciB0aW1lclxyXG4gICAgICAgIGlmICghYXR0cmlidXRlc1snRGlzYWJsZVRyaWdnZXJUaW1lciddKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgZ3JvdXBbJ2lzVHJpZ2dlcmVkJ10gPSBmYWxzZTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcIkZ1bmN0aW9uYWwgQnV0dG9uOiBcIiwgYnV0dG9uLk5hbWUpO1xyXG5cclxuICAgICAgICAvLyBDYWxsIHRoZSB3b3JrZmxvdyBzZXJ2aWNlIHRvIGhhbmRsZSB0aGUgZnVuY3Rpb25hbCBidXR0b24gY2xpY2sgZXZlbnRcclxuICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5mdW5jdGlvbmFsQnV0dG9uX09uQ2xpY2soYXR0cmlidXRlcywgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJHT1RPXCI6XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJHT1RPIEJ1dHRvbjogXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICAvLyBDYWxsIHRoZSB3b3JrZmxvdyBzZXJ2aWNlIHRvIGhhbmRsZSB0aGUgR09UTyBidXR0b24gY2xpY2sgZXZlbnQgXHJcbiAgICAgICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuZ290b0J1dHRvbl9PbmNsaWNrKGJ1dHRvbiwgdGhpcy5kYXRhLCBhdHRyaWJ1dGVzLCB0aGlzLmdyb3VwLCB0aGlzLmlzTG9jYWxIb3N0QVBJKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIC8vIFJlbG9hZCB0aGUgYnV0dG9uXHJcbiAgICAgICAgICB0aGlzLmxvYWRCdXR0b24oKTtcclxuXHJcbiAgICAgICAgICAvLyBSZXNldCB0cmlnZ2VyIHN0YXR1c1xyXG4gICAgICAgICAgdGhpcy5ncm91cC5pc1RyaWdnZXJlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgLy8gVHJpZ2dlciBlbWFpbCBzZW5kaW5nXHJcbiAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLnRyaWdnZXJTZW5kRW1haWwodGhpcy5ncm91cCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIEJ1dHRvbiBUeXBlOiAke2J1dHRvbi5OYW1lfWApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBlbmRUb0F0dHJpYnV0ZVVzZWZ1bERldGFpbChidXR0b246IGFueSkge1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG5cclxuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSB7XHJcbiAgICAgIC4uLmF0dHJpYnV0ZXMsXHJcbiAgICAgIHpCdXR0b25OYW1lOiB0aGlzLmRhdGEuTmFtZSxcclxuICAgICAgVHlwZUNvZGU6IGJ1dHRvbi5UeXBlQ29kZSxcclxuICAgICAgV29ya2Zsb3dDb2RlOiB0aGlzLmRhdGEuV29ya2Zsb3dDb2RlLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBuZXdCdXR0b24gPSB7XHJcbiAgICAgIC4uLmJ1dHRvbixcclxuICAgICAgQXR0cmlidXRlczogSlNPTi5zdHJpbmdpZnkobmV3QXR0cmlidXRlcyksXHJcbiAgICAgIGRpc2FibGVUcmlnZ2VyOiB0aGlzLmlzQnV0dG9uRGlzYWJsZVRyaWdnZXIodGhpcy5kYXRhLCBidXR0b24pLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbmV3QnV0dG9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0J1dHRvbkRpc2FibGVUcmlnZ2VyKGRhdGE6IFpGaWVsZCwgYnV0dG9uOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBidXR0b24uRGlzYWJsZVRyaWdnZXIgIT0gdW5kZWZpbmVkID8gYnV0dG9uLkRpc2FibGVUcmlnZ2VyIDogKGRhdGEuRGlzYWJsZVRyaWdnZXIgIT0gdW5kZWZpbmVkID8gZGF0YS5EaXNhYmxlVHJpZ2dlciA6IGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImUxdGFnLXN0eWxlXCJcclxuICAqbmdJZj1cIiFncm91cC5pc0xvYWRpbmcgJiYgKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpICYmIGl0ZW1zLmxlbmd0aCA+IDBcIlxyXG4gIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImlvbi1tYXJnaW4tdmVydGljYWwgZTF0YWctc3R5bGUxXCIgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpICYmIGl0ZW1zLmxlbmd0aCA+IDEgJiYgRmlyc3RaYnRuID09PSBmYWxzZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiPlxyXG4gICAgPGtlbmRvLWRyb3Bkb3duYnV0dG9uIFtkYXRhXT1cIml0ZW1zXCIgc2l6ZT1cImxhcmdlXCIgW2xvb2tdPVwiJ291dGxpbmUnXCIgY2xhc3M9XCJpb24tYWN0aXZhdGFibGUgcmlwcGxlLXBhcmVudCBlMXRhZy1zdHlsZTJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIj5cclxuICAgICAgQWN0aW9uc1xyXG4gICAgICA8aW9uLXJpcHBsZS1lZmZlY3Q+PC9pb24tcmlwcGxlLWVmZmVjdD5cclxuICAgIDwva2VuZG8tZHJvcGRvd25idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSB8fCBpdGVtcy5sZW5ndGggPT09IDFcIiBbbmdDbGFzc109XCJkYXRhLkRpdkNsYXNzXCIgY2xhc3M9XCJidG4tY29udGFpbmVyIGUxdGFnLXN0eWxlM1wiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiPlxyXG4gICAgPCEtLSA8YnV0dG9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCIgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKGl0ZW0uZmllbGRBdHRyaWJ1dGUpXCJcclxuICAgICAgICAgICAga2VuZG9CdXR0b24gW3RvZ2dsYWJsZV09XCJ0cnVlXCIgW2ljb25dPVwiaXRlbS5pY29uXCIgW2hpZGRlbl09XCIhaXNCdG5WaXNpYmxlKGl0ZW0udmlzaWJsZSlcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPlxyXG4gICAgICB7e2l0ZW0udGV4dH19XHJcbiAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYnRuLWxlZnQgZTF0YWctc3R5bGU0XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIFtmaWxsXT1cIml0ZW0uZmlsbFwiIFtzaXplXT1cIml0ZW0uc2l6ZVwiIFtjb2xvcl09XCJpdGVtLmNvbG9yXCIgc3Ryb25nPVwidHJ1ZVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxlZnRCdG5zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCIgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKGl0ZW0uZmllbGRBdHRyaWJ1dGUpXCIgW2hpZGRlbl09XCIhaXNCdG5WaXNpYmxlKGl0ZW0udmlzaWJsZSlcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJncm91cC5pc1RyaWdnZXJlZFwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiIGNsYXNzPVwiZTF0YWctc3R5bGU1XCI+XHJcbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJidG4taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW2ljb25dPVwiZ2V0Rm9udEF3ZXNvbWUoaXRlbS5pY29uLCBmb250QXdlU29tZVNlcnZpY2UpXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS50ZXh0XCIgW2NsYXNzLmJ0bi1sYWJlbF09XCJpdGVtLmljb25cIiBjbGFzcz1cImlvbi10ZXh0LWNhcGl0YWxpemVcIj57e2l0ZW0udGV4dH19PC9zcGFuPlxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJidG4tcmlnaHQgZTF0YWctc3R5bGU2XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU2XCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIFtmaWxsXT1cIml0ZW0uZmlsbFwiIFtzaXplXT1cIml0ZW0uc2l6ZVwiIFtjb2xvcl09XCJpdGVtLmNvbG9yXCIgc3Ryb25nPVwidHJ1ZVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJpZ2h0QnRuczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiIChjbGljayk9XCJidXR0b25DbGljayhpdGVtLmZpZWxkQXR0cmlidXRlKVwiIFtoaWRkZW5dPVwiIWlzQnRuVmlzaWJsZShpdGVtLnZpc2libGUpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXAuaXNUcmlnZ2VyZWRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTdcIiBjbGFzcz1cImUxdGFnLXN0eWxlN1wiPlxyXG4gICAgICAgIDxmYS1pY29uIGNsYXNzPVwiYnRuLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtpY29uXT1cImdldEZvbnRBd2Vzb21lKGl0ZW0uaWNvbiwgZm9udEF3ZVNvbWVTZXJ2aWNlKVwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udGV4dFwiIFtjbGFzcy5idG4tbGFiZWxdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJpb24tdGV4dC1jYXBpdGFsaXplXCI+e3tpdGVtLnRleHR9fTwvc3Bhbj5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|