mmhglobal-dynamicform 1.3.13 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/animations/component-animations.mjs +12 -0
- package/esm2020/lib/components/buttonfieldbase.component.mjs +62 -0
- package/esm2020/lib/components/containerfieldbase.component.mjs +42 -0
- package/esm2020/lib/components/datalistingfieldbase.component.mjs +138 -0
- package/esm2020/lib/components/fieldbase.component.mjs +90 -0
- package/esm2020/lib/components/inputfieldbase.component.mjs +78 -0
- package/esm2020/lib/directives/scrollbar.theme.directive.mjs +13 -11
- package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +69 -0
- package/esm2020/lib/input-error-message/input-error-message.component.mjs +33 -0
- package/esm2020/lib/kcard/kcard.component.mjs +84 -0
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +53 -12
- package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +18 -0
- package/esm2020/lib/services/component-error-handler.service.mjs +84 -0
- package/esm2020/lib/services/main.service.mjs +173 -73
- package/esm2020/lib/services/zcomponent.debug.service.mjs +17 -8
- package/esm2020/lib/services/zcomponent.service.mjs +133 -9
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +15 -23
- package/esm2020/lib/uicontainer/uicontainer.component.mjs +2 -2
- package/esm2020/lib/uicontent/uicontent.component.mjs +21 -9
- package/esm2020/lib/uiheader/uiheader.component.mjs +61 -28
- package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +3 -3
- package/esm2020/lib/uipage/uipage.component.mjs +41 -26
- package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +2 -2
- package/esm2020/lib/zbullet/zbullet.component.mjs +3 -2
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +45 -91
- package/esm2020/lib/zcard/zcard.component.mjs +13 -60
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +14 -159
- package/esm2020/lib/zchip/zchip.component.mjs +34 -64
- package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +4 -3
- package/esm2020/lib/zdaterange/zdaterange.component.mjs +3 -3
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +22 -74
- package/esm2020/lib/zdiv/zdiv.component.mjs +63 -40
- package/esm2020/lib/zdiv/zdiv.pipe.mjs +2 -2
- package/esm2020/lib/zform/zform.component.mjs +9 -7
- package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +5 -3
- package/esm2020/lib/zgauge/zgauge.component.mjs +34 -70
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +32 -30
- package/esm2020/lib/zgrid/zgrid.component.mjs +246 -135
- package/esm2020/lib/zimg/zimg.component.mjs +44 -108
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +63 -0
- package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +120 -0
- package/esm2020/lib/zkcard/zkcard.component.mjs +2 -2
- package/esm2020/lib/zlabel/zlabel.component.mjs +18 -94
- package/esm2020/lib/zmfb/zmfb.component.mjs +70 -91
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +15 -11
- package/esm2020/lib/zmodal/zmodal.component.mjs +14 -10
- package/esm2020/lib/znumeric/znumeric.component.mjs +18 -94
- package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +35 -87
- package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +59 -0
- package/esm2020/lib/zreport/zreport.component.mjs +25 -27
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +39 -194
- package/esm2020/lib/ztab/ztab.component.mjs +17 -45
- package/esm2020/lib/ztab/ztab.pipe.mjs +6 -4
- package/esm2020/lib/ztext/ztext.component.mjs +20 -180
- package/esm2020/lib/ztextarea/ztextarea.component.mjs +23 -101
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -2
- package/esm2020/lib/ztree/ztree.component.mjs +25 -41
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +104 -143
- package/esm2020/lib/zudf/zudf.component.mjs +12 -8
- package/esm2020/lib/zupload/zupload.component.mjs +18 -39
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +45 -77
- package/esm2020/public-api.mjs +15 -2
- package/fesm2015/mmhglobal-dynamicform.mjs +4529 -4392
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +4496 -4367
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/animations/component-animations.d.ts +1 -0
- package/lib/components/buttonfieldbase.component.d.ts +18 -0
- package/lib/components/containerfieldbase.component.d.ts +19 -0
- package/lib/components/datalistingfieldbase.component.d.ts +30 -0
- package/lib/components/fieldbase.component.d.ts +30 -0
- package/lib/components/inputfieldbase.component.d.ts +19 -0
- package/lib/embed-components/input-field-addons/input-field-addons.component.d.ts +16 -0
- package/lib/input-error-message/input-error-message.component.d.ts +15 -0
- package/lib/kcard/kcard.component.d.ts +21 -0
- package/lib/mmhglobal-dynamicform.module.d.ts +40 -32
- package/lib/pipe/htmlSanitize.pipe.d.ts +10 -0
- package/lib/services/component-error-handler.service.d.ts +14 -0
- package/lib/services/main.service.d.ts +23 -5
- package/lib/services/zcomponent.debug.service.d.ts +4 -1
- package/lib/services/zcomponent.service.d.ts +20 -4
- package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +4 -3
- package/lib/uicontent/uicontent.component.d.ts +6 -2
- package/lib/uiheader/uiheader.component.d.ts +13 -9
- package/lib/zbuttons/zbuttons.component.d.ts +11 -20
- package/lib/zcard/zcard.component.d.ts +6 -20
- package/lib/zcheckbox/zcheckbox.component.d.ts +6 -36
- package/lib/zchip/zchip.component.d.ts +7 -16
- package/lib/zdatetime/zdatetime.component.d.ts +6 -14
- package/lib/zdiv/zdiv.component.d.ts +11 -18
- package/lib/zformcontrol/zformcontrol.component.d.ts +2 -1
- package/lib/zgauge/zgauge.component.d.ts +11 -14
- package/lib/zgrid/zgrid.binding.directive.d.ts +4 -2
- package/lib/zgrid/zgrid.component.d.ts +26 -27
- package/lib/zimg/zimg.component.d.ts +12 -31
- package/lib/zinput-container/zinput-container.component.d.ts +26 -0
- package/lib/zinput-container/zinput-container.pipe.d.ts +20 -0
- package/lib/zlabel/zlabel.component.d.ts +6 -25
- package/lib/zmfb/zmfb.component.d.ts +12 -20
- package/lib/zmodal/zmodal-mobile.component.d.ts +4 -1
- package/lib/zmodal/zmodal.component.d.ts +4 -1
- package/lib/znumeric/znumeric.component.d.ts +7 -29
- package/lib/zpostselectinput/zpostselectinput.component.d.ts +9 -19
- package/lib/zprogressbar/zprogressbar.component.d.ts +28 -0
- package/lib/zreport/zreport.component.d.ts +8 -11
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +10 -35
- package/lib/ztab/ztab.component.d.ts +6 -19
- package/lib/ztext/ztext.component.d.ts +7 -35
- package/lib/ztextarea/ztextarea.component.d.ts +9 -27
- package/lib/ztree/ztree.component.d.ts +6 -12
- package/lib/ztreelist/ztreelist.component.d.ts +17 -27
- package/lib/zupload/zupload.component.d.ts +6 -13
- package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +6 -20
- package/package.json +1 -1
- package/public-api.d.ts +14 -1
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
/********** Angular **********/
|
|
2
|
-
import { Component,
|
|
3
|
-
import { Validators } from "@angular/forms";
|
|
2
|
+
import { Component, ViewChild } from "@angular/core";
|
|
4
3
|
/********** Plugin **********/
|
|
5
4
|
import { of } from "rxjs";
|
|
6
5
|
import { delay } from 'rxjs/operators';
|
|
7
6
|
/********** Component & Service **********/
|
|
8
|
-
import { ZComponentHelper, ZSelectPostApiParams
|
|
7
|
+
import { ZComponentHelper, ZSelectPostApiParams } from "mmhglobal-zcore";
|
|
8
|
+
import { InputFieldBase } from "../components/inputfieldbase.component";
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "mmhglobal-zcore";
|
|
11
|
-
import * as i2 from "
|
|
11
|
+
import * as i2 from "../services/zcomponent.service";
|
|
12
12
|
import * as i3 from "ionic-selectable";
|
|
13
13
|
import * as i4 from "@fortawesome/angular-fontawesome";
|
|
14
|
-
import * as i5 from "
|
|
15
|
-
import * as i6 from "
|
|
16
|
-
import * as i7 from "@angular
|
|
14
|
+
import * as i5 from "@ionic/angular";
|
|
15
|
+
import * as i6 from "../uivalidationmessage/uivalidationmessage.component";
|
|
16
|
+
import * as i7 from "@progress/kendo-angular-dropdowns";
|
|
17
17
|
import * as i8 from "@angular/forms";
|
|
18
|
-
import * as i9 from "@
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
import * as i9 from "@angular/common";
|
|
19
|
+
import * as i10 from "@progress/kendo-angular-inputs";
|
|
20
|
+
export class ZpostselectinputComponent extends InputFieldBase {
|
|
21
|
+
constructor(resourceApiService, webApiService, cacheService, compService) {
|
|
22
|
+
super(compService);
|
|
21
23
|
this.resourceApiService = resourceApiService;
|
|
22
24
|
this.webApiService = webApiService;
|
|
23
25
|
this.cacheService = cacheService;
|
|
@@ -32,28 +34,11 @@ export class ZpostselectinputComponent {
|
|
|
32
34
|
this.itemTemplate = "{{item[itemTextField]}}";
|
|
33
35
|
this.infiniteScrollPageNo = 0;
|
|
34
36
|
this.isLoading = true;
|
|
35
|
-
this.componentProperties = new ZComponentProperties();
|
|
36
37
|
this.dataInfo = {
|
|
37
38
|
"itemsResourceURL": "",
|
|
38
39
|
"optionFilters": "",
|
|
39
40
|
"totalCount": 0
|
|
40
41
|
};
|
|
41
|
-
this.setEnable = (status) => {
|
|
42
|
-
const fc = this.group.form.controls[this.data.Value];
|
|
43
|
-
status ? fc.enable() : fc.disable();
|
|
44
|
-
this.componentProperties.isReadOnly = !status;
|
|
45
|
-
};
|
|
46
|
-
this.setVisible = (status) => {
|
|
47
|
-
this.componentProperties.isVisible = status;
|
|
48
|
-
this.data.Visible = status;
|
|
49
|
-
};
|
|
50
|
-
this.setRequire = (status) => {
|
|
51
|
-
this.componentProperties.isRequired = status;
|
|
52
|
-
ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
|
|
53
|
-
if (ZComponentHelper.hasCCField(this.data.Type)) {
|
|
54
|
-
ZComponentHelper.changeValidator(status, this.group, this.data.CCValue, this.componentProperties, Validators.required);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
42
|
}
|
|
58
43
|
ngOnDestroy() {
|
|
59
44
|
// if (this.subscription) {
|
|
@@ -65,8 +50,7 @@ export class ZpostselectinputComponent {
|
|
|
65
50
|
}
|
|
66
51
|
ngOnInit() {
|
|
67
52
|
this.isLoading = true;
|
|
68
|
-
|
|
69
|
-
ZComponentHelper.registerComponent(this);
|
|
53
|
+
super.setupInnerField();
|
|
70
54
|
ZComponentHelper.setSelectMultipleTextValue(this.data.CCSelectOptions, this);
|
|
71
55
|
const fieldValue = this.data.CCValue;
|
|
72
56
|
let getzDataForzModel$;
|
|
@@ -135,7 +119,23 @@ export class ZpostselectinputComponent {
|
|
|
135
119
|
}
|
|
136
120
|
console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);
|
|
137
121
|
}
|
|
138
|
-
|
|
122
|
+
onChange_desktop(event) {
|
|
123
|
+
super.onChange(null, event);
|
|
124
|
+
this.handleInfiniteScrollOnChange(event);
|
|
125
|
+
}
|
|
126
|
+
onChange_mobile(event) {
|
|
127
|
+
super.onChange(event);
|
|
128
|
+
const fc = this.form.controls[this.data.CCValue];
|
|
129
|
+
this.handleClose();
|
|
130
|
+
if (super.getIsRequiredValue() && (event.value === null || event.value.length === 0)) {
|
|
131
|
+
fc.setErrors({ required: true });
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
fc.setErrors(null);
|
|
135
|
+
}
|
|
136
|
+
this.handleInfiniteScrollOnChange(event.value);
|
|
137
|
+
}
|
|
138
|
+
handleInfiniteScrollOnChange(value) {
|
|
139
139
|
if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {
|
|
140
140
|
const textField = this.itemTextField.toString();
|
|
141
141
|
const valueField = this.itemValueField.toString();
|
|
@@ -151,31 +151,6 @@ export class ZpostselectinputComponent {
|
|
|
151
151
|
this.group[this.itemDataField.slice(6)] = zdataModel;
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
this.group.subject.next({
|
|
155
|
-
type: "onChange",
|
|
156
|
-
target: this.data.CCOnChange,
|
|
157
|
-
event,
|
|
158
|
-
data: { value, field: this.data }
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
onValueChange(value) {
|
|
162
|
-
// console.log("zselectmultiple (onValueChange): ", value);
|
|
163
|
-
ZComponentHelper.setModelValue(this.data.CCValue, value, this.group);
|
|
164
|
-
this.onChangeEvent(value);
|
|
165
|
-
}
|
|
166
|
-
onChange(event) {
|
|
167
|
-
console.log("zselectmultiple (onChange): ", event.value);
|
|
168
|
-
ZComponentHelper.setModelValue(this.data.CCValue, event.value, this.group);
|
|
169
|
-
const fc = this.form.controls[this.data.CCValue];
|
|
170
|
-
this.handleClose();
|
|
171
|
-
if (this.data.CCIsRequired &&
|
|
172
|
-
(event.value === null || event.value.length === 0)) {
|
|
173
|
-
fc.setErrors({ required: true });
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
fc.setErrors(null);
|
|
177
|
-
}
|
|
178
|
-
this.onChangeEvent(event.value);
|
|
179
154
|
}
|
|
180
155
|
clearItems() {
|
|
181
156
|
this.selectComponent.clear();
|
|
@@ -303,27 +278,6 @@ export class ZpostselectinputComponent {
|
|
|
303
278
|
return Object.values(item).join(", ");
|
|
304
279
|
}
|
|
305
280
|
}
|
|
306
|
-
getReadOnlyValue() {
|
|
307
|
-
const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);
|
|
308
|
-
if (typeof readOnlyValue === 'function') {
|
|
309
|
-
const callFunc = readOnlyValue.bind(this.group.ctrlScope);
|
|
310
|
-
return callFunc(this.group);
|
|
311
|
-
}
|
|
312
|
-
return readOnlyValue;
|
|
313
|
-
}
|
|
314
|
-
getGroupValue(value, group) {
|
|
315
|
-
return ZComponentHelper.getGroupValue(value, group);
|
|
316
|
-
}
|
|
317
|
-
isMobileScreen() {
|
|
318
|
-
const v = ZComponentHelper.isMobileScreen();
|
|
319
|
-
return v;
|
|
320
|
-
}
|
|
321
|
-
getIon_InvalidClass(form, data) {
|
|
322
|
-
if (!form) {
|
|
323
|
-
//debugger;
|
|
324
|
-
}
|
|
325
|
-
return ZComponentHelper.getIon_InvalidClass(form, data);
|
|
326
|
-
}
|
|
327
281
|
onAddItem(event) {
|
|
328
282
|
const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddItem);
|
|
329
283
|
if (typeof f === 'function') {
|
|
@@ -334,19 +288,13 @@ export class ZpostselectinputComponent {
|
|
|
334
288
|
return;
|
|
335
289
|
}
|
|
336
290
|
}
|
|
337
|
-
ZpostselectinputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZpostselectinputComponent, deps: [{ token: i1.ResourceApiService }, { token: i1.WebApiService }, { token: i1.CacheService }], target: i0.ɵɵFactoryTarget.Component });
|
|
338
|
-
ZpostselectinputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZpostselectinputComponent, selector: "app-zpostselectinput", inputs: { data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true, static: true }], ngImport: i0, template: "<ion-item [ngClass]=\"getIon_InvalidClass(form, data)\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && isMobileScreen()\">\r\n <ion-label *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\" *ngIf=\"!isLoading\">\r\n <span style=\"flex-basis: 35%;\">\r\n <ionic-selectable #selectComponent item-content\r\n [id]=\"data.CCValue\" headerColor=\"primary\" clearButtonText=\"Clear\"\r\n [canClear]=\"true\" searchFailText=\"Nothing found :(\" [canSearch]=\"!data['disable-search']\" \r\n [placeholder]=\"data.CCPlaceHolder\" [(ngModel)]=\"group.zModel[data.CCValue]\" \r\n [shouldFocusSearchbar]=\"!data['disable-search']\" [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\" [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\" [items]=\"getItemsData()\"\r\n [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\" [shouldStoreItemValue]=\"true\"\r\n [canAddItem]=\"!!data.OnAddItem\" (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange($event)\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\" class=\"isItemSelected\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\" size=\"sm\" [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableCloseButtonTemplate>\r\n <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times-circle'\" size=\"md\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n </ionic-selectable>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <ion-input [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" [type]=\"'text'\" [formControlName]=\"data.Value\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"'text'\"></ion-input>\r\n </span>\r\n <app-uivalidationmessage style=\"flex-basis: 5%;\" [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n </div>\r\n</ion-item>\r\n\r\n\r\n<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && !isMobileScreen()\" [ngClass]=\"getIon_InvalidClass(form, data)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n <span style=\"flex-basis: 35%;\">\r\n <kendo-combobox [id]=\"data.CCValue\"\r\n [data]=\"getItemsData()\" [valueField]=\"itemValueField\" [textField]=\"itemTextField\"\r\n [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.CCPlaceHolder\"\r\n (valueChange)=\"onValueChange($event)\"\r\n [filterable]=\"!!data.HasInfiniteScroll\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n style=\"margin-top: 7px; width: 100%;\"\r\n [loading]=\"isLoading\">\r\n </kendo-combobox>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <input kendoTextBox [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" type=\"text\"\r\n [formControlName]=\"data.Value\" \r\n style=\"margin: 7px 0 0 0; width: 100%\"\r\n />\r\n </span>\r\n <app-uivalidationmessage style=\"flex-basis: 5%;\"\r\n [group]=\"group\" [data]=\"data\" [form]=\"form\">\r\n </app-uivalidationmessage>\r\n </div>\r\n</ion-item>", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}\n"], components: [{ type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i3.IonicSelectableComponent, selector: "ionic-selectable", inputs: ["items", "modalCssClass", "modalEnterAnimation", "modalLeaveAnimation", "isConfirmButtonEnabled", "itemValueField", "itemTextField", "groupValueField", "groupTextField", "canSearch", "hasInfiniteScroll", "hasVirtualScroll", "virtualScrollApproxItemHeight", "searchPlaceholder", "placeholder", "searchFailText", "clearButtonText", "addButtonText", "confirmButtonText", "closeButtonText", "shouldFocusSearchbar", "headerColor", "groupColor", "closeButtonSlot", "itemIconSlot", "searchDebounce", "disabledItems", "shouldStoreItemValue", "canSaveItem", "canDeleteItem", "virtualScrollHeaderFn", "isEnabled", "shouldBackdropClose", "hasConfirmButton", "isOnSearchEnabled", "canClear", "isMultiple", "canAddItem"], outputs: ["itemsChange", "onChange", "onSearch", "onSearchFail", "onSearchSuccess", "onInfiniteScroll", "onOpen", "onClose", "onSelect", "onClear", "onSaveItem", "onDeleteItem", "onAddItem"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i5.UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: ["group", "data", "form"] }, { type: i6.ComboBoxComponent, selector: "kendo-combobox", inputs: ["focusableId", "allowCustom", "valueNormalizer", "placeholder", "listHeight", "suggest", "clearButton", "disabled", "readonly", "tabindex", "filterable", "data", "value", "valuePrimitive", "popupSettings", "itemDisabled", "tabIndex", "virtual", "size", "rounded", "fillMode", "loading", "textField", "valueField", "iconClass"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoComboBox"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.IonicSelectableItemIconTemplateDirective, selector: "[ionicSelectableItemIconTemplate]" }, { type: i3.IonicSelectableCloseButtonTemplateDirective, selector: "[ionicSelectableCloseButtonTemplate]" }, { type: i3.IonicSelectableTitleTemplateDirective, selector: "[ionicSelectableTitleTemplate]" }, { type: i3.IonicSelectableItemTemplateDirective, selector: "[ionicSelectableItemTemplate]" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i9.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] });
|
|
291
|
+
ZpostselectinputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZpostselectinputComponent, deps: [{ token: i1.ResourceApiService }, { token: i1.WebApiService }, { token: i1.CacheService }, { token: i2.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
292
|
+
ZpostselectinputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZpostselectinputComponent, selector: "app-zpostselectinput", viewQueries: [{ propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zpostselectinput-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div *ngIf=\"isMobileScreen() && !isLoading\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span style=\"flex-basis: 35%;\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <ionic-selectable #selectComponent item-content [id]=\"data.CCValue\" headerColor=\"primary\" clearButtonText=\"Clear\"\r\n [canClear]=\"true\" searchFailText=\"Nothing found :(\" [canSearch]=\"!data['disable-search']\"\r\n [placeholder]=\"data.CCPlaceHolder\" [(ngModel)]=\"group.zModel[data.CCValue]\"\r\n [shouldFocusSearchbar]=\"!data['disable-search']\" [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\" [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n [shouldStoreItemValue]=\"true\" [canAddItem]=\"!!data.OnAddItem\" (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style4\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n size=\"sm\" [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style4\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableCloseButtonTemplate>\r\n <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times-circle'\" size=\"md\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\r\n <ion-text\r\n *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n </ionic-selectable>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <ion-input [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" [type]=\"'text'\" [formControlName]=\"data.Value\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"'text'\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></ion-input>\r\n </span>\r\n <app-uivalidationmessage style=\"flex-basis: 5%;\" [group]=\"group\" [data]=\"data\" [form]=\"form\">\r\n </app-uivalidationmessage>\r\n </div>\r\n <div *ngIf=\"!isMobileScreen()\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span style=\"flex-basis: 35%;\" [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n <kendo-combobox [id]=\"data.CCValue\" [data]=\"getItemsData()\" [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\" [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.CCPlaceHolder\" (valueChange)=\"onChange_desktop($event)\" [filterable]=\"!!data.HasInfiniteScroll\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (filterChange)=\"handleFilter($event)\" (open)=\"handleOpen()\" (close)=\"handleClose()\" (blur)=\"handleBlur()\"\r\n class=\"input-field e1tag-style3\" [loading]=\"isLoading\" [style]=\"componentProperties.style.style3\">\r\n </kendo-combobox>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <input kendoTextBox [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" type=\"text\" [formControlName]=\"data.Value\"\r\n style=\"margin: 7px 0 0 0; width: 100%\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"/>\r\n </span>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-combobox:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}\n"], components: [{ type: i3.IonicSelectableComponent, selector: "ionic-selectable", inputs: ["items", "modalCssClass", "modalEnterAnimation", "modalLeaveAnimation", "isConfirmButtonEnabled", "itemValueField", "itemTextField", "groupValueField", "groupTextField", "canSearch", "hasInfiniteScroll", "hasVirtualScroll", "virtualScrollApproxItemHeight", "searchPlaceholder", "placeholder", "searchFailText", "clearButtonText", "addButtonText", "confirmButtonText", "closeButtonText", "shouldFocusSearchbar", "headerColor", "groupColor", "closeButtonSlot", "itemIconSlot", "searchDebounce", "disabledItems", "shouldStoreItemValue", "canSaveItem", "canDeleteItem", "virtualScrollHeaderFn", "isEnabled", "shouldBackdropClose", "hasConfirmButton", "isOnSearchEnabled", "canClear", "isMultiple", "canAddItem"], outputs: ["itemsChange", "onChange", "onSearch", "onSearchFail", "onSearchSuccess", "onInfiniteScroll", "onOpen", "onClose", "onSelect", "onClear", "onSaveItem", "onDeleteItem", "onAddItem"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i5.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i6.UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: ["group", "data", "form"] }, { type: i7.ComboBoxComponent, selector: "kendo-combobox", inputs: ["focusableId", "allowCustom", "valueNormalizer", "placeholder", "listHeight", "suggest", "clearButton", "disabled", "readonly", "tabindex", "filterable", "data", "value", "valuePrimitive", "popupSettings", "itemDisabled", "tabIndex", "virtual", "size", "rounded", "fillMode", "loading", "textField", "valueField", "iconClass"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoComboBox"] }], directives: [{ type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.IonicSelectableItemIconTemplateDirective, selector: "[ionicSelectableItemIconTemplate]" }, { type: i3.IonicSelectableCloseButtonTemplateDirective, selector: "[ionicSelectableCloseButtonTemplate]" }, { type: i3.IonicSelectableTitleTemplateDirective, selector: "[ionicSelectableTitleTemplate]" }, { type: i3.IonicSelectableItemTemplateDirective, selector: "[ionicSelectableItemTemplate]" }, { type: i5.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] });
|
|
339
293
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZpostselectinputComponent, decorators: [{
|
|
340
294
|
type: Component,
|
|
341
|
-
args: [{ selector: "app-zpostselectinput", template: "<
|
|
342
|
-
}], ctorParameters: function () { return [{ type: i1.ResourceApiService }, { type: i1.WebApiService }, { type: i1.CacheService }]; }, propDecorators: {
|
|
343
|
-
type: Input
|
|
344
|
-
}], group: [{
|
|
345
|
-
type: Input
|
|
346
|
-
}], form: [{
|
|
347
|
-
type: Input
|
|
348
|
-
}], selectComponent: [{
|
|
295
|
+
args: [{ selector: "app-zpostselectinput", template: "<div [formGroup]=\"form\" class=\"zpostselectinput-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div *ngIf=\"isMobileScreen() && !isLoading\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span style=\"flex-basis: 35%;\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <ionic-selectable #selectComponent item-content [id]=\"data.CCValue\" headerColor=\"primary\" clearButtonText=\"Clear\"\r\n [canClear]=\"true\" searchFailText=\"Nothing found :(\" [canSearch]=\"!data['disable-search']\"\r\n [placeholder]=\"data.CCPlaceHolder\" [(ngModel)]=\"group.zModel[data.CCValue]\"\r\n [shouldFocusSearchbar]=\"!data['disable-search']\" [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\" [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n [shouldStoreItemValue]=\"true\" [canAddItem]=\"!!data.OnAddItem\" (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style4\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n size=\"sm\" [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style4\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableCloseButtonTemplate>\r\n <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times-circle'\" size=\"md\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\r\n <ion-text\r\n *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n </ionic-selectable>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <ion-input [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" [type]=\"'text'\" [formControlName]=\"data.Value\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"'text'\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></ion-input>\r\n </span>\r\n <app-uivalidationmessage style=\"flex-basis: 5%;\" [group]=\"group\" [data]=\"data\" [form]=\"form\">\r\n </app-uivalidationmessage>\r\n </div>\r\n <div *ngIf=\"!isMobileScreen()\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span style=\"flex-basis: 35%;\" [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n <kendo-combobox [id]=\"data.CCValue\" [data]=\"getItemsData()\" [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\" [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.CCPlaceHolder\" (valueChange)=\"onChange_desktop($event)\" [filterable]=\"!!data.HasInfiniteScroll\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (filterChange)=\"handleFilter($event)\" (open)=\"handleOpen()\" (close)=\"handleClose()\" (blur)=\"handleBlur()\"\r\n class=\"input-field e1tag-style3\" [loading]=\"isLoading\" [style]=\"componentProperties.style.style3\">\r\n </kendo-combobox>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <input kendoTextBox [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" type=\"text\" [formControlName]=\"data.Value\"\r\n style=\"margin: 7px 0 0 0; width: 100%\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"/>\r\n </span>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-combobox:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}\n"] }]
|
|
296
|
+
}], ctorParameters: function () { return [{ type: i1.ResourceApiService }, { type: i1.WebApiService }, { type: i1.CacheService }, { type: i2.ZComponentService }]; }, propDecorators: { selectComponent: [{
|
|
349
297
|
type: ViewChild,
|
|
350
298
|
args: ["selectComponent", { static: true }]
|
|
351
299
|
}] } });
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienBvc3RzZWxlY3RpbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cG9zdHNlbGVjdGlucHV0L3pwb3N0c2VsZWN0aW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenBvc3RzZWxlY3RpbnB1dC96cG9zdHNlbGVjdGlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt2RCw4QkFBOEI7QUFDOUIsT0FBTyxFQUE0QixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLDJDQUEyQztBQUMzQyxPQUFPLEVBRU8sZ0JBQWdCLEVBQ0csb0JBQW9CLEVBQ25DLG9CQUFvQixFQUNyQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7OztBQVF6QixNQUFNLE9BQU8seUJBQXlCO0lBMEJwQyxZQUNVLGtCQUFzQyxFQUN0QyxhQUE0QixFQUM1QixZQUEwQjtRQUYxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdkJwQyxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBRXZCLGtCQUFhLEdBQWUsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQiw4QkFBOEI7UUFDOUIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hC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QUFDO1FBQ3RELE9BQU87SUFDVCxDQUFDOzt1SEFoWVUseUJBQXlCOzJHQUF6Qix5QkFBeUIsc1BDMUJ0Qyxxc0tBOEVXOzRGRHBERSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usc0JBQXNCO2dLQUt2QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFTixlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50IH0gZnJvbSBcImlvbmljLXNlbGVjdGFibGVcIjtcclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgQ2FjaGVTZXJ2aWNlLCBSZXNvdXJjZUFwaVNlcnZpY2UsIFdlYkFwaVNlcnZpY2UsXHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LFxyXG4gIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zLCBaU2VsZWN0UG9zdEFwaVBhcmFtcyxcclxuICBaRmllbGQsIFpHcm91cCwgWkNvbXBvbmVudFByb3BlcnRpZXNcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpwb3N0c2VsZWN0aW5wdXRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pwb3N0c2VsZWN0aW5wdXQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venBvc3RzZWxlY3RpbnB1dC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWnBvc3RzZWxlY3RpbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdENvbXBvbmVudFwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHNlbGVjdENvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50O1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbW9kZWx6RGF0YTogQXJyYXk8YW55PjtcclxuICBpbmZpbml0ZXpEYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgaW5maW5pdGVTZWFyY2hUZXh0ID0gbnVsbDtcclxuICAvLyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICB0b2dnbGVTZWxlY3RhYmxlID0gdHJ1ZTtcclxuICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtVGV4dEZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1EYXRhRmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbVRlbXBsYXRlID0gXCJ7e2l0ZW1baXRlbVRleHRGaWVsZF19fVwiO1xyXG4gIGluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuICBwcml2YXRlIGRlYm91bmNlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgZGF0YUluZm86IHt9ID0ge1xyXG4gICAgXCJpdGVtc1Jlc291cmNlVVJMXCI6IFwiXCIsXHJcbiAgICBcIm9wdGlvbkZpbHRlcnNcIjogXCJcIixcclxuICAgIFwidG90YWxDb3VudFwiOiAwXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAvLyAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZVN1Yikge1xyXG4gICAgICB0aGlzLmRlYm91bmNlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG5cclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0U2VsZWN0TXVsdGlwbGVUZXh0VmFsdWUodGhpcy5kYXRhLkNDU2VsZWN0T3B0aW9ucywgdGhpcyk7XHJcblxyXG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZGF0YS5DQ1ZhbHVlO1xyXG4gICAgbGV0IGdldHpEYXRhRm9yek1vZGVsJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCAmJiB0aGlzLmRhdGEuSW5maW5pdGVTY3JvbGwkXHJcbiAgICAgICYmIHRoaXMuZ3JvdXAuek1vZGVsICYmIHRoaXMuZ3JvdXAuek1vZGVsW2ZpZWxkVmFsdWVdKSB7XHJcbiAgICAgIGNvbnN0IHJlY29yZElkID0gdGhpcy5ncm91cC56TW9kZWxbZmllbGRWYWx1ZV07XHJcbiAgICAgIGdldHpEYXRhRm9yek1vZGVsJCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0SW5maW5pdGVEYXRhKG51bGwsICcnLCB0aGlzLCByZWNvcmRJZC50b1N0cmluZygpKTtcclxuICAgICAgaWYgKGdldHpEYXRhRm9yek1vZGVsJCkge1xyXG4gICAgICAgIGdldHpEYXRhRm9yek1vZGVsJC5zdWJzY3JpYmUoKHpkYXRhKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEuTmFtZSwgJyAtIGluaXRpYWwgekRhdGEgbG9hZDogJywgemRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXIobnVsbCwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuQ0NPcHRpb25SZXNvdXJjZVVSTCkge1xyXG4gICAgICAgIHRoaXMubGF6eUxvYWREYXRhT3B0aW9ucygpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBsYXp5TG9hZERhdGFPcHRpb25zKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCByZXNvdXJjZVVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcclxuICAgICAgdGhpcy5kYXRhLkNDT3B0aW9uUmVzb3VyY2VVUkxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyUGFyYW0gPSBuZXcgWlNlbGVjdFBvc3RBcGlQYXJhbXMoKTtcclxuICAgIGZpbHRlclBhcmFtLnNvcnRzID0gdGhpcy5kYXRhLkNDT3B0aW9uU29ydDtcclxuICAgIGZpbHRlclBhcmFtLmNvbHVtbnMgPSB0aGlzLmRhdGEuQ0NPcHRpb25Db2x1bW5zO1xyXG4gICAgZmlsdGVyUGFyYW0uZmlsdGVycyA9IHRoaXMuZGF0YS5DQ09wdGlvbkZpbHRlcjtcclxuXHJcbiAgICByZXR1cm4gWkNvbXBvbmVudEhlbHBlci5nZXREYXRhT3B0aW9ucyhcclxuICAgICAgdGhpcy5kYXRhLkNDT3B0aW9uTmFtZSxcclxuICAgICAgZmlsdGVyUGFyYW0sXHJcbiAgICAgIHRoaXMuZ3JvdXAsXHJcbiAgICAgIHJlc291cmNlVXJsLFxyXG4gICAgICB0aGlzLmNhY2hlU2VydmljZSxcclxuICAgICAgdGhpcy53ZWJBcGlTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmRhdGFbJ0Rpc2FibGVDYWNoZSddXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEl0ZW1zRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5maW5pdGV6RGF0YTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdGlvbk5hbWUgPSB0aGlzLmRhdGEuQ0NPcHRpb25OYW1lIHx8IHRoaXMuaXRlbURhdGFGaWVsZCB8fCAnZ3JvdXAuekRhdGEuJyArIHRoaXMuZGF0YS5OYW1lO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhLkNDU2VsZWN0T3B0aW9ucykgJiYgIXRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildKSB7XHJcbiAgICAgIC8vIHJldHVybiBzZWxlY3Rpb25PcHRpb25zO1xyXG4gICAgICAvLyByZXR1cm4gdGhpcy5kYXRhLlNlbGVjdE9wdGlvbnM7XHJcbiAgICAgIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildID0gdGhpcy5kYXRhLkNDU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5pdGVtRGF0YUZpZWxkID0gb3B0aW9uTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCd6RGF0YS4nKSkge1xyXG4gICAgICAvLyB0aGlzLml0ZW1zID0gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDYpXTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSg2KV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCdncm91cC56RGF0YS4nKSkge1xyXG4gICAgICAvLyB0aGlzLml0ZW1zID0gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV07XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLmdyb3VwW29wdGlvbk5hbWUuc2xpY2UoNildO1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cFtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lKSB7XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLmdyb3VwW29wdGlvbk5hbWVdO1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cFtvcHRpb25OYW1lXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUud2Fybih0aGlzLmRhdGEuTmFtZSwgJyAtIEludmFsaWQgc2V0dGluZyBmb3IgT3B0aW9uTmFtZTogJywgb3B0aW9uTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlRXZlbnQodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCAmJiAhIXRoaXMuZGF0YS5JbmZpbml0ZVNjcm9sbCQpIHtcclxuICAgICAgY29uc3QgdGV4dEZpZWxkID0gdGhpcy5pdGVtVGV4dEZpZWxkLnRvU3RyaW5nKCk7XHJcbiAgICAgIGNvbnN0IHZhbHVlRmllbGQgPSB0aGlzLml0ZW1WYWx1ZUZpZWxkLnRvU3RyaW5nKCk7XHJcbiAgICAgIGxldCB6ZGF0YU1vZGVsID0gW107XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIHpkYXRhTW9kZWwgPSB0aGlzLmluZmluaXRlekRhdGEuZmlsdGVyKHggPT4geFt2YWx1ZUZpZWxkXSA9PT0gdmFsdWUpO1xyXG4gICAgICAgIHRoaXMubW9kZWx6RGF0YSA9IHpkYXRhTW9kZWwuc2xpY2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pdGVtRGF0YUZpZWxkLnN0YXJ0c1dpdGgoJ2dyb3VwLnpEYXRhLicpKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cC56RGF0YVt0aGlzLml0ZW1EYXRhRmllbGQuc2xpY2UoMTIpXSA9IHpkYXRhTW9kZWw7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtRGF0YUZpZWxkLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cFt0aGlzLml0ZW1EYXRhRmllbGQuc2xpY2UoNildID0gemRhdGFNb2RlbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgICAgdHlwZTogXCJvbkNoYW5nZVwiLFxyXG4gICAgICB0YXJnZXQ6IHRoaXMuZGF0YS5DQ09uQ2hhbmdlLFxyXG4gICAgICBldmVudCxcclxuICAgICAgZGF0YToge3ZhbHVlLCBmaWVsZDogdGhpcy5kYXRhfVxyXG4gICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogYW55KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInpzZWxlY3RtdWx0aXBsZSAob25WYWx1ZUNoYW5nZSk6IFwiLCB2YWx1ZSk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLkNDVmFsdWUsIHZhbHVlLCB0aGlzLmdyb3VwKTtcclxuICAgIHRoaXMub25DaGFuZ2VFdmVudCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShldmVudDogeyBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDsgdmFsdWU6IGFueSB9KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInpzZWxlY3RtdWx0aXBsZSAob25DaGFuZ2UpOiBcIiwgZXZlbnQudmFsdWUpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHRoaXMuZGF0YS5DQ1ZhbHVlLCBldmVudC52YWx1ZSwgdGhpcy5ncm91cCk7XHJcbiAgICBjb25zdCBmYyA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuQ0NWYWx1ZV07XHJcbiAgICB0aGlzLmhhbmRsZUNsb3NlKCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmRhdGEuQ0NJc1JlcXVpcmVkICYmXHJcbiAgICAgIChldmVudC52YWx1ZSA9PT0gbnVsbCB8fCBldmVudC52YWx1ZS5sZW5ndGggPT09IDApXHJcbiAgICApIHtcclxuICAgICAgZmMuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmYy5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUV2ZW50KGV2ZW50LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNsZWFySXRlbXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jbGVhcigpO1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUl0ZW1zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQudG9nZ2xlSXRlbXModGhpcy50b2dnbGVTZWxlY3RhYmxlKTtcclxuICAgIHRoaXMudG9nZ2xlU2VsZWN0YWJsZSA9ICF0aGlzLnRvZ2dsZVNlbGVjdGFibGU7XHJcbiAgfVxyXG5cclxuICBjb25maXJtSXRlbXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jb25maXJtKCk7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZXZlbnQ6IHsgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7IHRleHQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQgKG9uU2VhcmNoKTogXCIsIGV2ZW50KTtcclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IGV2ZW50LmNvbXBvbmVudDtcclxuICAgIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgY29tcG9uZW50LnN0YXJ0U2VhcmNoKCk7XHJcbiAgICAgIGNvbXBvbmVudC5lbmFibGVJbmZpbml0ZVNjcm9sbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwpIHtcclxuICAgICAgaWYgKGV2ZW50LnRleHQgIT09IG51bGwgJiYgZXZlbnQudGV4dCAhPT0gdGhpcy5pbmZpbml0ZVNlYXJjaFRleHQpIHtcclxuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldEluZmluaXRlRGF0YShldmVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbXBvbmVudC5pdGVtcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICByZWZlcklkOiBudWxsLFxyXG4gICAgICAgIHBhZ2VObzogMCxcclxuICAgICAgICBwYWdlU2l6ZTogMTUsXHJcbiAgICAgICAgc29ydENvbHVtbk5hbWU6IFwiXCIsXHJcbiAgICAgICAgc29ydE9yZGVyOiBcIlwiLFxyXG4gICAgICAgIHNvcnRDb2x1bW5OYW1lczogW10sXHJcbiAgICAgICAgc29ydE9yZGVyczogW10sXHJcbiAgICAgICAgZmlsdGVyUGFyYW1zOiBbXSxcclxuICAgICAgICBwYXJhbWV0ZXJzOiBcIlwiXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IHNlYXJjaEZpZWxkcyA9IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHNcclxuICAgICAgICA/IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHNcclxuICAgICAgICA6IHRoaXMuaXRlbVRleHRGaWVsZDtcclxuICAgICAgY29uc3QgZmlsdGVyaXRlbXMgPSBaQ29tcG9uZW50SGVscGVyLmZpbHRlclNlYXJjaEl0ZW1zKFxyXG4gICAgICAgIHRoaXMuZ2V0SXRlbXNEYXRhKCksXHJcbiAgICAgICAgLy8gdGhpcy5pdGVtcyxcclxuICAgICAgICBldmVudC50ZXh0LFxyXG4gICAgICAgIHNlYXJjaEZpZWxkcyxcclxuICAgICAgICBwYXJhbXMucGFnZU5vLFxyXG4gICAgICAgIHBhcmFtcy5wYWdlU2l6ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoY29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSBjb21wb25lbnQuaXRlbXMuY29uY2F0KGZpbHRlcml0ZW1zKTtcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMgPSBpdGVtcztcclxuICAgICAgICBjb21wb25lbnQuZW5kSW5maW5pdGVTY3JvbGwoKTtcclxuICAgICAgICBjb21wb25lbnQuZW5kU2VhcmNoKCk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SW5maW5pdGVEYXRhKGV2ZW50OiB7XHJcbiAgICBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICB9KSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmdldEluZmluaXRlRGF0YShldmVudC5jb21wb25lbnQsIGV2ZW50LnRleHQsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyKHZhbHVlOiBhbnksIGp1c3RPbmVUaW1lPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZWJvdW5jZVN1YiA9IG9mKFtdKS5waXBlKGRlbGF5KDUwMCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vblNlYXJjaCh7IGNvbXBvbmVudDogbnVsbCwgdGV4dDogdmFsdWUgfSk7XHJcbiAgICAgIC8vIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgICAgLy8gICB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIgPSBuZXcgU3ViamVjdChmYWxzZSk7XHJcbiAgICAgIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyBpbnRlcnZhbCgyMDAwKS5waXBlKHRha2VVbnRpbCh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyAgIHRoaXMub25TZWFyY2goeyBjb21wb25lbnQ6IG51bGwsIHRleHQ6IHZhbHVlIH0pO1xyXG4gICAgICAvLyAgIGlmIChqdXN0T25lVGltZSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5oYW5kbGVDbG9zZSgpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9wZW4oKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgICAgLy8gICAvLyAgIHRoaXMubG9hZEluZmluaXRlRGF0YVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAvLyAgIC8vIH1cclxuICAgICAgLy8gICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICAvLyAgIC8vIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIGludGVydmFsKDMwMDApLnBpcGUodGFrZVVudGlsKHRoaXMubG9hZEluZmluaXRlRGF0YVN1YikpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xvc2UoKSB7XHJcbiAgICAvLyBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgIC8vICAgICB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIubmV4dCh0cnVlKTtcclxuICAgIC8vICAgICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIuY29tcGxldGUoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQmx1cigpIHtcclxuICAgIC8vIHRoaXMuaGFuZGxlQ2xvc2UoKTtcclxuICB9XHJcbiAgXHJcbiAgZ2V0SXRlbVRlbXBsYXRlKFxyXG4gICAgaXRlbTogYW55LFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZ3JvdXA6IGFueSxcclxuICAgIGl0ZW1WYWx1ZUZpZWxkOiBzdHJpbmcsXHJcbiAgICBpdGVtVGV4dEZpZWxkOiBzdHJpbmdcclxuICApIHtcclxuICAgIC8vIFRvRE86IGl0ZW1WYWx1ZUZpZWxkIGFuZCBpdGVtVGV4dEZpZWxkXHJcbiAgICBpZiAodGhpcy5kYXRhLkl0ZW1UZW1wbGF0ZSkge1xyXG4gICAgICBjb25zdCBnZXRUZW1wbGF0ZUZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICB0aGlzLmRhdGEuSXRlbVRlbXBsYXRlXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBnZXRUZW1wbGF0ZUZ1bmMoe1xyXG4gICAgICAgIGl0ZW0sXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBncm91cCxcclxuICAgICAgICBpdGVtVmFsdWVGaWVsZCxcclxuICAgICAgICBpdGVtVGV4dEZpZWxkXHJcbiAgICAgIH0gYXMgWlNlbGVjdE11bHRpcGxlVGVtcGxhdGVQYXJhbXMpO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtVGV4dEZpZWxkKSB7XHJcbiAgICAgIHJldHVybiBpdGVtW2l0ZW1UZXh0RmllbGRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gcmV0dXJuIGl0ZW1baXRlbVRleHRGaWVsZF07XHJcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGl0ZW0pLmpvaW4oXCIsIFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJlYWRPbmx5VmFsdWUoKSB7XHJcbiAgICBjb25zdCByZWFkT25seVZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5SZWFkT25seSk7XHJcbiAgICBpZiAodHlwZW9mIHJlYWRPbmx5VmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSByZWFkT25seVZhbHVlLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICByZXR1cm4gY2FsbEZ1bmModGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldEdyb3VwVmFsdWUodmFsdWU6IHN0cmluZywgZ3JvdXA6IFpHcm91cCkge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh2YWx1ZSwgZ3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVuYWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIGNvbnN0IGZjID0gdGhpcy5ncm91cC5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBzdGF0dXMgPyBmYy5lbmFibGUoKSA6IGZjLmRpc2FibGUoKTtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5ID0gIXN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaXNpYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSA9IHN0YXR1cztcclxuICAgIHRoaXMuZGF0YS5WaXNpYmxlID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFJlcXVpcmUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZCA9IHN0YXR1cztcclxuXHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmNoYW5nZVZhbGlkYXRvcihzdGF0dXMsIHRoaXMuZ3JvdXAsIHRoaXMuZGF0YS5WYWx1ZSwgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIGlmIChaQ29tcG9uZW50SGVscGVyLmhhc0NDRmllbGQodGhpcy5kYXRhLlR5cGUpKSB7XHJcbiAgICAgIFpDb21wb25lbnRIZWxwZXIuY2hhbmdlVmFsaWRhdG9yKHN0YXR1cywgdGhpcy5ncm91cCwgdGhpcy5kYXRhLkNDVmFsdWUsIHRoaXMuY29tcG9uZW50UHJvcGVydGllcywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZVNjcmVlbigpIHtcclxuICAgIGNvbnN0IHYgPSBaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgICByZXR1cm4gdjtcclxuICB9XHJcblxyXG4gIGdldElvbl9JbnZhbGlkQ2xhc3MoZm9ybTogRm9ybUdyb3VwLCBkYXRhOiBaRmllbGQpIHtcclxuICAgIGlmICghZm9ybSkge1xyXG4gICAgICAvL2RlYnVnZ2VyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0SW9uX0ludmFsaWRDbGFzcyhmb3JtLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIG9uQWRkSXRlbShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBmID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5PbkFkZEl0ZW0pO1xyXG4gICAgaWYgKHR5cGVvZiBmID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxGdW5jID0gZi5iaW5kKHRoaXMuZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgcmV0dXJuIGNhbGxGdW5jKCk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgZGVjbGFyYXRpb24gb2YgT25BZGRJdGVtOiAnLCBmKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1pdGVtIFtuZ0NsYXNzXT1cImdldElvbl9JbnZhbGlkQ2xhc3MoZm9ybSwgZGF0YSlcIiAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKSAmJiBpc01vYmlsZVNjcmVlbigpXCI+XHJcbiAgPGlvbi1sYWJlbCAqbmdJZj1cImRhdGEuU2hvd0xhYmVsID09PSB1bmRlZmluZWQgfHwgZGF0YS5TaG93TGFiZWxcIiBwb3NpdGlvbj1cInN0YWNrZWRcIj5cclxuICAgIHt7ZGF0YS5MYWJlbH19XHJcbiAgICA8aW9uLXRleHQgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIiBjb2xvcj1cImRhbmdlclwiPio8L2lvbi10ZXh0PlxyXG4gIDwvaW9uLWxhYmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJpb24tcm93XCIgc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHdpZHRoOiAxMDAlXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgICA8c3BhbiBzdHlsZT1cImZsZXgtYmFzaXM6IDM1JTtcIj5cclxuICAgICAgPGlvbmljLXNlbGVjdGFibGUgI3NlbGVjdENvbXBvbmVudCBpdGVtLWNvbnRlbnRcclxuICAgICAgICBbaWRdPVwiZGF0YS5DQ1ZhbHVlXCIgaGVhZGVyQ29sb3I9XCJwcmltYXJ5XCIgY2xlYXJCdXR0b25UZXh0PVwiQ2xlYXJcIlxyXG4gICAgICAgIFtjYW5DbGVhcl09XCJ0cnVlXCIgc2VhcmNoRmFpbFRleHQ9XCJOb3RoaW5nIGZvdW5kIDooXCIgW2NhblNlYXJjaF09XCIhZGF0YVsnZGlzYWJsZS1zZWFyY2gnXVwiIFxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLkNDUGxhY2VIb2xkZXJcIiAgWyhuZ01vZGVsKV09XCJncm91cC56TW9kZWxbZGF0YS5DQ1ZhbHVlXVwiIFxyXG4gICAgICAgIFtzaG91bGRGb2N1c1NlYXJjaGJhcl09XCIhZGF0YVsnZGlzYWJsZS1zZWFyY2gnXVwiIFtoYXNJbmZpbml0ZVNjcm9sbF09XCIhIWRhdGEuSGFzSW5maW5pdGVTY3JvbGxcIlxyXG4gICAgICAgIChvblNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgKG9uSW5maW5pdGVTY3JvbGwpPVwiZ2V0SW5maW5pdGVEYXRhKCRldmVudClcIiBbaXNNdWx0aXBsZV09XCJkYXRhLk11bHRpcGxlXCJcclxuICAgICAgICBbaXNFbmFibGVkXT1cIiEoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIiBbaXRlbXNdPVwiZ2V0SXRlbXNEYXRhKClcIlxyXG4gICAgICAgIFtpdGVtVmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiIFtpdGVtVGV4dEZpZWxkXT1cIml0ZW1UZXh0RmllbGRcIiBbc2hvdWxkU3RvcmVJdGVtVmFsdWVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NhbkFkZEl0ZW1dPVwiISFkYXRhLk9uQWRkSXRlbVwiIChvbkFkZEl0ZW0pPVwib25BZGRJdGVtKCRldmVudClcIlxyXG4gICAgICAgIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVJdGVtSWNvblRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pc0l0ZW1TZWxlY3RlZD1cImlzSXRlbVNlbGVjdGVkXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBzbG90PVwic3RhcnRcIiBjbGFzcz1cImlzSXRlbVNlbGVjdGVkXCIgW2ljb25dPVwiWydmYXInLCBpc0l0ZW1TZWxlY3RlZCA/ICdjaGVjay1jaXJjbGUnOiAnY2lyY2xlJ11cIiBzaXplPVwic21cIiBbc3R5bGVzXT1cInsnY29sb3InOiBpc0l0ZW1TZWxlY3RlZCA/ICdkb2RnZXJCbHVlJyA6ICdsaWdodEdyYXknfVwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlQ2xvc2VCdXR0b25UZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS0gPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIj48L2lvbi1pY29uPiAtLT5cclxuICAgICAgICAgIDxmYS1pY29uICBbaWNvbl09XCIndGltZXMtY2lyY2xlJ1wiIHNpemU9XCJtZFwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlVGl0bGVUZW1wbGF0ZT5cclxuICAgICAgICAgIHt7ZGF0YS5MYWJlbH19XHJcbiAgICAgICAgICA8aW9uLXRleHQgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIiBjb2xvcj1cImRhbmdlclwiPio8L2lvbi10ZXh0PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVJdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICB7eyBnZXRJdGVtVGVtcGxhdGUoaXRlbSwgZGF0YSwgZ3JvdXAsIGl0ZW1WYWx1ZUZpZWxkLCBpdGVtVGV4dEZpZWxkKSB9fVxyXG4gICAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgenNlbGVjdGl0ZW1lbGVtZW50IFtpdGVtXT1cIml0ZW1cIj48L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2lvbmljLXNlbGVjdGFibGU+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBzdHlsZT1cImZsZXgtYmFzaXM6IDYwJTsgbWFyZ2luLWxlZnQ6IDVweDtcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgICAgPGlvbi1pbnB1dCBbaWRdPVwiZGF0YS5WYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgW3R5cGVdPVwiJ3RleHQnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwiZGF0YS5SZWFkT25seVwiIFtpbnB1dG1vZGVdPVwiJ3RleHQnXCI+PC9pb24taW5wdXQ+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8YXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2Ugc3R5bGU9XCJmbGV4LWJhc2lzOiA1JTtcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbZGF0YV09XCJkYXRhXCIgW2Zvcm1dPVwiZm9ybVwiPjwvYXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2U+XHJcbiAgPC9kaXY+XHJcbjwvaW9uLWl0ZW0+XHJcblxyXG5cclxuPGlvbi1pdGVtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpICYmICFpc01vYmlsZVNjcmVlbigpXCIgW25nQ2xhc3NdPVwiZ2V0SW9uX0ludmFsaWRDbGFzcyhmb3JtLCBkYXRhKVwiPlxyXG4gIDxpb24tbGFiZWwgW2F0dHIuZm9yXT1cImRhdGEuVmFsdWVcIiAqbmdJZj1cImRhdGEuU2hvd0xhYmVsID09PSB1bmRlZmluZWQgfHwgZGF0YS5TaG93TGFiZWxcIiBwb3NpdGlvbj1cInN0YWNrZWRcIj5cclxuICAgIHt7ZGF0YS5MYWJlbH19IDxpb24tdGV4dCAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkKVwiIGNvbG9yPVwiZGFuZ2VyXCI+KjwvaW9uLXRleHQ+XHJcbiAgPC9pb24tbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXJvd1wiIHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB3aWR0aDogMTAwJVwiPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cImZsZXgtYmFzaXM6IDM1JTtcIj5cclxuICAgICAgICA8a2VuZG8tY29tYm9ib3ggW2lkXT1cImRhdGEuQ0NWYWx1ZVwiXHJcbiAgICAgICAgICBbZGF0YV09XCJnZXRJdGVtc0RhdGEoKVwiIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCIgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5DQ1ZhbHVlXCIgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuQ0NQbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFtmaWx0ZXJhYmxlXT1cIiEhZGF0YS5IYXNJbmZpbml0ZVNjcm9sbFwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwiaGFuZGxlRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgKG9wZW4pPVwiaGFuZGxlT3BlbigpXCJcclxuICAgICAgICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgpXCJcclxuICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDdweDsgd2lkdGg6IDEwMCU7XCJcclxuICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiPlxyXG4gICAgICAgIDwva2VuZG8tY29tYm9ib3g+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4LWJhc2lzOiA2MCU7IG1hcmdpbi1sZWZ0OiA1cHg7XCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgICAgPGlucHV0IGtlbmRvVGV4dEJveCBbaWRdPVwiZGF0YS5WYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCIgXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogN3B4IDAgMCAwOyB3aWR0aDogMTAwJVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8YXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2Ugc3R5bGU9XCJmbGV4LWJhc2lzOiA1JTtcIlxyXG4gICAgICAgIFtncm91cF09XCJncm91cFwiIFtkYXRhXT1cImRhdGFcIiBbZm9ybV09XCJmb3JtXCI+XHJcbiAgICAgIDwvYXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2U+XHJcbiAgICA8L2Rpdj5cclxuPC9pb24taXRlbT4iXX0=
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienBvc3RzZWxlY3RpbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cG9zdHNlbGVjdGlucHV0L3pwb3N0c2VsZWN0aW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenBvc3RzZWxlY3RpbnB1dC96cG9zdHNlbGVjdGlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLeEUsOEJBQThCO0FBQzlCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUVPLGdCQUFnQixFQUFpQyxvQkFBb0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxjQUFjO0lBc0IzRCxZQUNVLGtCQUFzQyxFQUN0QyxhQUE0QixFQUM1QixZQUEwQixFQUNsQyxXQUE4QjtRQUM1QixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFKWix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdEJwQyxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBRXZCLGtCQUFhLEdBQWUsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQiw4QkFBOEI7UUFD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RUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcbmltcG9ydCB7IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudCB9IGZyb20gXCJpb25pYy1zZWxlY3RhYmxlXCI7XHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIENhY2hlU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zLCBaU2VsZWN0UG9zdEFwaVBhcmFtc30gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenBvc3RzZWxlY3RpbnB1dFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4venBvc3RzZWxlY3RpbnB1dC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96cG9zdHNlbGVjdGlucHV0LmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBacG9zdHNlbGVjdGlucHV0Q29tcG9uZW50IGV4dGVuZHMgSW5wdXRGaWVsZEJhc2UgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdENvbXBvbmVudFwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHNlbGVjdENvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50O1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbW9kZWx6RGF0YTogQXJyYXk8YW55PjtcclxuICBpbmZpbml0ZXpEYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgaW5maW5pdGVTZWFyY2hUZXh0ID0gbnVsbDtcclxuICAvLyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICB0b2dnbGVTZWxlY3RhYmxlID0gdHJ1ZTtcclxuICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtVGV4dEZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1EYXRhRmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbVRlbXBsYXRlID0gXCJ7e2l0ZW1baXRlbVRleHRGaWVsZF19fVwiO1xyXG4gIGluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIHByaXZhdGUgZGVib3VuY2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBkYXRhSW5mbzoge30gPSB7XHJcbiAgICBcIml0ZW1zUmVzb3VyY2VVUkxcIjogXCJcIixcclxuICAgIFwib3B0aW9uRmlsdGVyc1wiOiBcIlwiLFxyXG4gICAgXCJ0b3RhbENvdW50XCI6IDBcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLFxyXG4gICAgY29tcFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXHJcbiAgKSB7IHN1cGVyKGNvbXBTZXJ2aWNlKSB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAvLyAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZVN1Yikge1xyXG4gICAgICB0aGlzLmRlYm91bmNlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHN1cGVyLnNldHVwSW5uZXJGaWVsZCgpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRTZWxlY3RNdWx0aXBsZVRleHRWYWx1ZSh0aGlzLmRhdGEuQ0NTZWxlY3RPcHRpb25zLCB0aGlzKTtcclxuXHJcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5kYXRhLkNDVmFsdWU7XHJcbiAgICBsZXQgZ2V0ekRhdGFGb3J6TW9kZWwkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsICYmIHRoaXMuZGF0YS5JbmZpbml0ZVNjcm9sbCRcclxuICAgICAgJiYgdGhpcy5ncm91cC56TW9kZWwgJiYgdGhpcy5ncm91cC56TW9kZWxbZmllbGRWYWx1ZV0pIHtcclxuICAgICAgY29uc3QgcmVjb3JkSWQgPSB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZFZhbHVlXTtcclxuICAgICAgZ2V0ekRhdGFGb3J6TW9kZWwkID0gWkNvbXBvbmVudEhlbHBlci5nZXRJbmZpbml0ZURhdGEobnVsbCwgJycsIHRoaXMsIHJlY29yZElkLnRvU3RyaW5nKCkpO1xyXG4gICAgICBpZiAoZ2V0ekRhdGFGb3J6TW9kZWwkKSB7XHJcbiAgICAgICAgZ2V0ekRhdGFGb3J6TW9kZWwkLnN1YnNjcmliZSgoemRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YS5OYW1lLCAnIC0gaW5pdGlhbCB6RGF0YSBsb2FkOiAnLCB6ZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcihudWxsLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5DQ09wdGlvblJlc291cmNlVVJMKSB7XHJcbiAgICAgICAgdGhpcy5sYXp5TG9hZERhdGFPcHRpb25zKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGxhenlMb2FkRGF0YU9wdGlvbnMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHJlc291cmNlVXJsID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFxyXG4gICAgICB0aGlzLmRhdGEuQ0NPcHRpb25SZXNvdXJjZVVSTFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJQYXJhbSA9IG5ldyBaU2VsZWN0UG9zdEFwaVBhcmFtcygpO1xyXG4gICAgZmlsdGVyUGFyYW0uc29ydHMgPSB0aGlzLmRhdGEuQ0NPcHRpb25Tb3J0O1xyXG4gICAgZmlsdGVyUGFyYW0uY29sdW1ucyA9IHRoaXMuZGF0YS5DQ09wdGlvbkNvbHVtbnM7XHJcbiAgICBmaWx0ZXJQYXJhbS5maWx0ZXJzID0gdGhpcy5kYXRhLkNDT3B0aW9uRmlsdGVyO1xyXG5cclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldERhdGFPcHRpb25zKFxyXG4gICAgICB0aGlzLmRhdGEuQ0NPcHRpb25OYW1lLFxyXG4gICAgICBmaWx0ZXJQYXJhbSxcclxuICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgcmVzb3VyY2VVcmwsXHJcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLFxyXG4gICAgICB0aGlzLndlYkFwaVNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZGF0YVsnRGlzYWJsZUNhY2hlJ11cclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0SXRlbXNEYXRhKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbmZpbml0ZXpEYXRhO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3B0aW9uTmFtZSA9IHRoaXMuZGF0YS5DQ09wdGlvbk5hbWUgfHwgdGhpcy5pdGVtRGF0YUZpZWxkIHx8ICdncm91cC56RGF0YS4nICsgdGhpcy5kYXRhLk5hbWU7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuQ0NTZWxlY3RPcHRpb25zKSAmJiAhdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0pIHtcclxuICAgICAgLy8gcmV0dXJuIHNlbGVjdGlvbk9wdGlvbnM7XHJcbiAgICAgIC8vIHJldHVybiB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gPSB0aGlzLmRhdGEuQ0NTZWxlY3RPcHRpb25zO1xyXG4gICAgICB0aGlzLml0ZW1EYXRhRmllbGQgPSBvcHRpb25OYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ3pEYXRhLicpKSB7XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoNildO1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLnpEYXRhLicpKSB7XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbk5hbWUuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgLy8gdGhpcy5pdGVtcyA9IHRoaXMuZ3JvdXBbb3B0aW9uTmFtZS5zbGljZSg2KV07XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwW29wdGlvbk5hbWUuc2xpY2UoNildIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbk5hbWUpIHtcclxuICAgICAgLy8gdGhpcy5pdGVtcyA9IHRoaXMuZ3JvdXBbb3B0aW9uTmFtZV07XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwW29wdGlvbk5hbWVdIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS53YXJuKHRoaXMuZGF0YS5OYW1lLCAnIC0gSW52YWxpZCBzZXR0aW5nIGZvciBPcHRpb25OYW1lOiAnLCBvcHRpb25OYW1lKTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VfZGVza3RvcChldmVudDogYW55KSB7XHJcbiAgICBzdXBlci5vbkNoYW5nZShudWxsLCBldmVudClcclxuICAgIHRoaXMuaGFuZGxlSW5maW5pdGVTY3JvbGxPbkNoYW5nZShldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VfbW9iaWxlKGV2ZW50OiB7IGNvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50OyB2YWx1ZTogYW55IH0pIHtcclxuICAgIHN1cGVyLm9uQ2hhbmdlKGV2ZW50KVxyXG4gICAgY29uc3QgZmMgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5kYXRhLkNDVmFsdWVdO1xyXG4gICAgdGhpcy5oYW5kbGVDbG9zZSgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgc3VwZXIuZ2V0SXNSZXF1aXJlZFZhbHVlKCkgJiYgKGV2ZW50LnZhbHVlID09PSBudWxsIHx8IGV2ZW50LnZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICkge1xyXG4gICAgICBmYy5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZjLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUluZmluaXRlU2Nyb2xsT25DaGFuZ2UoZXZlbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwgJiYgISF0aGlzLmRhdGEuSW5maW5pdGVTY3JvbGwkKSB7XHJcbiAgICAgIGNvbnN0IHRleHRGaWVsZCA9IHRoaXMuaXRlbVRleHRGaWVsZC50b1N0cmluZygpO1xyXG4gICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5pdGVtVmFsdWVGaWVsZC50b1N0cmluZygpO1xyXG4gICAgICBsZXQgemRhdGFNb2RlbCA9IFtdO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICB6ZGF0YU1vZGVsID0gdGhpcy5pbmZpbml0ZXpEYXRhLmZpbHRlcih4ID0+IHhbdmFsdWVGaWVsZF0gPT09IHZhbHVlKTtcclxuICAgICAgICB0aGlzLm1vZGVsekRhdGEgPSB6ZGF0YU1vZGVsLnNsaWNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbURhdGFGaWVsZC5zdGFydHNXaXRoKCdncm91cC56RGF0YS4nKSkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuekRhdGFbdGhpcy5pdGVtRGF0YUZpZWxkLnNsaWNlKDEyKV0gPSB6ZGF0YU1vZGVsO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbURhdGFGaWVsZC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXBbdGhpcy5pdGVtRGF0YUZpZWxkLnNsaWNlKDYpXSA9IHpkYXRhTW9kZWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFySXRlbXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jbGVhcigpO1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUl0ZW1zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQudG9nZ2xlSXRlbXModGhpcy50b2dnbGVTZWxlY3RhYmxlKTtcclxuICAgIHRoaXMudG9nZ2xlU2VsZWN0YWJsZSA9ICF0aGlzLnRvZ2dsZVNlbGVjdGFibGU7XHJcbiAgfVxyXG5cclxuICBjb25maXJtSXRlbXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jb25maXJtKCk7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZXZlbnQ6IHsgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7IHRleHQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQgKG9uU2VhcmNoKTogXCIsIGV2ZW50KTtcclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IGV2ZW50LmNvbXBvbmVudDtcclxuICAgIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgY29tcG9uZW50LnN0YXJ0U2VhcmNoKCk7XHJcbiAgICAgIGNvbXBvbmVudC5lbmFibGVJbmZpbml0ZVNjcm9sbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwpIHtcclxuICAgICAgaWYgKGV2ZW50LnRleHQgIT09IG51bGwgJiYgZXZlbnQudGV4dCAhPT0gdGhpcy5pbmZpbml0ZVNlYXJjaFRleHQpIHtcclxuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldEluZmluaXRlRGF0YShldmVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbXBvbmVudC5pdGVtcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICByZWZlcklkOiBudWxsLFxyXG4gICAgICAgIHBhZ2VObzogMCxcclxuICAgICAgICBwYWdlU2l6ZTogMTUsXHJcbiAgICAgICAgc29ydENvbHVtbk5hbWU6IFwiXCIsXHJcbiAgICAgICAgc29ydE9yZGVyOiBcIlwiLFxyXG4gICAgICAgIHNvcnRDb2x1bW5OYW1lczogW10sXHJcbiAgICAgICAgc29ydE9yZGVyczogW10sXHJcbiAgICAgICAgZmlsdGVyUGFyYW1zOiBbXSxcclxuICAgICAgICBwYXJhbWV0ZXJzOiBcIlwiXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IHNlYXJjaEZpZWxkcyA9IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHNcclxuICAgICAgICA/IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHNcclxuICAgICAgICA6IHRoaXMuaXRlbVRleHRGaWVsZDtcclxuICAgICAgY29uc3QgZmlsdGVyaXRlbXMgPSBaQ29tcG9uZW50SGVscGVyLmZpbHRlclNlYXJjaEl0ZW1zKFxyXG4gICAgICAgIHRoaXMuZ2V0SXRlbXNEYXRhKCksXHJcbiAgICAgICAgLy8gdGhpcy5pdGVtcyxcclxuICAgICAgICBldmVudC50ZXh0LFxyXG4gICAgICAgIHNlYXJjaEZpZWxkcyxcclxuICAgICAgICBwYXJhbXMucGFnZU5vLFxyXG4gICAgICAgIHBhcmFtcy5wYWdlU2l6ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoY29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSBjb21wb25lbnQuaXRlbXMuY29uY2F0KGZpbHRlcml0ZW1zKTtcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMgPSBpdGVtcztcclxuICAgICAgICBjb21wb25lbnQuZW5kSW5maW5pdGVTY3JvbGwoKTtcclxuICAgICAgICBjb21wb25lbnQuZW5kU2VhcmNoKCk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SW5maW5pdGVEYXRhKGV2ZW50OiB7XHJcbiAgICBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICB9KSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmdldEluZmluaXRlRGF0YShldmVudC5jb21wb25lbnQsIGV2ZW50LnRleHQsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyKHZhbHVlOiBhbnksIGp1c3RPbmVUaW1lPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZWJvdW5jZVN1YiA9IG9mKFtdKS5waXBlKGRlbGF5KDUwMCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vblNlYXJjaCh7IGNvbXBvbmVudDogbnVsbCwgdGV4dDogdmFsdWUgfSk7XHJcbiAgICAgIC8vIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgICAgLy8gICB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIgPSBuZXcgU3ViamVjdChmYWxzZSk7XHJcbiAgICAgIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyBpbnRlcnZhbCgyMDAwKS5waXBlKHRha2VVbnRpbCh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyAgIHRoaXMub25TZWFyY2goeyBjb21wb25lbnQ6IG51bGwsIHRleHQ6IHZhbHVlIH0pO1xyXG4gICAgICAvLyAgIGlmIChqdXN0T25lVGltZSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5oYW5kbGVDbG9zZSgpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9wZW4oKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgICAgLy8gICAvLyAgIHRoaXMubG9hZEluZmluaXRlRGF0YVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAvLyAgIC8vIH1cclxuICAgICAgLy8gICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICAvLyAgIC8vIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIGludGVydmFsKDMwMDApLnBpcGUodGFrZVVudGlsKHRoaXMubG9hZEluZmluaXRlRGF0YVN1YikpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xvc2UoKSB7XHJcbiAgICAvLyBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgIC8vICAgICB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIubmV4dCh0cnVlKTtcclxuICAgIC8vICAgICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIuY29tcGxldGUoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQmx1cigpIHtcclxuICAgIC8vIHRoaXMuaGFuZGxlQ2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1UZW1wbGF0ZShcclxuICAgIGl0ZW06IGFueSxcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGdyb3VwOiBhbnksXHJcbiAgICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nLFxyXG4gICAgaXRlbVRleHRGaWVsZDogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICAvLyBUb0RPOiBpdGVtVmFsdWVGaWVsZCBhbmQgaXRlbVRleHRGaWVsZFxyXG4gICAgaWYgKHRoaXMuZGF0YS5JdGVtVGVtcGxhdGUpIHtcclxuICAgICAgY29uc3QgZ2V0VGVtcGxhdGVGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgdGhpcy5kYXRhLkl0ZW1UZW1wbGF0ZVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jKHtcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgaXRlbVZhbHVlRmllbGQsXHJcbiAgICAgICAgaXRlbVRleHRGaWVsZFxyXG4gICAgICB9IGFzIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbVRleHRGaWVsZCkge1xyXG4gICAgICByZXR1cm4gaXRlbVtpdGVtVGV4dEZpZWxkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHJldHVybiBpdGVtW2l0ZW1UZXh0RmllbGRdO1xyXG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpdGVtKS5qb2luKFwiLCBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFkZEl0ZW0oZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZiA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT25BZGRJdGVtKTtcclxuICAgIGlmICh0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGYuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgIHJldHVybiBjYWxsRnVuYygpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGRlY2xhcmF0aW9uIG9mIE9uQWRkSXRlbTogJywgZik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ6cG9zdHNlbGVjdGlucHV0LWNvbnRhaW5lciBlMXRhZy1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGRpdiAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKCkgJiYgIWlzTG9hZGluZ1wiIHN0eWxlPVwiZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHdpZHRoOiAxMDAlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDxzcGFuIHN0eWxlPVwiZmxleC1iYXNpczogMzUlO1wiIGNsYXNzPVwiZTF0YWctc3R5bGUyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+XHJcbiAgICAgIDxpb25pYy1zZWxlY3RhYmxlICNzZWxlY3RDb21wb25lbnQgaXRlbS1jb250ZW50IFtpZF09XCJkYXRhLkNDVmFsdWVcIiBoZWFkZXJDb2xvcj1cInByaW1hcnlcIiBjbGVhckJ1dHRvblRleHQ9XCJDbGVhclwiXHJcbiAgICAgICAgW2NhbkNsZWFyXT1cInRydWVcIiBzZWFyY2hGYWlsVGV4dD1cIk5vdGhpbmcgZm91bmQgOihcIiBbY2FuU2VhcmNoXT1cIiFkYXRhWydkaXNhYmxlLXNlYXJjaCddXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5DQ1BsYWNlSG9sZGVyXCIgWyhuZ01vZGVsKV09XCJncm91cC56TW9kZWxbZGF0YS5DQ1ZhbHVlXVwiXHJcbiAgICAgICAgW3Nob3VsZEZvY3VzU2VhcmNoYmFyXT1cIiFkYXRhWydkaXNhYmxlLXNlYXJjaCddXCIgW2hhc0luZmluaXRlU2Nyb2xsXT1cIiEhZGF0YS5IYXNJbmZpbml0ZVNjcm9sbFwiXHJcbiAgICAgICAgKG9uU2VhcmNoKT1cIm9uU2VhcmNoKCRldmVudClcIiAob25JbmZpbml0ZVNjcm9sbCk9XCJnZXRJbmZpbml0ZURhdGEoJGV2ZW50KVwiIFtpc011bHRpcGxlXT1cImRhdGEuTXVsdGlwbGVcIlxyXG4gICAgICAgIFtpc0VuYWJsZWRdPVwiISghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1zRGF0YSgpXCIgW2l0ZW1WYWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCIgW2l0ZW1UZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgW3Nob3VsZFN0b3JlSXRlbVZhbHVlXT1cInRydWVcIiBbY2FuQWRkSXRlbV09XCIhIWRhdGEuT25BZGRJdGVtXCIgKG9uQWRkSXRlbSk9XCJvbkFkZEl0ZW0oJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlX21vYmlsZSgkZXZlbnQpXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTNcIj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZUl0ZW1JY29uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWlzSXRlbVNlbGVjdGVkPVwiaXNJdGVtU2VsZWN0ZWRcIj5cclxuICAgICAgICAgIDxmYS1pY29uIHNsb3Q9XCJzdGFydFwiIGNsYXNzPVwiaXNJdGVtU2VsZWN0ZWQgZTF0YWctc3R5bGU0XCIgW2ljb25dPVwiWydmYXInLCBpc0l0ZW1TZWxlY3RlZCA/ICdjaGVjay1jaXJjbGUnOiAnY2lyY2xlJ11cIlxyXG4gICAgICAgICAgICBzaXplPVwic21cIiBbc3R5bGVzXT1cInsnY29sb3InOiBpc0l0ZW1TZWxlY3RlZCA/ICdkb2RnZXJCbHVlJyA6ICdsaWdodEdyYXknfVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlQ2xvc2VCdXR0b25UZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS0gPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIj48L2lvbi1pY29uPiAtLT5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIid0aW1lcy1jaXJjbGUnXCIgc2l6ZT1cIm1kXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZVRpdGxlVGVtcGxhdGU+XHJcbiAgICAgICAgICB7e2RhdGEuTGFiZWx9fVxyXG4gICAgICAgICAgPGlvbi10ZXh0XHJcbiAgICAgICAgICAgICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWQpXCJcclxuICAgICAgICAgICAgY29sb3I9XCJkYW5nZXJcIj4qPC9pb24tdGV4dD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlSXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAge3sgZ2V0SXRlbVRlbXBsYXRlKGl0ZW0sIGRhdGEsIGdyb3VwLCBpdGVtVmFsdWVGaWVsZCwgaXRlbVRleHRGaWVsZCkgfX1cclxuICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlIHpzZWxlY3RpdGVtZWxlbWVudCBbaXRlbV09XCJpdGVtXCI+PC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9pb25pYy1zZWxlY3RhYmxlPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4LWJhc2lzOiA2MCU7IG1hcmdpbi1sZWZ0OiA1cHg7XCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgIDxpb24taW5wdXQgW2lkXT1cImRhdGEuVmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFt0eXBlXT1cIid0ZXh0J1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cImRhdGEuUmVhZE9ubHlcIiBbaW5wdXRtb2RlXT1cIid0ZXh0J1wiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNlwiIGNsYXNzPVwiZTF0YWctc3R5bGU2XCI+PC9pb24taW5wdXQ+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8YXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2Ugc3R5bGU9XCJmbGV4LWJhc2lzOiA1JTtcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbZGF0YV09XCJkYXRhXCIgW2Zvcm1dPVwiZm9ybVwiPlxyXG4gICAgPC9hcHAtdWl2YWxpZGF0aW9ubWVzc2FnZT5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKClcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB3aWR0aDogMTAwJVwiIGNsYXNzPVwiZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICA8c3BhbiBzdHlsZT1cImZsZXgtYmFzaXM6IDM1JTtcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLXN0eWxlMlwiPlxyXG4gICAgICA8a2VuZG8tY29tYm9ib3ggW2lkXT1cImRhdGEuQ0NWYWx1ZVwiIFtkYXRhXT1cImdldEl0ZW1zRGF0YSgpXCIgW3ZhbHVlRmllbGRdPVwiaXRlbVZhbHVlRmllbGRcIlxyXG4gICAgICAgIFt0ZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5DQ1ZhbHVlXCIgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLkNDUGxhY2VIb2xkZXJcIiAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCIgW2ZpbHRlcmFibGVdPVwiISFkYXRhLkhhc0luZmluaXRlU2Nyb2xsXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cImhhbmRsZUZpbHRlcigkZXZlbnQpXCIgKG9wZW4pPVwiaGFuZGxlT3BlbigpXCIgKGNsb3NlKT1cImhhbmRsZUNsb3NlKClcIiAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUzXCIgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCI+XHJcbiAgICAgIDwva2VuZG8tY29tYm9ib3g+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBzdHlsZT1cImZsZXgtYmFzaXM6IDYwJTsgbWFyZ2luLWxlZnQ6IDVweDtcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgICAgPGlucHV0IGtlbmRvVGV4dEJveCBbaWRdPVwiZGF0YS5WYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgdHlwZT1cInRleHRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luOiA3cHggMCAwIDA7IHdpZHRoOiAxMDAlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU2XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTZcIi8+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/********** Angular **********/
|
|
2
|
+
import { Component } from "@angular/core";
|
|
3
|
+
/********** Ionic **********/
|
|
4
|
+
/********** Plugin **********/
|
|
5
|
+
/********** Component & Service **********/
|
|
6
|
+
import { ZComponentHelper } from 'mmhglobal-zcore';
|
|
7
|
+
import { FieldBase } from "../components/fieldbase.component";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../services/zcomponent.service";
|
|
10
|
+
import * as i2 from "@progress/kendo-angular-progressbar";
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
12
|
+
export class ZprogressbarComponent extends FieldBase {
|
|
13
|
+
constructor(compService) {
|
|
14
|
+
super(compService);
|
|
15
|
+
this.animation = {
|
|
16
|
+
duration: 1000,
|
|
17
|
+
};
|
|
18
|
+
this.label = {
|
|
19
|
+
visible: true,
|
|
20
|
+
format: "percent",
|
|
21
|
+
position: "start",
|
|
22
|
+
};
|
|
23
|
+
this.minValue = 0;
|
|
24
|
+
this.maxValue = 100;
|
|
25
|
+
this.options = {
|
|
26
|
+
indeterminate: false,
|
|
27
|
+
animation: this.animation,
|
|
28
|
+
label: this.label,
|
|
29
|
+
progressStyles: null,
|
|
30
|
+
emptyStyles: null,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
super.initComponent().subscribe(() => {
|
|
35
|
+
this.value = this.group.zModel[this.data.Value];
|
|
36
|
+
this.minValue = this.data.MinValue || this.minValue;
|
|
37
|
+
this.maxValue = this.data.MaxValue || this.maxValue;
|
|
38
|
+
if (this.data.Options) {
|
|
39
|
+
const optionType = typeof (this.data.Options);
|
|
40
|
+
if (optionType === 'object') {
|
|
41
|
+
Object.assign(this.options, this.data.Options);
|
|
42
|
+
}
|
|
43
|
+
else if (optionType === 'string') {
|
|
44
|
+
const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);
|
|
45
|
+
if (typeof (optionValue) === 'object') {
|
|
46
|
+
Object.assign(this.options, optionValue);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ZprogressbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZprogressbarComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
ZprogressbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZprogressbarComponent, selector: "app-zprogressbar", usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"data.Label\">\r\n {{data.Label}}\r\n </div>\r\n <kendo-progressbar [min]=\"minValue\" [max]=\"maxValue\" [indeterminate]=\"options.indeterminate\" [value]=\"value\" class=\"e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\" [progressCssStyle]=\"options.progressStyles\"\r\n [emptyCssStyle]=\"options.emptyStyles\" [label]=\"options.label\" [animation]=\"options.animation\"></kendo-progressbar>\r\n</div>\r\n", styles: [""], components: [{ type: i2.ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "animation", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZprogressbarComponent, decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{ selector: 'app-zprogressbar', template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"data.Label\">\r\n {{data.Label}}\r\n </div>\r\n <kendo-progressbar [min]=\"minValue\" [max]=\"maxValue\" [indeterminate]=\"options.indeterminate\" [value]=\"value\" class=\"e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\" [progressCssStyle]=\"options.progressStyles\"\r\n [emptyCssStyle]=\"options.emptyStyles\" [label]=\"options.label\" [animation]=\"options.animation\"></kendo-progressbar>\r\n</div>\r\n", styles: [""] }]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienByb2dyZXNzYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pwcm9ncmVzc2Jhci96cHJvZ3Jlc3NiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenByb2dyZXNzYmFyL3pwcm9ncmVzc2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBUzlELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxTQUFTO0lBc0JsRCxZQUFZLFdBQThCO1FBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBckJ4RCxjQUFTLEdBQXlCO1lBQ3hDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUVNLFVBQUssR0FBa0I7WUFDN0IsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsU0FBUztZQUNqQixRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFDO1FBR0ssYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixZQUFPLEdBQUc7WUFDZixhQUFhLEVBQUUsS0FBSztZQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUM7SUFFK0QsQ0FBQztJQUVsRSxRQUFRO1FBQ04sS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFFbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFcEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDckIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTtvQkFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ2hEO3FCQUFNLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTtvQkFDbEMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNyRixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxRQUFRLEVBQUU7d0JBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztxQkFDMUM7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUhBM0NVLHFCQUFxQjt1R0FBckIscUJBQXFCLCtFQ25CbEMsaXVCQVVBOzRGRFNhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTGFiZWxTZXR0aW5ncywgUHJvZ3Jlc3NCYXJBbmltYXRpb24gfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItcHJvZ3Jlc3NiYXJcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2ZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenByb2dyZXNzYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venByb2dyZXNzYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96cHJvZ3Jlc3NiYXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpwcm9ncmVzc2JhckNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBhbmltYXRpb246IFByb2dyZXNzQmFyQW5pbWF0aW9uID0ge1xyXG4gICAgZHVyYXRpb246IDEwMDAsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBsYWJlbDogTGFiZWxTZXR0aW5ncyA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBmb3JtYXQ6IFwicGVyY2VudFwiLFxyXG4gICAgcG9zaXRpb246IFwic3RhcnRcIixcclxuICB9O1xyXG5cclxuICBwdWJsaWMgdmFsdWU7XHJcbiAgcHVibGljIG1pblZhbHVlID0gMDtcclxuICBwdWJsaWMgbWF4VmFsdWUgPSAxMDA7XHJcbiAgcHVibGljIG9wdGlvbnMgPSB7XHJcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcclxuICAgIGFuaW1hdGlvbjogdGhpcy5hbmltYXRpb24sXHJcbiAgICBsYWJlbDogdGhpcy5sYWJlbCxcclxuICAgIHByb2dyZXNzU3R5bGVzOiBudWxsLFxyXG4gICAgZW1wdHlTdHlsZXM6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoY29tcFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlKSB7IHN1cGVyKGNvbXBTZXJ2aWNlKSB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuaW5pdENvbXBvbmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgICAgdGhpcy5taW5WYWx1ZSA9IHRoaXMuZGF0YS5NaW5WYWx1ZSB8fCB0aGlzLm1pblZhbHVlO1xyXG4gICAgICB0aGlzLm1heFZhbHVlID0gdGhpcy5kYXRhLk1heFZhbHVlIHx8IHRoaXMubWF4VmFsdWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25UeXBlID0gdHlwZW9mICh0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKG9wdGlvblR5cGUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9uVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgKG9wdGlvblZhbHVlKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIG9wdGlvblZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0b3AtdGl0bGUgZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgKm5nSWY9XCJkYXRhLkxhYmVsXCI+XHJcbiAgICB7e2RhdGEuTGFiZWx9fVxyXG4gIDwvZGl2PlxyXG4gIDxrZW5kby1wcm9ncmVzc2JhciBbbWluXT1cIm1pblZhbHVlXCIgW21heF09XCJtYXhWYWx1ZVwiIFtpbmRldGVybWluYXRlXT1cIm9wdGlvbnMuaW5kZXRlcm1pbmF0ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIGNsYXNzPVwiZTF0YWctc3R5bGUyXCJcclxuICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiIFtwcm9ncmVzc0Nzc1N0eWxlXT1cIm9wdGlvbnMucHJvZ3Jlc3NTdHlsZXNcIlxyXG4gICAgW2VtcHR5Q3NzU3R5bGVdPVwib3B0aW9ucy5lbXB0eVN0eWxlc1wiIFtsYWJlbF09XCJvcHRpb25zLmxhYmVsXCIgW2FuaW1hdGlvbl09XCJvcHRpb25zLmFuaW1hdGlvblwiPjwva2VuZG8tcHJvZ3Jlc3NiYXI+XHJcbjwvZGl2PlxyXG4iXX0=
|