@tolle_/tolle-ui 18.2.16 → 18.2.18
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/country-selector.component.mjs +35 -23
- package/esm2022/lib/date-picker.component.mjs +2 -2
- package/esm2022/lib/masked-input.component.mjs +68 -86
- package/esm2022/lib/phone-number-input.component.mjs +128 -63
- package/fesm2022/tolle-ui.mjs +225 -167
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/button.component.d.ts +1 -1
- package/lib/country-selector.component.d.ts +4 -1
- package/lib/masked-input.component.d.ts +3 -1
- package/lib/phone-number-input.component.d.ts +5 -0
- package/lib/toggle.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, forwardRef, inject, Input, Output, ChangeDetectorRef } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, forwardRef, inject, Input, Output, ChangeDetectorRef, } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
4
|
import { CountrySelectorComponent } from './country-selector.component';
|
|
@@ -6,7 +6,8 @@ import { MaskedInputComponent } from './masked-input.component';
|
|
|
6
6
|
import parsePhoneNumber from 'libphonenumber-js';
|
|
7
7
|
import { cn } from './utils/cn';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
import * as i2 from "@angular/forms";
|
|
10
11
|
export class PhoneNumberInputComponent {
|
|
11
12
|
cdr = inject(ChangeDetectorRef);
|
|
12
13
|
id = `phone-input-${Math.random().toString(36).substr(2, 9)}`;
|
|
@@ -28,12 +29,48 @@ export class PhoneNumberInputComponent {
|
|
|
28
29
|
displayValue = '';
|
|
29
30
|
selectedIso = '';
|
|
30
31
|
rawValue = '';
|
|
32
|
+
isFocused = false;
|
|
31
33
|
cn = cn;
|
|
32
34
|
onChange = () => { };
|
|
33
35
|
onTouched = () => { };
|
|
34
36
|
constructor() {
|
|
35
37
|
this.selectedIso = this.defaultCountryCode;
|
|
36
38
|
}
|
|
39
|
+
get computedLabelClass() {
|
|
40
|
+
return cn('text-sm font-medium text-foreground leading-none transition-opacity duration-200', this.disabled && 'opacity-50');
|
|
41
|
+
}
|
|
42
|
+
get computedMergedClass() {
|
|
43
|
+
return cn('flex rounded-md border transition-all duration-200', 'bg-background shadow-sm', this.size === 'xs' && 'h-8', this.size === 'sm' && 'h-9', this.size === 'default' && 'h-10', this.size === 'lg' && 'h-11',
|
|
44
|
+
// Focus state
|
|
45
|
+
!this.disabled &&
|
|
46
|
+
!this.readonly &&
|
|
47
|
+
this.isFocused && [
|
|
48
|
+
'ring-4',
|
|
49
|
+
'ring-ring/30',
|
|
50
|
+
'ring-offset-0',
|
|
51
|
+
'shadow-none',
|
|
52
|
+
this.error ? 'border-destructive/80' : 'border-primary/80',
|
|
53
|
+
],
|
|
54
|
+
// Error state
|
|
55
|
+
this.error && ['border-destructive', this.isFocused && 'ring-destructive/30'],
|
|
56
|
+
// Disabled state
|
|
57
|
+
this.disabled && ['cursor-not-allowed opacity-50', 'border-opacity-50'],
|
|
58
|
+
// Readonly state
|
|
59
|
+
this.readonly && [
|
|
60
|
+
'cursor-default',
|
|
61
|
+
'border-dashed',
|
|
62
|
+
!this.disabled && !this.isFocused && 'ring-0',
|
|
63
|
+
], this.class);
|
|
64
|
+
}
|
|
65
|
+
onFocusIn() {
|
|
66
|
+
this.isFocused = true;
|
|
67
|
+
this.cdr.markForCheck();
|
|
68
|
+
}
|
|
69
|
+
onFocusOut() {
|
|
70
|
+
this.isFocused = false;
|
|
71
|
+
this.onTouched();
|
|
72
|
+
this.cdr.markForCheck();
|
|
73
|
+
}
|
|
37
74
|
writeValue(value) {
|
|
38
75
|
if (value) {
|
|
39
76
|
if (typeof value === 'object' && value.number) {
|
|
@@ -107,75 +144,103 @@ export class PhoneNumberInputComponent {
|
|
|
107
144
|
{
|
|
108
145
|
provide: NG_VALUE_ACCESSOR,
|
|
109
146
|
useExisting: forwardRef(() => PhoneNumberInputComponent),
|
|
110
|
-
multi: true
|
|
111
|
-
}
|
|
147
|
+
multi: true,
|
|
148
|
+
},
|
|
112
149
|
], ngImport: i0, template: `
|
|
113
|
-
<
|
|
114
|
-
[
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
[
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
150
|
+
<div class="flex w-full flex-col gap-1.5">
|
|
151
|
+
<label *ngIf="label" [for]="id" [class]="computedLabelClass">
|
|
152
|
+
{{ label }}
|
|
153
|
+
</label>
|
|
154
|
+
|
|
155
|
+
<div [class]="computedMergedClass" (focusin)="onFocusIn()" (focusout)="onFocusOut()">
|
|
156
|
+
<tolle-country-selector
|
|
157
|
+
[showName]="false"
|
|
158
|
+
[size]="size"
|
|
159
|
+
[disabled]="disabled || !enableCountrySelector"
|
|
160
|
+
[readonly]="readonly"
|
|
161
|
+
[mergedPosition]="'left'"
|
|
162
|
+
[(ngModel)]="selectedIso"
|
|
163
|
+
(ngModelChange)="onCountryChange($event)"></tolle-country-selector>
|
|
164
|
+
|
|
165
|
+
<tolle-masked-input
|
|
166
|
+
[id]="id"
|
|
167
|
+
[mask]="mask"
|
|
168
|
+
[size]="size"
|
|
169
|
+
[disabled]="disabled"
|
|
170
|
+
[readonly]="readonly"
|
|
171
|
+
[placeholder]="placeholder"
|
|
172
|
+
[error]="error"
|
|
173
|
+
[externalFocused]="isFocused"
|
|
174
|
+
[mergedPosition]="'right'"
|
|
175
|
+
[(ngModel)]="displayValue"
|
|
176
|
+
(ngModelChange)="onMaskInputChange($event)"></tolle-masked-input>
|
|
177
|
+
</div>
|
|
178
|
+
|
|
179
|
+
<ng-container *ngIf="!disabled">
|
|
180
|
+
<p
|
|
181
|
+
*ngIf="hint && !error"
|
|
182
|
+
class="px-1 text-xs text-muted-foreground transition-opacity duration-200"
|
|
183
|
+
[class.opacity-0]="isFocused && hideHintOnFocus">
|
|
184
|
+
{{ hint }}
|
|
185
|
+
</p>
|
|
186
|
+
<p *ngIf="error && errorMessage" [id]="id + '-error'" class="px-1 text-xs text-destructive">
|
|
187
|
+
{{ errorMessage }}
|
|
188
|
+
</p>
|
|
189
|
+
</ng-container>
|
|
190
|
+
</div>
|
|
191
|
+
`, isInline: true, styles: [":host{display:block;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CountrySelectorComponent, selector: "tolle-country-selector", inputs: ["id", "label", "hint", "errorMessage", "error", "hideHintOnFocus", "placeholder", "class", "disabled", "readonly", "size", "defaultCountryCode", "returnValue", "showName", "mergedPosition"], outputs: ["onSelect", "onFocusChange", "onBlurChange"] }, { kind: "component", type: MaskedInputComponent, selector: "tolle-masked-input", inputs: ["id", "label", "hint", "errorMessage", "mask", "placeholder", "type", "disabled", "readonly", "class", "containerClass", "error", "size", "returnRaw", "hideHintOnFocus", "externalFocused", "mergedPosition"] }] });
|
|
141
192
|
}
|
|
142
193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PhoneNumberInputComponent, decorators: [{
|
|
143
194
|
type: Component,
|
|
144
195
|
args: [{ selector: 'tolle-phone-number-input', standalone: true, imports: [CommonModule, FormsModule, CountrySelectorComponent, MaskedInputComponent], template: `
|
|
145
|
-
<
|
|
146
|
-
[
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
[
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
196
|
+
<div class="flex w-full flex-col gap-1.5">
|
|
197
|
+
<label *ngIf="label" [for]="id" [class]="computedLabelClass">
|
|
198
|
+
{{ label }}
|
|
199
|
+
</label>
|
|
200
|
+
|
|
201
|
+
<div [class]="computedMergedClass" (focusin)="onFocusIn()" (focusout)="onFocusOut()">
|
|
202
|
+
<tolle-country-selector
|
|
203
|
+
[showName]="false"
|
|
204
|
+
[size]="size"
|
|
205
|
+
[disabled]="disabled || !enableCountrySelector"
|
|
206
|
+
[readonly]="readonly"
|
|
207
|
+
[mergedPosition]="'left'"
|
|
208
|
+
[(ngModel)]="selectedIso"
|
|
209
|
+
(ngModelChange)="onCountryChange($event)"></tolle-country-selector>
|
|
210
|
+
|
|
211
|
+
<tolle-masked-input
|
|
212
|
+
[id]="id"
|
|
213
|
+
[mask]="mask"
|
|
214
|
+
[size]="size"
|
|
215
|
+
[disabled]="disabled"
|
|
216
|
+
[readonly]="readonly"
|
|
217
|
+
[placeholder]="placeholder"
|
|
218
|
+
[error]="error"
|
|
219
|
+
[externalFocused]="isFocused"
|
|
220
|
+
[mergedPosition]="'right'"
|
|
221
|
+
[(ngModel)]="displayValue"
|
|
222
|
+
(ngModelChange)="onMaskInputChange($event)"></tolle-masked-input>
|
|
223
|
+
</div>
|
|
224
|
+
|
|
225
|
+
<ng-container *ngIf="!disabled">
|
|
226
|
+
<p
|
|
227
|
+
*ngIf="hint && !error"
|
|
228
|
+
class="px-1 text-xs text-muted-foreground transition-opacity duration-200"
|
|
229
|
+
[class.opacity-0]="isFocused && hideHintOnFocus">
|
|
230
|
+
{{ hint }}
|
|
231
|
+
</p>
|
|
232
|
+
<p *ngIf="error && errorMessage" [id]="id + '-error'" class="px-1 text-xs text-destructive">
|
|
233
|
+
{{ errorMessage }}
|
|
234
|
+
</p>
|
|
235
|
+
</ng-container>
|
|
236
|
+
</div>
|
|
172
237
|
`, providers: [
|
|
173
238
|
{
|
|
174
239
|
provide: NG_VALUE_ACCESSOR,
|
|
175
240
|
useExisting: forwardRef(() => PhoneNumberInputComponent),
|
|
176
|
-
multi: true
|
|
177
|
-
}
|
|
178
|
-
], styles: [":host{display:block;width:100%}
|
|
241
|
+
multi: true,
|
|
242
|
+
},
|
|
243
|
+
], styles: [":host{display:block;width:100%}\n"] }]
|
|
179
244
|
}], ctorParameters: () => [], propDecorators: { id: [{
|
|
180
245
|
type: Input
|
|
181
246
|
}], label: [{
|
|
@@ -209,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
209
274
|
}], onSelect: [{
|
|
210
275
|
type: Output
|
|
211
276
|
}] } });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvcGhvbmUtbnVtYmVyLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4saUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sZ0JBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBNkVoQyxNQUFNLE9BQU8seUJBQXlCO0lBQzFCLEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUvQixFQUFFLEdBQUcsZUFBZSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNWLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDbEIsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNkLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDdkIsV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUM3QixJQUFJLEdBQW1DLFNBQVMsQ0FB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RSxvQkFBb0I7OzRGQXdFMUUseUJBQXlCO2tCQTNFckMsU0FBUzsrQkFDSSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxvQkFBb0IsQ0FBQyxZQUMxRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCWCxhQW1DWTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7d0RBS1EsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvdW50cnlTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY291bnRyeS1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFza2VkSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL21hc2tlZC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHBhcnNlUGhvbmVOdW1iZXIgZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1waG9uZS1udW1iZXItaW5wdXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIENvdW50cnlTZWxlY3RvckNvbXBvbmVudCwgTWFza2VkSW5wdXRDb21wb25lbnRdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPHRvbGxlLW1hc2tlZC1pbnB1dFxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICBbaGludF09XCJoaW50XCJcbiAgICAgIFtlcnJvcl09XCJlcnJvclwiXG4gICAgICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiXG4gICAgICBbaGlkZUhpbnRPbkZvY3VzXT1cImhpZGVIaW50T25Gb2N1c1wiXG4gICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgWyhuZ01vZGVsKV09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25NYXNrSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbY29udGFpbmVyQ2xhc3NdPVwiY24oJ3BsLTAnLCBjbGFzcylcIlxuICAgID5cbiAgICAgIDx0b2xsZS1jb3VudHJ5LXNlbGVjdG9yXG4gICAgICAgIHByZWZpeFxuICAgICAgICBjbGFzcz1cImNvdW50cnktc2VsZWN0b3Itb3ZlcnJpZGVcIlxuICAgICAgICBbc2hvd05hbWVdPVwiZmFsc2VcIlxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8ICFlbmFibGVDb3VudHJ5U2VsZWN0b3JcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkSXNvXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Db3VudHJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvdG9sbGUtY291bnRyeS1zZWxlY3Rvcj5cbiAgICA8L3RvbGxlLW1hc2tlZC1pbnB1dD5cbiAgYCxcbiAgICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgOjpuZy1kZWVwIC5jb3VudHJ5LXNlbGVjdG9yLW92ZXJyaWRlIHtcbiAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLCAjZTVlN2ViKTtcbiAgICB9XG4gICAgOjpuZy1kZWVwIC5jb3VudHJ5LXNlbGVjdG9yLW92ZXJyaWRlIGJ1dHRvbiB7XG4gICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGNhbGModmFyKC0tcmFkaXVzLCAwLjVyZW0pIC0gMXB4KSAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogY2FsYyh2YXIoLS1yYWRpdXMsIDAuNXJlbSkgLSAxcHgpICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnQ7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgICBnYXA6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgICB9XG4gICAgOjpuZy1kZWVwIC5jb3VudHJ5LXNlbGVjdG9yLW92ZXJyaWRlIGJ1dHRvbiAuZmxleCB7XG4gICAgICBnYXA6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgICB9XG4gICAgOjpuZy1kZWVwIC5jb3VudHJ5LXNlbGVjdG9yLW92ZXJyaWRlIGJ1dHRvbiBpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50O1xuICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIH1cbiAgYF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGhvbmVOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlcklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIEBJbnB1dCgpIGlkID0gYHBob25lLWlucHV0LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpfWA7XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSBoaW50ID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3IgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBoaWRlSGludE9uRm9jdXMgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1Bob25lIG51bWJlcic7XG4gICAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkZWZhdWx0Q291bnRyeUNvZGUgPSAnR0gnO1xuICAgIEBJbnB1dCgpIGRhdGFUeXBlOiAnTnVtYmVyT25seScgfCAnRnVsbE9iamVjdCcgPSAnRnVsbE9iamVjdCc7XG4gICAgQElucHV0KCkgbWFzayA9ICcoMDAwKSAwMDAtMDAwMCc7XG4gICAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgICBASW5wdXQoKSBlbmFibGVDb3VudHJ5U2VsZWN0b3IgPSB0cnVlO1xuXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBkaXNwbGF5VmFsdWUgPSAnJztcbiAgICBzZWxlY3RlZElzbyA9ICcnO1xuICAgIHByaXZhdGUgcmF3VmFsdWUgPSAnJztcblxuICAgIHByb3RlY3RlZCBjbiA9IGNuO1xuXG4gICAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcbiAgICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHsgfTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXNvID0gdGhpcy5kZWZhdWx0Q291bnRyeUNvZGU7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUubnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElzbyA9IHZhbHVlLmNvdW50cnkgfHwgdGhpcy5kZWZhdWx0Q291bnRyeUNvZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB2YWx1ZS5udW1iZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHZhbHVlLm51bWJlci5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmF3VmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VQaG9uZU51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJc28gPSBwYXJzZWQuY291bnRyeSB8fCB0aGlzLmRlZmF1bHRDb3VudHJ5Q29kZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMucmF3VmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uQ291bnRyeUNoYW5nZShpc286IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXNvID0gaXNvO1xuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKCk7XG4gICAgfVxuXG4gICAgb25NYXNrSW5wdXRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnJhd1ZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTW9kZWwoKSB7XG4gICAgICAgIGlmICghdGhpcy5yYXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVBob25lTnVtYmVyKHRoaXMucmF3VmFsdWUsIHRoaXMuc2VsZWN0ZWRJc28gYXMgYW55KTtcbiAgICAgICAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhVHlwZSA9PT0gJ0Z1bGxPYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UocGFyc2VkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHBhcnNlZC5udW1iZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQocGFyc2VkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvcGhvbmUtbnVtYmVyLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sZ0JBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQWlFaEMsTUFBTSxPQUFPLHlCQUF5QjtJQUM1QixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFL0IsRUFBRSxHQUFHLGVBQWUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUQsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLElBQUksR0FBRyxFQUFFLENBQUM7SUFDVixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLFdBQVcsR0FBRyxjQUFjLENBQUM7SUFDN0IsSUFBSSxHQUFtQyxTQUFTLENB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dmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb3VudHJ5U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvdW50cnktc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IE1hc2tlZElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9tYXNrZWQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCBwYXJzZVBob25lTnVtYmVyIGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLXBob25lLW51bWJlci1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBDb3VudHJ5U2VsZWN0b3JDb21wb25lbnQsIE1hc2tlZElucHV0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC1jb2wgZ2FwLTEuNVwiPlxuICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCIgW2NsYXNzXT1cImNvbXB1dGVkTGFiZWxDbGFzc1wiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRNZXJnZWRDbGFzc1wiIChmb2N1c2luKT1cIm9uRm9jdXNJbigpXCIgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiPlxuICAgICAgICA8dG9sbGUtY291bnRyeS1zZWxlY3RvclxuICAgICAgICAgIFtzaG93TmFtZV09XCJmYWxzZVwiXG4gICAgICAgICAgW3NpemVdPVwic2l6ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8ICFlbmFibGVDb3VudHJ5U2VsZWN0b3JcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgW21lcmdlZFBvc2l0aW9uXT1cIidsZWZ0J1wiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZElzb1wiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Db3VudHJ5Q2hhbmdlKCRldmVudClcIj48L3RvbGxlLWNvdW50cnktc2VsZWN0b3I+XG5cbiAgICAgICAgPHRvbGxlLW1hc2tlZC1pbnB1dFxuICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgW21hc2tdPVwibWFza1wiXG4gICAgICAgICAgW3NpemVdPVwic2l6ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2Vycm9yXT1cImVycm9yXCJcbiAgICAgICAgICBbZXh0ZXJuYWxGb2N1c2VkXT1cImlzRm9jdXNlZFwiXG4gICAgICAgICAgW21lcmdlZFBvc2l0aW9uXT1cIidyaWdodCdcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZGlzcGxheVZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1hc2tJbnB1dENoYW5nZSgkZXZlbnQpXCI+PC90b2xsZS1tYXNrZWQtaW5wdXQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNhYmxlZFwiPlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwiaGludCAmJiAhZXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwicHgtMSB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwXCJcbiAgICAgICAgICBbY2xhc3Mub3BhY2l0eS0wXT1cImlzRm9jdXNlZCAmJiBoaWRlSGludE9uRm9jdXNcIj5cbiAgICAgICAgICB7eyBoaW50IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgKm5nSWY9XCJlcnJvciAmJiBlcnJvck1lc3NhZ2VcIiBbaWRdPVwiaWQgKyAnLWVycm9yJ1wiIGNsYXNzPVwicHgtMSB0ZXh0LXhzIHRleHQtZGVzdHJ1Y3RpdmVcIj5cbiAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGhvbmVOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlcklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgQElucHV0KCkgaWQgPSBgcGhvbmUtaW5wdXQtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgaGludCA9ICcnO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2UgPSAnJztcbiAgQElucHV0KCkgZXJyb3IgPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZUhpbnRPbkZvY3VzID0gdHJ1ZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGhvbmUgbnVtYmVyJztcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWZhdWx0Q291bnRyeUNvZGUgPSAnR0gnO1xuICBASW5wdXQoKSBkYXRhVHlwZTogJ051bWJlck9ubHknIHwgJ0Z1bGxPYmplY3QnID0gJ0Z1bGxPYmplY3QnO1xuICBASW5wdXQoKSBtYXNrID0gJygwMDApIDAwMC0wMDAwJztcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZW5hYmxlQ291bnRyeVNlbGVjdG9yID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBkaXNwbGF5VmFsdWUgPSAnJztcbiAgc2VsZWN0ZWRJc28gPSAnJztcbiAgcHJpdmF0ZSByYXdWYWx1ZSA9ICcnO1xuICBpc0ZvY3VzZWQgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgY24gPSBjbjtcblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zZWxlY3RlZElzbyA9IHRoaXMuZGVmYXVsdENvdW50cnlDb2RlO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkTGFiZWxDbGFzcygpIHtcbiAgICByZXR1cm4gY24oXG4gICAgICAndGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmQgbGVhZGluZy1ub25lIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDAnLFxuICAgICAgdGhpcy5kaXNhYmxlZCAmJiAnb3BhY2l0eS01MCdcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkTWVyZ2VkQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgJ2ZsZXggcm91bmRlZC1tZCBib3JkZXIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwJyxcbiAgICAgICdiZy1iYWNrZ3JvdW5kIHNoYWRvdy1zbScsXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgJ2gtOCcsXG4gICAgICB0aGlzLnNpemUgPT09ICdzbScgJiYgJ2gtOScsXG4gICAgICB0aGlzLnNpemUgPT09ICdkZWZhdWx0JyAmJiAnaC0xMCcsXG4gICAgICB0aGlzLnNpemUgPT09ICdsZycgJiYgJ2gtMTEnLFxuICAgICAgLy8gRm9jdXMgc3RhdGVcbiAgICAgICF0aGlzLmRpc2FibGVkICYmXG4gICAgICAgICF0aGlzLnJlYWRvbmx5ICYmXG4gICAgICAgIHRoaXMuaXNGb2N1c2VkICYmIFtcbiAgICAgICAgICAncmluZy00JyxcbiAgICAgICAgICAncmluZy1yaW5nLzMwJyxcbiAgICAgICAgICAncmluZy1vZmZzZXQtMCcsXG4gICAgICAgICAgJ3NoYWRvdy1ub25lJyxcbiAgICAgICAgICB0aGlzLmVycm9yID8gJ2JvcmRlci1kZXN0cnVjdGl2ZS84MCcgOiAnYm9yZGVyLXByaW1hcnkvODAnLFxuICAgICAgICBdLFxuICAgICAgLy8gRXJyb3Igc3RhdGVcbiAgICAgIHRoaXMuZXJyb3IgJiYgWydib3JkZXItZGVzdHJ1Y3RpdmUnLCB0aGlzLmlzRm9jdXNlZCAmJiAncmluZy1kZXN0cnVjdGl2ZS8zMCddLFxuICAgICAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgICAgIHRoaXMuZGlzYWJsZWQgJiYgWydjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MCcsICdib3JkZXItb3BhY2l0eS01MCddLFxuICAgICAgLy8gUmVhZG9ubHkgc3RhdGVcbiAgICAgIHRoaXMucmVhZG9ubHkgJiYgW1xuICAgICAgICAnY3Vyc29yLWRlZmF1bHQnLFxuICAgICAgICAnYm9yZGVyLWRhc2hlZCcsXG4gICAgICAgICF0aGlzLmRpc2FibGVkICYmICF0aGlzLmlzRm9jdXNlZCAmJiAncmluZy0wJyxcbiAgICAgIF0sXG4gICAgICB0aGlzLmNsYXNzXG4gICAgKTtcbiAgfVxuXG4gIG9uRm9jdXNJbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkZvY3VzT3V0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUubnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJc28gPSB2YWx1ZS5jb3VudHJ5IHx8IHRoaXMuZGVmYXVsdENvdW50cnlDb2RlO1xuICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHZhbHVlLm51bWJlcjtcbiAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHZhbHVlLm51bWJlci5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVBob25lTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXNvID0gcGFyc2VkLmNvdW50cnkgfHwgdGhpcy5kZWZhdWx0Q291bnRyeUNvZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5yYXdWYWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkNvdW50cnlDaGFuZ2UoaXNvOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXNvID0gaXNvO1xuICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIG9uTWFza0lucHV0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMucmF3VmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLnJhd1ZhbHVlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVBob25lTnVtYmVyKHRoaXMucmF3VmFsdWUsIHRoaXMuc2VsZWN0ZWRJc28gYXMgYW55KTtcbiAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YVR5cGUgPT09ICdGdWxsT2JqZWN0Jykge1xuICAgICAgICAgIHRoaXMub25DaGFuZ2UocGFyc2VkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHBhcnNlZC5udW1iZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25TZWxlY3QuZW1pdChwYXJzZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMucmF3VmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIl19
|