@sapphire-ion/framework 1.0.37 → 1.0.39
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/esm2022/lib/components/inputs/custom-input.mjs +1 -1
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +20 -27
- package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +2 -3
- package/fesm2022/sapphire-ion-framework.mjs +20 -28
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
- package/lib/components/inputs/input-select/input-select.component.d.ts +2 -1
- package/lib/components/inputs/input-select/input.select.configuration.d.ts +1 -2
- package/lib/components/stepper/step/step.component.d.ts +1 -1
- package/package.json +1 -1
- package/themes/styles/ionic/ion-action-sheet.scss +9 -7
|
@@ -82,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
82
82
|
type: Input,
|
|
83
83
|
args: ['formControl']
|
|
84
84
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9jdXN0b20taW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQW9FLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdLLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQW1FLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hKLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQVFoRSxNQUFNLE9BQWdCLFdBQVc7SUFxQi9CLGVBQWU7SUFDZixRQUFRLENBQUMsR0FBTTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFXRDtRQW5DQSxzQ0FBc0M7UUFDdEMsWUFBTyxHQUE0QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsa0NBQWtDO1FBQ2xDLGFBQVEsR0FBNEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELHlDQUF5QztRQUN6QyxjQUFTLEdBQTRCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxzQkFBc0I7UUFDdEIsVUFBSyxHQUF3QixLQUFLLENBQVMsT0FBTyxDQUFDLENBQUM7UUFFcEQsZ0NBQWdDO1FBQ2hDLGFBQVEsR0FBNEIsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFBO1FBS3pELFdBQVc7UUFFWCxVQUFLLEdBQWtDLE1BQU0sQ0FBZ0IsU0FBUyxDQUFDLENBQUM7UUFtRDlELFlB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QUc7d0JBQ1YsR0FBRyxvQkFBb0IsQ0FBQyxZQUFZLGFBQWE7cUJBQ2xEO2lCQUNGO3dEQWdDVyxlQUFlO3NCQUF4QixLQUFLO2dCQUdJLE9BQU87c0JBRGhCLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIElucHV0U2lnbmFsLCBPbkluaXQsIE91dHB1dEVtaXR0ZXJSZWYsIFZpZXdDaGlsZCwgV3JpdGFibGVTaWduYWwsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBDb250cm9sRXZlbnQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3IsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tIFwiLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5XCI7XHJcblxyXG5AQ29tcG9uZW50KHsgXHJcbiAgdGVtcGxhdGU6ICcnLCBcclxuICBwcm92aWRlcnM6ICBbXHJcbiAgICAuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoQ3VzdG9tSW5wdXQpXHJcbiAgXSBcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEN1c3RvbUlucHV0PFQ+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdHtcclxuXHJcbiAgLyoqIEV4aWJlIG8gc3Bpbm5lciBkZSBjYXJyZWdhbWVudG8gKi9cclxuICBsb2FkaW5nOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IG1vZGVsKGZhbHNlKTtcclxuICAvKiogU2UgYXRpdm8gZGVzYWJpbGl0YSBvIElucHV0ICovXHJcbiAgZGlzYWJsZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gbW9kZWwoZmFsc2UpO1xyXG4gIC8qKiBJbmRpY2Egc2UgbyBmb3JtdWzDoXJpbyBmb2kgZW52aWFkbyAqL1xyXG4gIHN1Ym1pdHRlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBtb2RlbChmYWxzZSk7XHJcbiAgLyoqIFRpdHVsbyBkbyBJbnB1dCAqL1xyXG4gIGxhYmVsOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQ8c3RyaW5nPihcIkxhYmVsXCIpO1xyXG5cclxuICAvKiogVG9ybmEgbyBpbnB1dCBvYnJpZ2F0b3JpbyAqL1xyXG4gIHJlcXVpcmVkOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKVxyXG4gIFxyXG4gIGFic3RyYWN0IHdyaXRlVmFsdWUob2JqOiBUKTogdm9pZCB8IFByb21pc2U8dm9pZD47XHJcbiAgYWJzdHJhY3Qgc2V0Rm9jdXMoZXZlbnQ6IE1vdXNlRXZlbnQgfCBudWxsKTogdm9pZDtcclxuXHJcbiAgLy9bIFZhbHVlIF1cclxuICBcclxuICB2YWx1ZTogV3JpdGFibGVTaWduYWw8VCB8IHVuZGVmaW5lZD4gPSBzaWduYWw8VCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgLyoqIEB2aXJ0dWFsICovXHJcbiAgU2V0VmFsdWUob2JqOiBUKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopOyBcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2Uob2JqKTsgXHJcbiAgfVxyXG4gIC8vIC8qKiBAdmlydHVhbCAqL1xyXG4gIC8vIEdldFZhbHVlKCk6IFQgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy52YWx1ZTsgfVxyXG5cclxuICAvL1sgSGFuZGxlIEZvcm0gLyBOZ01vZGVsIF1cclxuICBASW5wdXQoKSAgZm9ybUNvbnRyb2xOYW1lIDogc3RyaW5nO1xyXG4gIHB1YmxpYyAgICBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyO1xyXG4gIEBJbnB1dCgnZm9ybUNvbnRyb2wnKSBcclxuICBwdWJsaWMgICAgY29udHJvbCAgICA6IEFic3RyYWN0Q29udHJvbDtcclxuICBwcm90ZWN0ZWQgZWxlbWVudFJlZiA6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCl7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xDb250YWluZXIgPSBpbmplY3QoQ29udHJvbENvbnRhaW5lcik7XHJcbiAgICB9IGNhdGNoIHt9XHJcbiAgICBlZmZlY3QoKCkgPT4geyBcclxuICAgICAgaWYodGhpcy5jb250cm9sKXsgdGhpcy5pbnZhbGlkID0gdGhpcy5jb250cm9sLmludmFsaWQ7IH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEB2aXJ0dWFsICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYoIXRoaXMuY29udHJvbCAmJiB0aGlzLmNvbnRyb2xDb250YWluZXIgJiYgdGhpcy5mb3JtQ29udHJvbE5hbWUpeyBcclxuICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKTsgXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKHRoaXMuY29udHJvbCl7IFxyXG4gICAgICB0aGlzLnJlcXVpcmVkLnNldCh0aGlzLmNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpKTsgIFxyXG4gICAgICB0aGlzLmludmFsaWQgID0gdGhpcy5jb250cm9sLmludmFsaWQ7XHJcblxyXG4gICAgICB0aGlzLmNvbnRyb2wuZXZlbnRzLnN1YnNjcmliZSh7IG5leHQ6IChldmVudCkgPT4geyB0aGlzLnJ1blZhbGlkYXRpb24oKTsgfSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBydW5WYWxpZGF0aW9uKCk6IHZvaWR7XHJcbiAgICBpZih0aGlzLmNvbnRyb2wpe1xyXG4gICAgICB0aGlzLnJlcXVpcmVkLnNldCh0aGlzLmNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpKTsgXHJcbiAgICAgIHRoaXMuaW52YWxpZCA9IHRoaXMuY29udHJvbC5pbnZhbGlkO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5pbnZhbGlkID0gIXRoaXMudmFsdWUoKSAmJiB0aGlzLnJlcXVpcmVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHByb3RlY3RlZCBpbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vWyBDb250cm9sVmFsdWVBY2Nlc3NvciBdXHJcbiAgLyoqIEFjaW9uYWRvIHF1YW5kbyB1bSBlbGVtZW50byBwZXJkZSBvIGZvY28uICovXHJcbiAgYmx1ciAgOiBPdXRwdXRFbWl0dGVyUmVmPFQ+ID0gb3V0cHV0PFQ+KCk7XHJcbiAgLyoqIEVtaXRpZG8gcXVhbmRvIG8gdmFsb3Igw6kgYWx0ZXJhZG8uICovXHJcbiAgY2hhbmdlOiBPdXRwdXRFbWl0dGVyUmVmPFQ+ID0gb3V0cHV0PFQ+KCk7XHJcbiAgcHJvcGFnYXRlQ2hhbmdlKG9iajogVCk6IHZvaWR7IHRoaXMub25DaGFuZ2Uob2JqKTsgdGhpcy5jaGFuZ2UuZW1pdChvYmopOzsgfVxyXG5cclxuICBvbkNoYW5nZTogKHZhbHVlOiBUKSA9PiB2b2lkID0gKHZhbHVlOiBUKSA9PiB7IHJldHVybjsgfVxyXG4gIG9uVG91Y2ggOiAodmFsdWU6IFQpID0+IHZvaWQgPSAodmFsdWU6IFQpID0+IHsgcmV0dXJuOyB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZSAoZm46ICh2YWx1ZTogVCkgPT4gdm9pZCApeyB0aGlzLm9uQ2hhbmdlID0gZm4gfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAodmFsdWU6IFQpID0+IHZvaWQgKXsgdGhpcy5vblRvdWNoICA9IGZuIH1cclxufSJdfQ==
|
|
@@ -42,25 +42,20 @@ export class InputSelectComponent extends CustomInput {
|
|
|
42
42
|
if (this.configuration().useInfiniteScroll) {
|
|
43
43
|
this.lstOptions = this.lstOptions.slice(0, this.infiniteScrollPage() * 25);
|
|
44
44
|
}
|
|
45
|
-
if (this.configuration().interface == SelectInterfaces.
|
|
46
|
-
this.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
handler: () => { this.Select(p); },
|
|
60
|
-
cssClass: p.disabled ? 'disabled' : '',
|
|
61
|
-
role: p.disabled ? 'disabled' : undefined,
|
|
62
|
-
};
|
|
63
|
-
});
|
|
45
|
+
if (this.configuration().interface == SelectInterfaces.ActionSheet) {
|
|
46
|
+
this.lstOptionsActionSheet = [...this.lstOptions.map(p => {
|
|
47
|
+
return {
|
|
48
|
+
text: p.label,
|
|
49
|
+
handler: () => { this.Select(p); },
|
|
50
|
+
role: p.selected ? 'selected' : '',
|
|
51
|
+
};
|
|
52
|
+
}),
|
|
53
|
+
{
|
|
54
|
+
text: 'Cancelar',
|
|
55
|
+
role: 'cancel',
|
|
56
|
+
data: { action: 'cancel', },
|
|
57
|
+
}
|
|
58
|
+
];
|
|
64
59
|
}
|
|
65
60
|
}
|
|
66
61
|
UpdateSelected() {
|
|
@@ -106,6 +101,7 @@ export class InputSelectComponent extends CustomInput {
|
|
|
106
101
|
});
|
|
107
102
|
this.lstOptions = [];
|
|
108
103
|
this.lstOptionsAlert = [];
|
|
104
|
+
this.lstButtonsAlert = [];
|
|
109
105
|
this.lstOptionsActionSheet = [];
|
|
110
106
|
this.infiniteScrollPage = signal(1);
|
|
111
107
|
this.isServiceAtivo = computed(() => { return this.configuration().loadFromService instanceof HttpServiceAtivo; });
|
|
@@ -142,7 +138,7 @@ export class InputSelectComponent extends CustomInput {
|
|
|
142
138
|
}
|
|
143
139
|
}
|
|
144
140
|
// [ inputContainer ]
|
|
145
|
-
if (this.inputContainer
|
|
141
|
+
if (this.inputContainer?.nativeElement?.contains(event.target)) {
|
|
146
142
|
if (["ArrowDown", "ArrowUp"].includes(event.key)) {
|
|
147
143
|
event.preventDefault();
|
|
148
144
|
this.Present(event);
|
|
@@ -150,7 +146,7 @@ export class InputSelectComponent extends CustomInput {
|
|
|
150
146
|
}
|
|
151
147
|
}
|
|
152
148
|
// [ inputSelectSearchBar ]
|
|
153
|
-
if (this.inputSearchBar
|
|
149
|
+
if (this.inputSearchBar?.nativeElement == event.target) {
|
|
154
150
|
if (event.key == "Enter") {
|
|
155
151
|
event.preventDefault();
|
|
156
152
|
// If the select is not ativo ignore the selected item
|
|
@@ -267,9 +263,6 @@ export class InputSelectComponent extends CustomInput {
|
|
|
267
263
|
await this.popover.present(event);
|
|
268
264
|
this.inputSearchBar.nativeElement.focus();
|
|
269
265
|
}
|
|
270
|
-
else if (this.configuration().interface == SelectInterfaces.Alert) {
|
|
271
|
-
await this.alert.present();
|
|
272
|
-
}
|
|
273
266
|
else if (this.configuration().interface == SelectInterfaces.ActionSheet) {
|
|
274
267
|
await this.actionSheet.present();
|
|
275
268
|
}
|
|
@@ -304,14 +297,14 @@ export class InputSelectComponent extends CustomInput {
|
|
|
304
297
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: InputSelectComponent, selector: "input-select", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: "itemsChange" }, host: { listeners: { "document:keydown": "HandleKeyboardEvent($event)" } }, providers: [
|
|
305
298
|
...InputProviderFactory.GetProviders(InputSelectComponent),
|
|
306
299
|
{ provide: CustomInput, useExisting: forwardRef(() => InputSelectComponent) },
|
|
307
|
-
], queries: [{ propertyName: "labelTemplate", first: true, predicate: SIonLabelTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "optionTemplate", first: true, predicate: SIonOptionTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "placeholderTemplate", first: true, predicate: SIonPlaceholderTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }, { propertyName: "inputSelectLabel", first: true, predicate: ["inputSelectLabel"], descendants: true }, { propertyName: "inputSearchBar", first: true, predicate: ["inputSearchBar"], descendants: true }, { propertyName: "selectContent", first: true, predicate: ["selectContent"], descendants: true }, { propertyName: "popover", first: true, predicate: SIonPopoverComponent, descendants: true }, { propertyName: "modal", first: true, predicate: IonModal, descendants: true }, { propertyName: "alert", first: true, predicate: IonAlert, descendants: true }, { propertyName: "actionSheet", first: true, predicate: IonActionSheet, descendants: true }, { propertyName: "ionContent", first: true, predicate: ["scrollContent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event);\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.manual-focus]=\"floatingVisible\"\r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"loading() || loadingFromLoader || disabled()\"\r\n [class.loading]=\"loading() || loadingFromLoader\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <div class=\"w-full truncate outline-none\" [class.pr-7]=\"!configuration().clearable\" [class.pr-10]=\"configuration().clearable\" #inputSelectLabel tabindex=\"0\">\r\n @if (!configuration().multiple && currentLabel){\r\n @if(labelTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentLabel, item: currentItems.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label\"> {{currentLabel}} </span>\r\n }\r\n }\r\n @else if (configuration().multiple && isArray(currentItems) && $any(currentItems).length) {\r\n <div class=\"w-full min-h-6 overflow-hidden relative\">\r\n <div class=\"absolute left-0 top-0 overflow-x-auto flex gap-2 size-full mask-x/2\">\r\n @for (item of currentItems; track $index) {\r\n <div class=\"translucid-border rounded-lg flex items-center justify-center gap-2 pl-2\">\r\n @if(labelTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item.label, item: item.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label\"> {{item.label}} </span>\r\n }\r\n \r\n <div class=\"h-full aspect-square flex items-center justify-center cursor-pointer\" (click)=\"Select(item); $event.stopPropagation()\">\r\n <ion-icon name=\"close\" color=\"danger\" slot=\"icon-only\"></ion-icon>\r\n </div>\r\n <!-- <ion-button class=\"m-0 h-full\" (click)=\"Select(item.value); $event.stopPropagation()\" color=\"medium\" size=\"small\" fill=\"outline\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"close\" color=\"danger\" slot=\"icon-only\"></ion-icon>\r\n </ion-button> -->\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n @if(placeholderTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"placeholderTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: this.configuration().placeholder, placeholder: this.configuration().placeholder }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label !text-medium\"> {{this.configuration().placeholder}} </span>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"absolute bottom-1 flex flex-col items-center justify-center size-7\" [class.right-1]=\"!configuration().clearable\" [class.right-8]=\"configuration().clearable\">\r\n <ion-icon class=\"-mb-0.5\" name=\"chevron-up\"></ion-icon>\r\n <ion-icon class=\"-mt-0.5\" name=\"chevron-down\"></ion-icon>\r\n </div>\r\n @if(configuration().clearable){\r\n <ion-button class=\"absolute right-1 bottom-1\" (click)=\"Clear($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n } \r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading() || loadingFromLoader\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n <div class=\"error-container\" (click)=\"configuration().loader.Refresh()\" [class.active]=\"configuration().loader.error && !loadingFromLoader\">\r\n <ion-icon class=\"text-xl\" color=\"danger\" name=\"refresh-circle\"></ion-icon>\r\n </div>\r\n</div>\r\n\r\n@if(!disabled()){\r\n @if(configuration().interface == SelectInterfaces.Popover || configuration().interface == SelectInterfaces.Dynamic){\r\n <sion-popover \r\n #popover \r\n [width]=\"inputContainer.offsetWidth + 'px'\" \r\n (onWillPresent)=\"OnPresent()\" \r\n (onDidDismiss)=\"OnDismiss()\" \r\n [anchor]=\"inputContainer\" \r\n [placement]=\"configuration().popoverConfiguration.placement\" \r\n [flip]=\"configuration().popoverConfiguration.flip\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"selectContentTemplate\"></ng-container>\r\n </sion-popover>\r\n }\r\n @if(configuration().interface == SelectInterfaces.Modal || configuration().interface == SelectInterfaces.Dynamic){\r\n <ion-modal #modal (ionModalWillPresent)=\"OnPresent()\" (didDismiss)=\"OnDismiss()\" style=\"--width: 90%; --height: 90%;\" [keepContentsMounted]=\"true\">\r\n <ng-template>\r\n <ion-header>\r\n <ion-toolbar>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"modal.dismiss()\">\r\n <ion-icon name=\"close-circle\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n \r\n <ng-container [ngTemplateOutlet]=\"selectContentTemplate\" [ngTemplateOutletContext]=\"{ modal: true }\"></ng-container>\r\n </ng-template>\r\n </ion-modal>\r\n }\r\n\r\n\r\n @if(configuration().interface == SelectInterfaces.Alert){\r\n <ion-alert #alert [header]=\"label\" [subHeader]=\"configuration().placeholder\" [buttons]=\"lstOptionsAlert\"> </ion-alert>\r\n }\r\n @if (configuration().interface == SelectInterfaces.ActionSheet ) {\r\n <ion-action-sheet #actionSheet trigger=\"open-action-sheet\" [header]=\"label\" [buttons]=\"lstOptionsActionSheet\"></ion-action-sheet>\r\n }\r\n\r\n}\r\n\r\n<ng-template #selectContentTemplate let-modal=\"modal\">\r\n <div #selectContent class=\"select-content\" [class.!size-full]=\"modal\">\r\n <div class=\"select-search-bar-container\">\r\n <div class=\"select-search-bar-icon-container !border-r-0 border-primary/70 bg-primary/70 shrink-0\">\r\n <ion-icon color=\"dark\" name=\"search\"></ion-icon>\r\n </div>\r\n <input #inputSearchBar tabindex=\"-1\" class=\"select-search-bar border-primary/70 !rounded-l-none\" [formControl]=\"searchBarControl\"/>\r\n </div> \r\n <ul class=\"select-item-list mask-y\" role=\"listbox\" [attr.aria-activedescendant]=\"'sion-is-' + selectedIndex\">\r\n <ion-content #scrollContent class=\"size-full\" [scrollY]=\"true\">\r\n @for (item of lstOptions; track item.value) { \r\n <ng-container \r\n [ngTemplateOutlet]=\"baseOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item, index: $index }\">\r\n </ng-container>\r\n }\r\n @if(configuration().useInfiniteScroll){\r\n <ion-infinite-scroll threshold=\"10px\" *ngIf=\"lstOptions.length && lstOptions.length != lstOptionsItemValue().length\" (ionInfinite)=\"AddPage($event)\">\r\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\r\n </ion-infinite-scroll>\r\n }\r\n </ion-content>\r\n </ul>\r\n @if(isServiceAtivo()){\r\n <div class=\"w-full text-xs flex items-center justify-end\">\r\n <ion-checkbox [ngModel]=\"somenteAtivos()\" (ngModelChange)=\"somenteAtivos.set($event)\" class=\"scale-75\"> Somente ativos </ion-checkbox>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #baseOptionTemplate let-item=\"item\" let-index=\"index\">\r\n <li [id]=\"'sion-is-' + index\" class=\"select-item\" [class.disabled]=\"item.disabled\" [attr.aria-selected]=\"index == selectedIndex\" (mouseenter)=\"selectedIndex = index\" (click)=\"Select(item)\">\r\n <div class=\"select-item-checkmark-conteiner\">\r\n @if(item.selected) {\r\n <ion-icon class=\"select-item-checkmark\" color=\"primary\" name=\"checkmark\"></ion-icon>\r\n }\r\n </div>\r\n @if (optionTemplate) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"optionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"select-item-label\"> {{item.label}} </span>\r\n }\r\n </li>\r\n</ng-template>", styles: [".input-container{cursor:pointer!important}.input-select-label{pointer-events:none;min-height:1.5rem;width:100%;outline:2px solid transparent;outline-offset:2px;color:var(--ion-color-dark)}.select-content{display:flex;height:18rem;width:100%;flex-direction:column;gap:.25rem;overflow:hidden;padding:.25rem}.select-content .select-search-bar-container{display:flex;width:100%;flex-shrink:1}.select-content .select-search-bar-container .select-search-bar-icon-container{display:flex;height:100%;width:1.75rem;align-items:center;justify-content:center;border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-width:1px}.select-content .select-search-bar-container .select-search-bar{width:100%;flex-shrink:1;border-radius:.375rem;border-width:1px;background-color:transparent;padding-left:.5rem;padding-right:.5rem;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}@media (orientation: portrait){.select-content .select-search-bar-container .select-search-bar{height:2.5rem}}@media (orientation: landscape){.select-content .select-search-bar-container .select-search-bar{height:1.75rem}}.select-item-list{width:100%;height:100%;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem}.select-item-list .select-item{color:var(--ion-color-dark);display:flex;width:100%;flex-shrink:0;align-items:center;justify-content:flex-start;border-radius:.375rem;padding-right:.5rem}@media (orientation: portrait){.select-item-list .select-item{min-height:2.5rem}}@media (orientation: landscape){.select-item-list .select-item{min-height:2rem}}.select-item-list .select-item{cursor:pointer}.select-item-list .select-item.disabled{opacity:.5;pointer-events:none}.select-item-list .select-item:hover,.select-item-list .select-item:focus,.select-item-list .select-item[aria-selected=true]{background-color:color-mix(in srgb,var(--ion-color-dark) 20%,transparent)}.select-item-list .select-item .select-item-checkmark-conteiner{display:flex;height:100%;width:1.75rem;flex-shrink:0;align-items:center;justify-content:center}.select-item-list .select-item .select-item-label{width:100%}.error-container{pointer-events:none;position:absolute;bottom:0;left:0;z-index:200;display:flex;width:100%;height:100%;--tw-translate-y: -3rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;justify-content:center;opacity:0;will-change:opacity,auto;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.error-container.active{pointer-events:auto!important;--tw-translate-y: 0px !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important;opacity:1!important}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonActionSheet, selector: "ion-action-sheet", inputs: ["animated", "backdropDismiss", "buttons", "cssClass", "enterAnimation", "header", "htmlAttributes", "isOpen", "keyboardClose", "leaveAnimation", "mode", "subHeader", "translucent", "trigger"] }, { kind: "component", type: i1.IonAlert, selector: "ion-alert", inputs: ["animated", "backdropDismiss", "buttons", "cssClass", "enterAnimation", "header", "htmlAttributes", "inputs", "isOpen", "keyboardClose", "leaveAnimation", "message", "mode", "subHeader", "translucent", "trigger"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "required", "value"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: i1.IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonModal, selector: "ion-modal" }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }] }); }
|
|
300
|
+
], queries: [{ propertyName: "labelTemplate", first: true, predicate: SIonLabelTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "optionTemplate", first: true, predicate: SIonOptionTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "placeholderTemplate", first: true, predicate: SIonPlaceholderTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }, { propertyName: "inputSelectLabel", first: true, predicate: ["inputSelectLabel"], descendants: true }, { propertyName: "inputSearchBar", first: true, predicate: ["inputSearchBar"], descendants: true }, { propertyName: "selectContent", first: true, predicate: ["selectContent"], descendants: true }, { propertyName: "popover", first: true, predicate: SIonPopoverComponent, descendants: true }, { propertyName: "modal", first: true, predicate: IonModal, descendants: true }, { propertyName: "alert", first: true, predicate: IonAlert, descendants: true }, { propertyName: "actionSheet", first: true, predicate: IonActionSheet, descendants: true }, { propertyName: "ionContent", first: true, predicate: ["scrollContent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event);\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.manual-focus]=\"floatingVisible\"\r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"loading() || loadingFromLoader || disabled()\"\r\n [class.loading]=\"loading() || loadingFromLoader\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <div class=\"w-full truncate outline-none\" [class.pr-7]=\"!configuration().clearable\" [class.pr-10]=\"configuration().clearable\" #inputSelectLabel tabindex=\"0\">\r\n @if (!configuration().multiple && currentLabel){\r\n @if(labelTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentLabel, item: currentItems.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label\"> {{currentLabel}} </span>\r\n }\r\n }\r\n @else if (configuration().multiple && isArray(currentItems) && $any(currentItems).length) {\r\n <div class=\"w-full min-h-6 overflow-hidden relative\">\r\n <div class=\"absolute left-0 top-0 overflow-x-auto flex gap-2 size-full mask-x/2\">\r\n @for (item of currentItems; track $index) {\r\n <div class=\"translucid-border rounded-lg flex items-center justify-center gap-2 pl-2\">\r\n @if(labelTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item.label, item: item.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label\"> {{item.label}} </span>\r\n }\r\n \r\n <div class=\"h-full aspect-square flex items-center justify-center cursor-pointer\" (click)=\"Select(item); $event.stopPropagation()\">\r\n <ion-icon name=\"close\" color=\"danger\" slot=\"icon-only\"></ion-icon>\r\n </div>\r\n <!-- <ion-button class=\"m-0 h-full\" (click)=\"Select(item.value); $event.stopPropagation()\" color=\"medium\" size=\"small\" fill=\"outline\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"close\" color=\"danger\" slot=\"icon-only\"></ion-icon>\r\n </ion-button> -->\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n @if(placeholderTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"placeholderTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: this.configuration().placeholder, placeholder: this.configuration().placeholder }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label !text-medium\"> {{this.configuration().placeholder}} </span>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"absolute bottom-1 flex flex-col items-center justify-center size-7\" [class.right-1]=\"!configuration().clearable\" [class.right-8]=\"configuration().clearable\">\r\n <ion-icon class=\"-mb-0.5\" name=\"chevron-up\"></ion-icon>\r\n <ion-icon class=\"-mt-0.5\" name=\"chevron-down\"></ion-icon>\r\n </div>\r\n @if(configuration().clearable){\r\n <ion-button class=\"absolute right-1 bottom-1\" (click)=\"Clear($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n } \r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading() || loadingFromLoader\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n <div class=\"error-container\" (click)=\"configuration().loader.Refresh()\" [class.active]=\"configuration().loader.error && !loadingFromLoader\">\r\n <ion-icon class=\"text-xl\" color=\"danger\" name=\"refresh-circle\"></ion-icon>\r\n </div>\r\n</div>\r\n\r\n@if(!disabled()){\r\n @if(configuration().interface == SelectInterfaces.Popover || configuration().interface == SelectInterfaces.Dynamic){\r\n <sion-popover \r\n #popover \r\n [width]=\"inputContainer.offsetWidth + 'px'\" \r\n (onWillPresent)=\"OnPresent()\" \r\n (onDidDismiss)=\"OnDismiss()\" \r\n [anchor]=\"inputContainer\" \r\n [placement]=\"configuration().popoverConfiguration.placement\" \r\n [flip]=\"configuration().popoverConfiguration.flip\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"selectContentTemplate\"></ng-container>\r\n </sion-popover>\r\n }\r\n @if(configuration().interface == SelectInterfaces.Modal || configuration().interface == SelectInterfaces.Dynamic){\r\n <ion-modal #modal (ionModalWillPresent)=\"OnPresent()\" (didDismiss)=\"OnDismiss()\" [initialBreakpoint]=\"0.9\" [keepContentsMounted]=\"true\">\r\n <ng-template>\r\n <ion-header>\r\n <ion-toolbar>\r\n <ion-title class=\"text-center\">\r\n {{label()}}\r\n </ion-title>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"modal.dismiss()\">\r\n <ion-icon name=\"close-circle\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n \r\n <ng-container [ngTemplateOutlet]=\"selectContentTemplate\" [ngTemplateOutletContext]=\"{ modal: true }\"></ng-container>\r\n </ng-template>\r\n </ion-modal>\r\n }\r\n\r\n @if (configuration().interface == SelectInterfaces.ActionSheet ) {\r\n <ion-action-sheet #actionSheet trigger=\"open-action-sheet\" [header]=\"label()\" [buttons]=\"lstOptionsActionSheet\"></ion-action-sheet>\r\n }\r\n}\r\n\r\n<ng-template #selectContentTemplate let-modal=\"modal\">\r\n <div #selectContent class=\"select-content\" [class.!size-full]=\"modal\">\r\n <div class=\"select-search-bar-container\">\r\n <div class=\"select-search-bar-icon-container !border-r-0 border-primary/70 bg-primary/70 shrink-0\">\r\n <ion-icon color=\"dark\" name=\"search\"></ion-icon>\r\n </div>\r\n <input #inputSearchBar tabindex=\"-1\" class=\"select-search-bar border-primary/70 !rounded-l-none\" [formControl]=\"searchBarControl\"/>\r\n </div> \r\n <ul class=\"select-item-list mask-y\" role=\"listbox\" [attr.aria-activedescendant]=\"'sion-is-' + selectedIndex\">\r\n <ion-content #scrollContent class=\"size-full\" [scrollY]=\"true\">\r\n @for (item of lstOptions; track item.value) { \r\n <ng-container \r\n [ngTemplateOutlet]=\"baseOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item, index: $index }\">\r\n </ng-container>\r\n }\r\n @if(configuration().useInfiniteScroll){\r\n <ion-infinite-scroll threshold=\"10px\" *ngIf=\"lstOptions.length && lstOptions.length != lstOptionsItemValue().length\" (ionInfinite)=\"AddPage($event)\">\r\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\r\n </ion-infinite-scroll>\r\n }\r\n </ion-content>\r\n </ul>\r\n @if(isServiceAtivo()){\r\n <div class=\"w-full text-xs flex items-center justify-end\">\r\n <ion-checkbox [ngModel]=\"somenteAtivos()\" (ngModelChange)=\"somenteAtivos.set($event)\" class=\"scale-75\"> Somente ativos </ion-checkbox>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #baseOptionTemplate let-item=\"item\" let-index=\"index\">\r\n <li [id]=\"'sion-is-' + index\" class=\"select-item\" [class.disabled]=\"item.disabled\" [attr.aria-selected]=\"index == selectedIndex\" (mouseenter)=\"selectedIndex = index\" (click)=\"Select(item)\">\r\n <div class=\"select-item-checkmark-conteiner\">\r\n @if(item.selected) {\r\n <ion-icon class=\"select-item-checkmark\" color=\"primary\" name=\"checkmark\"></ion-icon>\r\n }\r\n </div>\r\n @if (optionTemplate) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"optionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"select-item-label\"> {{item.label}} </span>\r\n }\r\n </li>\r\n</ng-template>", styles: [".input-container{cursor:pointer!important}.input-select-label{pointer-events:none;min-height:1.5rem;width:100%;outline:2px solid transparent;outline-offset:2px;color:var(--ion-color-dark)}.select-content{display:flex;height:18rem;width:100%;flex-direction:column;gap:.25rem;overflow:hidden;padding:.25rem}.select-content .select-search-bar-container{display:flex;width:100%;flex-shrink:1}.select-content .select-search-bar-container .select-search-bar-icon-container{display:flex;height:100%;width:1.75rem;align-items:center;justify-content:center;border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-width:1px}.select-content .select-search-bar-container .select-search-bar{width:100%;flex-shrink:1;border-radius:.375rem;border-width:1px;background-color:transparent;padding-left:.5rem;padding-right:.5rem;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}@media (orientation: portrait){.select-content .select-search-bar-container .select-search-bar{height:2.5rem}}@media (orientation: landscape){.select-content .select-search-bar-container .select-search-bar{height:1.75rem}}.select-item-list{width:100%;height:100%;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem}.select-item-list .select-item{color:var(--ion-color-dark);display:flex;width:100%;flex-shrink:0;align-items:center;justify-content:flex-start;border-radius:.375rem;padding-right:.5rem}@media (orientation: portrait){.select-item-list .select-item{min-height:2.5rem}}@media (orientation: landscape){.select-item-list .select-item{min-height:2rem}}.select-item-list .select-item{cursor:pointer}.select-item-list .select-item.disabled{opacity:.5;pointer-events:none}.select-item-list .select-item:hover,.select-item-list .select-item:focus,.select-item-list .select-item[aria-selected=true]{background-color:color-mix(in srgb,var(--ion-color-dark) 20%,transparent)}.select-item-list .select-item .select-item-checkmark-conteiner{display:flex;height:100%;width:1.75rem;flex-shrink:0;align-items:center;justify-content:center}.select-item-list .select-item .select-item-label{width:100%}.error-container{pointer-events:none;position:absolute;bottom:0;left:0;z-index:200;display:flex;width:100%;height:100%;--tw-translate-y: -3rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;justify-content:center;opacity:0;will-change:opacity,auto;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.error-container.active{pointer-events:auto!important;--tw-translate-y: 0px !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important;opacity:1!important}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonActionSheet, selector: "ion-action-sheet", inputs: ["animated", "backdropDismiss", "buttons", "cssClass", "enterAnimation", "header", "htmlAttributes", "isOpen", "keyboardClose", "leaveAnimation", "mode", "subHeader", "translucent", "trigger"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "required", "value"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: i1.IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonModal, selector: "ion-modal" }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }] }); }
|
|
308
301
|
}
|
|
309
302
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputSelectComponent, decorators: [{
|
|
310
303
|
type: Component,
|
|
311
304
|
args: [{ selector: 'input-select', providers: [
|
|
312
305
|
...InputProviderFactory.GetProviders(InputSelectComponent),
|
|
313
306
|
{ provide: CustomInput, useExisting: forwardRef(() => InputSelectComponent) },
|
|
314
|
-
], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event);\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.manual-focus]=\"floatingVisible\"\r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"loading() || loadingFromLoader || disabled()\"\r\n [class.loading]=\"loading() || loadingFromLoader\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <div class=\"w-full truncate outline-none\" [class.pr-7]=\"!configuration().clearable\" [class.pr-10]=\"configuration().clearable\" #inputSelectLabel tabindex=\"0\">\r\n @if (!configuration().multiple && currentLabel){\r\n @if(labelTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentLabel, item: currentItems.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label\"> {{currentLabel}} </span>\r\n }\r\n }\r\n @else if (configuration().multiple && isArray(currentItems) && $any(currentItems).length) {\r\n <div class=\"w-full min-h-6 overflow-hidden relative\">\r\n <div class=\"absolute left-0 top-0 overflow-x-auto flex gap-2 size-full mask-x/2\">\r\n @for (item of currentItems; track $index) {\r\n <div class=\"translucid-border rounded-lg flex items-center justify-center gap-2 pl-2\">\r\n @if(labelTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item.label, item: item.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label\"> {{item.label}} </span>\r\n }\r\n \r\n <div class=\"h-full aspect-square flex items-center justify-center cursor-pointer\" (click)=\"Select(item); $event.stopPropagation()\">\r\n <ion-icon name=\"close\" color=\"danger\" slot=\"icon-only\"></ion-icon>\r\n </div>\r\n <!-- <ion-button class=\"m-0 h-full\" (click)=\"Select(item.value); $event.stopPropagation()\" color=\"medium\" size=\"small\" fill=\"outline\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"close\" color=\"danger\" slot=\"icon-only\"></ion-icon>\r\n </ion-button> -->\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n @if(placeholderTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"placeholderTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: this.configuration().placeholder, placeholder: this.configuration().placeholder }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label !text-medium\"> {{this.configuration().placeholder}} </span>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"absolute bottom-1 flex flex-col items-center justify-center size-7\" [class.right-1]=\"!configuration().clearable\" [class.right-8]=\"configuration().clearable\">\r\n <ion-icon class=\"-mb-0.5\" name=\"chevron-up\"></ion-icon>\r\n <ion-icon class=\"-mt-0.5\" name=\"chevron-down\"></ion-icon>\r\n </div>\r\n @if(configuration().clearable){\r\n <ion-button class=\"absolute right-1 bottom-1\" (click)=\"Clear($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n } \r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading() || loadingFromLoader\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n <div class=\"error-container\" (click)=\"configuration().loader.Refresh()\" [class.active]=\"configuration().loader.error && !loadingFromLoader\">\r\n <ion-icon class=\"text-xl\" color=\"danger\" name=\"refresh-circle\"></ion-icon>\r\n </div>\r\n</div>\r\n\r\n@if(!disabled()){\r\n @if(configuration().interface == SelectInterfaces.Popover || configuration().interface == SelectInterfaces.Dynamic){\r\n <sion-popover \r\n #popover \r\n [width]=\"inputContainer.offsetWidth + 'px'\" \r\n (onWillPresent)=\"OnPresent()\" \r\n (onDidDismiss)=\"OnDismiss()\" \r\n [anchor]=\"inputContainer\" \r\n [placement]=\"configuration().popoverConfiguration.placement\" \r\n [flip]=\"configuration().popoverConfiguration.flip\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"selectContentTemplate\"></ng-container>\r\n </sion-popover>\r\n }\r\n @if(configuration().interface == SelectInterfaces.Modal || configuration().interface == SelectInterfaces.Dynamic){\r\n <ion-modal #modal (ionModalWillPresent)=\"OnPresent()\" (didDismiss)=\"OnDismiss()\" style=\"--width: 90%; --height: 90%;\" [keepContentsMounted]=\"true\">\r\n <ng-template>\r\n <ion-header>\r\n <ion-toolbar>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"modal.dismiss()\">\r\n <ion-icon name=\"close-circle\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n \r\n <ng-container [ngTemplateOutlet]=\"selectContentTemplate\" [ngTemplateOutletContext]=\"{ modal: true }\"></ng-container>\r\n </ng-template>\r\n </ion-modal>\r\n }\r\n\r\n\r\n @if(configuration().interface == SelectInterfaces.Alert){\r\n <ion-alert #alert [header]=\"label\" [subHeader]=\"configuration().placeholder\" [buttons]=\"lstOptionsAlert\"> </ion-alert>\r\n }\r\n @if (configuration().interface == SelectInterfaces.ActionSheet ) {\r\n <ion-action-sheet #actionSheet trigger=\"open-action-sheet\" [header]=\"label\" [buttons]=\"lstOptionsActionSheet\"></ion-action-sheet>\r\n }\r\n\r\n}\r\n\r\n<ng-template #selectContentTemplate let-modal=\"modal\">\r\n <div #selectContent class=\"select-content\" [class.!size-full]=\"modal\">\r\n <div class=\"select-search-bar-container\">\r\n <div class=\"select-search-bar-icon-container !border-r-0 border-primary/70 bg-primary/70 shrink-0\">\r\n <ion-icon color=\"dark\" name=\"search\"></ion-icon>\r\n </div>\r\n <input #inputSearchBar tabindex=\"-1\" class=\"select-search-bar border-primary/70 !rounded-l-none\" [formControl]=\"searchBarControl\"/>\r\n </div> \r\n <ul class=\"select-item-list mask-y\" role=\"listbox\" [attr.aria-activedescendant]=\"'sion-is-' + selectedIndex\">\r\n <ion-content #scrollContent class=\"size-full\" [scrollY]=\"true\">\r\n @for (item of lstOptions; track item.value) { \r\n <ng-container \r\n [ngTemplateOutlet]=\"baseOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item, index: $index }\">\r\n </ng-container>\r\n }\r\n @if(configuration().useInfiniteScroll){\r\n <ion-infinite-scroll threshold=\"10px\" *ngIf=\"lstOptions.length && lstOptions.length != lstOptionsItemValue().length\" (ionInfinite)=\"AddPage($event)\">\r\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\r\n </ion-infinite-scroll>\r\n }\r\n </ion-content>\r\n </ul>\r\n @if(isServiceAtivo()){\r\n <div class=\"w-full text-xs flex items-center justify-end\">\r\n <ion-checkbox [ngModel]=\"somenteAtivos()\" (ngModelChange)=\"somenteAtivos.set($event)\" class=\"scale-75\"> Somente ativos </ion-checkbox>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #baseOptionTemplate let-item=\"item\" let-index=\"index\">\r\n <li [id]=\"'sion-is-' + index\" class=\"select-item\" [class.disabled]=\"item.disabled\" [attr.aria-selected]=\"index == selectedIndex\" (mouseenter)=\"selectedIndex = index\" (click)=\"Select(item)\">\r\n <div class=\"select-item-checkmark-conteiner\">\r\n @if(item.selected) {\r\n <ion-icon class=\"select-item-checkmark\" color=\"primary\" name=\"checkmark\"></ion-icon>\r\n }\r\n </div>\r\n @if (optionTemplate) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"optionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"select-item-label\"> {{item.label}} </span>\r\n }\r\n </li>\r\n</ng-template>", styles: [".input-container{cursor:pointer!important}.input-select-label{pointer-events:none;min-height:1.5rem;width:100%;outline:2px solid transparent;outline-offset:2px;color:var(--ion-color-dark)}.select-content{display:flex;height:18rem;width:100%;flex-direction:column;gap:.25rem;overflow:hidden;padding:.25rem}.select-content .select-search-bar-container{display:flex;width:100%;flex-shrink:1}.select-content .select-search-bar-container .select-search-bar-icon-container{display:flex;height:100%;width:1.75rem;align-items:center;justify-content:center;border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-width:1px}.select-content .select-search-bar-container .select-search-bar{width:100%;flex-shrink:1;border-radius:.375rem;border-width:1px;background-color:transparent;padding-left:.5rem;padding-right:.5rem;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}@media (orientation: portrait){.select-content .select-search-bar-container .select-search-bar{height:2.5rem}}@media (orientation: landscape){.select-content .select-search-bar-container .select-search-bar{height:1.75rem}}.select-item-list{width:100%;height:100%;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem}.select-item-list .select-item{color:var(--ion-color-dark);display:flex;width:100%;flex-shrink:0;align-items:center;justify-content:flex-start;border-radius:.375rem;padding-right:.5rem}@media (orientation: portrait){.select-item-list .select-item{min-height:2.5rem}}@media (orientation: landscape){.select-item-list .select-item{min-height:2rem}}.select-item-list .select-item{cursor:pointer}.select-item-list .select-item.disabled{opacity:.5;pointer-events:none}.select-item-list .select-item:hover,.select-item-list .select-item:focus,.select-item-list .select-item[aria-selected=true]{background-color:color-mix(in srgb,var(--ion-color-dark) 20%,transparent)}.select-item-list .select-item .select-item-checkmark-conteiner{display:flex;height:100%;width:1.75rem;flex-shrink:0;align-items:center;justify-content:center}.select-item-list .select-item .select-item-label{width:100%}.error-container{pointer-events:none;position:absolute;bottom:0;left:0;z-index:200;display:flex;width:100%;height:100%;--tw-translate-y: -3rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;justify-content:center;opacity:0;will-change:opacity,auto;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.error-container.active{pointer-events:auto!important;--tw-translate-y: 0px !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important;opacity:1!important}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
307
|
+
], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"setFocus($event);\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.manual-focus]=\"floatingVisible\"\r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"loading() || loadingFromLoader || disabled()\"\r\n [class.loading]=\"loading() || loadingFromLoader\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <div class=\"w-full truncate outline-none\" [class.pr-7]=\"!configuration().clearable\" [class.pr-10]=\"configuration().clearable\" #inputSelectLabel tabindex=\"0\">\r\n @if (!configuration().multiple && currentLabel){\r\n @if(labelTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentLabel, item: currentItems.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label\"> {{currentLabel}} </span>\r\n }\r\n }\r\n @else if (configuration().multiple && isArray(currentItems) && $any(currentItems).length) {\r\n <div class=\"w-full min-h-6 overflow-hidden relative\">\r\n <div class=\"absolute left-0 top-0 overflow-x-auto flex gap-2 size-full mask-x/2\">\r\n @for (item of currentItems; track $index) {\r\n <div class=\"translucid-border rounded-lg flex items-center justify-center gap-2 pl-2\">\r\n @if(labelTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item.label, item: item.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label\"> {{item.label}} </span>\r\n }\r\n \r\n <div class=\"h-full aspect-square flex items-center justify-center cursor-pointer\" (click)=\"Select(item); $event.stopPropagation()\">\r\n <ion-icon name=\"close\" color=\"danger\" slot=\"icon-only\"></ion-icon>\r\n </div>\r\n <!-- <ion-button class=\"m-0 h-full\" (click)=\"Select(item.value); $event.stopPropagation()\" color=\"medium\" size=\"small\" fill=\"outline\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"close\" color=\"danger\" slot=\"icon-only\"></ion-icon>\r\n </ion-button> -->\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n @if(placeholderTemplate){\r\n <ng-container \r\n [ngTemplateOutlet]=\"placeholderTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: this.configuration().placeholder, placeholder: this.configuration().placeholder }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"input-select-label !text-medium\"> {{this.configuration().placeholder}} </span>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"absolute bottom-1 flex flex-col items-center justify-center size-7\" [class.right-1]=\"!configuration().clearable\" [class.right-8]=\"configuration().clearable\">\r\n <ion-icon class=\"-mb-0.5\" name=\"chevron-up\"></ion-icon>\r\n <ion-icon class=\"-mt-0.5\" name=\"chevron-down\"></ion-icon>\r\n </div>\r\n @if(configuration().clearable){\r\n <ion-button class=\"absolute right-1 bottom-1\" (click)=\"Clear($event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon name=\"close\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n } \r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading() || loadingFromLoader\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n <div class=\"error-container\" (click)=\"configuration().loader.Refresh()\" [class.active]=\"configuration().loader.error && !loadingFromLoader\">\r\n <ion-icon class=\"text-xl\" color=\"danger\" name=\"refresh-circle\"></ion-icon>\r\n </div>\r\n</div>\r\n\r\n@if(!disabled()){\r\n @if(configuration().interface == SelectInterfaces.Popover || configuration().interface == SelectInterfaces.Dynamic){\r\n <sion-popover \r\n #popover \r\n [width]=\"inputContainer.offsetWidth + 'px'\" \r\n (onWillPresent)=\"OnPresent()\" \r\n (onDidDismiss)=\"OnDismiss()\" \r\n [anchor]=\"inputContainer\" \r\n [placement]=\"configuration().popoverConfiguration.placement\" \r\n [flip]=\"configuration().popoverConfiguration.flip\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"selectContentTemplate\"></ng-container>\r\n </sion-popover>\r\n }\r\n @if(configuration().interface == SelectInterfaces.Modal || configuration().interface == SelectInterfaces.Dynamic){\r\n <ion-modal #modal (ionModalWillPresent)=\"OnPresent()\" (didDismiss)=\"OnDismiss()\" [initialBreakpoint]=\"0.9\" [keepContentsMounted]=\"true\">\r\n <ng-template>\r\n <ion-header>\r\n <ion-toolbar>\r\n <ion-title class=\"text-center\">\r\n {{label()}}\r\n </ion-title>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"modal.dismiss()\">\r\n <ion-icon name=\"close-circle\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n \r\n <ng-container [ngTemplateOutlet]=\"selectContentTemplate\" [ngTemplateOutletContext]=\"{ modal: true }\"></ng-container>\r\n </ng-template>\r\n </ion-modal>\r\n }\r\n\r\n @if (configuration().interface == SelectInterfaces.ActionSheet ) {\r\n <ion-action-sheet #actionSheet trigger=\"open-action-sheet\" [header]=\"label()\" [buttons]=\"lstOptionsActionSheet\"></ion-action-sheet>\r\n }\r\n}\r\n\r\n<ng-template #selectContentTemplate let-modal=\"modal\">\r\n <div #selectContent class=\"select-content\" [class.!size-full]=\"modal\">\r\n <div class=\"select-search-bar-container\">\r\n <div class=\"select-search-bar-icon-container !border-r-0 border-primary/70 bg-primary/70 shrink-0\">\r\n <ion-icon color=\"dark\" name=\"search\"></ion-icon>\r\n </div>\r\n <input #inputSearchBar tabindex=\"-1\" class=\"select-search-bar border-primary/70 !rounded-l-none\" [formControl]=\"searchBarControl\"/>\r\n </div> \r\n <ul class=\"select-item-list mask-y\" role=\"listbox\" [attr.aria-activedescendant]=\"'sion-is-' + selectedIndex\">\r\n <ion-content #scrollContent class=\"size-full\" [scrollY]=\"true\">\r\n @for (item of lstOptions; track item.value) { \r\n <ng-container \r\n [ngTemplateOutlet]=\"baseOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item, index: $index }\">\r\n </ng-container>\r\n }\r\n @if(configuration().useInfiniteScroll){\r\n <ion-infinite-scroll threshold=\"10px\" *ngIf=\"lstOptions.length && lstOptions.length != lstOptionsItemValue().length\" (ionInfinite)=\"AddPage($event)\">\r\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\r\n </ion-infinite-scroll>\r\n }\r\n </ion-content>\r\n </ul>\r\n @if(isServiceAtivo()){\r\n <div class=\"w-full text-xs flex items-center justify-end\">\r\n <ion-checkbox [ngModel]=\"somenteAtivos()\" (ngModelChange)=\"somenteAtivos.set($event)\" class=\"scale-75\"> Somente ativos </ion-checkbox>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #baseOptionTemplate let-item=\"item\" let-index=\"index\">\r\n <li [id]=\"'sion-is-' + index\" class=\"select-item\" [class.disabled]=\"item.disabled\" [attr.aria-selected]=\"index == selectedIndex\" (mouseenter)=\"selectedIndex = index\" (click)=\"Select(item)\">\r\n <div class=\"select-item-checkmark-conteiner\">\r\n @if(item.selected) {\r\n <ion-icon class=\"select-item-checkmark\" color=\"primary\" name=\"checkmark\"></ion-icon>\r\n }\r\n </div>\r\n @if (optionTemplate) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"optionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item.item }\">\r\n </ng-container>\r\n }\r\n @else {\r\n <span class=\"select-item-label\"> {{item.label}} </span>\r\n }\r\n </li>\r\n</ng-template>", styles: [".input-container{cursor:pointer!important}.input-select-label{pointer-events:none;min-height:1.5rem;width:100%;outline:2px solid transparent;outline-offset:2px;color:var(--ion-color-dark)}.select-content{display:flex;height:18rem;width:100%;flex-direction:column;gap:.25rem;overflow:hidden;padding:.25rem}.select-content .select-search-bar-container{display:flex;width:100%;flex-shrink:1}.select-content .select-search-bar-container .select-search-bar-icon-container{display:flex;height:100%;width:1.75rem;align-items:center;justify-content:center;border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-width:1px}.select-content .select-search-bar-container .select-search-bar{width:100%;flex-shrink:1;border-radius:.375rem;border-width:1px;background-color:transparent;padding-left:.5rem;padding-right:.5rem;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}@media (orientation: portrait){.select-content .select-search-bar-container .select-search-bar{height:2.5rem}}@media (orientation: landscape){.select-content .select-search-bar-container .select-search-bar{height:1.75rem}}.select-item-list{width:100%;height:100%;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem}.select-item-list .select-item{color:var(--ion-color-dark);display:flex;width:100%;flex-shrink:0;align-items:center;justify-content:flex-start;border-radius:.375rem;padding-right:.5rem}@media (orientation: portrait){.select-item-list .select-item{min-height:2.5rem}}@media (orientation: landscape){.select-item-list .select-item{min-height:2rem}}.select-item-list .select-item{cursor:pointer}.select-item-list .select-item.disabled{opacity:.5;pointer-events:none}.select-item-list .select-item:hover,.select-item-list .select-item:focus,.select-item-list .select-item[aria-selected=true]{background-color:color-mix(in srgb,var(--ion-color-dark) 20%,transparent)}.select-item-list .select-item .select-item-checkmark-conteiner{display:flex;height:100%;width:1.75rem;flex-shrink:0;align-items:center;justify-content:center}.select-item-list .select-item .select-item-label{width:100%}.error-container{pointer-events:none;position:absolute;bottom:0;left:0;z-index:200;display:flex;width:100%;height:100%;--tw-translate-y: -3rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;justify-content:center;opacity:0;will-change:opacity,auto;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.error-container.active{pointer-events:auto!important;--tw-translate-y: 0px !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important;opacity:1!important}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 2px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:auto;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
315
308
|
}], ctorParameters: () => [], propDecorators: { labelTemplate: [{
|
|
316
309
|
type: ContentChild,
|
|
317
310
|
args: [SIonLabelTemplateDirective, { read: TemplateRef }]
|
|
@@ -361,4 +354,4 @@ class ItemValue {
|
|
|
361
354
|
function isPortrait() {
|
|
362
355
|
return window.innerHeight > window.innerWidth;
|
|
363
356
|
}
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFlLEtBQUssRUFBZSxNQUFNLEVBQVUsV0FBVyxFQUFFLFNBQVMsR0FBbUIsTUFBTSxlQUFlLENBQUM7QUFDaE8sT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBeUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkosT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpELE9BQU8sRUFBOEIsZ0NBQWdDLEVBQUUs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LFFBQVE7Z0JBQ1EsV0FBVztzQkFBckMsU0FBUzt1QkFBQyxjQUFjO2dCQUlHLFVBQVU7c0JBQXJDLFNBQVM7dUJBQUMsZUFBZTs7QUEyRDVCLE1BQU0sU0FBUztJQUFmO1FBR0UsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixhQUFRLEdBQVksS0FBSyxDQUFDO0lBQzVCLENBQUM7Q0FBQTtBQUVELFNBQVMsVUFBVTtJQUNqQixPQUFPLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBjb21wdXRlZCwgQ29udGVudENoaWxkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgaW5wdXQsIElucHV0U2lnbmFsLCBtb2RlbCwgTW9kZWxTaWduYWwsIHNpZ25hbCwgU2lnbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBXcml0YWJsZVNpZ25hbCwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGlvblNoZWV0QnV0dG9uLCBBbGVydEJ1dHRvbiwgQWxlcnRJbnB1dCwgSW5maW5pdGVTY3JvbGxDdXN0b21FdmVudCwgSW9uQWN0aW9uU2hlZXQsIElvbkFsZXJ0LCBJb25Db250ZW50LCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpbmRMYWJlbEZhY3RvcnksIEJpbmRWYWx1ZUZhY3RvcnksIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiwgU2VsZWN0SW50ZXJmYWNlcyB9IGZyb20gJy4vaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BvcG92ZXIvc2lvbi1wb3BvdmVyL3Npb24tcG9wb3Zlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dFByb3ZpZGVyRmFjdG9yeSB9IGZyb20gJy4uL2lucHV0LXByb3ZpZGVyLWZhY3RvcnknO1xyXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uL2N1c3RvbS1pbnB1dCc7XHJcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgUGxhY2Vob2xkZXJUZW1wbGF0ZUNvbnRleHQsIFNJb25QbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Npb24tcGxhY2Vob2xkZXItdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgT3B0aW9uVGVtcGxhdGVDb250ZXh0LCBTSW9uT3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2lvbi1vcHRpb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGFiZWxUZW1wbGF0ZUNvbnRleHQsIFNJb25MYWJlbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Npb24tbGFiZWwtdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VBdGl2byB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLmF0aXZvLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dC1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXNlbGVjdC5jb21wb25lbnQuc2NzcycsICcuLi9pbnB1dHMuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgLi4uSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXJzKElucHV0U2VsZWN0Q29tcG9uZW50KSxcclxuICAgIHsgcHJvdmlkZTogQ3VzdG9tSW5wdXQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0U2VsZWN0Q29tcG9uZW50KSB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFNlbGVjdENvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIEN1c3RvbUlucHV0PFQgfCBUW10+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIFNlbGVjdEludGVyZmFjZXMgPSBTZWxlY3RJbnRlcmZhY2VzO1xyXG5cclxuICAvKiogSXRlbXMgZGlzcG9uw612ZWlzIG5vIHNlbGVjdCAqL1xyXG4gIGl0ZW1zICAgICAgICAgICAgOiBNb2RlbFNpZ25hbDxhbnlbXT4gICAgICAgICAgICAgICAgICAgICAgPSBtb2RlbDxhbnlbXT4oW10pO1xyXG4gIC8qKiBDb25maWd1cmHDp8OjbyBkbyBzZWxlY3QgKi9cclxuICBjb25maWd1cmF0aW9uICAgIDogSW5wdXRTaWduYWw8SW5wdXRTZWxlY3RDb25maWd1cmF0aW9uPiA9IGlucHV0PElucHV0U2VsZWN0Q29uZmlndXJhdGlvbj4obmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigpKTsgXHJcbiAgbG9hZGluZ0Zyb21Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3VycmVudExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgY3VycmVudEl0ZW1zIDogYW55IHwgSXRlbVZhbHVlPGFueT5bXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBcclxuICBTZXRDdXJyZW50SXRlbUxhYmVsKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICB0aGlzLmN1cnJlbnRMYWJlbCA9IHRoaXMubHN0T3B0aW9uc0l0ZW1WYWx1ZSgpLmZpbHRlcihwID0+IHAuc2VsZWN0ZWQpLm1hcChwID0+IHAubGFiZWwpLmpvaW4oJywgJyk7XHJcbiAgICAgIHRoaXMuY3VycmVudEl0ZW1zID0gdGhpcy5sc3RPcHRpb25zSXRlbVZhbHVlKCkuZmlsdGVyKHAgPT4gcC5zZWxlY3RlZCk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICB0aGlzLmN1cnJlbnRMYWJlbCA9IHRoaXMubHN0T3B0aW9uc0l0ZW1WYWx1ZSgpLmZpbmQocCA9PiBwLnNlbGVjdGVkKT8ubGFiZWw7XHJcbiAgICAgIHRoaXMuY3VycmVudEl0ZW1zID0gdGhpcy5sc3RPcHRpb25zSXRlbVZhbHVlKCkuZmluZChwID0+IHAuc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbHN0T3B0aW9uc0l0ZW1WYWx1ZTogU2lnbmFsPEl0ZW1WYWx1ZTxhbnk+W10+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgYmluZExhYmVsID0gQmluZExhYmVsRmFjdG9yeSh0aGlzLmNvbmZpZ3VyYXRpb24oKSk7XHJcbiAgICBjb25zdCBiaW5kVmFsdWUgPSBCaW5kVmFsdWVGYWN0b3J5KHRoaXMuY29uZmlndXJhdGlvbigpKTtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zKCkuZmlsdGVyKHAgPT4gKHRoaXMuc29tZW50ZUF0aXZvcygpICYmIHRoaXMuaXNTZXJ2aWNlQXRpdm8oKSkgPyBwLmF0aXZvIDogdHJ1ZSkgLm1hcChwID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IG5ldyBJdGVtVmFsdWU8YW55PigpO1xyXG4gICAgICBpdGVtLmxhYmVsID0gYmluZExhYmVsKHApO1xyXG4gICAgICBpdGVtLnZhbHVlID0gYmluZFZhbHVlKHApO1xyXG4gICAgICBpdGVtLml0ZW0gID0gcDtcclxuICAgICAgaXRlbS5zZWxlY3RlZCA9IHRoaXMudmFsdWUoKSA9PSBpdGVtLnZhbHVlO1xyXG4gICAgICBpdGVtLmRpc2FibGVkID0gcC5kaXNhYmxlZCB8fCBmYWxzZSB8fCAodGhpcy5pc1NlcnZpY2VBdGl2bygpICYmIHAuYXRpdm8gPT0gZmFsc2UpO1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBsc3RPcHRpb25zOiBJdGVtVmFsdWU8YW55PltdID0gW107XHJcbiAgbHN0T3B0aW9uc0FsZXJ0ICAgICAgOiBBbGVydElucHV0W10gPSBbXTtcclxuICBsc3RPcHRpb25zQWN0aW9uU2hlZXQ6IEFjdGlvblNoZWV0QnV0dG9uW10gPSBbXTtcclxuXHJcbiAgaW5maW5pdGVTY3JvbGxQYWdlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsPG51bWJlcj4oMSk7XHJcbiAgQWRkUGFnZShldmVudDogSW5maW5pdGVTY3JvbGxDdXN0b21FdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2Uuc2V0KHRoaXMuaW5maW5pdGVTY3JvbGxQYWdlKCkgKyAxKTtcclxuICAgIGV2ZW50LnRhcmdldC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgVXBkYXRlTHN0T3B0aW9ucyhzZWFyY2g6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy8gVXBkYXRlIHRoZSBzZWFyY2ggXHJcbiAgICBpZiAoc2VhcmNoKSB7XHJcbiAgICAgIHRoaXMubHN0T3B0aW9ucyA9IFNlYXJjaDxJdGVtVmFsdWU8YW55Pj4odGhpcy5sc3RPcHRpb25zSXRlbVZhbHVlKCksIHNlYXJjaCwgKGl0ZW06IEl0ZW1WYWx1ZTxhbnk+KSA9PiBpdGVtLmxhYmVsKTtcclxuICAgIH0gZWxzZSB7IFxyXG4gICAgICB0aGlzLmxzdE9wdGlvbnMgPSB0aGlzLmxzdE9wdGlvbnNJdGVtVmFsdWUoKTsgXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS51c2VJbmZpbml0ZVNjcm9sbCl7XHJcbiAgICAgIHRoaXMubHN0T3B0aW9ucyA9IHRoaXMubHN0T3B0aW9ucy5zbGljZSgwLCB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZSgpICogMjUpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuQWxlcnQpe1xyXG4gICAgICB0aGlzLmxzdE9wdGlvbnNBbGVydCA9IHRoaXMubHN0T3B0aW9ucy5tYXAocCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGxhYmVsOiBwLmxhYmVsLFxyXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4geyB0aGlzLlNlbGVjdChwKTsgfSxcclxuICAgICAgICAgIGNzc0NsYXNzOiBwLmRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnLFxyXG4gICAgICAgICAgcm9sZSAgICA6IHAuZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkFjdGlvblNoZWV0KXtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zQWN0aW9uU2hlZXQgPSB0aGlzLmxzdE9wdGlvbnMubWFwKHAgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB0ZXh0OiBwLmxhYmVsLFxyXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4geyB0aGlzLlNlbGVjdChwKTsgfSxcclxuICAgICAgICAgIGNzc0NsYXNzOiBwLmRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnLFxyXG4gICAgICAgICAgcm9sZSAgICA6IHAuZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBVcGRhdGVTZWxlY3RlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIGNvbnN0IGFyciA9IHRoaXMudmFsdWUoKSBhcyBhbnlbXSB8fCBbXTtcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubHN0T3B0aW9ucykge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBhcnIuZmluZChwID0+IHAgPT0gaXRlbS52YWx1ZSkgIT0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxzdE9wdGlvbnMuZm9yRWFjaCgoaXRlbTogSXRlbVZhbHVlPGFueT4pID0+IHsgaXRlbS5zZWxlY3RlZCA9IHRoaXMudmFsdWUoKSA9PSBpdGVtLnZhbHVlOyB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuU2V0Q3VycmVudEl0ZW1MYWJlbCgpO1xyXG4gIH1cclxuXHJcbiAgQENvbnRlbnRDaGlsZChTSW9uTGFiZWxUZW1wbGF0ZURpcmVjdGl2ZSAgICAgICwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBsYWJlbFRlbXBsYXRlICAgICAgOiBUZW1wbGF0ZVJlZjxMYWJlbFRlbXBsYXRlQ29udGV4dDxUPj47XHJcbiAgQENvbnRlbnRDaGlsZChTSW9uT3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUgICAgICwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBvcHRpb25UZW1wbGF0ZSAgICAgOiBUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ8VD4+O1xyXG4gIEBDb250ZW50Q2hpbGQoU0lvblBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgcGxhY2Vob2xkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UGxhY2Vob2xkZXJUZW1wbGF0ZUNvbnRleHQ+O1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRDb250YWluZXInKSBpbnB1dENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRTZWxlY3RMYWJlbCcpIGlucHV0U2VsZWN0TGFiZWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIG92ZXJyaWRlIHNldEZvY3VzKGV2ZW50OiBNb3VzZUV2ZW50IHwgbnVsbCk6IHZvaWQgeyBcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLmxvYWRlci5lcnJvciB8fCB0aGlzLmxvYWRpbmdGcm9tTG9hZGVyIHx8IHRoaXMubG9hZGluZygpIHx8IHRoaXMuZGlzYWJsZWQoKSkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuUHJlc2VudChldmVudCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgXHJcbiAgICBzdXBlcigpOyBcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuVXBkYXRlTHN0T3B0aW9ucyh0aGlzLnNlYXJjaFZhbHVlKCkpO1xyXG4gICAgICB0aGlzLlVwZGF0ZVNlbGVjdGVkKCk7XHJcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pIFxyXG4gIH1cclxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24oKS5sb2FkZXIuQWRkQ29tcG9uZW50KHRoaXMpO1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uKCkubG9hZGVyLlJlZnJlc2godGhpcy5pdGVtcygpKTtcclxuICB9XHJcbiAgaXNTZXJ2aWNlQXRpdm86IFNpZ25hbDxib29sZWFuPiA9IGNvbXB1dGVkKCgpID0+IHsgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbigpLmxvYWRGcm9tU2VydmljZSBpbnN0YW5jZW9mIEh0dHBTZXJ2aWNlQXRpdm87IH0pO1xyXG4gIHNvbWVudGVBdGl2b3M6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBIYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAvLyBbIFBvcG92ZXIgXVxyXG4gICAgaWYodGhpcy5zZWxlY3RDb250ZW50Py5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpe1xyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJUYWJcIil7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZiAoZXZlbnQua2V5ID09IFwiRXNjYXBlXCIpe1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5EaXNtaXNzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBbIGlucHV0Q29udGFpbmVyIF1cclxuICAgIGlmKHRoaXMuaW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpeyBcclxuICAgICAgaWYoW1wiQXJyb3dEb3duXCIsIFwiQXJyb3dVcFwiXS5pbmNsdWRlcyhldmVudC5rZXkpKXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuUHJlc2VudChldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBbIGlucHV0U2VsZWN0U2VhcmNoQmFyIF1cclxuICAgIGlmKHRoaXMuaW5wdXRTZWFyY2hCYXIubmF0aXZlRWxlbWVudCA9PSBldmVudC50YXJnZXQpe1xyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJFbnRlclwiKXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIC8vIElmIHRoZSBzZWxlY3QgaXMgbm90IGF0aXZvIGlnbm9yZSB0aGUgc2VsZWN0ZWQgaXRlbVxyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmxzdE9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4IV07XHJcbiAgICAgICAgaWYodGhpcy5pc1NlcnZpY2VBdGl2bygpICYmICFpdGVtLml0ZW0uYXRpdm8pIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5TZWxlY3QoaXRlbSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgXHJcbiAgICAgIGlmKGV2ZW50LmtleSA9PSBcIkFycm93RG93blwiKXtcclxuICAgICAgICBpZih0aGlzLnNlbGVjdGVkSW5kZXggPT0gdW5kZWZpbmVkKXsgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDsgcmV0dXJuOyB9XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodGhpcy5zZWxlY3RlZEluZGV4IDwgdGhpcy5sc3RPcHRpb25zLmxlbmd0aCAtIDEgPyB0aGlzLnNlbGVjdGVkSW5kZXggKyAxIDogdGhpcy5zZWxlY3RlZEluZGV4KVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIFxyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJBcnJvd1VwXCIpe1xyXG4gICAgICAgIGlmKHRoaXMuc2VsZWN0ZWRJbmRleCA9PSB1bmRlZmluZWQpeyB0aGlzLnNlbGVjdGVkSW5kZXggPSAwOyByZXR1cm47IH1cclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwID8gdGhpcy5zZWxlY3RlZEluZGV4IC0gMSA6IHRoaXMuc2VsZWN0ZWRJbmRleClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc2VsZWN0ZWRJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAvL1sgU2VhcmNoIEJhciBdXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRTZWFyY2hCYXInKSBpbnB1dFNlYXJjaEJhcjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBzZWFyY2hCYXJDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgc2VhcmNoVmFsdWUgICAgIDogV3JpdGFibGVTaWduYWw8c3RyaW5nPiA9ICBzaWduYWw8c3RyaW5nPihcIlwiKTtcclxuICBwcml2YXRlIHNlYXJjaEJhclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIGRlc3Ryb3llZDogYm9vbGVhbiA9IGZhbHNlXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLnNlYXJjaEJhckNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICApXHJcbiAgICAvL09uU2VhcmNoQ2hhbmdlXHJcbiAgICB0aGlzLnNlYXJjaEJhclN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKGFzeW5jICh2YWx1ZTogc3RyaW5nKSA9PiB7IFxyXG4gICAgICBhd2FpdCB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3AoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCh2YWx1ZSk7IFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBDbGVhclNlYXJjaEJhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQmFyU3Vic2NyaXB0aW9uKSB7IHRoaXMuc2VhcmNoQmFyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5DbGVhclNlYXJjaEJhcigpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShvYmo6IFQgfCBUW10pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLlVwZGF0ZVNlbGVjdGVkKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG92ZXJyaWRlIFNldFZhbHVlKG9iajogVCB8IFRbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5VcGRhdGVTZWxlY3RlZCgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICAgIGlmKCF0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIHRoaXMuRGlzbWlzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBDbGVhcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIHRoaXMuU2V0VmFsdWUoW10pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuU2V0VmFsdWUodW5kZWZpbmVkKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIFNlbGVjdChpdGVtVmFsdWU6IEl0ZW1WYWx1ZTxUPik6IHZvaWR7XHJcbiAgICBjb25zdCBpdGVtID0gaXRlbVZhbHVlLnZhbHVlO1xyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlKCk7XHJcbiAgICAgIGlmKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSl7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50VmFsdWUuZmluZEluZGV4KHAgPT4gcCA9PSBpdGVtKTtcclxuICAgICAgICBpZihpbmRleCA+IC0xKXtcclxuICAgICAgICAgIGN1cnJlbnRWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjdXJyZW50VmFsdWUucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShbLi4uY3VycmVudFZhbHVlXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShbaXRlbV0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlNldFZhbHVlKGl0ZW0pO1xyXG4gICAgICB0aGlzLkRpc21pc3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBbIFBvcG92ZXIgLyBNb2RhbCBdXHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Q29udGVudCcpIHNlbGVjdENvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIFxyXG4gIEBWaWV3Q2hpbGQoU0lvblBvcG92ZXJDb21wb25lbnQpIHBvcG92ZXI6IFNJb25Qb3BvdmVyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoSW9uTW9kYWwpICAgbW9kYWw6IElvbk1vZGFsO1xyXG4gIEBWaWV3Q2hpbGQoSW9uQWxlcnQpICAgYWxlcnQ6IElvbkFsZXJ0O1xyXG4gIEBWaWV3Q2hpbGQoSW9uQWN0aW9uU2hlZXQpIGFjdGlvblNoZWV0OiBJb25BY3Rpb25TaGVldDtcclxuXHJcbiAgZmxvYXRpbmdWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRlbnQnKSBpb25Db250ZW50OiBJb25Db250ZW50O1xyXG5cclxuICBhc3luYyBQcmVzZW50KGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuRHluYW1pYyl7XHJcbiAgICAgIGlmKGlzUG9ydHJhaXQoKSl7XHJcbiAgICAgICAgLy8gTW9kYWxcclxuICAgICAgICBhd2FpdCB0aGlzLm1vZGFsLnByZXNlbnQoKTtcclxuICAgICAgICB0aGlzLmlucHV0U2VhcmNoQmFyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8gUG9wb3ZlclxyXG4gICAgICBhd2FpdCB0aGlzLnBvcG92ZXIucHJlc2VudChldmVudCk7XHJcbiAgICAgIHRoaXMuaW5wdXRTZWFyY2hCYXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5pbnRlcmZhY2UgPT0gU2VsZWN0SW50ZXJmYWNlcy5Nb2RhbCl7XHJcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwucHJlc2VudCgpO1xyXG4gICAgICB0aGlzLmlucHV0U2VhcmNoQmFyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH0gZWxzZVxyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuUG9wb3Zlcil7XHJcbiAgICAgIGF3YWl0IHRoaXMucG9wb3Zlci5wcmVzZW50KGV2ZW50KTtcclxuICAgICAgdGhpcy5pbnB1dFNlYXJjaEJhci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9IGVsc2VcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkFsZXJ0KXtcclxuICAgICAgYXdhaXQgdGhpcy5hbGVydC5wcmVzZW50KCk7XHJcbiAgICB9IGVsc2VcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkFjdGlvblNoZWV0KXtcclxuICAgICAgYXdhaXQgdGhpcy5hY3Rpb25TaGVldC5wcmVzZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGFzeW5jIERpc21pc3MoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZih0aGlzLm1vZGFsKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5wb3BvdmVyKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucG9wb3Zlci5kaXNtaXNzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB1bmRlZmluZWQ7XHJcbiAgICBpZih0aGlzLmlucHV0U2VsZWN0TGFiZWw/Lm5hdGl2ZUVsZW1lbnQpeyBcclxuICAgICAgdGhpcy5pbnB1dFNlbGVjdExhYmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnVzZUluZmluaXRlU2Nyb2xsKXtcclxuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2Uuc2V0KDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBPbkRpc21pc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsb2F0aW5nVmlzaWJsZSA9IGZhbHNlOyBcclxuICAgIHRoaXMuc2VhcmNoVmFsdWUuc2V0KCcnKTtcclxuICAgIHRoaXMuc2VhcmNoQmFyQ29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgfVxyXG4gIE9uUHJlc2VudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxvYXRpbmdWaXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGlzQXJyYXkob2JqIDogYW55ICkge1xyXG4gICByZXR1cm4gQXJyYXkuaXNBcnJheShvYmopXHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBJdGVtVmFsdWU8VD57XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZTogVDtcclxuICBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW0gICAgOiBhbnk7IFxyXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUG9ydHJhaXQoKSB7XHJcbiAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCA+IHdpbmRvdy5pbm5lcldpZHRoO1xyXG59IiwiPGRpdiBcclxuICAjaW5wdXRDb250YWluZXJcclxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiIFxyXG4gIChjbGljayk9XCJzZXRGb2N1cygkZXZlbnQpO1wiXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkKClcIiBcclxuICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZCgpXCIgXHJcbiAgW2NsYXNzLm1hbnVhbC1mb2N1c109XCJmbG9hdGluZ1Zpc2libGVcIlxyXG4gIFtjbGFzcy5pbnZhbGlkXT1cImludmFsaWRcIiBcclxuICBbY2xhc3MuZGlzYWJsZWRdPVwibG9hZGluZygpIHx8IGxvYWRpbmdGcm9tTG9hZGVyIHx8IGRpc2FibGVkKClcIlxyXG4gIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKSB8fCBsb2FkaW5nRnJvbUxvYWRlclwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtbGFiZWxcIj4gXHJcbiAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlXCI+XHJcbiAgICAgIHt7bGFiZWwoKX19IFxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgdHJ1bmNhdGUgb3V0bGluZS1ub25lXCIgW2NsYXNzLnByLTddPVwiIWNvbmZpZ3VyYXRpb24oKS5jbGVhcmFibGVcIiBbY2xhc3MucHItMTBdPVwiY29uZmlndXJhdGlvbigpLmNsZWFyYWJsZVwiICAjaW5wdXRTZWxlY3RMYWJlbCB0YWJpbmRleD1cIjBcIj5cclxuICAgIEBpZiAoIWNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSAmJiBjdXJyZW50TGFiZWwpe1xyXG4gICAgICBAaWYobGFiZWxUZW1wbGF0ZSl7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjdXJyZW50TGFiZWwsIGl0ZW06IGN1cnJlbnRJdGVtcy5pdGVtIH1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1zZWxlY3QtbGFiZWxcIj4ge3tjdXJyZW50TGFiZWx9fSA8L3NwYW4+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIGlmIChjb25maWd1cmF0aW9uKCkubXVsdGlwbGUgJiYgaXNBcnJheShjdXJyZW50SXRlbXMpICYmICRhbnkoY3VycmVudEl0ZW1zKS5sZW5ndGgpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBtaW4taC02IG92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgb3ZlcmZsb3cteC1hdXRvIGZsZXggZ2FwLTIgc2l6ZS1mdWxsIG1hc2steC8yXCI+XHJcbiAgICAgICAgICBAZm9yIChpdGVtIG9mIGN1cnJlbnRJdGVtczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2x1Y2lkLWJvcmRlciByb3VuZGVkLWxnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHBsLTJcIj5cclxuICAgICAgICAgICAgICBAaWYobGFiZWxUZW1wbGF0ZSl7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmxhYmVsLCBpdGVtOiBpdGVtLml0ZW0gfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtc2VsZWN0LWxhYmVsXCI+IHt7aXRlbS5sYWJlbH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgYXNwZWN0LXNxdWFyZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJTZWxlY3QoaXRlbSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLSA8aW9uLWJ1dHRvbiBjbGFzcz1cIm0tMCBoLWZ1bGxcIiAoY2xpY2spPVwiU2VsZWN0KGl0ZW0udmFsdWUpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBjb2xvcj1cIm1lZGl1bVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJvdXRsaW5lXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IC41cmVtXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY29sb3I9XCJkYW5nZXJcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEBpZihwbGFjZWhvbGRlclRlbXBsYXRlKXtcclxuICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicGxhY2Vob2xkZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRoaXMuY29uZmlndXJhdGlvbigpLnBsYWNlaG9sZGVyLCBwbGFjZWhvbGRlcjogdGhpcy5jb25maWd1cmF0aW9uKCkucGxhY2Vob2xkZXIgfVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXNlbGVjdC1sYWJlbCAhdGV4dC1tZWRpdW1cIj4ge3t0aGlzLmNvbmZpZ3VyYXRpb24oKS5wbGFjZWhvbGRlcn19IDwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgYm90dG9tLTEgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc2l6ZS03XCIgW2NsYXNzLnJpZ2h0LTFdPVwiIWNvbmZpZ3VyYXRpb24oKS5jbGVhcmFibGVcIiBbY2xhc3MucmlnaHQtOF09XCJjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlXCI+XHJcbiAgICA8aW9uLWljb24gY2xhc3M9XCItbWItMC41XCIgbmFtZT1cImNoZXZyb24tdXBcIj48L2lvbi1pY29uPlxyXG4gICAgPGlvbi1pY29uIGNsYXNzPVwiLW10LTAuNVwiIG5hbWU9XCJjaGV2cm9uLWRvd25cIj48L2lvbi1pY29uPlxyXG4gIDwvZGl2PlxyXG4gIEBpZihjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlKXtcclxuICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMSBib3R0b20tMVwiIChjbGljayk9XCJDbGVhcigkZXZlbnQpXCIgY29sb3I9XCJtZWRpdW1cIiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIj5cclxuICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgPC9pb24tYnV0dG9uPlxyXG4gIH0gXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKSB8fCBsb2FkaW5nRnJvbUxvYWRlclwiPlxyXG4gICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImVycm9yLWNvbnRhaW5lclwiIChjbGljayk9XCJjb25maWd1cmF0aW9uKCkubG9hZGVyLlJlZnJlc2goKVwiIFtjbGFzcy5hY3RpdmVdPVwiY29uZmlndXJhdGlvbigpLmxvYWRlci5lcnJvciAmJiAhbG9hZGluZ0Zyb21Mb2FkZXJcIj5cclxuICAgIDxpb24taWNvbiBjbGFzcz1cInRleHQteGxcIiBjb2xvcj1cImRhbmdlclwiIG5hbWU9XCJyZWZyZXNoLWNpcmNsZVwiPjwvaW9uLWljb24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuQGlmKCFkaXNhYmxlZCgpKXtcclxuICBAaWYoY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLlBvcG92ZXIgfHwgY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkR5bmFtaWMpe1xyXG4gICAgPHNpb24tcG9wb3ZlciBcclxuICAgICAgICAjcG9wb3ZlciBcclxuICAgICAgICBbd2lkdGhdPVwiaW5wdXRDb250YWluZXIub2Zmc2V0V2lkdGggKyAncHgnXCIgXHJcbiAgICAgICAgKG9uV2lsbFByZXNlbnQpPVwiT25QcmVzZW50KClcIiBcclxuICAgICAgICAob25EaWREaXNtaXNzKT1cIk9uRGlzbWlzcygpXCIgXHJcbiAgICAgICAgW2FuY2hvcl09XCJpbnB1dENvbnRhaW5lclwiIFxyXG4gICAgICAgIFtwbGFjZW1lbnRdPVwiY29uZmlndXJhdGlvbigpLnBvcG92ZXJDb25maWd1cmF0aW9uLnBsYWNlbWVudFwiIFxyXG4gICAgICAgIFtmbGlwXT1cImNvbmZpZ3VyYXRpb24oKS5wb3BvdmVyQ29uZmlndXJhdGlvbi5mbGlwXCJcclxuICAgICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9zaW9uLXBvcG92ZXI+XHJcbiAgfVxyXG4gIEBpZihjb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuTW9kYWwgfHwgY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkR5bmFtaWMpe1xyXG4gICAgPGlvbi1tb2RhbCAjbW9kYWwgKGlvbk1vZGFsV2lsbFByZXNlbnQpPVwiT25QcmVzZW50KClcIiAoZGlkRGlzbWlzcyk9XCJPbkRpc21pc3MoKVwiIHN0eWxlPVwiLS13aWR0aDogOTAlOyAtLWhlaWdodDogOTAlO1wiIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxpb24taGVhZGVyPlxyXG4gICAgICAgICAgPGlvbi10b29sYmFyPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2UtY2lyY2xlXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICAgICAgICA8L2lvbi10b29sYmFyPlxyXG4gICAgICAgIDwvaW9uLWhlYWRlcj5cclxuICBcclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdENvbnRlbnRUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG1vZGFsOiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvaW9uLW1vZGFsPlxyXG4gIH1cclxuXHJcblxyXG4gIEBpZihjb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuQWxlcnQpe1xyXG4gICAgPGlvbi1hbGVydCAjYWxlcnQgW2hlYWRlcl09XCJsYWJlbFwiIFtzdWJIZWFkZXJdPVwiY29uZmlndXJhdGlvbigpLnBsYWNlaG9sZGVyXCIgW2J1dHRvbnNdPVwibHN0T3B0aW9uc0FsZXJ0XCI+IDwvaW9uLWFsZXJ0PlxyXG4gIH1cclxuICBAaWYgKGNvbmZpZ3VyYXRpb24oKS5pbnRlcmZhY2UgPT0gU2VsZWN0SW50ZXJmYWNlcy5BY3Rpb25TaGVldCApIHtcclxuICAgIDxpb24tYWN0aW9uLXNoZWV0ICNhY3Rpb25TaGVldCB0cmlnZ2VyPVwib3Blbi1hY3Rpb24tc2hlZXRcIiBbaGVhZGVyXT1cImxhYmVsXCIgW2J1dHRvbnNdPVwibHN0T3B0aW9uc0FjdGlvblNoZWV0XCI+PC9pb24tYWN0aW9uLXNoZWV0PlxyXG4gIH1cclxuXHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2VsZWN0Q29udGVudFRlbXBsYXRlIGxldC1tb2RhbD1cIm1vZGFsXCI+XHJcbiAgPGRpdiAjc2VsZWN0Q29udGVudCBjbGFzcz1cInNlbGVjdC1jb250ZW50XCIgW2NsYXNzLiFzaXplLWZ1bGxdPVwibW9kYWxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtc2VhcmNoLWJhci1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1zZWFyY2gtYmFyLWljb24tY29udGFpbmVyICFib3JkZXItci0wIGJvcmRlci1wcmltYXJ5LzcwIGJnLXByaW1hcnkvNzAgc2hyaW5rLTBcIj5cclxuICAgICAgICA8aW9uLWljb24gY29sb3I9XCJkYXJrXCIgbmFtZT1cInNlYXJjaFwiPjwvaW9uLWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW5wdXQgI2lucHV0U2VhcmNoQmFyIHRhYmluZGV4PVwiLTFcIiBjbGFzcz1cInNlbGVjdC1zZWFyY2gtYmFyIGJvcmRlci1wcmltYXJ5LzcwICFyb3VuZGVkLWwtbm9uZVwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hCYXJDb250cm9sXCIvPlxyXG4gICAgPC9kaXY+IFxyXG4gICAgPHVsIGNsYXNzPVwic2VsZWN0LWl0ZW0tbGlzdCBtYXNrLXlcIiByb2xlPVwibGlzdGJveFwiIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCInc2lvbi1pcy0nICsgc2VsZWN0ZWRJbmRleFwiPlxyXG4gICAgICA8aW9uLWNvbnRlbnQgI3Njcm9sbENvbnRlbnQgY2xhc3M9XCJzaXplLWZ1bGxcIiBbc2Nyb2xsWV09XCJ0cnVlXCI+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBsc3RPcHRpb25zOyB0cmFjayBpdGVtLnZhbHVlKSB7IFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYmFzZU9wdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbSwgaW5kZXg6ICRpbmRleCB9XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmKGNvbmZpZ3VyYXRpb24oKS51c2VJbmZpbml0ZVNjcm9sbCl7XHJcbiAgICAgICAgICA8aW9uLWluZmluaXRlLXNjcm9sbCB0aHJlc2hvbGQ9XCIxMHB4XCIgKm5nSWY9XCJsc3RPcHRpb25zLmxlbmd0aCAmJiBsc3RPcHRpb25zLmxlbmd0aCAhPSBsc3RPcHRpb25zSXRlbVZhbHVlKCkubGVuZ3RoXCIgKGlvbkluZmluaXRlKT1cIkFkZFBhZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8aW9uLWluZmluaXRlLXNjcm9sbC1jb250ZW50PjwvaW9uLWluZmluaXRlLXNjcm9sbC1jb250ZW50PlxyXG4gICAgICAgICAgPC9pb24taW5maW5pdGUtc2Nyb2xsPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9pb24tY29udGVudD5cclxuICAgIDwvdWw+XHJcbiAgICBAaWYoaXNTZXJ2aWNlQXRpdm8oKSl7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgdGV4dC14cyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxyXG4gICAgICAgIDxpb24tY2hlY2tib3ggW25nTW9kZWxdPVwic29tZW50ZUF0aXZvcygpXCIgKG5nTW9kZWxDaGFuZ2UpPVwic29tZW50ZUF0aXZvcy5zZXQoJGV2ZW50KVwiIGNsYXNzPVwic2NhbGUtNzVcIj4gU29tZW50ZSBhdGl2b3MgPC9pb24tY2hlY2tib3g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNiYXNlT3B0aW9uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICA8bGkgW2lkXT1cIidzaW9uLWlzLScgKyBpbmRleFwiIGNsYXNzPVwic2VsZWN0LWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaW5kZXggPT0gc2VsZWN0ZWRJbmRleFwiIChtb3VzZWVudGVyKT1cInNlbGVjdGVkSW5kZXggPSBpbmRleFwiIChjbGljayk9XCJTZWxlY3QoaXRlbSlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtaXRlbS1jaGVja21hcmstY29udGVpbmVyXCI+XHJcbiAgICAgIEBpZihpdGVtLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwic2VsZWN0LWl0ZW0tY2hlY2ttYXJrXCIgY29sb3I9XCJwcmltYXJ5XCIgbmFtZT1cImNoZWNrbWFya1wiPjwvaW9uLWljb24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmIChvcHRpb25UZW1wbGF0ZSkge1xyXG4gICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlXCJcclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLml0ZW0gfVwiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtaXRlbS1sYWJlbFwiPiB7e2l0ZW0ubGFiZWx9fSA8L3NwYW4+XHJcbiAgICB9XHJcbiAgPC9saT5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFlLEtBQUssRUFBZSxNQUFNLEVBQVUsV0FBVyxFQUFFLFNBQVMsR0FBbUIsTUFBTSxlQUFlLENBQUM7QUFDaE8sT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBeUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkosT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpELE9BQU8sRUFBOEIsZ0NBQWdDLEVBQUUs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QUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNFLG1CQUFtQjtzQkFBekYsWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR3hDLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNJLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBc0I3QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBa0RmLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQThFQyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBRU8sT0FBTztzQkFBdkMsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ1IsS0FBSztzQkFBM0IsU0FBUzt1QkFBQyxRQUFRO2dCQUNJLEtBQUs7c0JBQTNCLFNBQVM7dUJBQUMsUUFBUTtnQkFDUSxXQUFXO3NCQUFyQyxTQUFTO3VCQUFDLGNBQWM7Z0JBSUcsVUFBVTtzQkFBckMsU0FBUzt1QkFBQyxlQUFlOztBQXdENUIsTUFBTSxTQUFTO0lBQWY7UUFHRSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGFBQVEsR0FBWSxLQUFLLENBQUM7SUFDNUIsQ0FBQztDQUFBO0FBRUQsU0FBUyxVQUFVO0lBQ2pCLE9BQU8sTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIGNvbXB1dGVkLCBDb250ZW50Q2hpbGQsIGVmZmVjdCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBpbnB1dCwgSW5wdXRTaWduYWwsIG1vZGVsLCBNb2RlbFNpZ25hbCwgc2lnbmFsLCBTaWduYWwsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aW9uU2hlZXRCdXR0b24sIEFsZXJ0QnV0dG9uLCBBbGVydElucHV0LCBJbmZpbml0ZVNjcm9sbEN1c3RvbUV2ZW50LCBJb25BY3Rpb25TaGVldCwgSW9uQWxlcnQsIElvbkNvbnRlbnQsIElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmluZExhYmVsRmFjdG9yeSwgQmluZFZhbHVlRmFjdG9yeSwgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uLCBTZWxlY3RJbnRlcmZhY2VzIH0gZnJvbSAnLi9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFNJb25Qb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci9zaW9uLXBvcG92ZXIvc2lvbi1wb3BvdmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0UHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi4vaW5wdXQtcHJvdmlkZXItZmFjdG9yeSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBQbGFjZWhvbGRlclRlbXBsYXRlQ29udGV4dCwgU0lvblBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2lvbi1wbGFjZWhvbGRlci10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBPcHRpb25UZW1wbGF0ZUNvbnRleHQsIFNJb25PcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zaW9uLW9wdGlvbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBMYWJlbFRlbXBsYXRlQ29udGV4dCwgU0lvbkxhYmVsVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2lvbi1sYWJlbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZUF0aXZvIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuYXRpdm8uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXRTZWxlY3RDb21wb25lbnQpLFxyXG4gICAgeyBwcm92aWRlOiBDdXN0b21JbnB1dCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRTZWxlY3RDb21wb25lbnQpIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0U2VsZWN0Q29tcG9uZW50PFQgPSBhbnk+IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8VCB8IFRbXT4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgU2VsZWN0SW50ZXJmYWNlcyA9IFNlbGVjdEludGVyZmFjZXM7XHJcblxyXG4gIC8qKiBJdGVtcyBkaXNwb27DrXZlaXMgbm8gc2VsZWN0ICovXHJcbiAgaXRlbXMgICAgICAgICAgICA6IE1vZGVsU2lnbmFsPGFueVtdPiAgICAgICAgICAgICAgICAgICAgICA9IG1vZGVsPGFueVtdPihbXSk7XHJcbiAgLyoqIENvbmZpZ3VyYcOnw6NvIGRvIHNlbGVjdCAqL1xyXG4gIGNvbmZpZ3VyYXRpb24gICAgOiBJbnB1dFNpZ25hbDxJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24+ID0gaW5wdXQ8SW5wdXRTZWxlY3RDb25maWd1cmF0aW9uPihuZXcgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKCkpOyBcclxuICBsb2FkaW5nRnJvbUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjdXJyZW50TGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBjdXJyZW50SXRlbXMgOiBhbnkgfCBJdGVtVmFsdWU8YW55PltdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIFxyXG4gIFNldEN1cnJlbnRJdGVtTGFiZWwoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIHRoaXMuY3VycmVudExhYmVsID0gdGhpcy5sc3RPcHRpb25zSXRlbVZhbHVlKCkuZmlsdGVyKHAgPT4gcC5zZWxlY3RlZCkubWFwKHAgPT4gcC5sYWJlbCkuam9pbignLCAnKTtcclxuICAgICAgdGhpcy5jdXJyZW50SXRlbXMgPSB0aGlzLmxzdE9wdGlvbnNJdGVtVmFsdWUoKS5maWx0ZXIocCA9PiBwLnNlbGVjdGVkKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuY3VycmVudExhYmVsID0gdGhpcy5sc3RPcHRpb25zSXRlbVZhbHVlKCkuZmluZChwID0+IHAuc2VsZWN0ZWQpPy5sYWJlbDtcclxuICAgICAgdGhpcy5jdXJyZW50SXRlbXMgPSB0aGlzLmxzdE9wdGlvbnNJdGVtVmFsdWUoKS5maW5kKHAgPT4gcC5zZWxlY3RlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsc3RPcHRpb25zSXRlbVZhbHVlOiBTaWduYWw8SXRlbVZhbHVlPGFueT5bXT4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBiaW5kTGFiZWwgPSBCaW5kTGFiZWxGYWN0b3J5KHRoaXMuY29uZmlndXJhdGlvbigpKTtcclxuICAgIGNvbnN0IGJpbmRWYWx1ZSA9IEJpbmRWYWx1ZUZhY3RvcnkodGhpcy5jb25maWd1cmF0aW9uKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMoKS5maWx0ZXIocCA9PiAodGhpcy5zb21lbnRlQXRpdm9zKCkgJiYgdGhpcy5pc1NlcnZpY2VBdGl2bygpKSA/IHAuYXRpdm8gOiB0cnVlKSAubWFwKHAgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gbmV3IEl0ZW1WYWx1ZTxhbnk+KCk7XHJcbiAgICAgIGl0ZW0ubGFiZWwgPSBiaW5kTGFiZWwocCk7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBiaW5kVmFsdWUocCk7XHJcbiAgICAgIGl0ZW0uaXRlbSAgPSBwO1xyXG4gICAgICBpdGVtLnNlbGVjdGVkID0gdGhpcy52YWx1ZSgpID09IGl0ZW0udmFsdWU7XHJcbiAgICAgIGl0ZW0uZGlzYWJsZWQgPSBwLmRpc2FibGVkIHx8IGZhbHNlIHx8ICh0aGlzLmlzU2VydmljZUF0aXZvKCkgJiYgcC5hdGl2byA9PSBmYWxzZSk7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIGxzdE9wdGlvbnM6IEl0ZW1WYWx1ZTxhbnk+W10gPSBbXTtcclxuICBsc3RPcHRpb25zQWxlcnQgICAgICA6IEFsZXJ0SW5wdXRbXSA9IFtdO1xyXG4gIGxzdEJ1dHRvbnNBbGVydCAgICAgIDogQWxlcnRCdXR0b25bXSA9IFtdO1xyXG4gIGxzdE9wdGlvbnNBY3Rpb25TaGVldDogQWN0aW9uU2hlZXRCdXR0b25bXSA9IFtdO1xyXG5cclxuICBpbmZpbml0ZVNjcm9sbFBhZ2U6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWw8bnVtYmVyPigxKTtcclxuICBBZGRQYWdlKGV2ZW50OiBJbmZpbml0ZVNjcm9sbEN1c3RvbUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZS5zZXQodGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2UoKSArIDEpO1xyXG4gICAgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBVcGRhdGVMc3RPcHRpb25zKHNlYXJjaDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvLyBVcGRhdGUgdGhlIHNlYXJjaCBcclxuICAgIGlmIChzZWFyY2gpIHtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zID0gU2VhcmNoPEl0ZW1WYWx1ZTxhbnk+Pih0aGlzLmxzdE9wdGlvbnNJdGVtVmFsdWUoKSwgc2VhcmNoLCAoaXRlbTogSXRlbVZhbHVlPGFueT4pID0+IGl0ZW0ubGFiZWwpO1xyXG4gICAgfSBlbHNlIHsgXHJcbiAgICAgIHRoaXMubHN0T3B0aW9ucyA9IHRoaXMubHN0T3B0aW9uc0l0ZW1WYWx1ZSgpOyBcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLnVzZUluZmluaXRlU2Nyb2xsKXtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zID0gdGhpcy5sc3RPcHRpb25zLnNsaWNlKDAsIHRoaXMuaW5maW5pdGVTY3JvbGxQYWdlKCkgKiAyNSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkFjdGlvblNoZWV0KXtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zQWN0aW9uU2hlZXQgPSBbLi4udGhpcy5sc3RPcHRpb25zLm1hcChwID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdGV4dDogcC5sYWJlbCxcclxuICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHsgdGhpcy5TZWxlY3QocCk7IH0sXHJcbiAgICAgICAgICByb2xlICAgIDogcC5zZWxlY3RlZCA/ICdzZWxlY3RlZCcgOiAnJyxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSwgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGV4dDogJ0NhbmNlbGFyJyxcclxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxyXG4gICAgICAgICAgZGF0YTogeyBhY3Rpb246ICdjYW5jZWwnLCB9LFxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH1cclxuICB9XHJcbiAgVXBkYXRlU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICBjb25zdCBhcnIgPSB0aGlzLnZhbHVlKCkgYXMgYW55W10gfHwgW107XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmxzdE9wdGlvbnMpIHtcclxuICAgICAgICBpdGVtLnNlbGVjdGVkID0gYXJyLmZpbmQocCA9PiBwID09IGl0ZW0udmFsdWUpICE9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zLmZvckVhY2goKGl0ZW06IEl0ZW1WYWx1ZTxhbnk+KSA9PiB7IGl0ZW0uc2VsZWN0ZWQgPSB0aGlzLnZhbHVlKCkgPT0gaXRlbS52YWx1ZTsgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLlNldEN1cnJlbnRJdGVtTGFiZWwoKTtcclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoU0lvbkxhYmVsVGVtcGxhdGVEaXJlY3RpdmUgICAgICAsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgbGFiZWxUZW1wbGF0ZSAgICAgIDogVGVtcGxhdGVSZWY8TGFiZWxUZW1wbGF0ZUNvbnRleHQ8VD4+O1xyXG4gIEBDb250ZW50Q2hpbGQoU0lvbk9wdGlvblRlbXBsYXRlRGlyZWN0aXZlICAgICAsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgb3B0aW9uVGVtcGxhdGUgICAgIDogVGVtcGxhdGVSZWY8T3B0aW9uVGVtcGxhdGVDb250ZXh0PFQ+PjtcclxuICBAQ29udGVudENoaWxkKFNJb25QbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHBsYWNlaG9sZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFBsYWNlaG9sZGVyVGVtcGxhdGVDb250ZXh0PjtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q29udGFpbmVyJykgaW5wdXRDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0U2VsZWN0TGFiZWwnKSBpbnB1dFNlbGVjdExhYmVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBzZXRGb2N1cyhldmVudDogTW91c2VFdmVudCB8IG51bGwpOiB2b2lkIHsgXHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5sb2FkZXIuZXJyb3IgfHwgdGhpcy5sb2FkaW5nRnJvbUxvYWRlciB8fCB0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLmRpc2FibGVkKCkpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLlByZXNlbnQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IFxyXG4gICAgc3VwZXIoKTsgXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLlVwZGF0ZUxzdE9wdGlvbnModGhpcy5zZWFyY2hWYWx1ZSgpKTtcclxuICAgICAgdGhpcy5VcGRhdGVTZWxlY3RlZCgpO1xyXG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KSBcclxuICB9XHJcbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uKCkubG9hZGVyLkFkZENvbXBvbmVudCh0aGlzKTtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbigpLmxvYWRlci5SZWZyZXNoKHRoaXMuaXRlbXMoKSk7XHJcbiAgfVxyXG4gIGlzU2VydmljZUF0aXZvOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7IHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24oKS5sb2FkRnJvbVNlcnZpY2UgaW5zdGFuY2VvZiBIdHRwU2VydmljZUF0aXZvOyB9KTtcclxuICBzb21lbnRlQXRpdm9zOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgSGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gWyBQb3BvdmVyIF1cclxuICAgIGlmKHRoaXMuc2VsZWN0Q29udGVudD8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKXtcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiVGFiXCIpe1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PSBcIkVzY2FwZVwiKXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuRGlzbWlzcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gWyBpbnB1dENvbnRhaW5lciBdXHJcbiAgICBpZih0aGlzLmlucHV0Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpeyBcclxuICAgICAgaWYoW1wiQXJyb3dEb3duXCIsIFwiQXJyb3dVcFwiXS5pbmNsdWRlcyhldmVudC5rZXkpKXtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuUHJlc2VudChldmVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBbIGlucHV0U2VsZWN0U2VhcmNoQmFyIF1cclxuICAgIGlmKHRoaXMuaW5wdXRTZWFyY2hCYXI/Lm5hdGl2ZUVsZW1lbnQgPT0gZXZlbnQudGFyZ2V0KXtcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiRW50ZXJcIil7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAvLyBJZiB0aGUgc2VsZWN0IGlzIG5vdCBhdGl2byBpZ25vcmUgdGhlIHNlbGVjdGVkIGl0ZW1cclxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5sc3RPcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleCFdO1xyXG4gICAgICAgIGlmKHRoaXMuaXNTZXJ2aWNlQXRpdm8oKSAmJiAhaXRlbS5pdGVtLmF0aXZvKSB7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMuU2VsZWN0KGl0ZW0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIFxyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJBcnJvd0Rvd25cIil7XHJcbiAgICAgICAgaWYodGhpcy5zZWxlY3RlZEluZGV4ID09IHVuZGVmaW5lZCl7IHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7IHJldHVybjsgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gKHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMubHN0T3B0aW9ucy5sZW5ndGggLSAxID8gdGhpcy5zZWxlY3RlZEluZGV4ICsgMSA6IHRoaXMuc2VsZWN0ZWRJbmRleClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSBcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiQXJyb3dVcFwiKXtcclxuICAgICAgICBpZih0aGlzLnNlbGVjdGVkSW5kZXggPT0gdW5kZWZpbmVkKXsgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDsgcmV0dXJuOyB9XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAodGhpcy5zZWxlY3RlZEluZGV4ID4gMCA/IHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEgOiB0aGlzLnNlbGVjdGVkSW5kZXgpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLy9bIFNlYXJjaCBCYXIgXVxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0U2VhcmNoQmFyJykgaW5wdXRTZWFyY2hCYXI6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgc2VhcmNoQmFyQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gIHNlYXJjaFZhbHVlICAgICA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz4gPSAgc2lnbmFsPHN0cmluZz4oXCJcIik7XHJcbiAgcHJpdmF0ZSBzZWFyY2hCYXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyBkZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5zZWFyY2hCYXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgKVxyXG4gICAgLy9PblNlYXJjaENoYW5nZVxyXG4gICAgdGhpcy5zZWFyY2hCYXJTdWJzY3JpcHRpb24gPSBvYnNlcnZhYmxlLnN1YnNjcmliZShhc3luYyAodmFsdWU6IHN0cmluZykgPT4geyBcclxuICAgICAgYXdhaXQgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvVG9wKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5zZWFyY2hWYWx1ZS5zZXQodmFsdWUpOyBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQ2xlYXJTZWFyY2hCYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIGlmICh0aGlzLnNlYXJjaEJhclN1YnNjcmlwdGlvbikgeyB0aGlzLnNlYXJjaEJhclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuQ2xlYXJTZWFyY2hCYXIoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBUIHwgVFtdKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5VcGRhdGVTZWxlY3RlZCgpO1xyXG4gIH1cclxuICBcclxuICBvdmVycmlkZSBTZXRWYWx1ZShvYmo6IFQgfCBUW10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUuc2V0KG9iaik7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICAgIHRoaXMuVXBkYXRlU2VsZWN0ZWQoKTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICBpZighdGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICB0aGlzLkRpc21pc3MoKTtcclxuICAgIH1cclxuICB9XHJcbiAgQ2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICB0aGlzLlNldFZhbHVlKFtdKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlNldFZhbHVlKHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBTZWxlY3QoaXRlbVZhbHVlOiBJdGVtVmFsdWU8VD4pOiB2b2lke1xyXG4gICAgY29uc3QgaXRlbSA9IGl0ZW1WYWx1ZS52YWx1ZTtcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLm11bHRpcGxlKXtcclxuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZSgpO1xyXG4gICAgICBpZihBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkpe1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY3VycmVudFZhbHVlLmZpbmRJbmRleChwID0+IHAgPT0gaXRlbSk7XHJcbiAgICAgICAgaWYoaW5kZXggPiAtMSl7XHJcbiAgICAgICAgICBjdXJyZW50VmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY3VycmVudFZhbHVlLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuU2V0VmFsdWUoWy4uLmN1cnJlbnRWYWx1ZV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuU2V0VmFsdWUoW2l0ZW1dKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5TZXRWYWx1ZShpdGVtKTtcclxuICAgICAgdGhpcy5EaXNtaXNzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gWyBQb3BvdmVyIC8gTW9kYWwgXVxyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdENvbnRlbnQnKSBzZWxlY3RDb250ZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBcclxuICBAVmlld0NoaWxkKFNJb25Qb3BvdmVyQ29tcG9uZW50KSBwb3BvdmVyOiBTSW9uUG9wb3ZlckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKElvbk1vZGFsKSAgIG1vZGFsOiBJb25Nb2RhbDtcclxuICBAVmlld0NoaWxkKElvbkFsZXJ0KSAgIGFsZXJ0OiBJb25BbGVydDtcclxuICBAVmlld0NoaWxkKElvbkFjdGlvblNoZWV0KSBhY3Rpb25TaGVldDogSW9uQWN0aW9uU2hlZXQ7XHJcblxyXG4gIGZsb2F0aW5nVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdzY3JvbGxDb250ZW50JykgaW9uQ29udGVudDogSW9uQ29udGVudDtcclxuXHJcbiAgYXN5bmMgUHJlc2VudChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkR5bmFtaWMpe1xyXG4gICAgICBpZihpc1BvcnRyYWl0KCkpe1xyXG4gICAgICAgIC8vIE1vZGFsXHJcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RhbC5wcmVzZW50KCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dFNlYXJjaEJhci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFBvcG92ZXJcclxuICAgICAgYXdhaXQgdGhpcy5wb3BvdmVyLnByZXNlbnQoZXZlbnQpO1xyXG4gICAgICB0aGlzLmlucHV0U2VhcmNoQmFyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH0gZWxzZVxyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuTW9kYWwpe1xyXG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLnByZXNlbnQoKTtcclxuICAgICAgdGhpcy5pbnB1dFNlYXJjaEJhci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9IGVsc2VcclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLlBvcG92ZXIpe1xyXG4gICAgICBhd2FpdCB0aGlzLnBvcG92ZXIucHJlc2VudChldmVudCk7XHJcbiAgICAgIHRoaXMuaW5wdXRTZWFyY2hCYXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24oKS5pbnRlcmZhY2UgPT0gU2VsZWN0SW50ZXJmYWNlcy5BY3Rpb25TaGVldCl7XHJcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9uU2hlZXQucHJlc2VudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgRGlzbWlzcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmKHRoaXMubW9kYWwpIHtcclxuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5kaXNtaXNzKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnBvcG92ZXIpIHtcclxuICAgICAgYXdhaXQgdGhpcy5wb3BvdmVyLmRpc21pc3MoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHVuZGVmaW5lZDtcclxuICAgIGlmKHRoaXMuaW5wdXRTZWxlY3RMYWJlbD8ubmF0aXZlRWxlbWVudCl7IFxyXG4gICAgICB0aGlzLmlucHV0U2VsZWN0TGFiZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uKCkudXNlSW5maW5pdGVTY3JvbGwpe1xyXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZS5zZXQoMSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIE9uRGlzbWlzcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxvYXRpbmdWaXNpYmxlID0gZmFsc2U7IFxyXG4gICAgdGhpcy5zZWFyY2hWYWx1ZS5zZXQoJycpO1xyXG4gICAgdGhpcy5zZWFyY2hCYXJDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICB9XHJcbiAgT25QcmVzZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mbG9hdGluZ1Zpc2libGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaXNBcnJheShvYmogOiBhbnkgKSB7XHJcbiAgIHJldHVybiBBcnJheS5pc0FycmF5KG9iailcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIEl0ZW1WYWx1ZTxUPntcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHZhbHVlOiBUO1xyXG4gIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXRlbSAgICA6IGFueTsgXHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNQb3J0cmFpdCgpIHtcclxuICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0ID4gd2luZG93LmlubmVyV2lkdGg7XHJcbn0iLCI8ZGl2IFxyXG4gICNpbnB1dENvbnRhaW5lclxyXG4gIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgXHJcbiAgKGNsaWNrKT1cInNldEZvY3VzKCRldmVudCk7XCJcclxuICBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiIFxyXG4gIFtjbGFzcy5zdWJtaXR0ZWRdPVwic3VibWl0dGVkKClcIiBcclxuICBbY2xhc3MubWFudWFsLWZvY3VzXT1cImZsb2F0aW5nVmlzaWJsZVwiXHJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiIFxyXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJsb2FkaW5nKCkgfHwgbG9hZGluZ0Zyb21Mb2FkZXIgfHwgZGlzYWJsZWQoKVwiXHJcbiAgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpIHx8IGxvYWRpbmdGcm9tTG9hZGVyXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBcclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj5cclxuICAgICAge3tsYWJlbCgpfX0gXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPGRpdiBjbGFzcz1cInctZnVsbCB0cnVuY2F0ZSBvdXRsaW5lLW5vbmVcIiBbY2xhc3MucHItN109XCIhY29uZmlndXJhdGlvbigpLmNsZWFyYWJsZVwiIFtjbGFzcy5wci0xMF09XCJjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlXCIgICNpbnB1dFNlbGVjdExhYmVsIHRhYmluZGV4PVwiMFwiPlxyXG4gICAgQGlmICghY29uZmlndXJhdGlvbigpLm11bHRpcGxlICYmIGN1cnJlbnRMYWJlbCl7XHJcbiAgICAgIEBpZihsYWJlbFRlbXBsYXRlKXtcclxuICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGN1cnJlbnRMYWJlbCwgaXRlbTogY3VycmVudEl0ZW1zLml0ZW0gfVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXNlbGVjdC1sYWJlbFwiPiB7e2N1cnJlbnRMYWJlbH19IDwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSAmJiBpc0FycmF5KGN1cnJlbnRJdGVtcykgJiYgJGFueShjdXJyZW50SXRlbXMpLmxlbmd0aCkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG1pbi1oLTYgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGxlZnQtMCB0b3AtMCBvdmVyZmxvdy14LWF1dG8gZmxleCBnYXAtMiBzaXplLWZ1bGwgbWFzay14LzJcIj5cclxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgY3VycmVudEl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zbHVjaWQtYm9yZGVyIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgcGwtMlwiPlxyXG4gICAgICAgICAgICAgIEBpZihsYWJlbFRlbXBsYXRlKXtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0ubGFiZWwsIGl0ZW06IGl0ZW0uaXRlbSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1zZWxlY3QtbGFiZWxcIj4ge3tpdGVtLmxhYmVsfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBhc3BlY3Qtc3F1YXJlIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlNlbGVjdChpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY29sb3I9XCJkYW5nZXJcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIDxpb24tYnV0dG9uIGNsYXNzPVwibS0wIGgtZnVsbFwiIChjbGljayk9XCJTZWxlY3QoaXRlbS52YWx1ZSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIGNvbG9yPVwibWVkaXVtXCIgc2l6ZT1cInNtYWxsXCIgZmlsbD1cIm91dGxpbmVcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgQGlmKHBsYWNlaG9sZGVyVGVtcGxhdGUpe1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwbGFjZWhvbGRlclRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdGhpcy5jb25maWd1cmF0aW9uKCkucGxhY2Vob2xkZXIsIHBsYWNlaG9sZGVyOiB0aGlzLmNvbmZpZ3VyYXRpb24oKS5wbGFjZWhvbGRlciB9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtc2VsZWN0LWxhYmVsICF0ZXh0LW1lZGl1bVwiPiB7e3RoaXMuY29uZmlndXJhdGlvbigpLnBsYWNlaG9sZGVyfX0gPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzaXplLTdcIiBbY2xhc3MucmlnaHQtMV09XCIhY29uZmlndXJhdGlvbigpLmNsZWFyYWJsZVwiIFtjbGFzcy5yaWdodC04XT1cImNvbmZpZ3VyYXRpb24oKS5jbGVhcmFibGVcIj5cclxuICAgIDxpb24taWNvbiBjbGFzcz1cIi1tYi0wLjVcIiBuYW1lPVwiY2hldnJvbi11cFwiPjwvaW9uLWljb24+XHJcbiAgICA8aW9uLWljb24gY2xhc3M9XCItbXQtMC41XCIgbmFtZT1cImNoZXZyb24tZG93blwiPjwvaW9uLWljb24+XHJcbiAgPC9kaXY+XHJcbiAgQGlmKGNvbmZpZ3VyYXRpb24oKS5jbGVhcmFibGUpe1xyXG4gICAgPGlvbi1idXR0b24gY2xhc3M9XCJhYnNvbHV0ZSByaWdodC0xIGJvdHRvbS0xXCIgKGNsaWNrKT1cIkNsZWFyKCRldmVudClcIiBjb2xvcj1cIm1lZGl1bVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJjbGVhclwiIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAuNXJlbVwiPlxyXG4gICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICA8L2lvbi1idXR0b24+XHJcbiAgfSBcclxuXHJcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCIgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpIHx8IGxvYWRpbmdGcm9tTG9hZGVyXCI+XHJcbiAgICA8aW9uLXNwaW5uZXI+PC9pb24tc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZXJyb3ItY29udGFpbmVyXCIgKGNsaWNrKT1cImNvbmZpZ3VyYXRpb24oKS5sb2FkZXIuUmVmcmVzaCgpXCIgW2NsYXNzLmFjdGl2ZV09XCJjb25maWd1cmF0aW9uKCkubG9hZGVyLmVycm9yICYmICFsb2FkaW5nRnJvbUxvYWRlclwiPlxyXG4gICAgPGlvbi1pY29uIGNsYXNzPVwidGV4dC14bFwiIGNvbG9yPVwiZGFuZ2VyXCIgbmFtZT1cInJlZnJlc2gtY2lyY2xlXCI+PC9pb24taWNvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5AaWYoIWRpc2FibGVkKCkpe1xyXG4gIEBpZihjb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuUG9wb3ZlciB8fCBjb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuRHluYW1pYyl7XHJcbiAgICA8c2lvbi1wb3BvdmVyIFxyXG4gICAgICAgICNwb3BvdmVyIFxyXG4gICAgICAgIFt3aWR0aF09XCJpbnB1dENvbnRhaW5lci5vZmZzZXRXaWR0aCArICdweCdcIiBcclxuICAgICAgICAob25XaWxsUHJlc2VudCk9XCJPblByZXNlbnQoKVwiIFxyXG4gICAgICAgIChvbkRpZERpc21pc3MpPVwiT25EaXNtaXNzKClcIiBcclxuICAgICAgICBbYW5jaG9yXT1cImlucHV0Q29udGFpbmVyXCIgXHJcbiAgICAgICAgW3BsYWNlbWVudF09XCJjb25maWd1cmF0aW9uKCkucG9wb3ZlckNvbmZpZ3VyYXRpb24ucGxhY2VtZW50XCIgXHJcbiAgICAgICAgW2ZsaXBdPVwiY29uZmlndXJhdGlvbigpLnBvcG92ZXJDb25maWd1cmF0aW9uLmZsaXBcIlxyXG4gICAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0Q29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L3Npb24tcG9wb3Zlcj5cclxuICB9XHJcbiAgQGlmKGNvbmZpZ3VyYXRpb24oKS5pbnRlcmZhY2UgPT0gU2VsZWN0SW50ZXJmYWNlcy5Nb2RhbCB8fCBjb25maWd1cmF0aW9uKCkuaW50ZXJmYWNlID09IFNlbGVjdEludGVyZmFjZXMuRHluYW1pYyl7XHJcbiAgICA8aW9uLW1vZGFsICNtb2RhbCAoaW9uTW9kYWxXaWxsUHJlc2VudCk9XCJPblByZXNlbnQoKVwiIChkaWREaXNtaXNzKT1cIk9uRGlzbWlzcygpXCIgW2luaXRpYWxCcmVha3BvaW50XT1cIjAuOVwiIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxpb24taGVhZGVyPlxyXG4gICAgICAgICAgPGlvbi10b29sYmFyPlxyXG4gICAgICAgICAgICA8aW9uLXRpdGxlIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICB7e2xhYmVsKCl9fVxyXG4gICAgICAgICAgICA8L2lvbi10aXRsZT5cclxuICAgICAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgICAgICAgPC9pb24tdG9vbGJhcj5cclxuICAgICAgICA8L2lvbi1oZWFkZXI+XHJcbiAgXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RDb250ZW50VGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBtb2RhbDogdHJ1ZSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2lvbi1tb2RhbD5cclxuICB9XHJcblxyXG4gIEBpZiAoY29uZmlndXJhdGlvbigpLmludGVyZmFjZSA9PSBTZWxlY3RJbnRlcmZhY2VzLkFjdGlvblNoZWV0ICkge1xyXG4gICAgPGlvbi1hY3Rpb24tc2hlZXQgI2FjdGlvblNoZWV0IHRyaWdnZXI9XCJvcGVuLWFjdGlvbi1zaGVldFwiIFtoZWFkZXJdPVwibGFiZWwoKVwiIFtidXR0b25zXT1cImxzdE9wdGlvbnNBY3Rpb25TaGVldFwiPjwvaW9uLWFjdGlvbi1zaGVldD5cclxuICB9XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2VsZWN0Q29udGVudFRlbXBsYXRlIGxldC1tb2RhbD1cIm1vZGFsXCI+XHJcbiAgPGRpdiAjc2VsZWN0Q29udGVudCBjbGFzcz1cInNlbGVjdC1jb250ZW50XCIgW2NsYXNzLiFzaXplLWZ1bGxdPVwibW9kYWxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtc2VhcmNoLWJhci1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1zZWFyY2gtYmFyLWljb24tY29udGFpbmVyICFib3JkZXItci0wIGJvcmRlci1wcmltYXJ5LzcwIGJnLXByaW1hcnkvNzAgc2hyaW5rLTBcIj5cclxuICAgICAgICA8aW9uLWljb24gY29sb3I9XCJkYXJrXCIgbmFtZT1cInNlYXJjaFwiPjwvaW9uLWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW5wdXQgI2lucHV0U2VhcmNoQmFyIHRhYmluZGV4PVwiLTFcIiBjbGFzcz1cInNlbGVjdC1zZWFyY2gtYmFyIGJvcmRlci1wcmltYXJ5LzcwICFyb3VuZGVkLWwtbm9uZVwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hCYXJDb250cm9sXCIvPlxyXG4gICAgPC9kaXY+IFxyXG4gICAgPHVsIGNsYXNzPVwic2VsZWN0LWl0ZW0tbGlzdCBtYXNrLXlcIiByb2xlPVwibGlzdGJveFwiIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCInc2lvbi1pcy0nICsgc2VsZWN0ZWRJbmRleFwiPlxyXG4gICAgICA8aW9uLWNvbnRlbnQgI3Njcm9sbENvbnRlbnQgY2xhc3M9XCJzaXplLWZ1bGxcIiBbc2Nyb2xsWV09XCJ0cnVlXCI+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBsc3RPcHRpb25zOyB0cmFjayBpdGVtLnZhbHVlKSB7IFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYmFzZU9wdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbSwgaW5kZXg6ICRpbmRleCB9XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmKGNvbmZpZ3VyYXRpb24oKS51c2VJbmZpbml0ZVNjcm9sbCl7XHJcbiAgICAgICAgICA8aW9uLWluZmluaXRlLXNjcm9sbCB0aHJlc2hvbGQ9XCIxMHB4XCIgKm5nSWY9XCJsc3RPcHRpb25zLmxlbmd0aCAmJiBsc3RPcHRpb25zLmxlbmd0aCAhPSBsc3RPcHRpb25zSXRlbVZhbHVlKCkubGVuZ3RoXCIgKGlvbkluZmluaXRlKT1cIkFkZFBhZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8aW9uLWluZmluaXRlLXNjcm9sbC1jb250ZW50PjwvaW9uLWluZmluaXRlLXNjcm9sbC1jb250ZW50PlxyXG4gICAgICAgICAgPC9pb24taW5maW5pdGUtc2Nyb2xsPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9pb24tY29udGVudD5cclxuICAgIDwvdWw+XHJcbiAgICBAaWYoaXNTZXJ2aWNlQXRpdm8oKSl7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgdGV4dC14cyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxyXG4gICAgICAgIDxpb24tY2hlY2tib3ggW25nTW9kZWxdPVwic29tZW50ZUF0aXZvcygpXCIgKG5nTW9kZWxDaGFuZ2UpPVwic29tZW50ZUF0aXZvcy5zZXQoJGV2ZW50KVwiIGNsYXNzPVwic2NhbGUtNzVcIj4gU29tZW50ZSBhdGl2b3MgPC9pb24tY2hlY2tib3g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNiYXNlT3B0aW9uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICA8bGkgW2lkXT1cIidzaW9uLWlzLScgKyBpbmRleFwiIGNsYXNzPVwic2VsZWN0LWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaW5kZXggPT0gc2VsZWN0ZWRJbmRleFwiIChtb3VzZWVudGVyKT1cInNlbGVjdGVkSW5kZXggPSBpbmRleFwiIChjbGljayk9XCJTZWxlY3QoaXRlbSlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtaXRlbS1jaGVja21hcmstY29udGVpbmVyXCI+XHJcbiAgICAgIEBpZihpdGVtLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwic2VsZWN0LWl0ZW0tY2hlY2ttYXJrXCIgY29sb3I9XCJwcmltYXJ5XCIgbmFtZT1cImNoZWNrbWFya1wiPjwvaW9uLWljb24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmIChvcHRpb25UZW1wbGF0ZSkge1xyXG4gICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlXCJcclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLml0ZW0gfVwiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtaXRlbS1sYWJlbFwiPiB7e2l0ZW0ubGFiZWx9fSA8L3NwYW4+XHJcbiAgICB9XHJcbiAgPC9saT5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|