mmhglobal-dynamicform 2.28.2 → 2.28.4
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 +11 -0
- package/esm2020/lib/components/buttonfieldbase.component.mjs +3 -3
- package/esm2020/lib/components/containerfieldbase.component.mjs +3 -3
- package/esm2020/lib/components/datalistingfieldbase.component.mjs +3 -3
- package/esm2020/lib/components/fieldbase.component.mjs +3 -3
- package/esm2020/lib/components/inputfieldbase.component.mjs +3 -3
- package/esm2020/lib/directives/elementcontainer.directive.mjs +3 -3
- package/esm2020/lib/directives/fieldelement.directive.mjs +3 -3
- package/esm2020/lib/directives/scrollbar.theme.directive.mjs +3 -3
- package/esm2020/lib/embed-components/context-menu/context-menu.component.mjs +3 -3
- package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +3 -3
- package/esm2020/lib/embed-components/page-loader/page-loader.component.mjs +3 -3
- package/esm2020/lib/embed-components/processing-record-loader/processing-record-loader.component.mjs +3 -3
- package/esm2020/lib/embed-components/spinner/spinner.component.mjs +3 -3
- package/esm2020/lib/ficon/ficon.component.mjs +3 -3
- package/esm2020/lib/input-error-message/input-error-message.component.mjs +3 -3
- package/esm2020/lib/kcard/kcard.component.mjs +3 -3
- package/esm2020/lib/kmenu/kmenu.component.mjs +3 -3
- package/esm2020/lib/kscrollview/kscrollview.component.mjs +3 -3
- package/esm2020/lib/ksplitter/ksplitter.component.mjs +3 -3
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +4 -4
- package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +3 -3
- package/esm2020/lib/pipe/panel-area.pipe.mjs +3 -3
- package/esm2020/lib/services/main.service.mjs +3 -3
- package/esm2020/lib/services/zcomponent.debug.service.mjs +3 -3
- package/esm2020/lib/services/zcomponent.service.mjs +3 -3
- package/esm2020/lib/sfquerybuilder/sfquerybuilder.component.mjs +3 -3
- package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +3 -3
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +3 -3
- package/esm2020/lib/uibulletin/uibulletin.component.mjs +3 -3
- package/esm2020/lib/uicontainer/uicontainer.component.mjs +3 -3
- package/esm2020/lib/uicontent/uicontent.component.mjs +3 -3
- package/esm2020/lib/uiheader/uiheader.component.mjs +3 -3
- package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +3 -3
- package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +3 -3
- package/esm2020/lib/uipage/uipage.component.mjs +3 -3
- package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +3 -3
- package/esm2020/lib/virtual-scroll/virtual-scroll.component.mjs +3 -3
- package/esm2020/lib/zbullet/zbullet.component.mjs +3 -3
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +23 -6
- package/esm2020/lib/zcard/zcard.component.mjs +3 -3
- package/esm2020/lib/zchart/zchart.component.mjs +3 -3
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +3 -3
- package/esm2020/lib/zchip/zchip.component.mjs +3 -3
- package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +3 -3
- package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +3 -3
- package/esm2020/lib/zcolorpicker/zcolorpicker.component.mjs +3 -3
- package/esm2020/lib/zdaterange/zdaterange.component.mjs +3 -3
- package/esm2020/lib/zdatetime/dateIonicFormatParser.pipe.mjs +3 -3
- package/esm2020/lib/zdatetime/dateIonicMinMaxDate.pipe.mjs +3 -3
- package/esm2020/lib/zdatetime/dateKendoFormatParser.pipe.mjs +3 -3
- package/esm2020/lib/zdatetime/dateParser.pipe.mjs +3 -3
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +3 -3
- package/esm2020/lib/zdiv/zdiv.component.mjs +3 -3
- package/esm2020/lib/zdiv/zdiv.pipe.mjs +3 -3
- package/esm2020/lib/zform/zform.component.mjs +3 -3
- package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +3 -3
- package/esm2020/lib/zgauge/zgauge.component.mjs +3 -3
- package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +3 -3
- package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +4 -4
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +3 -3
- package/esm2020/lib/zgrid/zgrid.component.mjs +64 -9
- package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +3 -3
- package/esm2020/lib/zgrid/zgrid.service.mjs +3 -3
- package/esm2020/lib/zimg/zimg.component.mjs +3 -3
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +3 -3
- package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +3 -3
- package/esm2020/lib/zlabel/zlabel.component.mjs +3 -3
- package/esm2020/lib/zloop/zloop.component.mjs +3 -3
- package/esm2020/lib/zmfb/zmfb.component.mjs +3 -3
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +3 -3
- package/esm2020/lib/zmodal/zmodal.component.mjs +3 -3
- package/esm2020/lib/znumeric/znumeric.component.mjs +3 -3
- package/esm2020/lib/znumeric/znumeric.component.pipe.mjs +3 -3
- package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +3 -3
- package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +3 -3
- package/esm2020/lib/zreport/zreport.component.mjs +3 -3
- package/esm2020/lib/zscheduler/zscheduler.component.mjs +3 -3
- package/esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs +4 -4
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +27 -15
- package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +3 -3
- package/esm2020/lib/zselectmultiple/zselectmultiple.pipe.mjs +3 -3
- package/esm2020/lib/ztab/ztab.component.mjs +3 -3
- package/esm2020/lib/ztab/ztab.pipe.mjs +3 -3
- package/esm2020/lib/ztext/ztext.component.mjs +3 -3
- package/esm2020/lib/ztextarea/ztextarea.component.mjs +3 -3
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -3
- package/esm2020/lib/ztree/ztree.component.mjs +3 -3
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +3 -3
- package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +3 -3
- package/esm2020/lib/zudf/zudf.component.mjs +3 -3
- package/esm2020/lib/zunknown/zunknown.component.mjs +3 -3
- package/esm2020/lib/zupload/zupload.component.mjs +3 -3
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +27 -7
- package/fesm2015/mmhglobal-dynamicform.mjs +408 -304
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +407 -303
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/zbuttons/zbuttons.component.d.ts +1 -0
- package/lib/zgrid/zgrid.component.d.ts +4 -2
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +1 -0
- package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -152,6 +152,9 @@ export class ZworkflowbuttonsComponent extends ButtonFieldBase {
|
|
|
152
152
|
// Type 1 == functional;
|
|
153
153
|
// Type 2 == GOTO;
|
|
154
154
|
this.group.isTriggered = button.disableTrigger != undefined ? !button.disableTrigger : true;
|
|
155
|
+
const clonedButton = ZComponentHelper.deepClone(button);
|
|
156
|
+
const clonedAttributes = ZComponentHelper.deepClone(attributes);
|
|
157
|
+
this.updateEventId(button);
|
|
155
158
|
switch (buttonTypeCode) {
|
|
156
159
|
case "FUNCTION":
|
|
157
160
|
// Handle functional buttons
|
|
@@ -166,12 +169,12 @@ export class ZworkflowbuttonsComponent extends ButtonFieldBase {
|
|
|
166
169
|
}
|
|
167
170
|
console.log("Functional Button: ", button.Name);
|
|
168
171
|
// Call the workflow service to handle the functional button click event
|
|
169
|
-
this.workflowService.functionalButton_OnClick(
|
|
172
|
+
this.workflowService.functionalButton_OnClick(clonedAttributes, this.group);
|
|
170
173
|
break;
|
|
171
174
|
case "GOTO":
|
|
172
175
|
console.log("GOTO Button: ", button.Name);
|
|
173
176
|
// Call the workflow service to handle the GOTO button click event
|
|
174
|
-
this.workflowService.gotoButton_Onclick(
|
|
177
|
+
this.workflowService.gotoButton_Onclick(clonedButton, this.data, clonedAttributes, this.group, this.isLocalHostAPI).subscribe(res => {
|
|
175
178
|
// Reload the button
|
|
176
179
|
this.loadButton(TriggerFromType.goToButton);
|
|
177
180
|
// Reset trigger status
|
|
@@ -187,19 +190,36 @@ export class ZworkflowbuttonsComponent extends ButtonFieldBase {
|
|
|
187
190
|
break;
|
|
188
191
|
}
|
|
189
192
|
}
|
|
193
|
+
updateEventId(button) {
|
|
194
|
+
const updateButtonEventId = (buttons) => {
|
|
195
|
+
buttons.forEach(item => {
|
|
196
|
+
if (item.name === button.Name) {
|
|
197
|
+
const eventId = ZComponentHelper.generateTimeStampId();
|
|
198
|
+
const attributes = JSON.parse(item.fieldAttribute.Attributes);
|
|
199
|
+
item.fieldAttribute.eventId = eventId;
|
|
200
|
+
attributes.eventId = eventId;
|
|
201
|
+
item.fieldAttribute.Attributes = JSON.stringify(attributes);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
updateButtonEventId(this.leftBtns);
|
|
206
|
+
updateButtonEventId(this.rightBtns);
|
|
207
|
+
}
|
|
190
208
|
appendToAttributeUsefulDetail(button) {
|
|
191
209
|
const attributes = JSON.parse(button.Attributes);
|
|
210
|
+
const eventId = ZComponentHelper.generateTimeStampId();
|
|
192
211
|
const newAttributes = {
|
|
193
212
|
...attributes,
|
|
194
213
|
zButtonName: this.data.Name,
|
|
195
214
|
TypeCode: button.TypeCode,
|
|
196
215
|
WorkflowCode: this.data.WorkflowCode,
|
|
216
|
+
eventId: eventId
|
|
197
217
|
};
|
|
198
218
|
const newButton = {
|
|
199
219
|
...button,
|
|
200
|
-
eventId: ZComponentHelper.generateTimeStampId(),
|
|
201
220
|
Attributes: JSON.stringify(newAttributes),
|
|
202
221
|
disableTrigger: this.isButtonDisableTrigger(this.data, button),
|
|
222
|
+
eventId: eventId
|
|
203
223
|
};
|
|
204
224
|
return newButton;
|
|
205
225
|
}
|
|
@@ -213,10 +233,10 @@ export class ZworkflowbuttonsComponent extends ButtonFieldBase {
|
|
|
213
233
|
}
|
|
214
234
|
}
|
|
215
235
|
}
|
|
216
|
-
ZworkflowbuttonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
217
|
-
ZworkflowbuttonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
218
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
236
|
+
ZworkflowbuttonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZworkflowbuttonsComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FontAweSomeService }, { token: i2.WebApiService }, { token: i2.ResourceApiService }, { token: i2.ComponentErrorHandlerService }, { token: i2.WorkflowService }], target: i0.ɵɵFactoryTarget.Component });
|
|
237
|
+
ZworkflowbuttonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZworkflowbuttonsComponent, selector: "app-zworkflowbuttons", usesInheritance: true, ngImport: i0, 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 && item.showLabel\" [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 && item.showLabel\" [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"], components: [{ type: i3.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["icon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { type: i4.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }, { type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZworkflowbuttonsComponent, decorators: [{
|
|
219
239
|
type: Component,
|
|
220
240
|
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 && item.showLabel\" [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 && item.showLabel\" [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"] }]
|
|
221
241
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FontAweSomeService }, { type: i2.WebApiService }, { type: i2.ResourceApiService }, { type: i2.ComponentErrorHandlerService }, { type: i2.WorkflowService }]; } });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiendvcmtmbG93YnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96d29ya2Zsb3didXR0b25zL3p3b3JrZmxvd2J1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvendvcmtmbG93YnV0dG9ucy96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFPLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLE9BQU8sRUFFTyxnQkFBZ0IsRUFBVSxlQUFlLEVBQ3RELE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsZUFBZTtJQWlCNUQsWUFDUyxnQkFBbUMsRUFDbkMsa0JBQXNDLEVBQ3JDLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0Qyw0QkFBMEQsRUFDMUQsZUFBZ0M7UUFFeEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFQakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUNBQTRCLEdB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UyxDQUFDLGFBQWEsQ0FBQztZQUN6QyxjQUFjLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQy9ELENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sc0JBQXNCLENBQUMsSUFBWSxFQUFFLE1BQVc7UUFDdEQsT0FBTyxNQUFNLENBQUMsY0FBYyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkksQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQzdGLElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7O3NIQWpQVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixtRkN6QnRDLGt0RkFrQ0E7MkZEVGEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IEJ1dHRvbkZpZWxkQmFzZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYnV0dG9uZmllbGRiYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBXZWJBcGlTZXJ2aWNlLCBSZXNvdXJjZUFwaVNlcnZpY2UsIFdvcmtmbG93U2VydmljZSwgRm9udEF3ZVNvbWVTZXJ2aWNlLCBDb21wb25lbnRFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpGaWVsZCwgVHJpZ2dlckZyb21UeXBlXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16d29ya2Zsb3didXR0b25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vendvcmtmbG93YnV0dG9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vendvcmtmbG93YnV0dG9ucy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWndvcmtmbG93YnV0dG9uc0NvbXBvbmVudCBleHRlbmRzIEJ1dHRvbkZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgLy8gVVJMIHJlcXVpcmVkXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbixuby11bmRlcnNjb3JlLWRhbmdsZSxpZC1ibGFja2xpc3QsaWQtbWF0Y2hcclxuICBlMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMXCIpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sbm8tdW5kZXJzY29yZS1kYW5nbGUsaWQtYmxhY2tsaXN0LGlkLW1hdGNoXHJcbiAgZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkxcIik7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiwgbm8tdW5kZXJzY29yZS1kYW5nbGUsIGlkLWJsYWNrbGlzdCwgaWQtbWF0Y2hcclxuICBlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkxcIik7XHJcblxyXG4gIC8vZG9tYWluVVJMID0gXCJodHRwczovL2xvY2FsaG9zdDo0NDMwMC9cIjtcclxuICAvL2Uxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMID0gdGhpcy5kb21haW5VUkwgKyBcIi9hcGkvV29ya2Zsb3dDbGllbnRzL0dldFdvcmtmbG93Q2xpZW50QnV0dG9ucy9cIjtcclxuICAvL2Uxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkwgPSB0aGlzLmRvbWFpblVSTCArIFwiL2FwaS9Xb3JrZmxvd0NsaWVudHMvR2V0V29ya2Zsb3dJbml0aWFsU3RhdHVzL1wiO1xyXG4gIC8vZTF3ZnNfd2ZjX2dldERvY3VtZW50U3RhdHVzVVJMID0gdGhpcy5kb21haW5VUkwgKyBcIi9hcGkvV29ya2Zsb3dDbGllbnRzL0dldERvY3VtZW50U3RhdHVzL1wiO1xyXG4gIGRhdGFGb3JtRmllbGRzOiBhbnkgPSB7fTtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIGlzTG9jYWxIb3N0QVBJOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvbnRBd2VTb21lU2VydmljZTogRm9udEF3ZVNvbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZTogQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgd29ya2Zsb3dTZXJ2aWNlOiBXb3JrZmxvd1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5pbml0Q29tcG9uZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICAgIC8vIENoZWNrIHByb2plY3QgcmVzb3VyY2VVUkwgaXMgaXQgbG9jYWxob3N0XHJcbiAgICAgIGlmICh0aGlzLmdyb3VwLnJlc291cmNlVVJMKSB7XHJcbiAgICAgICAgdGhpcy5pc0xvY2FsSG9zdEFQSSA9IHRoaXMuZ3JvdXAucmVzb3VyY2VVUkwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImxvY2FsaG9zdFwiKSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5sb2FkQnV0dG9uKFRyaWdnZXJGcm9tVHlwZS5pbml0aWFsUGFnZUxvYWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZEJ1dHRvbih0cmlnZ2VyRnJvbT86IFRyaWdnZXJGcm9tVHlwZSkge1xyXG4gICAgdGhpcy5sZWZ0QnRucyA9IFtdO1xyXG4gICAgdGhpcy5yaWdodEJ0bnMgPSBbXTtcclxuICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuXHJcbiAgICAvLyBHZXQgV0ZTX0RvY3VtZW50SWQgaWYgYW55LlxyXG4gICAgY29uc3QgZG9jdW1lbnRJZCA9IHRoaXMuZ3JvdXAuek1vZGVsPy5bJ1dGU19Eb2N1bWVudElkJ107XHJcblxyXG4gICAgLy8gU2V0IHRoZSBkb2N1bWVudElkIHRvIHRoZSBzZXJ2aWNlXHJcbiAgICB0aGlzLndvcmtmbG93U2VydmljZS5hcHBlbmRXRlNfRG9jdW1lbnRzSW5mbyh0aGlzLmRhdGEuV29ya2Zsb3dDb2RlLCBkb2N1bWVudElkKTtcclxuXHJcbiAgICAvLyBidXR0b24gY291bnRcclxuICAgIHRoaXMuZ3JvdXAuekJ1dHRvbnNDb3VudCsrO1xyXG4gICAgdGhpcy5GaXJzdFpidG4gPSB0aGlzLmdyb3VwLnpCdXR0b25zQ291bnQgPT09IDE7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgb2YodHJ1ZSkucGlwZShcclxuICAgICAgICBjb25jYXRNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gcmV0cmlldmUgdGhlIHdvcmtmbG93IGJ1dHRvblxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmdldFdvcmtmbG93QnV0dG9uc0ZpZWxkKFxyXG4gICAgICAgICAgICB0aGlzLmRhdGEuV29ya2Zsb3dDb2RlLFxyXG4gICAgICAgICAgICB0aGlzLmUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMLFxyXG4gICAgICAgICAgICBTdHJpbmcodGhpcy5pc0xvY2FsSG9zdEFQSSksXHJcbiAgICAgICAgICAgIHRyaWdnZXJGcm9tXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFwKHJlc3VsdERhdGEgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdERhdGEpIHtcclxuICAgICAgICAgICAgcmVzdWx0RGF0YS5mb3JFYWNoKChidXR0b246IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghYnV0dG9uLkxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uTGFiZWwgPSBidXR0b24uTmFtZTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRCdXR0b25MYWJlbChidXR0b24pO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBKU09OLnBhcnNlKGJ1dHRvbi5BdHRyaWJ1dGVzKTtcclxuICAgICAgICAgICAgICBjb25zdCBpc1VzZUN1c3RvbUNsYXNzID0gYXR0cmlidXRlcy5Db2xvciA/IGZhbHNlIDogdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgYnV0dG9uID0gdGhpcy5hcHBlbmRUb0F0dHJpYnV0ZVVzZWZ1bERldGFpbChidXR0b24pO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJ0biA9IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IGJ1dHRvbi5OYW1lLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogbGFiZWwsXHJcbiAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGJ1dHRvbi5TaG93TGFiZWwgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGljb246IFpDb21wb25lbnRIZWxwZXIuZ2V0SWNvbihhdHRyaWJ1dGVzLkljb24pLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogYXR0cmlidXRlcy5WaXNpYmxlLFxyXG4gICAgICAgICAgICAgICAgY29sb3I6IGlzVXNlQ3VzdG9tQ2xhc3MgPyAnJyA6IChhdHRyaWJ1dGVzLkNvbG9yIHx8ICdwcmltYXJ5JyksXHJcbiAgICAgICAgICAgICAgICBmaWxsOiBpc1VzZUN1c3RvbUNsYXNzID8gJycgOiAoYXR0cmlidXRlcy5GaWxsIHx8ICdzb2xpZCcpLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogYXR0cmlidXRlcy5TaXplIHx8ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgIGNsYXNzOiBpc1VzZUN1c3RvbUNsYXNzID8gYCR7YXR0cmlidXRlcy5DbGFzc30gdXNlQ3VzdG9tQ2xhc3NgIDogYXR0cmlidXRlcy5DbGFzcyxcclxuICAgICAgICAgICAgICAgIGZpZWxkQXR0cmlidXRlOiBidXR0b24sXHJcbiAgICAgICAgICAgICAgICBpY29uTmFtZTogYXR0cmlidXRlcy5JY29uLFxyXG4gICAgICAgICAgICAgICAgY2xpY2s6ICh5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLlBvc2l0aW9uWCAmJiBhdHRyaWJ1dGVzLlBvc2l0aW9uWCA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodEJ0bnMucHVzaChidG4pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGVmdEJ0bnMucHVzaChidG4pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goLi4udGhpcy5sZWZ0QnRucywgLi4udGhpcy5yaWdodEJ0bnMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5hYmxlIHRvIGdldCB3b3JrZmxvdyBidXR0b24uIERhdGEgcmV0dXJuZWQgbnVsbC5gKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHN1cGVyLnRyYW5zbGF0ZUJ1dHRvbnNMYWJlbCh0aGlzLml0ZW1zKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmRhdGEuRGlzYWJsZVN5bmNXb3JrZmxvd1N0YXR1cykge1xyXG4gICAgICAgICAgICAvLyBTZXQgZGVmYXVsdCBzdGF0dXNcclxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmdyb3VwLnpNb2RlbFsnV0ZTX1N0YXR1c05hbWUnXSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIFdvcmtmbG93TWFzdGVyQ29kZTogdGhpcy5kYXRhLldvcmtmbG93Q29kZSxcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBQb3N0JCh0aGlzLmUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkwsIHBhcmFtcykucGlwZShcclxuICAgICAgICAgICAgICAgIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLkRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLnByZXNldE1vZGVsVmFsdWUoJ1dGU19TdGF0dXNJZCcsIHJlcy5EYXRhWydJZCddLCB0aGlzLmdyb3VwKTtcclxuICAgICAgICAgICAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLnByZXNldE1vZGVsVmFsdWUoJ1dGU19TdGF0dXNOYW1lJywgcmVzLkRhdGFbJ05hbWUnXSwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgWkNvbXBvbmVudEhlbHBlci5wcmVzZXRNb2RlbFZhbHVlKCdXRlNfU3RhdHVzQ29kZScsIHJlcy5EYXRhWydDb2RlJ10sIHRoaXMuZ3JvdXApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5zZXRDdXJyZW50RG9jdW1lbnRTdGF0dXMocmVzLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyBXaGVuIGxvYWRpbmcgYWxzbyB0byBnZXQgY3VycmVudCBTdGF0dXMgSW5mb3JtYXRpb24gaWYgYW55LlxyXG4gICAgICAgICAgICAgIGNvbnN0IGRvY0luZm9QYXJhbSA9IHtcclxuICAgICAgICAgICAgICAgIFdvcmtmbG93TWFzdGVyQ29kZTogdGhpcy5kYXRhLldvcmtmbG93Q29kZSxcclxuICAgICAgICAgICAgICAgIERvY3VtZW50SWQ6IGRvY3VtZW50SWQsXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5odHRwUG9zdCQodGhpcy5lMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwsIGRvY0luZm9QYXJhbSkucGlwZShcclxuICAgICAgICAgICAgICAgIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5zZXRDdXJyZW50RG9jdW1lbnRTdGF0dXMocmVzKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NlcnZpY2Uuc2V0Q3VycmVudERvY3VtZW50U3RhdHVzKHJlcy5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uQ2xpY2soYnV0dG9uOiBhbnkpIHtcclxuICAgIC8vIEdldCB0aGUgZm9ybSBncm91cFxyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5ncm91cC5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBKU09OLnBhcnNlKGJ1dHRvbi5BdHRyaWJ1dGVzKTtcclxuICAgIGNvbnN0IGJ1dHRvblR5cGVDb2RlID0gYnV0dG9uLlR5cGVDb2RlLnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgLy8gVHlwZSAxID09IGZ1bmN0aW9uYWw7XHJcbiAgICAvLyBUeXBlIDIgPT0gR09UTztcclxuICAgIHRoaXMuZ3JvdXAuaXNUcmlnZ2VyZWQgPSBidXR0b24uZGlzYWJsZVRyaWdnZXIgIT0gdW5kZWZpbmVkID8gIWJ1dHRvbi5kaXNhYmxlVHJpZ2dlciA6IHRydWU7XHJcbiAgICBzd2l0Y2ggKGJ1dHRvblR5cGVDb2RlKSB7XHJcbiAgICAgIGNhc2UgXCJGVU5DVElPTlwiOlxyXG4gICAgICAgIC8vIEhhbmRsZSBmdW5jdGlvbmFsIGJ1dHRvbnNcclxuICAgICAgICBpZiAoIXRoaXMuZ3JvdXAuaXNUcmlnZ2VyZWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIERpc2FibGUgdHJpZ2dlciB0aW1lclxyXG4gICAgICAgIGlmICghYXR0cmlidXRlc1snRGlzYWJsZVRyaWdnZXJUaW1lciddKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cFsnaXNUcmlnZ2VyZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRnVuY3Rpb25hbCBCdXR0b246IFwiLCBidXR0b24uTmFtZSk7XHJcblxyXG4gICAgICAgIC8vIENhbGwgdGhlIHdvcmtmbG93IHNlcnZpY2UgdG8gaGFuZGxlIHRoZSBmdW5jdGlvbmFsIGJ1dHRvbiBjbGljayBldmVudFxyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmZ1bmN0aW9uYWxCdXR0b25fT25DbGljayhhdHRyaWJ1dGVzLCB0aGlzLmdyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkdPVE9cIjpcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkdPVE8gQnV0dG9uOiBcIiwgYnV0dG9uLk5hbWUpO1xyXG4gICAgICAgIC8vIENhbGwgdGhlIHdvcmtmbG93IHNlcnZpY2UgdG8gaGFuZGxlIHRoZSBHT1RPIGJ1dHRvbiBjbGljayBldmVudFxyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmdvdG9CdXR0b25fT25jbGljayhidXR0b24sIHRoaXMuZGF0YSwgYXR0cmlidXRlcywgdGhpcy5ncm91cCwgdGhpcy5pc0xvY2FsSG9zdEFQSSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAvLyBSZWxvYWQgdGhlIGJ1dHRvblxyXG4gICAgICAgICAgdGhpcy5sb2FkQnV0dG9uKFRyaWdnZXJGcm9tVHlwZS5nb1RvQnV0dG9uKTtcclxuXHJcbiAgICAgICAgICAvLyBSZXNldCB0cmlnZ2VyIHN0YXR1c1xyXG4gICAgICAgICAgdGhpcy5ncm91cC5pc1RyaWdnZXJlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgLy8gVHJpZ2dlciBlbWFpbCBzZW5kaW5nXHJcbiAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLnRyaWdnZXJTZW5kRW1haWwodGhpcy5ncm91cCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIEJ1dHRvbiBUeXBlOiAke2J1dHRvbi5OYW1lfWApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBlbmRUb0F0dHJpYnV0ZVVzZWZ1bERldGFpbChidXR0b246IGFueSkge1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG5cclxuICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSB7XHJcbiAgICAgIC4uLmF0dHJpYnV0ZXMsXHJcbiAgICAgIHpCdXR0b25OYW1lOiB0aGlzLmRhdGEuTmFtZSxcclxuICAgICAgVHlwZUNvZGU6IGJ1dHRvbi5UeXBlQ29kZSxcclxuICAgICAgV29ya2Zsb3dDb2RlOiB0aGlzLmRhdGEuV29ya2Zsb3dDb2RlLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBuZXdCdXR0b24gPSB7XHJcbiAgICAgIC4uLmJ1dHRvbixcclxuICAgICAgZXZlbnRJZDogWkNvbXBvbmVudEhlbHBlci5nZW5lcmF0ZVRpbWVTdGFtcElkKCksXHJcbiAgICAgIEF0dHJpYnV0ZXM6IEpTT04uc3RyaW5naWZ5KG5ld0F0dHJpYnV0ZXMpLFxyXG4gICAgICBkaXNhYmxlVHJpZ2dlcjogdGhpcy5pc0J1dHRvbkRpc2FibGVUcmlnZ2VyKHRoaXMuZGF0YSwgYnV0dG9uKSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG5ld0J1dHRvbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCdXR0b25EaXNhYmxlVHJpZ2dlcihkYXRhOiBaRmllbGQsIGJ1dHRvbjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYnV0dG9uLkRpc2FibGVUcmlnZ2VyICE9IHVuZGVmaW5lZCA/IGJ1dHRvbi5EaXNhYmxlVHJpZ2dlciA6IChkYXRhLkRpc2FibGVUcmlnZ2VyICE9IHVuZGVmaW5lZCA/IGRhdGEuRGlzYWJsZVRyaWdnZXIgOiBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlR290b0J1dHRvbigpIHtcclxuICAgIGNvbnN0IGluZGV4VG9EZWxldGUgPSB0aGlzLmxlZnRCdG5zLmZpbmRJbmRleChvYmogPT4gb2JqLmZpZWxkQXR0cmlidXRlLlR5cGVDb2RlID09PSBcIkdPVE9cIik7XHJcbiAgICBpZiAoaW5kZXhUb0RlbGV0ZSAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5sZWZ0QnRucy5zcGxpY2UoaW5kZXhUb0RlbGV0ZSwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJlMXRhZy1zdHlsZVwiXHJcbiAgKm5nSWY9XCIhZ3JvdXAuaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKSAmJiBpdGVtcy5sZW5ndGggPiAwXCJcclxuICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJpb24tbWFyZ2luLXZlcnRpY2FsIGUxdGFnLXN0eWxlMVwiICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKSAmJiBpdGVtcy5sZW5ndGggPiAxICYmIEZpcnN0WmJ0biA9PT0gZmFsc2VcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDxrZW5kby1kcm9wZG93bmJ1dHRvbiBbZGF0YV09XCJpdGVtc1wiIHNpemU9XCJsYXJnZVwiIFtsb29rXT1cIidvdXRsaW5lJ1wiIGNsYXNzPVwiaW9uLWFjdGl2YXRhYmxlIHJpcHBsZS1wYXJlbnQgZTF0YWctc3R5bGUyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+XHJcbiAgICAgIEFjdGlvbnNcclxuICAgICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XHJcbiAgICA8L2tlbmRvLWRyb3Bkb3duYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgfHwgaXRlbXMubGVuZ3RoID09PSAxXCIgW25nQ2xhc3NdPVwiZGF0YS5EaXZDbGFzc1wiIGNsYXNzPVwiYnRuLWNvbnRhaW5lciBlMXRhZy1zdHlsZTNcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTNcIj5cclxuICAgIDwhLS0gPGJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiIChjbGljayk9XCJidXR0b25DbGljayhpdGVtLmZpZWxkQXR0cmlidXRlKVwiXHJcbiAgICAgICAgICAgIGtlbmRvQnV0dG9uIFt0b2dnbGFibGVdPVwidHJ1ZVwiIFtpY29uXT1cIml0ZW0uaWNvblwiIFtoaWRkZW5dPVwiIWlzQnRuVmlzaWJsZShpdGVtLnZpc2libGUpXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIj5cclxuICAgICAge3tpdGVtLnRleHR9fVxyXG4gICAgPC9idXR0b24+IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJ0bi1sZWZ0IGUxdGFnLXN0eWxlNFwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiBbZmlsbF09XCJpdGVtLmZpbGxcIiBbc2l6ZV09XCJpdGVtLnNpemVcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiIHN0cm9uZz1cInRydWVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsZWZ0QnRuczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiIChjbGljayk9XCJidXR0b25DbGljayhpdGVtLmZpZWxkQXR0cmlidXRlKVwiIFtoaWRkZW5dPVwiIWlzQnRuVmlzaWJsZShpdGVtLnZpc2libGUpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXAuaXNUcmlnZ2VyZWRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiPlxyXG4gICAgICAgIDxmYS1pY29uIGNsYXNzPVwiYnRuLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtpY29uXT1cImdldEZvbnRBd2Vzb21lKGl0ZW0uaWNvbiwgZm9udEF3ZVNvbWVTZXJ2aWNlKVwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udGV4dCAmJiBpdGVtLnNob3dMYWJlbFwiIFtjbGFzcy5idG4tbGFiZWxdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJpb24tdGV4dC1jYXBpdGFsaXplXCI+e3tpdGVtLnRleHR9fTwvc3Bhbj5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYnRuLXJpZ2h0IGUxdGFnLXN0eWxlNlwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNlwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiBbZmlsbF09XCJpdGVtLmZpbGxcIiBbc2l6ZV09XCJpdGVtLnNpemVcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiIHN0cm9uZz1cInRydWVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByaWdodEJ0bnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NcIiAoY2xpY2spPVwiYnV0dG9uQ2xpY2soaXRlbS5maWVsZEF0dHJpYnV0ZSlcIiBbaGlkZGVuXT1cIiFpc0J0blZpc2libGUoaXRlbS52aXNpYmxlKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmlzVHJpZ2dlcmVkXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU3XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTdcIj5cclxuICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImJ0bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIiBbaWNvbl09XCJnZXRGb250QXdlc29tZShpdGVtLmljb24sIGZvbnRBd2VTb21lU2VydmljZSlcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnRleHQgJiYgaXRlbS5zaG93TGFiZWxcIiBbY2xhc3MuYnRuLWxhYmVsXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPnt7aXRlbS50ZXh0fX08L3NwYW4+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiendvcmtmbG93YnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96d29ya2Zsb3didXR0b25zL3p3b3JrZmxvd2J1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvendvcmtmbG93YnV0dG9ucy96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFPLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLE9BQU8sRUFFTyxnQkFBZ0IsRUFBVSxlQUFlLEVBQ3RELE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsZUFBZTtJQWlCNUQsWUFDUyxnQkFBbUMsRUFDbkMsa0JBQXNDLEVBQ3JDLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0Qyw0QkFBMEQsRUFDMUQsZUFBZ0M7UUFFeEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFQakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUNBQTRCLEdB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QUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQVksRUFBRSxNQUFXO1FBQ3RELE9BQU8sTUFBTSxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM3RixJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDOztzSEE1UVUseUJBQXlCOzBHQUF6Qix5QkFBeUIsbUZDekJ0QyxrdEZBa0NBOzJGRFRhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBCdXR0b25GaWVsZEJhc2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2J1dHRvbmZpZWxkYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgV2ViQXBpU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXb3JrZmxvd1NlcnZpY2UsIEZvbnRBd2VTb21lU2VydmljZSwgQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaRmllbGQsIFRyaWdnZXJGcm9tVHlwZVxyXG59IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtendvcmtmbG93YnV0dG9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3p3b3JrZmxvd2J1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3p3b3JrZmxvd2J1dHRvbnMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFp3b3JrZmxvd2J1dHRvbnNDb21wb25lbnQgZXh0ZW5kcyBCdXR0b25GaWVsZEJhc2UgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQge1xyXG4gIC8vIFVSTCByZXF1aXJlZFxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sbm8tdW5kZXJzY29yZS1kYW5nbGUsaWQtYmxhY2tsaXN0LGlkLW1hdGNoXHJcbiAgZTF3ZnNfd2ZjR2V0V29ya2Zsb3dCdXR0b25VUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTFwiKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uLG5vLXVuZGVyc2NvcmUtZGFuZ2xlLGlkLWJsYWNrbGlzdCxpZC1tYXRjaFxyXG4gIGUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNfZ2V0V29ya2Zsb3dJbml0aWFsU3RhdHVzVVJMXCIpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sIG5vLXVuZGVyc2NvcmUtZGFuZ2xlLCBpZC1ibGFja2xpc3QsIGlkLW1hdGNoXHJcbiAgZTF3ZnNfd2ZjX2dldERvY3VtZW50U3RhdHVzVVJMID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFwiZTF3ZnNfd2ZjX2dldERvY3VtZW50U3RhdHVzVVJMXCIpO1xyXG5cclxuICAvL2RvbWFpblVSTCA9IFwiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMDAvXCI7XHJcbiAgLy9lMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCA9IHRoaXMuZG9tYWluVVJMICsgXCIvYXBpL1dvcmtmbG93Q2xpZW50cy9HZXRXb3JrZmxvd0NsaWVudEJ1dHRvbnMvXCI7XHJcbiAgLy9lMXdmc193ZmNfZ2V0V29ya2Zsb3dJbml0aWFsU3RhdHVzVVJMID0gdGhpcy5kb21haW5VUkwgKyBcIi9hcGkvV29ya2Zsb3dDbGllbnRzL0dldFdvcmtmbG93SW5pdGlhbFN0YXR1cy9cIjtcclxuICAvL2Uxd2ZzX3dmY19nZXREb2N1bWVudFN0YXR1c1VSTCA9IHRoaXMuZG9tYWluVVJMICsgXCIvYXBpL1dvcmtmbG93Q2xpZW50cy9HZXREb2N1bWVudFN0YXR1cy9cIjtcclxuICBkYXRhRm9ybUZpZWxkczogYW55ID0ge307XHJcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcclxuICBpc0xvY2FsSG9zdEFQSTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBmb250QXdlU29tZVNlcnZpY2U6IEZvbnRBd2VTb21lU2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEVycm9ySGFuZGxlclNlcnZpY2U6IENvbXBvbmVudEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtmbG93U2VydmljZTogV29ya2Zsb3dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuaW5pdENvbXBvbmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgICAvLyBDaGVjayBwcm9qZWN0IHJlc291cmNlVVJMIGlzIGl0IGxvY2FsaG9zdFxyXG4gICAgICBpZiAodGhpcy5ncm91cC5yZXNvdXJjZVVSTCkge1xyXG4gICAgICAgIHRoaXMuaXNMb2NhbEhvc3RBUEkgPSB0aGlzLmdyb3VwLnJlc291cmNlVVJMLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJsb2NhbGhvc3RcIikgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubG9hZEJ1dHRvbihUcmlnZ2VyRnJvbVR5cGUuaW5pdGlhbFBhZ2VMb2FkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRCdXR0b24odHJpZ2dlckZyb20/OiBUcmlnZ2VyRnJvbVR5cGUpIHtcclxuICAgIHRoaXMubGVmdEJ0bnMgPSBbXTtcclxuICAgIHRoaXMucmlnaHRCdG5zID0gW107XHJcbiAgICB0aGlzLml0ZW1zID0gW107XHJcblxyXG4gICAgLy8gR2V0IFdGU19Eb2N1bWVudElkIGlmIGFueS5cclxuICAgIGNvbnN0IGRvY3VtZW50SWQgPSB0aGlzLmdyb3VwLnpNb2RlbD8uWydXRlNfRG9jdW1lbnRJZCddO1xyXG5cclxuICAgIC8vIFNldCB0aGUgZG9jdW1lbnRJZCB0byB0aGUgc2VydmljZVxyXG4gICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuYXBwZW5kV0ZTX0RvY3VtZW50c0luZm8odGhpcy5kYXRhLldvcmtmbG93Q29kZSwgZG9jdW1lbnRJZCk7XHJcblxyXG4gICAgLy8gYnV0dG9uIGNvdW50XHJcbiAgICB0aGlzLmdyb3VwLnpCdXR0b25zQ291bnQrKztcclxuICAgIHRoaXMuRmlyc3RaYnRuID0gdGhpcy5ncm91cC56QnV0dG9uc0NvdW50ID09PSAxO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIG9mKHRydWUpLnBpcGUoXHJcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcclxuICAgICAgICAgIC8vIHJldHJpZXZlIHRoZSB3b3JrZmxvdyBidXR0b25cclxuICAgICAgICAgIHJldHVybiB0aGlzLndvcmtmbG93U2VydmljZS5nZXRXb3JrZmxvd0J1dHRvbnNGaWVsZChcclxuICAgICAgICAgICAgdGhpcy5kYXRhLldvcmtmbG93Q29kZSxcclxuICAgICAgICAgICAgdGhpcy5lMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCxcclxuICAgICAgICAgICAgU3RyaW5nKHRoaXMuaXNMb2NhbEhvc3RBUEkpLFxyXG4gICAgICAgICAgICB0cmlnZ2VyRnJvbVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRhcChyZXN1bHREYXRhID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHREYXRhKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdERhdGEuZm9yRWFjaCgoYnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIWJ1dHRvbi5MYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uLkxhYmVsID0gYnV0dG9uLk5hbWU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZ2V0QnV0dG9uTGFiZWwoYnV0dG9uKTtcclxuICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gSlNPTi5wYXJzZShidXR0b24uQXR0cmlidXRlcyk7XHJcbiAgICAgICAgICAgICAgY29uc3QgaXNVc2VDdXN0b21DbGFzcyA9IGF0dHJpYnV0ZXMuQ29sb3IgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIGJ1dHRvbiA9IHRoaXMuYXBwZW5kVG9BdHRyaWJ1dGVVc2VmdWxEZXRhaWwoYnV0dG9uKTtcclxuICAgICAgICAgICAgICBjb25zdCBidG4gPSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBidXR0b24uTmFtZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBidXR0b24uU2hvd0xhYmVsID8/IHRydWUsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBaQ29tcG9uZW50SGVscGVyLmdldEljb24oYXR0cmlidXRlcy5JY29uKSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGF0dHJpYnV0ZXMuVmlzaWJsZSxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBpc1VzZUN1c3RvbUNsYXNzID8gJycgOiAoYXR0cmlidXRlcy5Db2xvciB8fCAncHJpbWFyeScpLFxyXG4gICAgICAgICAgICAgICAgZmlsbDogaXNVc2VDdXN0b21DbGFzcyA/ICcnIDogKGF0dHJpYnV0ZXMuRmlsbCB8fCAnc29saWQnKSxcclxuICAgICAgICAgICAgICAgIHNpemU6IGF0dHJpYnV0ZXMuU2l6ZSB8fCAnZGVmYXVsdCcsXHJcbiAgICAgICAgICAgICAgICBjbGFzczogaXNVc2VDdXN0b21DbGFzcyA/IGAke2F0dHJpYnV0ZXMuQ2xhc3N9IHVzZUN1c3RvbUNsYXNzYCA6IGF0dHJpYnV0ZXMuQ2xhc3MsXHJcbiAgICAgICAgICAgICAgICBmaWVsZEF0dHJpYnV0ZTogYnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgaWNvbk5hbWU6IGF0dHJpYnV0ZXMuSWNvbixcclxuICAgICAgICAgICAgICAgIGNsaWNrOiAoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkNsaWNrKGJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5Qb3NpdGlvblggJiYgYXR0cmlidXRlcy5Qb3NpdGlvblggPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmlnaHRCdG5zLnB1c2goYnRuKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxlZnRCdG5zLnB1c2goYnRuKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKC4uLnRoaXMubGVmdEJ0bnMsIC4uLnRoaXMucmlnaHRCdG5zKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuYWJsZSB0byBnZXQgd29ya2Zsb3cgYnV0dG9uLiBEYXRhIHJldHVybmVkIG51bGwuYCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBzdXBlci50cmFuc2xhdGVCdXR0b25zTGFiZWwodGhpcy5pdGVtcyk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5kYXRhLkRpc2FibGVTeW5jV29ya2Zsb3dTdGF0dXMpIHtcclxuICAgICAgICAgICAgLy8gU2V0IGRlZmF1bHQgc3RhdHVzXHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5ncm91cC56TW9kZWxbJ1dGU19TdGF0dXNOYW1lJ10pIHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBXb3JrZmxvd01hc3RlckNvZGU6IHRoaXMuZGF0YS5Xb3JrZmxvd0NvZGUsXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5odHRwUG9zdCQodGhpcy5lMXdmc193ZmNfZ2V0V29ya2Zsb3dJbml0aWFsU3RhdHVzVVJMLCBwYXJhbXMpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgWkNvbXBvbmVudEhlbHBlci5wcmVzZXRNb2RlbFZhbHVlKCdXRlNfU3RhdHVzSWQnLCByZXMuRGF0YVsnSWQnXSwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgWkNvbXBvbmVudEhlbHBlci5wcmVzZXRNb2RlbFZhbHVlKCdXRlNfU3RhdHVzTmFtZScsIHJlcy5EYXRhWydOYW1lJ10sIHRoaXMuZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIFpDb21wb25lbnRIZWxwZXIucHJlc2V0TW9kZWxWYWx1ZSgnV0ZTX1N0YXR1c0NvZGUnLCByZXMuRGF0YVsnQ29kZSddLCB0aGlzLmdyb3VwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NlcnZpY2Uuc2V0Q3VycmVudERvY3VtZW50U3RhdHVzKHJlcy5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gV2hlbiBsb2FkaW5nIGFsc28gdG8gZ2V0IGN1cnJlbnQgU3RhdHVzIEluZm9ybWF0aW9uIGlmIGFueS5cclxuICAgICAgICAgICAgICBjb25zdCBkb2NJbmZvUGFyYW0gPSB7XHJcbiAgICAgICAgICAgICAgICBXb3JrZmxvd01hc3RlckNvZGU6IHRoaXMuZGF0YS5Xb3JrZmxvd0NvZGUsXHJcbiAgICAgICAgICAgICAgICBEb2N1bWVudElkOiBkb2N1bWVudElkLFxyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cFBvc3QkKHRoaXMuZTF3ZnNfd2ZjX2dldERvY3VtZW50U3RhdHVzVVJMLCBkb2NJbmZvUGFyYW0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NlcnZpY2Uuc2V0Q3VycmVudERvY3VtZW50U3RhdHVzKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXMuRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLnNldEN1cnJlbnREb2N1bWVudFN0YXR1cyhyZXMuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrKGJ1dHRvbjogYW55KSB7XHJcbiAgICAvLyBHZXQgdGhlIGZvcm0gZ3JvdXBcclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZ3JvdXAuZm9ybSBhcyBGb3JtR3JvdXA7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gSlNPTi5wYXJzZShidXR0b24uQXR0cmlidXRlcyk7XHJcbiAgICBjb25zdCBidXR0b25UeXBlQ29kZSA9IGJ1dHRvbi5UeXBlQ29kZS50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgIC8vIFR5cGUgMSA9PSBmdW5jdGlvbmFsO1xyXG4gICAgLy8gVHlwZSAyID09IEdPVE87XHJcbiAgICB0aGlzLmdyb3VwLmlzVHJpZ2dlcmVkID0gYnV0dG9uLmRpc2FibGVUcmlnZ2VyICE9IHVuZGVmaW5lZCA/ICFidXR0b24uZGlzYWJsZVRyaWdnZXIgOiB0cnVlO1xyXG4gICAgXHJcbiAgICBjb25zdCBjbG9uZWRCdXR0b24gPSBaQ29tcG9uZW50SGVscGVyLmRlZXBDbG9uZShidXR0b24pO1xyXG4gICAgY29uc3QgY2xvbmVkQXR0cmlidXRlcyA9IFpDb21wb25lbnRIZWxwZXIuZGVlcENsb25lKGF0dHJpYnV0ZXMpO1xyXG4gICAgXHJcbiAgICB0aGlzLnVwZGF0ZUV2ZW50SWQoYnV0dG9uKTtcclxuXHJcbiAgICBzd2l0Y2ggKGJ1dHRvblR5cGVDb2RlKSB7XHJcbiAgICAgIGNhc2UgXCJGVU5DVElPTlwiOlxyXG4gICAgICAgIC8vIEhhbmRsZSBmdW5jdGlvbmFsIGJ1dHRvbnNcclxuICAgICAgICBpZiAoIXRoaXMuZ3JvdXAuaXNUcmlnZ2VyZWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIERpc2FibGUgdHJpZ2dlciB0aW1lclxyXG4gICAgICAgIGlmICghYXR0cmlidXRlc1snRGlzYWJsZVRyaWdnZXJUaW1lciddKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cFsnaXNUcmlnZ2VyZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRnVuY3Rpb25hbCBCdXR0b246IFwiLCBidXR0b24uTmFtZSk7XHJcblxyXG4gICAgICAgIC8vIENhbGwgdGhlIHdvcmtmbG93IHNlcnZpY2UgdG8gaGFuZGxlIHRoZSBmdW5jdGlvbmFsIGJ1dHRvbiBjbGljayBldmVudFxyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmZ1bmN0aW9uYWxCdXR0b25fT25DbGljayhjbG9uZWRBdHRyaWJ1dGVzLCB0aGlzLmdyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkdPVE9cIjpcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkdPVE8gQnV0dG9uOiBcIiwgYnV0dG9uLk5hbWUpO1xyXG4gICAgICAgIC8vIENhbGwgdGhlIHdvcmtmbG93IHNlcnZpY2UgdG8gaGFuZGxlIHRoZSBHT1RPIGJ1dHRvbiBjbGljayBldmVudFxyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmdvdG9CdXR0b25fT25jbGljayhjbG9uZWRCdXR0b24sIHRoaXMuZGF0YSwgY2xvbmVkQXR0cmlidXRlcywgdGhpcy5ncm91cCwgdGhpcy5pc0xvY2FsSG9zdEFQSSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAvLyBSZWxvYWQgdGhlIGJ1dHRvblxyXG4gICAgICAgICAgdGhpcy5sb2FkQnV0dG9uKFRyaWdnZXJGcm9tVHlwZS5nb1RvQnV0dG9uKTtcclxuXHJcbiAgICAgICAgICAvLyBSZXNldCB0cmlnZ2VyIHN0YXR1c1xyXG4gICAgICAgICAgdGhpcy5ncm91cC5pc1RyaWdnZXJlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgLy8gVHJpZ2dlciBlbWFpbCBzZW5kaW5nXHJcbiAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLnRyaWdnZXJTZW5kRW1haWwodGhpcy5ncm91cCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIEJ1dHRvbiBUeXBlOiAke2J1dHRvbi5OYW1lfWApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVFdmVudElkKGJ1dHRvbjogYW55KSB7XHJcbiAgICBjb25zdCB1cGRhdGVCdXR0b25FdmVudElkID0gKGJ1dHRvbnM6IGFueVtdKSA9PiB7XHJcbiAgICAgIGJ1dHRvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5uYW1lID09PSBidXR0b24uTmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgZXZlbnRJZCA9IFpDb21wb25lbnRIZWxwZXIuZ2VuZXJhdGVUaW1lU3RhbXBJZCgpO1xyXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoaXRlbS5maWVsZEF0dHJpYnV0ZS5BdHRyaWJ1dGVzKTtcclxuICBcclxuICAgICAgICAgIGl0ZW0uZmllbGRBdHRyaWJ1dGUuZXZlbnRJZCA9IGV2ZW50SWQ7XHJcbiAgICAgICAgICBhdHRyaWJ1dGVzLmV2ZW50SWQgPSBldmVudElkO1xyXG4gIFxyXG4gICAgICAgICAgaXRlbS5maWVsZEF0dHJpYnV0ZS5BdHRyaWJ1dGVzID0gSlNPTi5zdHJpbmdpZnkoYXR0cmlidXRlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgXHJcbiAgICB1cGRhdGVCdXR0b25FdmVudElkKHRoaXMubGVmdEJ0bnMpO1xyXG4gICAgdXBkYXRlQnV0dG9uRXZlbnRJZCh0aGlzLnJpZ2h0QnRucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGVuZFRvQXR0cmlidXRlVXNlZnVsRGV0YWlsKGJ1dHRvbjogYW55KSB7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gSlNPTi5wYXJzZShidXR0b24uQXR0cmlidXRlcyk7XHJcbiAgICBjb25zdCBldmVudElkID0gWkNvbXBvbmVudEhlbHBlci5nZW5lcmF0ZVRpbWVTdGFtcElkKCk7XHJcblxyXG4gICAgY29uc3QgbmV3QXR0cmlidXRlcyA9IHtcclxuICAgICAgLi4uYXR0cmlidXRlcyxcclxuICAgICAgekJ1dHRvbk5hbWU6IHRoaXMuZGF0YS5OYW1lLFxyXG4gICAgICBUeXBlQ29kZTogYnV0dG9uLlR5cGVDb2RlLFxyXG4gICAgICBXb3JrZmxvd0NvZGU6IHRoaXMuZGF0YS5Xb3JrZmxvd0NvZGUsXHJcbiAgICAgIGV2ZW50SWQ6IGV2ZW50SWRcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbmV3QnV0dG9uID0ge1xyXG4gICAgICAuLi5idXR0b24sXHJcbiAgICAgIEF0dHJpYnV0ZXM6IEpTT04uc3RyaW5naWZ5KG5ld0F0dHJpYnV0ZXMpLFxyXG4gICAgICBkaXNhYmxlVHJpZ2dlcjogdGhpcy5pc0J1dHRvbkRpc2FibGVUcmlnZ2VyKHRoaXMuZGF0YSwgYnV0dG9uKSxcclxuICAgICAgZXZlbnRJZDogZXZlbnRJZFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbmV3QnV0dG9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0J1dHRvbkRpc2FibGVUcmlnZ2VyKGRhdGE6IFpGaWVsZCwgYnV0dG9uOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBidXR0b24uRGlzYWJsZVRyaWdnZXIgIT0gdW5kZWZpbmVkID8gYnV0dG9uLkRpc2FibGVUcmlnZ2VyIDogKGRhdGEuRGlzYWJsZVRyaWdnZXIgIT0gdW5kZWZpbmVkID8gZGF0YS5EaXNhYmxlVHJpZ2dlciA6IGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVHb3RvQnV0dG9uKCkge1xyXG4gICAgY29uc3QgaW5kZXhUb0RlbGV0ZSA9IHRoaXMubGVmdEJ0bnMuZmluZEluZGV4KG9iaiA9PiBvYmouZmllbGRBdHRyaWJ1dGUuVHlwZUNvZGUgPT09IFwiR09UT1wiKTtcclxuICAgIGlmIChpbmRleFRvRGVsZXRlICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmxlZnRCdG5zLnNwbGljZShpbmRleFRvRGVsZXRlLCAxKTtcclxuICAgIH1cclxuICB9IFxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJlMXRhZy1zdHlsZVwiXHJcbiAgKm5nSWY9XCIhZ3JvdXAuaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKSAmJiBpdGVtcy5sZW5ndGggPiAwXCJcclxuICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJpb24tbWFyZ2luLXZlcnRpY2FsIGUxdGFnLXN0eWxlMVwiICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKSAmJiBpdGVtcy5sZW5ndGggPiAxICYmIEZpcnN0WmJ0biA9PT0gZmFsc2VcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDxrZW5kby1kcm9wZG93bmJ1dHRvbiBbZGF0YV09XCJpdGVtc1wiIHNpemU9XCJsYXJnZVwiIFtsb29rXT1cIidvdXRsaW5lJ1wiIGNsYXNzPVwiaW9uLWFjdGl2YXRhYmxlIHJpcHBsZS1wYXJlbnQgZTF0YWctc3R5bGUyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+XHJcbiAgICAgIEFjdGlvbnNcclxuICAgICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XHJcbiAgICA8L2tlbmRvLWRyb3Bkb3duYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgfHwgaXRlbXMubGVuZ3RoID09PSAxXCIgW25nQ2xhc3NdPVwiZGF0YS5EaXZDbGFzc1wiIGNsYXNzPVwiYnRuLWNvbnRhaW5lciBlMXRhZy1zdHlsZTNcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTNcIj5cclxuICAgIDwhLS0gPGJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiIChjbGljayk9XCJidXR0b25DbGljayhpdGVtLmZpZWxkQXR0cmlidXRlKVwiXHJcbiAgICAgICAgICAgIGtlbmRvQnV0dG9uIFt0b2dnbGFibGVdPVwidHJ1ZVwiIFtpY29uXT1cIml0ZW0uaWNvblwiIFtoaWRkZW5dPVwiIWlzQnRuVmlzaWJsZShpdGVtLnZpc2libGUpXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIj5cclxuICAgICAge3tpdGVtLnRleHR9fVxyXG4gICAgPC9idXR0b24+IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJ0bi1sZWZ0IGUxdGFnLXN0eWxlNFwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiBbZmlsbF09XCJpdGVtLmZpbGxcIiBbc2l6ZV09XCJpdGVtLnNpemVcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiIHN0cm9uZz1cInRydWVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsZWZ0QnRuczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiIChjbGljayk9XCJidXR0b25DbGljayhpdGVtLmZpZWxkQXR0cmlidXRlKVwiIFtoaWRkZW5dPVwiIWlzQnRuVmlzaWJsZShpdGVtLnZpc2libGUpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXAuaXNUcmlnZ2VyZWRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiPlxyXG4gICAgICAgIDxmYS1pY29uIGNsYXNzPVwiYnRuLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtpY29uXT1cImdldEZvbnRBd2Vzb21lKGl0ZW0uaWNvbiwgZm9udEF3ZVNvbWVTZXJ2aWNlKVwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udGV4dCAmJiBpdGVtLnNob3dMYWJlbFwiIFtjbGFzcy5idG4tbGFiZWxdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJpb24tdGV4dC1jYXBpdGFsaXplXCI+e3tpdGVtLnRleHR9fTwvc3Bhbj5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYnRuLXJpZ2h0IGUxdGFnLXN0eWxlNlwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNlwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiBbZmlsbF09XCJpdGVtLmZpbGxcIiBbc2l6ZV09XCJpdGVtLnNpemVcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiIHN0cm9uZz1cInRydWVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByaWdodEJ0bnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NcIiAoY2xpY2spPVwiYnV0dG9uQ2xpY2soaXRlbS5maWVsZEF0dHJpYnV0ZSlcIiBbaGlkZGVuXT1cIiFpc0J0blZpc2libGUoaXRlbS52aXNpYmxlKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmlzVHJpZ2dlcmVkXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU3XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTdcIj5cclxuICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImJ0bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIiBbaWNvbl09XCJnZXRGb250QXdlc29tZShpdGVtLmljb24sIGZvbnRBd2VTb21lU2VydmljZSlcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnRleHQgJiYgaXRlbS5zaG93TGFiZWxcIiBbY2xhc3MuYnRuLWxhYmVsXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPnt7aXRlbS50ZXh0fX08L3NwYW4+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|