@magicx-eng/ai-autocomplete-angular 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/esm2020/lib/ai-autocomplete/ai-autocomplete.component.mjs +75 -29
- package/esm2020/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.mjs +46 -12
- package/esm2020/lib/controller/ai-autocomplete.controller.mjs +89 -7
- package/esm2020/lib/input/ai-autocomplete-input.directive.mjs +85 -6
- package/esm2020/lib/internal/editor-host/editor-host.directive.mjs +4 -2
- package/esm2020/lib/internal/layout/cluster.component.mjs +45 -0
- package/esm2020/lib/internal/layout/grid.component.mjs +95 -0
- package/esm2020/lib/internal/layout/stack.component.mjs +29 -0
- package/esm2020/lib/internal/pill-list/pill-list.component.mjs +8 -8
- package/esm2020/lib/internal/submit-button/submit-button.component.mjs +29 -0
- package/esm2020/lib/internal/suggestion-grid/suggestion-grid.component.mjs +10 -62
- package/esm2020/lib/internal/suggestion-item/suggestion-item.component.mjs +3 -3
- package/esm2020/lib/shared/types.mjs +1 -1
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs +503 -125
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs +495 -120
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/lib/ai-autocomplete/ai-autocomplete.component.d.ts +11 -3
- package/lib/ai-autocomplete/ai-autocomplete.component.d.ts.map +1 -1
- package/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.d.ts +29 -12
- package/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.d.ts.map +1 -1
- package/lib/controller/ai-autocomplete.controller.d.ts.map +1 -1
- package/lib/input/ai-autocomplete-input.directive.d.ts +15 -0
- package/lib/input/ai-autocomplete-input.directive.d.ts.map +1 -1
- package/lib/internal/editor-host/editor-host.directive.d.ts.map +1 -1
- package/lib/internal/layout/cluster.component.d.ts +23 -0
- package/lib/internal/layout/cluster.component.d.ts.map +1 -0
- package/lib/internal/layout/grid.component.d.ts +43 -0
- package/lib/internal/layout/grid.component.d.ts.map +1 -0
- package/lib/internal/layout/stack.component.d.ts +16 -0
- package/lib/internal/layout/stack.component.d.ts.map +1 -0
- package/lib/internal/pill-list/pill-list.component.d.ts +2 -2
- package/lib/internal/pill-list/pill-list.component.d.ts.map +1 -1
- package/lib/internal/submit-button/submit-button.component.d.ts +17 -0
- package/lib/internal/submit-button/submit-button.component.d.ts.map +1 -0
- package/lib/internal/suggestion-grid/suggestion-grid.component.d.ts +7 -20
- package/lib/internal/suggestion-grid/suggestion-grid.component.d.ts.map +1 -1
- package/lib/shared/types.d.ts +2 -0
- package/lib/shared/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -34,11 +34,23 @@ export class AIAutocompleteInputDirective {
|
|
|
34
34
|
this.destroy$ = new Subject();
|
|
35
35
|
this.onChangeFn = noop;
|
|
36
36
|
this.onTouchedFn = noop;
|
|
37
|
+
// Timestamp of the last `input` event. A `keyup`/`select` that fires within
|
|
38
|
+
// this window is the tail of a keystroke, not a deliberate caret move, so we
|
|
39
|
+
// skip the caret-move handler there (mirrors the editor host's selectionchange
|
|
40
|
+
// guard). performance.now() is monotonic; 0 means "no input yet".
|
|
41
|
+
this.lastInputAt = 0;
|
|
42
|
+
// Tracks the most-recently-promoted param so we only reposition the caret
|
|
43
|
+
// once per option selection (mirrors the editor host's post-promote refocus).
|
|
44
|
+
this.lastSeenParamId = "";
|
|
37
45
|
}
|
|
38
46
|
ngOnInit() {
|
|
39
47
|
if (!this.controller) {
|
|
40
48
|
throw new Error('[aiaInput] requires a controller — use `[aiaInput]="myController"`.');
|
|
41
49
|
}
|
|
50
|
+
if (this.pendingWriteValue !== undefined) {
|
|
51
|
+
this.controller.setValue(this.pendingWriteValue);
|
|
52
|
+
this.pendingWriteValue = undefined;
|
|
53
|
+
}
|
|
42
54
|
const el = this.el.nativeElement;
|
|
43
55
|
this.renderer.setAttribute(el, "aria-controls", this.controller.listboxId);
|
|
44
56
|
// Sync editor text → DOM. Skips the write when values already match, so
|
|
@@ -74,6 +86,35 @@ export class AIAutocompleteInputDirective {
|
|
|
74
86
|
this.renderer.removeAttribute(el, "aria-activedescendant");
|
|
75
87
|
}
|
|
76
88
|
});
|
|
89
|
+
// After an option selection promotes a param, the core appends its text and
|
|
90
|
+
// stamps `caretOffset` at the end of the inserted text. The text$ subscriber
|
|
91
|
+
// above writes the new value but *restores the pre-write caret* (correct for
|
|
92
|
+
// typing echoes, wrong here), so we move the caret to the promoted position.
|
|
93
|
+
// Keyed on newParamId so it fires once per selection, not on every tick.
|
|
94
|
+
// Registered after text$ so the new value is in the DOM before we seek.
|
|
95
|
+
this.controller.newParamId$.pipe(takeUntil(this.destroy$)).subscribe((id) => {
|
|
96
|
+
const current = id ?? "";
|
|
97
|
+
if (current && current !== this.lastSeenParamId) {
|
|
98
|
+
this.lastSeenParamId = current;
|
|
99
|
+
const offset = this.controller.getState().caretOffset ?? el.value.length;
|
|
100
|
+
const clamped = Math.min(Math.max(offset, 0), el.value.length);
|
|
101
|
+
// Only grab focus if we don't already have it — don't yank focus back
|
|
102
|
+
// from wherever the user moved it after selecting (e.g. a host-app
|
|
103
|
+
// button). setSelectionRange still positions the caret regardless.
|
|
104
|
+
if (typeof document !== "undefined" && document.activeElement !== el) {
|
|
105
|
+
el.focus();
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
el.setSelectionRange(clamped, clamped);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Some input types (e.g. "number") don't support setSelectionRange.
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (!current) {
|
|
115
|
+
this.lastSeenParamId = "";
|
|
116
|
+
}
|
|
117
|
+
});
|
|
77
118
|
}
|
|
78
119
|
ngOnDestroy() {
|
|
79
120
|
this.destroy$.next();
|
|
@@ -87,6 +128,11 @@ export class AIAutocompleteInputDirective {
|
|
|
87
128
|
* we don't disrupt multi-keystroke input methods (Pinyin, Hangul, etc.).
|
|
88
129
|
*/
|
|
89
130
|
onInput(event) {
|
|
131
|
+
// Stamp the input time before anything else. The autocapitalize path below
|
|
132
|
+
// calls setSelectionRange, which can synchronously fire a `select` event →
|
|
133
|
+
// onCaretMove; stamping first ensures that event falls inside the guard
|
|
134
|
+
// window and is treated as part of this keystroke, not a caret move.
|
|
135
|
+
this.lastInputAt = performance.now();
|
|
90
136
|
const target = event.target;
|
|
91
137
|
const raw = target.value;
|
|
92
138
|
const isComposing = event.isComposing === true;
|
|
@@ -107,11 +153,36 @@ export class AIAutocompleteInputDirective {
|
|
|
107
153
|
}
|
|
108
154
|
}
|
|
109
155
|
this.controller.handleTextChange(next);
|
|
156
|
+
// Sync the real caret into the core. The dropdown's auto-trigger gate only
|
|
157
|
+
// opens when the caret is at the end of the text; without this, the core's
|
|
158
|
+
// `caretOffset` stays pinned at whatever a prior promote/select set it to
|
|
159
|
+
// and goes stale as the user keeps typing, wedging the dropdown closed.
|
|
160
|
+
// selectionStart is null on some input types (number/email/color); treat
|
|
161
|
+
// that as "caret at end" rather than feeding null into the core.
|
|
162
|
+
this.controller.handleCaretAfterInput(target.selectionStart ?? target.value.length);
|
|
110
163
|
this.onChangeFn(next);
|
|
111
164
|
}
|
|
112
165
|
onKeyDown(event) {
|
|
113
166
|
this.controller.handleKeyDown(event);
|
|
114
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Caret moved by something other than typing — arrow keys, Home/End, or a
|
|
170
|
+
* mouse click/drag (keyup + mouseup). Forward the new offset so the core can
|
|
171
|
+
* re-evaluate the caret-at-end dropdown gate (and exit re-edit if the caret
|
|
172
|
+
* left the region). We deliberately do NOT listen for the `select` event:
|
|
173
|
+
* programmatic `setSelectionRange` calls (the text$ writeback, the post-select
|
|
174
|
+
* caret reposition) fire it in jsdom/some browsers, which would re-enter here
|
|
175
|
+
* and clobber `caretOffset`. `keyup`/`mouseup` only fire for real user input.
|
|
176
|
+
* Skipped right after an `input` event, where the caret is already handled by
|
|
177
|
+
* `handleCaretAfterInput` above.
|
|
178
|
+
*/
|
|
179
|
+
onCaretMove() {
|
|
180
|
+
if (performance.now() - this.lastInputAt < 50)
|
|
181
|
+
return;
|
|
182
|
+
const el = this.el.nativeElement;
|
|
183
|
+
// selectionStart is null on some input types — treat as caret at end.
|
|
184
|
+
this.controller.handleCaretMove(el.selectionStart ?? el.value.length);
|
|
185
|
+
}
|
|
115
186
|
onFocus() {
|
|
116
187
|
this.controller.setFocused(true);
|
|
117
188
|
}
|
|
@@ -123,11 +194,17 @@ export class AIAutocompleteInputDirective {
|
|
|
123
194
|
writeValue(value) {
|
|
124
195
|
const next = value ?? "";
|
|
125
196
|
this.renderer.setProperty(this.el.nativeElement, "value", next);
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
//
|
|
129
|
-
|
|
197
|
+
// If Angular calls writeValue() before ngOnInit (possible during dynamic
|
|
198
|
+
// form construction), queue the value and let ngOnInit flush it. We
|
|
199
|
+
// can't push it into the controller now because either the controller
|
|
200
|
+
// binding hasn't resolved yet, or text$'s initial subscription would
|
|
201
|
+
// overwrite it moments later.
|
|
202
|
+
if (this.controller) {
|
|
130
203
|
this.controller.setValue(next);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
this.pendingWriteValue = next;
|
|
207
|
+
}
|
|
131
208
|
}
|
|
132
209
|
registerOnChange(fn) {
|
|
133
210
|
this.onChangeFn = fn;
|
|
@@ -140,7 +217,7 @@ export class AIAutocompleteInputDirective {
|
|
|
140
217
|
}
|
|
141
218
|
}
|
|
142
219
|
AIAutocompleteInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AIAutocompleteInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
143
|
-
AIAutocompleteInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: AIAutocompleteInputDirective, isStandalone: true, selector: "[aiaInput]", inputs: { controller: ["aiaInput", "controller"] }, host: { attributes: { "role": "combobox", "aria-autocomplete": "list" }, listeners: { "input": "onInput($event)", "keydown": "onKeyDown($event)", "focus": "onFocus()", "blur": "onBlur()" } }, providers: [
|
|
220
|
+
AIAutocompleteInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: AIAutocompleteInputDirective, isStandalone: true, selector: "[aiaInput]", inputs: { controller: ["aiaInput", "controller"] }, host: { attributes: { "role": "combobox", "aria-autocomplete": "list" }, listeners: { "input": "onInput($event)", "keydown": "onKeyDown($event)", "keyup": "onCaretMove()", "mouseup": "onCaretMove()", "focus": "onFocus()", "blur": "onBlur()" } }, providers: [
|
|
144
221
|
{
|
|
145
222
|
provide: NG_VALUE_ACCESSOR,
|
|
146
223
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
@@ -158,6 +235,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
158
235
|
"aria-autocomplete": "list",
|
|
159
236
|
"(input)": "onInput($event)",
|
|
160
237
|
"(keydown)": "onKeyDown($event)",
|
|
238
|
+
"(keyup)": "onCaretMove()",
|
|
239
|
+
"(mouseup)": "onCaretMove()",
|
|
161
240
|
"(focus)": "onFocus()",
|
|
162
241
|
"(blur)": "onBlur()",
|
|
163
242
|
},
|
|
@@ -177,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
177
256
|
function noop() {
|
|
178
257
|
// Default no-op callback for CVA — overwritten by Angular's form bridge.
|
|
179
258
|
}
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvaW5wdXQvYWktYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE2QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBcUJILE1BQU0sT0FBTyw0QkFBNEI7SUFwQnpDO1FBMkJtQixPQUFFLEdBQUcsTUFBTSxDQUFxRCxVQUFVLENBQUMsQ0FBQztRQUM1RSxhQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXhDLGVBQVUsR0FBNEIsSUFBSSxDQUFDO1FBQzNDLGdCQUFXLEdBQWUsSUFBSSxDQUFDO0tBeUh4QztJQXZIQyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1NBQ3hGO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNFLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsK0RBQStEO1FBQy9ELElBQUksQ0FBQyxVQUFV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QUFHLEVBQUUsNkJBQTZCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzhCQU1vQixVQUFVO3NCQUE1QixLQUFLO3VCQUFDLFVBQVU7O0FBa0luQixTQUFTLElBQUk7SUFDWCx5RUFBeUU7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIGluamVjdCxcbiAgdHlwZSBPbkRlc3Ryb3ksXG4gIHR5cGUgT25Jbml0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0eXBlIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB0eXBlIHsgQUlBdXRvY29tcGxldGVDb250cm9sbGVyIH0gZnJvbSBcIi4uL2NvbnRyb2xsZXIvYWktYXV0b2NvbXBsZXRlLmNvbnRyb2xsZXJcIjtcblxuLyoqXG4gKiBUaWVyIDIgaW5wdXQgYmluZGVyLiBBdHRhY2ggdG8gYSBgPHRleHRhcmVhPmAgb3IgYDxpbnB1dD5gIGFuZCBwYXNzIGFuXG4gKiB7QGxpbmsgQUlBdXRvY29tcGxldGVDb250cm9sbGVyfTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dGV4dGFyZWEgW2FpYUlucHV0XT1cImFjXCI+PC90ZXh0YXJlYT5cbiAqIGBgYFxuICpcbiAqIFRoZSBkaXJlY3RpdmUgd2lyZXMgdGhlIGlucHV0J3MgZXZlbnRzIChpbnB1dC9rZXlkb3duL2ZvY3VzL2JsdXIpIHRvIHRoZVxuICogY29udHJvbGxlciwgbWlycm9ycyBjb250cm9sbGVyIHN0YXRlIGludG8gQVJJQSBhdHRyaWJ1dGVzXG4gKiAoYHJvbGU9XCJjb21ib2JveFwiYCwgYGFyaWEtZXhwYW5kZWRgLCBgYXJpYS1hY3RpdmVkZXNjZW5kYW50YCxcbiAqIGBhcmlhLWF1dG9jb21wbGV0ZWAsIGBhcmlhLWNvbnRyb2xzYCksIGFuZCBpbXBsZW1lbnRzXG4gKiB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9IHNvIHRoZSBob3N0IGVsZW1lbnQgcGFydGljaXBhdGVzIGluIFJlYWN0aXZlXG4gKiBGb3JtcyBvdXQgb2YgdGhlIGJveDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dGV4dGFyZWEgW2FpYUlucHV0XT1cImFjXCIgW2Zvcm1Db250cm9sXT1cIm15Q29udHJvbFwiPjwvdGV4dGFyZWE+XG4gKiBgYGBcbiAqXG4gKiBQZXIgdGhlIFJlYWN0IGhvb2sncyBiZWhhdmlvciwgdGhlIGZpcnN0IHR5cGVkIGNoYXJhY3RlciBpcyBhdXRvLWNhcGl0YWxpemVkXG4gKiDigJQgdHlwaW5nIFwiaFwiIGJlY29tZXMgXCJIXCIgYmVmb3JlIGJlaW5nIGZvcndhcmRlZCB0byB0aGUgY29udHJvbGxlci4gVGhlXG4gKiBjdXJzb3IgcG9zaXRpb24gaXMgcHJlc2VydmVkIGFjcm9zcyB0aGF0IHJld3JpdGUuXG4gKlxuICogQHB1YmxpY1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2FpYUlucHV0XVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgcm9sZTogXCJjb21ib2JveFwiLFxuICAgIFwiYXJpYS1hdXRvY29tcGxldGVcIjogXCJsaXN0XCIsXG4gICAgXCIoaW5wdXQpXCI6IFwib25JbnB1dCgkZXZlbnQpXCIsXG4gICAgXCIoa2V5ZG93bilcIjogXCJvbktleURvd24oJGV2ZW50KVwiLFxuICAgIFwiKGZvY3VzKVwiOiBcIm9uRm9jdXMoKVwiLFxuICAgIFwiKGJsdXIpXCI6IFwib25CbHVyKClcIixcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBSUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFJQXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogVGhlIHtAbGluayBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXJ9IHRoYXQgb3ducyB0aGUgYXV0b2NvbXBsZXRlIHN0YXRlLlxuICAgKiBSZXF1aXJlZC4gVGhlIGRpcmVjdGl2ZSB0aHJvd3Mgb24gaW5pdCBpZiB0aGlzIGlzIG1pc3NpbmcuXG4gICAqL1xuICBASW5wdXQoXCJhaWFJbnB1dFwiKSBjb250cm9sbGVyITogQUlBdXRvY29tcGxldGVDb250cm9sbGVyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZWwgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgb25DaGFuZ2VGbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIG9uVG91Y2hlZEZuOiAoKSA9PiB2b2lkID0gbm9vcDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbYWlhSW5wdXRdIHJlcXVpcmVzIGEgY29udHJvbGxlciDigJQgdXNlIGBbYWlhSW5wdXRdPVwibXlDb250cm9sbGVyXCJgLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCBcImFyaWEtY29udHJvbHNcIiwgdGhpcy5jb250cm9sbGVyLmxpc3Rib3hJZCk7XG5cbiAgICAvLyBTeW5jIGVkaXRvciB0ZXh0IOKGkiBET00uIFNraXBzIHRoZSB3cml0ZSB3aGVuIHZhbHVlcyBhbHJlYWR5IG1hdGNoLCBzb1xuICAgIC8vIHVzZXIga2V5c3Ryb2tlcyBkb24ndCBmaWdodCB3aXRoIG91ciB3cml0ZWJhY2suIFByZXNlcnZlcyB0aGUgY2FyZXRcbiAgICAvLyBwb3NpdGlvbiB3aGVuIHdlIGRvIHdyaXRlIChhbmQgdGhlIGVsZW1lbnQgc3RpbGwgaGFzIGZvY3VzKS5cbiAgICB0aGlzLmNvbnRyb2xsZXIudGV4dCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgodGV4dCkgPT4ge1xuICAgICAgaWYgKGVsLnZhbHVlID09PSB0ZXh0KSByZXR1cm47XG4gICAgICBjb25zdCB3YXNGb2N1c2VkID0gdHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVsO1xuICAgICAgY29uc3Qgc3RhcnQgPSBlbC5zZWxlY3Rpb25TdGFydDtcbiAgICAgIGNvbnN0IGVuZCA9IGVsLnNlbGVjdGlvbkVuZDtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoZWwsIFwidmFsdWVcIiwgdGV4dCk7XG4gICAgICBpZiAod2FzRm9jdXNlZCAmJiBzdGFydCAhPSBudWxsICYmIGVuZCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNsYW1wZWRTdGFydCA9IE1hdGgubWluKHN0YXJ0LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGNsYW1wZWRFbmQgPSBNYXRoLm1pbihlbmQsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZShjbGFtcGVkU3RhcnQsIGNsYW1wZWRFbmQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBgc2V0U2VsZWN0aW9uUmFuZ2VgIHRocm93cyBvbiBzb21lIGlucHV0IHR5cGVzIChlLmcuIFwibnVtYmVyXCIpO1xuICAgICAgICAgIC8vIHNhZmUgdG8gaWdub3JlIOKAlCB0aG9zZSBpbnB1dHMgZG9uJ3QgaGF2ZSBhIG1lYW5pbmdmdWwgc2VsZWN0aW9uLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbnRyb2xsZXIuaXNEcm9wZG93bk9wZW4kLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzT3BlbikgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWwsIFwiYXJpYS1leHBhbmRlZFwiLCBTdHJpbmcoaXNPcGVuKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbnRyb2xsZXIuYWN0aXZlSW5kZXgkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICAgIGVsLFxuICAgICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsXG4gICAgICAgICAgYCR7dGhpcy5jb250cm9sbGVyLmxpc3Rib3hJZH0tb3B0aW9uLSR7aWR4fWAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShlbCwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvLyA9PT0gRXZlbnQgaGFuZGxlcnMgKHdpcmVkIHZpYSBob3N0IG1ldGFkYXRhIGFib3ZlKSA9PT1cblxuICAvKipcbiAgICogQXV0by1jYXBpdGFsaXplcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9uIHRoZSB1c2VyJ3MgZmlyc3Qga2V5c3Ryb2tlIHNvIHRoZVxuICAgKiBzZXJ2ZXIgcmVjZWl2ZXMgXCJDcmVhdGVcIiBpbnN0ZWFkIG9mIFwiY3JlYXRlXCIuIE1hdGNoZXMgUmVhY3Qnc1xuICAgKiBgaGFuZGxlQ2hhbmdlYCBpbiBgdXNlQUlBdXRvY29tcGxldGVgLiBTa2lwcGVkIGR1cmluZyBJTUUgY29tcG9zaXRpb24gc29cbiAgICogd2UgZG9uJ3QgZGlzcnVwdCBtdWx0aS1rZXlzdHJva2UgaW5wdXQgbWV0aG9kcyAoUGlueWluLCBIYW5ndWwsIGV0Yy4pLlxuICAgKi9cbiAgb25JbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgY29uc3QgcmF3ID0gdGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IGlzQ29tcG9zaW5nID0gKGV2ZW50IGFzIElucHV0RXZlbnQpLmlzQ29tcG9zaW5nID09PSB0cnVlO1xuICAgIGNvbnN0IHNob3VsZENhcGl0YWxpemUgPSByYXcubGVuZ3RoID4gMCAmJiAhaXNDb21wb3NpbmcgJiYgcmF3WzBdICE9PSByYXdbMF0udG9VcHBlckNhc2UoKTtcblxuICAgIGxldCBuZXh0ID0gcmF3O1xuICAgIGlmIChzaG91bGRDYXBpdGFsaXplKSB7XG4gICAgICBjb25zdCBzdGFydCA9IHRhcmdldC5zZWxlY3Rpb25TdGFydDtcbiAgICAgIGNvbnN0IGVuZCA9IHRhcmdldC5zZWxlY3Rpb25FbmQ7XG4gICAgICBuZXh0ID0gcmF3WzBdLnRvVXBwZXJDYXNlKCkgKyByYXcuc2xpY2UoMSk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRhcmdldCwgXCJ2YWx1ZVwiLCBuZXh0KTtcbiAgICAgIGlmIChzdGFydCAhPSBudWxsICYmIGVuZCAhPSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBTZWUgbm90ZSBpbiBuZ09uSW5pdCdzIHRleHQkIHN1YnNjcmliZXIuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2xsZXIuaGFuZGxlVGV4dENoYW5nZShuZXh0KTtcbiAgICB0aGlzLm9uQ2hhbmdlRm4obmV4dCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuaGFuZGxlS2V5RG93bihldmVudCk7XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRGb2N1c2VkKHRydWUpO1xuICB9XG5cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gIH1cblxuICAvLyA9PT0gQ29udHJvbFZhbHVlQWNjZXNzb3IgPT09XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSB2YWx1ZSA/PyBcIlwiO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCBcInZhbHVlXCIsIG5leHQpO1xuICAgIC8vIFRoZSBjb250cm9sbGVyIG1heSBiZSB1bmRlZmluZWQgdHJhbnNpZW50bHkgaWYgQW5ndWxhciBjYWxsc1xuICAgIC8vIHdyaXRlVmFsdWUoKSBiZWZvcmUgbmdPbkluaXQgKHJhcmUgYnV0IHBvc3NpYmxlIGR1cmluZyBkeW5hbWljIGZvcm1cbiAgICAvLyBjb25zdHJ1Y3Rpb24pLiBHdWFyZCBzbyB3ZSBkb24ndCB0aHJvdyBpbiB0aGF0IHdpbmRvdy5cbiAgICBpZiAodGhpcy5jb250cm9sbGVyKSB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUobmV4dCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIFwiZGlzYWJsZWRcIiwgZGlzYWJsZWQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vb3AoKTogdm9pZCB7XG4gIC8vIERlZmF1bHQgbm8tb3AgY2FsbGJhY2sgZm9yIENWQSDigJQgb3ZlcndyaXR0ZW4gYnkgQW5ndWxhcidzIGZvcm0gYnJpZGdlLlxufVxuIl19
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvaW5wdXQvYWktYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE2QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBdUJILE1BQU0sT0FBTyw0QkFBNEI7SUF0QnpDO1FBNkJtQixPQUFFLEdBQUcsTUFBTSxDQUFxRCxVQUFVLENBQUMsQ0FBQztRQUM1RSxhQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXhDLGVBQVUsR0FBNEIsSUFBSSxDQUFDO1FBQzNDLGdCQUFXLEdBQWUsSUFBSSxDQUFDO1FBQ3ZDLDRFQUE0RTtRQUM1RSw2RUFBNkU7UUFDN0UsK0VBQStFO1FBQy9FLGtFQUFrRTtRQUMxRCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUN4QiwwRUFBMEU7UUFDMUUsOEVBQThFO1FBQ3RFLG9CQUFlLEdBQUcsRUFBRSxDQUFDO0tBc005QjtJQTVMQyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1NBQ3hGO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMs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QUFtRTs0QkFDbkUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzhCQU1vQixVQUFVO3NCQUE1QixLQUFLO3VCQUFDLFVBQVU7O0FBdU5uQixTQUFTLElBQUk7SUFDWCx5RUFBeUU7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIGluamVjdCxcbiAgdHlwZSBPbkRlc3Ryb3ksXG4gIHR5cGUgT25Jbml0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0eXBlIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB0eXBlIHsgQUlBdXRvY29tcGxldGVDb250cm9sbGVyIH0gZnJvbSBcIi4uL2NvbnRyb2xsZXIvYWktYXV0b2NvbXBsZXRlLmNvbnRyb2xsZXJcIjtcblxuLyoqXG4gKiBUaWVyIDIgaW5wdXQgYmluZGVyLiBBdHRhY2ggdG8gYSBgPHRleHRhcmVhPmAgb3IgYDxpbnB1dD5gIGFuZCBwYXNzIGFuXG4gKiB7QGxpbmsgQUlBdXRvY29tcGxldGVDb250cm9sbGVyfTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dGV4dGFyZWEgW2FpYUlucHV0XT1cImFjXCI+PC90ZXh0YXJlYT5cbiAqIGBgYFxuICpcbiAqIFRoZSBkaXJlY3RpdmUgd2lyZXMgdGhlIGlucHV0J3MgZXZlbnRzIChpbnB1dC9rZXlkb3duL2ZvY3VzL2JsdXIpIHRvIHRoZVxuICogY29udHJvbGxlciwgbWlycm9ycyBjb250cm9sbGVyIHN0YXRlIGludG8gQVJJQSBhdHRyaWJ1dGVzXG4gKiAoYHJvbGU9XCJjb21ib2JveFwiYCwgYGFyaWEtZXhwYW5kZWRgLCBgYXJpYS1hY3RpdmVkZXNjZW5kYW50YCxcbiAqIGBhcmlhLWF1dG9jb21wbGV0ZWAsIGBhcmlhLWNvbnRyb2xzYCksIGFuZCBpbXBsZW1lbnRzXG4gKiB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9IHNvIHRoZSBob3N0IGVsZW1lbnQgcGFydGljaXBhdGVzIGluIFJlYWN0aXZlXG4gKiBGb3JtcyBvdXQgb2YgdGhlIGJveDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dGV4dGFyZWEgW2FpYUlucHV0XT1cImFjXCIgW2Zvcm1Db250cm9sXT1cIm15Q29udHJvbFwiPjwvdGV4dGFyZWE+XG4gKiBgYGBcbiAqXG4gKiBQZXIgdGhlIFJlYWN0IGhvb2sncyBiZWhhdmlvciwgdGhlIGZpcnN0IHR5cGVkIGNoYXJhY3RlciBpcyBhdXRvLWNhcGl0YWxpemVkXG4gKiDigJQgdHlwaW5nIFwiaFwiIGJlY29tZXMgXCJIXCIgYmVmb3JlIGJlaW5nIGZvcndhcmRlZCB0byB0aGUgY29udHJvbGxlci4gVGhlXG4gKiBjdXJzb3IgcG9zaXRpb24gaXMgcHJlc2VydmVkIGFjcm9zcyB0aGF0IHJld3JpdGUuXG4gKlxuICogQHB1YmxpY1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2FpYUlucHV0XVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgcm9sZTogXCJjb21ib2JveFwiLFxuICAgIFwiYXJpYS1hdXRvY29tcGxldGVcIjogXCJsaXN0XCIsXG4gICAgXCIoaW5wdXQpXCI6IFwib25JbnB1dCgkZXZlbnQpXCIsXG4gICAgXCIoa2V5ZG93bilcIjogXCJvbktleURvd24oJGV2ZW50KVwiLFxuICAgIFwiKGtleXVwKVwiOiBcIm9uQ2FyZXRNb3ZlKClcIixcbiAgICBcIihtb3VzZXVwKVwiOiBcIm9uQ2FyZXRNb3ZlKClcIixcbiAgICBcIihmb2N1cylcIjogXCJvbkZvY3VzKClcIixcbiAgICBcIihibHVyKVwiOiBcIm9uQmx1cigpXCIsXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQUlBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBSUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgQUlBdXRvY29tcGxldGVDb250cm9sbGVyfSB0aGF0IG93bnMgdGhlIGF1dG9jb21wbGV0ZSBzdGF0ZS5cbiAgICogUmVxdWlyZWQuIFRoZSBkaXJlY3RpdmUgdGhyb3dzIG9uIGluaXQgaWYgdGhpcyBpcyBtaXNzaW5nLlxuICAgKi9cbiAgQElucHV0KFwiYWlhSW5wdXRcIikgY29udHJvbGxlciE6IEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIG9uQ2hhbmdlRm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIC8vIFRpbWVzdGFtcCBvZiB0aGUgbGFzdCBgaW5wdXRgIGV2ZW50LiBBIGBrZXl1cGAvYHNlbGVjdGAgdGhhdCBmaXJlcyB3aXRoaW5cbiAgLy8gdGhpcyB3aW5kb3cgaXMgdGhlIHRhaWwgb2YgYSBrZXlzdHJva2UsIG5vdCBhIGRlbGliZXJhdGUgY2FyZXQgbW92ZSwgc28gd2VcbiAgLy8gc2tpcCB0aGUgY2FyZXQtbW92ZSBoYW5kbGVyIHRoZXJlIChtaXJyb3JzIHRoZSBlZGl0b3IgaG9zdCdzIHNlbGVjdGlvbmNoYW5nZVxuICAvLyBndWFyZCkuIHBlcmZvcm1hbmNlLm5vdygpIGlzIG1vbm90b25pYzsgMCBtZWFucyBcIm5vIGlucHV0IHlldFwiLlxuICBwcml2YXRlIGxhc3RJbnB1dEF0ID0gMDtcbiAgLy8gVHJhY2tzIHRoZSBtb3N0LXJlY2VudGx5LXByb21vdGVkIHBhcmFtIHNvIHdlIG9ubHkgcmVwb3NpdGlvbiB0aGUgY2FyZXRcbiAgLy8gb25jZSBwZXIgb3B0aW9uIHNlbGVjdGlvbiAobWlycm9ycyB0aGUgZWRpdG9yIGhvc3QncyBwb3N0LXByb21vdGUgcmVmb2N1cykuXG4gIHByaXZhdGUgbGFzdFNlZW5QYXJhbUlkID0gXCJcIjtcbiAgLy8gSG9sZHMgYSB2YWx1ZSB3cml0dGVuIGJ5IFJlYWN0aXZlIEZvcm1zIGJlZm9yZSBuZ09uSW5pdCByYW4uIFJlYWN0aXZlXG4gIC8vIEZvcm1zIGNhbiBjYWxsIHdyaXRlVmFsdWUoKSBkdXJpbmcgZHluYW1pYyBmb3JtIGNvbnN0cnVjdGlvbiAoZS5nLiB3aGVuXG4gIC8vIGEgY29udHJvbCBpcyBwYXRjaGVkIGF0IHRoZSBtb21lbnQgdGhlIGRpcmVjdGl2ZSBpcyBjcmVhdGVkKSwgYW5kIG91clxuICAvLyBjb250cm9sbGVyIGJpbmRpbmcgbWF5IG5vdCBiZSBpbml0aWFsaXplZCB5ZXQuIFdlIHN0YXNoIHRoZSB2YWx1ZSBoZXJlXG4gIC8vIGFuZCBmbHVzaCBpdCBpbnRvIHRoZSBjb250cm9sbGVyIGluIG5nT25Jbml0ICpiZWZvcmUqIHN1YnNjcmliaW5nIHRvXG4gIC8vIHRleHQkLCBvdGhlcndpc2UgdGV4dCQncyBpbml0aWFsIFwiXCIgZW1pc3Npb24gd291bGQgY2xvYmJlciB0aGUgZm9ybVxuICAvLyB2YWx1ZSB0aGUgdGV4dGFyZWEgYWxyZWFkeSBzaG93cy4gYHVuZGVmaW5lZGAgbWVhbnMgXCJubyBwZW5kaW5nIHdyaXRlXCIuXG4gIHByaXZhdGUgcGVuZGluZ1dyaXRlVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbYWlhSW5wdXRdIHJlcXVpcmVzIGEgY29udHJvbGxlciDigJQgdXNlIGBbYWlhSW5wdXRdPVwibXlDb250cm9sbGVyXCJgLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBlbmRpbmdXcml0ZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZSh0aGlzLnBlbmRpbmdXcml0ZVZhbHVlKTtcbiAgICAgIHRoaXMucGVuZGluZ1dyaXRlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWwsIFwiYXJpYS1jb250cm9sc1wiLCB0aGlzLmNvbnRyb2xsZXIubGlzdGJveElkKTtcblxuICAgIC8vIFN5bmMgZWRpdG9yIHRleHQg4oaSIERPTS4gU2tpcHMgdGhlIHdyaXRlIHdoZW4gdmFsdWVzIGFscmVhZHkgbWF0Y2gsIHNvXG4gICAgLy8gdXNlciBrZXlzdHJva2VzIGRvbid0IGZpZ2h0IHdpdGggb3VyIHdyaXRlYmFjay4gUHJlc2VydmVzIHRoZSBjYXJldFxuICAgIC8vIHBvc2l0aW9uIHdoZW4gd2UgZG8gd3JpdGUgKGFuZCB0aGUgZWxlbWVudCBzdGlsbCBoYXMgZm9jdXMpLlxuICAgIHRoaXMuY29udHJvbGxlci50ZXh0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh0ZXh0KSA9PiB7XG4gICAgICBpZiAoZWwudmFsdWUgPT09IHRleHQpIHJldHVybjtcbiAgICAgIGNvbnN0IHdhc0ZvY3VzZWQgPSB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZWw7XG4gICAgICBjb25zdCBzdGFydCA9IGVsLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgY29uc3QgZW5kID0gZWwuc2VsZWN0aW9uRW5kO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShlbCwgXCJ2YWx1ZVwiLCB0ZXh0KTtcbiAgICAgIGlmICh3YXNGb2N1c2VkICYmIHN0YXJ0ICE9IG51bGwgJiYgZW5kICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgY2xhbXBlZFN0YXJ0ID0gTWF0aC5taW4oc3RhcnQsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgY2xhbXBlZEVuZCA9IE1hdGgubWluKGVuZCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKGNsYW1wZWRTdGFydCwgY2xhbXBlZEVuZCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGBzZXRTZWxlY3Rpb25SYW5nZWAgdGhyb3dzIG9uIHNvbWUgaW5wdXQgdHlwZXMgKGUuZy4gXCJudW1iZXJcIik7XG4gICAgICAgICAgLy8gc2FmZSB0byBpZ25vcmUg4oCUIHRob3NlIGlucHV0cyBkb24ndCBoYXZlIGEgbWVhbmluZ2Z1bCBzZWxlY3Rpb24uXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY29udHJvbGxlci5pc0Ryb3Bkb3duT3BlbiQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoaXNPcGVuKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgXCJhcmlhLWV4cGFuZGVkXCIsIFN0cmluZyhpc09wZW4pKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29udHJvbGxlci5hY3RpdmVJbmRleCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgZWwsXG4gICAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIixcbiAgICAgICAgICBgJHt0aGlzLmNvbnRyb2xsZXIubGlzdGJveElkfS1vcHRpb24tJHtpZHh9YCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGVsLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFmdGVyIGFuIG9wdGlvbiBzZWxlY3Rpb24gcHJvbW90ZXMgYSBwYXJhbSwgdGhlIGNvcmUgYXBwZW5kcyBpdHMgdGV4dCBhbmRcbiAgICAvLyBzdGFtcHMgYGNhcmV0T2Zmc2V0YCBhdCB0aGUgZW5kIG9mIHRoZSBpbnNlcnRlZCB0ZXh0LiBUaGUgdGV4dCQgc3Vic2NyaWJlclxuICAgIC8vIGFib3ZlIHdyaXRlcyB0aGUgbmV3IHZhbHVlIGJ1dCAqcmVzdG9yZXMgdGhlIHByZS13cml0ZSBjYXJldCogKGNvcnJlY3QgZm9yXG4gICAgLy8gdHlwaW5nIGVjaG9lcywgd3JvbmcgaGVyZSksIHNvIHdlIG1vdmUgdGhlIGNhcmV0IHRvIHRoZSBwcm9tb3RlZCBwb3NpdGlvbi5cbiAgICAvLyBLZXllZCBvbiBuZXdQYXJhbUlkIHNvIGl0IGZpcmVzIG9uY2UgcGVyIHNlbGVjdGlvbiwgbm90IG9uIGV2ZXJ5IHRpY2suXG4gICAgLy8gUmVnaXN0ZXJlZCBhZnRlciB0ZXh0JCBzbyB0aGUgbmV3IHZhbHVlIGlzIGluIHRoZSBET00gYmVmb3JlIHdlIHNlZWsuXG4gICAgdGhpcy5jb250cm9sbGVyLm5ld1BhcmFtSWQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGlkKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gaWQgPz8gXCJcIjtcbiAgICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQgIT09IHRoaXMubGFzdFNlZW5QYXJhbUlkKSB7XG4gICAgICAgIHRoaXMubGFzdFNlZW5QYXJhbUlkID0gY3VycmVudDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5jb250cm9sbGVyLmdldFN0YXRlKCkuY2FyZXRPZmZzZXQgPz8gZWwudmFsdWUubGVuZ3RoO1xuICAgICAgICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4oTWF0aC5tYXgob2Zmc2V0LCAwKSwgZWwudmFsdWUubGVuZ3RoKTtcbiAgICAgICAgLy8gT25seSBncmFiIGZvY3VzIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBpdCDigJQgZG9uJ3QgeWFuayBmb2N1cyBiYWNrXG4gICAgICAgIC8vIGZyb20gd2hlcmV2ZXIgdGhlIHVzZXIgbW92ZWQgaXQgYWZ0ZXIgc2VsZWN0aW5nIChlLmcuIGEgaG9zdC1hcHBcbiAgICAgICAgLy8gYnV0dG9uKS4gc2V0U2VsZWN0aW9uUmFuZ2Ugc3RpbGwgcG9zaXRpb25zIHRoZSBjYXJldCByZWdhcmRsZXNzLlxuICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGVsKSB7XG4gICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKGNsYW1wZWQsIGNsYW1wZWQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBTb21lIGlucHV0IHR5cGVzIChlLmcuIFwibnVtYmVyXCIpIGRvbid0IHN1cHBvcnQgc2V0U2VsZWN0aW9uUmFuZ2UuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgdGhpcy5sYXN0U2VlblBhcmFtSWQgPSBcIlwiO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8gPT09IEV2ZW50IGhhbmRsZXJzICh3aXJlZCB2aWEgaG9zdCBtZXRhZGF0YSBhYm92ZSkgPT09XG5cbiAgLyoqXG4gICAqIEF1dG8tY2FwaXRhbGl6ZXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvbiB0aGUgdXNlcidzIGZpcnN0IGtleXN0cm9rZSBzbyB0aGVcbiAgICogc2VydmVyIHJlY2VpdmVzIFwiQ3JlYXRlXCIgaW5zdGVhZCBvZiBcImNyZWF0ZVwiLiBNYXRjaGVzIFJlYWN0J3NcbiAgICogYGhhbmRsZUNoYW5nZWAgaW4gYHVzZUFJQXV0b2NvbXBsZXRlYC4gU2tpcHBlZCBkdXJpbmcgSU1FIGNvbXBvc2l0aW9uIHNvXG4gICAqIHdlIGRvbid0IGRpc3J1cHQgbXVsdGkta2V5c3Ryb2tlIGlucHV0IG1ldGhvZHMgKFBpbnlpbiwgSGFuZ3VsLCBldGMuKS5cbiAgICovXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gU3RhbXAgdGhlIGlucHV0IHRpbWUgYmVmb3JlIGFueXRoaW5nIGVsc2UuIFRoZSBhdXRvY2FwaXRhbGl6ZSBwYXRoIGJlbG93XG4gICAgLy8gY2FsbHMgc2V0U2VsZWN0aW9uUmFuZ2UsIHdoaWNoIGNhbiBzeW5jaHJvbm91c2x5IGZpcmUgYSBgc2VsZWN0YCBldmVudCDihpJcbiAgICAvLyBvbkNhcmV0TW92ZTsgc3RhbXBpbmcgZmlyc3QgZW5zdXJlcyB0aGF0IGV2ZW50IGZhbGxzIGluc2lkZSB0aGUgZ3VhcmRcbiAgICAvLyB3aW5kb3cgYW5kIGlzIHRyZWF0ZWQgYXMgcGFydCBvZiB0aGlzIGtleXN0cm9rZSwgbm90IGEgY2FyZXQgbW92ZS5cbiAgICB0aGlzLmxhc3RJbnB1dEF0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIGNvbnN0IHJhdyA9IHRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBpc0NvbXBvc2luZyA9IChldmVudCBhcyBJbnB1dEV2ZW50KS5pc0NvbXBvc2luZyA9PT0gdHJ1ZTtcbiAgICBjb25zdCBzaG91bGRDYXBpdGFsaXplID0gcmF3Lmxlbmd0aCA+IDAgJiYgIWlzQ29tcG9zaW5nICYmIHJhd1swXSAhPT0gcmF3WzBdLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBsZXQgbmV4dCA9IHJhdztcbiAgICBpZiAoc2hvdWxkQ2FwaXRhbGl6ZSkge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICBjb25zdCBlbmQgPSB0YXJnZXQuc2VsZWN0aW9uRW5kO1xuICAgICAgbmV4dCA9IHJhd1swXS50b1VwcGVyQ2FzZSgpICsgcmF3LnNsaWNlKDEpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0YXJnZXQsIFwidmFsdWVcIiwgbmV4dCk7XG4gICAgICBpZiAoc3RhcnQgIT0gbnVsbCAmJiBlbmQgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gU2VlIG5vdGUgaW4gbmdPbkluaXQncyB0ZXh0JCBzdWJzY3JpYmVyLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sbGVyLmhhbmRsZVRleHRDaGFuZ2UobmV4dCk7XG4gICAgLy8gU3luYyB0aGUgcmVhbCBjYXJldCBpbnRvIHRoZSBjb3JlLiBUaGUgZHJvcGRvd24ncyBhdXRvLXRyaWdnZXIgZ2F0ZSBvbmx5XG4gICAgLy8gb3BlbnMgd2hlbiB0aGUgY2FyZXQgaXMgYXQgdGhlIGVuZCBvZiB0aGUgdGV4dDsgd2l0aG91dCB0aGlzLCB0aGUgY29yZSdzXG4gICAgLy8gYGNhcmV0T2Zmc2V0YCBzdGF5cyBwaW5uZWQgYXQgd2hhdGV2ZXIgYSBwcmlvciBwcm9tb3RlL3NlbGVjdCBzZXQgaXQgdG9cbiAgICAvLyBhbmQgZ29lcyBzdGFsZSBhcyB0aGUgdXNlciBrZWVwcyB0eXBpbmcsIHdlZGdpbmcgdGhlIGRyb3Bkb3duIGNsb3NlZC5cbiAgICAvLyBzZWxlY3Rpb25TdGFydCBpcyBudWxsIG9uIHNvbWUgaW5wdXQgdHlwZXMgKG51bWJlci9lbWFpbC9jb2xvcik7IHRyZWF0XG4gICAgLy8gdGhhdCBhcyBcImNhcmV0IGF0IGVuZFwiIHJhdGhlciB0aGFuIGZlZWRpbmcgbnVsbCBpbnRvIHRoZSBjb3JlLlxuICAgIHRoaXMuY29udHJvbGxlci5oYW5kbGVDYXJldEFmdGVySW5wdXQodGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID8/IHRhcmdldC52YWx1ZS5sZW5ndGgpO1xuICAgIHRoaXMub25DaGFuZ2VGbihuZXh0KTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5oYW5kbGVLZXlEb3duKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXJldCBtb3ZlZCBieSBzb21ldGhpbmcgb3RoZXIgdGhhbiB0eXBpbmcg4oCUIGFycm93IGtleXMsIEhvbWUvRW5kLCBvciBhXG4gICAqIG1vdXNlIGNsaWNrL2RyYWcgKGtleXVwICsgbW91c2V1cCkuIEZvcndhcmQgdGhlIG5ldyBvZmZzZXQgc28gdGhlIGNvcmUgY2FuXG4gICAqIHJlLWV2YWx1YXRlIHRoZSBjYXJldC1hdC1lbmQgZHJvcGRvd24gZ2F0ZSAoYW5kIGV4aXQgcmUtZWRpdCBpZiB0aGUgY2FyZXRcbiAgICogbGVmdCB0aGUgcmVnaW9uKS4gV2UgZGVsaWJlcmF0ZWx5IGRvIE5PVCBsaXN0ZW4gZm9yIHRoZSBgc2VsZWN0YCBldmVudDpcbiAgICogcHJvZ3JhbW1hdGljIGBzZXRTZWxlY3Rpb25SYW5nZWAgY2FsbHMgKHRoZSB0ZXh0JCB3cml0ZWJhY2ssIHRoZSBwb3N0LXNlbGVjdFxuICAgKiBjYXJldCByZXBvc2l0aW9uKSBmaXJlIGl0IGluIGpzZG9tL3NvbWUgYnJvd3NlcnMsIHdoaWNoIHdvdWxkIHJlLWVudGVyIGhlcmVcbiAgICogYW5kIGNsb2JiZXIgYGNhcmV0T2Zmc2V0YC4gYGtleXVwYC9gbW91c2V1cGAgb25seSBmaXJlIGZvciByZWFsIHVzZXIgaW5wdXQuXG4gICAqIFNraXBwZWQgcmlnaHQgYWZ0ZXIgYW4gYGlucHV0YCBldmVudCwgd2hlcmUgdGhlIGNhcmV0IGlzIGFscmVhZHkgaGFuZGxlZCBieVxuICAgKiBgaGFuZGxlQ2FyZXRBZnRlcklucHV0YCBhYm92ZS5cbiAgICovXG4gIG9uQ2FyZXRNb3ZlKCk6IHZvaWQge1xuICAgIGlmIChwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMubGFzdElucHV0QXQgPCA1MCkgcmV0dXJuO1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIC8vIHNlbGVjdGlvblN0YXJ0IGlzIG51bGwgb24gc29tZSBpbnB1dCB0eXBlcyDigJQgdHJlYXQgYXMgY2FyZXQgYXQgZW5kLlxuICAgIHRoaXMuY29udHJvbGxlci5oYW5kbGVDYXJldE1vdmUoZWwuc2VsZWN0aW9uU3RhcnQgPz8gZWwudmFsdWUubGVuZ3RoKTtcbiAgfVxuXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnNldEZvY3VzZWQodHJ1ZSk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnNldEZvY3VzZWQoZmFsc2UpO1xuICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgfVxuXG4gIC8vID09PSBDb250cm9sVmFsdWVBY2Nlc3NvciA9PT1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IHZhbHVlID8/IFwiXCI7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIFwidmFsdWVcIiwgbmV4dCk7XG4gICAgLy8gSWYgQW5ndWxhciBjYWxscyB3cml0ZVZhbHVlKCkgYmVmb3JlIG5nT25Jbml0IChwb3NzaWJsZSBkdXJpbmcgZHluYW1pY1xuICAgIC8vIGZvcm0gY29uc3RydWN0aW9uKSwgcXVldWUgdGhlIHZhbHVlIGFuZCBsZXQgbmdPbkluaXQgZmx1c2ggaXQuIFdlXG4gICAgLy8gY2FuJ3QgcHVzaCBpdCBpbnRvIHRoZSBjb250cm9sbGVyIG5vdyBiZWNhdXNlIGVpdGhlciB0aGUgY29udHJvbGxlclxuICAgIC8vIGJpbmRpbmcgaGFzbid0IHJlc29sdmVkIHlldCwgb3IgdGV4dCQncyBpbml0aWFsIHN1YnNjcmlwdGlvbiB3b3VsZFxuICAgIC8vIG92ZXJ3cml0ZSBpdCBtb21lbnRzIGxhdGVyLlxuICAgIGlmICh0aGlzLmNvbnRyb2xsZXIpIHtcbiAgICAgIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZShuZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wZW5kaW5nV3JpdGVWYWx1ZSA9IG5leHQ7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCBcImRpc2FibGVkXCIsIGRpc2FibGVkKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub29wKCk6IHZvaWQge1xuICAvLyBEZWZhdWx0IG5vLW9wIGNhbGxiYWNrIGZvciBDVkEg4oCUIG92ZXJ3cml0dGVuIGJ5IEFuZ3VsYXIncyBmb3JtIGJyaWRnZS5cbn1cbiJdfQ==
|
|
@@ -151,7 +151,9 @@ export class AIAutocompleteEditorHostDirective {
|
|
|
151
151
|
const anchor = sel.anchorNode;
|
|
152
152
|
const startEl = anchor.nodeType === Node.ELEMENT_NODE ? anchor : anchor.parentElement;
|
|
153
153
|
const strong = startEl?.closest('strong[data-seg="completed"][data-param-id]');
|
|
154
|
-
|
|
154
|
+
// `DOMStringMap` is an index signature; bracket notation is required
|
|
155
|
+
// by `noPropertyAccessFromIndexSignature`.
|
|
156
|
+
const enclosing = strong?.dataset["paramId"] ?? null;
|
|
155
157
|
if (enclosing && enclosing !== this.editingParamId) {
|
|
156
158
|
this.zone.run(() => this.controller.startEditingParam(enclosing));
|
|
157
159
|
return;
|
|
@@ -250,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
250
252
|
}], autoFocus: [{
|
|
251
253
|
type: Input
|
|
252
254
|
}] } });
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWhvc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9pbnRlcm5hbC9lZGl0b3ItaG9zdC9lZGl0b3ItaG9zdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsZUFBZSxHQUNoQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcxQzs7O0dBR0c7QUFDSCxJQUFJLGtCQUF1QyxDQUFDO0FBQzVDLFNBQVMscUJBQXFCO0lBQzVCLElBQUksa0JBQWtCLEtBQUssU0FBUztRQUFFLE9BQU8sa0JBQWtCLENBQUM7SUFDaEUsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDbEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDeEQsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGVBQWUsS0FBSyxnQkFBZ0IsQ0FBQztJQUNoRSxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQW9CSCxNQUFNLE9BQU8saUNBQWlDO0lBbkI5QztRQXFCVyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRVQsT0FBRSxHQUFHLE1BQU0sQ0FBNkIsVUFBVSxDQUFDLENBQUM7UUFDcEQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENB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QUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDaEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7Z0JBQy9CLGVBQWUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzFDO2lCQUFNLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzsrSEE1TVUsaUNBQWlDO21IQUFqQyxpQ0FBaUM7NEZBQWpDLGlDQUFpQztrQkFuQjdDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsbUJBQW1CLEVBQUUsTUFBTTt3QkFDM0IsZUFBZSxFQUFFLFNBQVM7d0JBQzFCLFVBQVUsRUFBRSxNQUFNO3dCQUNsQixZQUFZLEVBQUUsTUFBTTt3QkFDcEIsUUFBUSxFQUFFLEdBQUc7d0JBQ2IsU0FBUyxFQUFFLFdBQVc7d0JBQ3RCLFdBQVcsRUFBRSxtQkFBbUI7d0JBQ2hDLG9CQUFvQixFQUFFLHNCQUFzQjt3QkFDNUMsa0JBQWtCLEVBQUUsb0JBQW9CO3dCQUN4QyxTQUFTLEVBQUUsaUJBQWlCO3dCQUM1QixTQUFTLEVBQUUsV0FBVzt3QkFDdEIsUUFBUSxFQUFFLFVBQVU7cUJBQ3JCO2lCQUNGOzhCQUV5QixVQUFVO3NCQUFqQyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ2IsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIGluamVjdCxcbiAgTmdab25lLFxuICB0eXBlIE9uRGVzdHJveSxcbiAgdHlwZSBPbkluaXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGV4dHJhY3RQbGFpblRleHQsXG4gIGdldEN1cnNvck9mZnNldCxcbiAgcGxhaW5UZXh0TGVuZ3RoLFxuICByZW5kZXJFZGl0YWJsZUNvbnRlbnQsXG4gIHNldEN1cnNvck9mZnNldCxcbn0gZnJvbSBcIkBtYWdpY3gtZW5nL2FpLWF1dG9jb21wbGV0ZS12YW5pbGxhXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHR5cGUgeyBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vY29udHJvbGxlci9haS1hdXRvY29tcGxldGUuY29udHJvbGxlclwiO1xuXG4vKipcbiAqIE1vZHVsZS1sZXZlbCBjYWNoZSBmb3IgdGhlIG9uZS10aW1lIHBsYWludGV4dC1vbmx5IGZlYXR1cmUgZGV0ZWN0aW9uLlxuICogTWlycm9ycyBgc3VwcG9ydHNQbGFpbnRleHRPbmx5YCBpbiB1c2VDb250ZW50RWRpdGFibGVFZGl0b3IudHMuXG4gKi9cbmxldCBwbGFpbnRleHRPbmx5Q2FjaGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBzdXBwb3J0c1BsYWludGV4dE9ubHkoKTogYm9vbGVhbiB7XG4gIGlmIChwbGFpbnRleHRPbmx5Q2FjaGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHBsYWludGV4dE9ubHlDYWNoZTtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwcm9iZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIHByb2JlLnNldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiLCBcInBsYWludGV4dC1vbmx5XCIpO1xuICBwbGFpbnRleHRPbmx5Q2FjaGUgPSBwcm9iZS5jb250ZW50RWRpdGFibGUgPT09IFwicGxhaW50ZXh0LW9ubHlcIjtcbiAgcmV0dXJuIHBsYWludGV4dE9ubHlDYWNoZTtcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBkaXJlY3RpdmUgdGhhdCBvd25zIGV2ZXJ5IGNvbmNlcm4gc3BlY2lmaWMgdG8gcnVubmluZyB0aGVcbiAqIGF1dG9jb21wbGV0ZSBvbiB0b3Agb2YgYSBjb250ZW50RWRpdGFibGUgaG9zdDogY29tcG9zaXRpb24gc3RhdGUsIGNhcmV0XG4gKiB0cmFja2luZywgc2VsZWN0aW9uY2hhbmdlIGhhbmRsaW5nLCBgYmVmb3JlaW5wdXRgIGludGVyY2VwdGlvbiwgcGFzdGVcbiAqIHNhbml0aXphdGlvbiwgcGxhaW50ZXh0LW9ubHkgZmVhdHVyZSBkZXRlY3Rpb24sIHNlZ21lbnQgcmVuZGVyaW5nLFxuICogcG9zdC1wcm9tb3RlIHJlZm9jdXMsIGFuZCByZS1lZGl0IGNhcmV0IHBhcmsuXG4gKlxuICogTWlycm9ycyBgcGFja2FnZXMvcmVhY3Qvc3JjL2hvb2tzL3VzZUNvbnRlbnRFZGl0YWJsZUVkaXRvci50c2Agb25lLWZvci1vbmUuXG4gKiBVc2VkIG9ubHkgYnkgdGhlIFRpZXIgMSBgPGFpLWF1dG9jb21wbGV0ZT5gIGNvbXBvbmVudCDigJQgbmV2ZXIgZXhwb3J0ZWQuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbYWlhRWRpdG9ySG9zdF1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgIHJvbGU6IFwiY29tYm9ib3hcIixcbiAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IFwibGlzdFwiLFxuICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImxpc3Rib3hcIixcbiAgICBzcGVsbGNoZWNrOiBcInRydWVcIixcbiAgICBlbnRlcmtleWhpbnQ6IFwic2VuZFwiLFxuICAgIHRhYmluZGV4OiBcIjBcIixcbiAgICBcIihpbnB1dClcIjogXCJvbklucHV0KClcIixcbiAgICBcIihrZXlkb3duKVwiOiBcIm9uS2V5RG93bigkZXZlbnQpXCIsXG4gICAgXCIoY29tcG9zaXRpb25zdGFydClcIjogXCJvbkNvbXBvc2l0aW9uU3RhcnQoKVwiLFxuICAgIFwiKGNvbXBvc2l0aW9uZW5kKVwiOiBcIm9uQ29tcG9zaXRpb25FbmQoKVwiLFxuICAgIFwiKHBhc3RlKVwiOiBcIm9uUGFzdGUoJGV2ZW50KVwiLFxuICAgIFwiKGZvY3VzKVwiOiBcIm9uRm9jdXMoKVwiLFxuICAgIFwiKGJsdXIpXCI6IFwib25CbHVyKClcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQUlBdXRvY29tcGxldGVFZGl0b3JIb3N0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoXCJhaWFFZGl0b3JIb3N0XCIpIGNvbnRyb2xsZXIhOiBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IHRydWU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgY29tcG9zaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgbGFzdElucHV0QXQgPSAwO1xuICBwcml2YXRlIGxhc3RTZWVuUGFyYW1JZCA9IFwiXCI7XG4gIHByaXZhdGUgbGFzdEVkaXRpbmdJZCA9IFwiXCI7XG4gIHByaXZhdGUgZWRpdGluZ1BhcmFtSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgZG9jdW1lbnRTZWxlY3Rpb25MaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgYmVmb3JlSW5wdXRMaXN0ZW5lcj86IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2xsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlthaWFFZGl0b3JIb3N0XSByZXF1aXJlcyBhIGNvbnRyb2xsZXJcIik7XG4gICAgfVxuXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgY2VNb2RlID0gc3VwcG9ydHNQbGFpbnRleHRPbmx5KCkgPyBcInBsYWludGV4dC1vbmx5XCIgOiBcInRydWVcIjtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgXCJjb250ZW50ZWRpdGFibGVcIiwgY2VNb2RlKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgXCJhcmlhLWNvbnRyb2xzXCIsIHRoaXMuY29udHJvbGxlci5saXN0Ym94SWQpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCBcInN1cHByZXNzLWNvbnRlbnQtZWRpdGFibGUtd2FybmluZ1wiLCBcInRydWVcIik7XG5cbiAgICAvLyBBdXRvLWZvY3VzIG9uIG1vdW50LiBJZiB0aGUgZWRpdG9yIGFscmVhZHkgaGFzIGZvY3VzIChlLmcuIGZyb20gYVxuICAgIC8vIGNsaWNrIHRoYXQgZmlyZWQgYmVmb3JlIG91ciBsaWZlY3ljbGUgcmFuKSwgbm90aWZ5IHRoZSBjb250cm9sbGVyXG4gICAgLy8gaW5zdGVhZCBvZiBzdGVhbGluZyBmb2N1cy5cbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZWwpIHtcbiAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmJpbmREb2N1bWVudFNlbGVjdGlvbkxpc3RlbmVyKCk7XG4gICAgdGhpcy5iaW5kQmVmb3JlSW5wdXRMaXN0ZW5lcigpO1xuICAgIHRoaXMuYmluZFN0YXRlU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRTZWxlY3Rpb25MaXN0ZW5lciAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzZWxlY3Rpb25jaGFuZ2VcIiwgdGhpcy5kb2N1bWVudFNlbGVjdGlvbkxpc3RlbmVyKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYmVmb3JlSW5wdXRMaXN0ZW5lcikge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJiZWZvcmVpbnB1dFwiLCB0aGlzLmJlZm9yZUlucHV0TGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PSBIb3N0IGV2ZW50IGhhbmRsZXJzID09PVxuXG4gIG9uQ29tcG9zaXRpb25TdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvc2luZyA9IHRydWU7XG4gIH1cblxuICBvbkNvbXBvc2l0aW9uRW5kKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9zaW5nID0gZmFsc2U7XG4gICAgdGhpcy5maXJlSW5wdXQoKTtcbiAgfVxuXG4gIG9uSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5sYXN0SW5wdXRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMuZmlyZUlucHV0KCk7XG4gICAgdGhpcy5jb250cm9sbGVyLmhhbmRsZUNhcmV0QWZ0ZXJJbnB1dChnZXRDdXJzb3JPZmZzZXQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuaGFuZGxlS2V5RG93bihldmVudCk7XG4gIH1cblxuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dCA9IChldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKFwidGV4dC9wbGFpblwiKSA/PyBcIlwiKS5yZXBsYWNlKC9cXHI/XFxuL2csIFwiIFwiKTtcbiAgICBpZiAoIXRleHQpIHJldHVybjtcbiAgICBjb25zdCBkb2MgPSBlbC5vd25lckRvY3VtZW50ID8/IGRvY3VtZW50O1xuICAgIGNvbnN0IHNlbCA9IGRvYy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbCB8fCBzZWwucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7XG4gICAgaWYgKCFlbC5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikpIHJldHVybjtcbiAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgIGNvbnN0IG5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShub2RlKTtcbiAgICByYW5nZS5zZXRTdGFydEFmdGVyKG5vZGUpO1xuICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgIHRoaXMuZmlyZUlucHV0KCk7XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRGb2N1c2VkKHRydWUpO1xuICB9XG5cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgfVxuXG4gIC8vID09PSBJbnRlcm5hbCBoZWxwZXJzID09PVxuXG4gIHByaXZhdGUgZmlyZUlucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbXBvc2luZykgcmV0dXJuO1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHJhdyA9IGV4dHJhY3RQbGFpblRleHQoZWwpO1xuICAgIGNvbnN0IHNob3VsZENhcGl0YWxpemUgPSByYXcubGVuZ3RoID4gMCAmJiByYXdbMF0gIT09IHJhd1swXS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5leHQgPSBzaG91bGRDYXBpdGFsaXplID8gcmF3WzBdLnRvVXBwZXJDYXNlKCkgKyByYXcuc2xpY2UoMSkgOiByYXc7XG4gICAgdGhpcy5jb250cm9sbGVyLmhhbmRsZVRleHRDaGFuZ2UobmV4dCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmREb2N1bWVudFNlbGVjdGlvbkxpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAvLyBzZWxlY3Rpb25jaGFuZ2UgZmlyZXMgb24gZXZlcnkga2V5c3Ryb2tlIGFuZCBjYXJldCBtb3ZlIOKAlCBydW4gb3V0c2lkZVxuICAgIC8vIEFuZ3VsYXIncyB6b25lICjCpzE2LjEpIGFuZCByZS1lbnRlciBvbmx5IHdoZW4gd2UgYWN0dWFsbHkgbmVlZCB0b1xuICAgIC8vIG5vdGlmeSB0aGUgY29udHJvbGxlciBvZiBhIG1lYW5pbmdmdWwgY2hhbmdlLlxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBzZWwgPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKCFzZWwgfHwgc2VsLnJhbmdlQ291bnQgPT09IDApIHJldHVybjtcbiAgICAgICAgaWYgKCFzZWwuYW5jaG9yTm9kZSB8fCAhZWwuY29udGFpbnMoc2VsLmFuY2hvck5vZGUpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHNlbC5hbmNob3JOb2RlO1xuICAgICAgICBjb25zdCBzdGFydEVsID1cbiAgICAgICAgICBhbmNob3Iubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFID8gKGFuY2hvciBhcyBFbGVtZW50KSA6IGFuY2hvci5wYXJlbnRFbGVtZW50O1xuICAgICAgICBjb25zdCBzdHJvbmcgPSBzdGFydEVsPy5jbG9zZXN0PEhUTUxFbGVtZW50Pignc3Ryb25nW2RhdGEtc2VnPVwiY29tcGxldGVkXCJdW2RhdGEtcGFyYW0taWRdJyk7XG4gICAgICAgIGNvbnN0IGVuY2xvc2luZyA9IHN0cm9uZz8uZGF0YXNldC5wYXJhbUlkID8/IG51bGw7XG4gICAgICAgIGlmIChlbmNsb3NpbmcgJiYgZW5jbG9zaW5nICE9PSB0aGlzLmVkaXRpbmdQYXJhbUlkKSB7XG4gICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmNvbnRyb2xsZXIuc3RhcnRFZGl0aW5nUGFyYW0oZW5jbG9zaW5nKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMubGFzdElucHV0QXQgPCA1MCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuY29udHJvbGxlci5oYW5kbGVDYXJldE1vdmUoZ2V0Q3Vyc29yT2Zmc2V0KGVsKSkpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuZG9jdW1lbnRTZWxlY3Rpb25MaXN0ZW5lciA9IGhhbmRsZXI7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIGhhbmRsZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kQmVmb3JlSW5wdXRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAvLyBOYXRpdmUgYmVmb3JlaW5wdXQg4oCUIFJlYWN0J3Mgc3ludGhldGljIG9uQmVmb3JlSW5wdXQgaXMgd2lyZWQgdG8gdGhlXG4gICAgLy8gbGVnYWN5IHRleHRJbnB1dCBldmVudCBhbmQgZG9lc24ndCBmaXJlIHJlbGlhYmx5IGZvciBkZWxldGUqIHR5cGVzLlxuICAgIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBpbnB1dEV2ZW50ID0gZXZlbnQgYXMgSW5wdXRFdmVudDtcbiAgICAgIGNvbnN0IHQgPSBpbnB1dEV2ZW50LmlucHV0VHlwZTtcbiAgICAgIGlmICh0ID09PSBcImluc2VydFBhcmFncmFwaFwiIHx8IHQgPT09IFwiaW5zZXJ0TGluZUJyZWFrXCIgfHwgdCA9PT0gXCJpbnNlcnRGcm9tRHJvcFwiKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0LnN0YXJ0c1dpdGgoXCJpbnNlcnRcIikgfHwgdC5zdGFydHNXaXRoKFwiZGVsZXRlXCIpKSB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gdC5zdGFydHNXaXRoKFwiZGVsZXRlXCIpID8gXCJcIiA6IChpbnB1dEV2ZW50LmRhdGEgPz8gXCJcIik7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xsZXIucmVwbGFjZUVkaXRpbmdSYW5nZShyZXBsYWNlbWVudCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmJlZm9yZUlucHV0TGlzdGVuZXIgPSBoYW5kbGVyO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmVpbnB1dFwiLCBoYW5kbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZFN0YXRlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuY29udHJvbGxlci5zdGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgIHRoaXMuZWRpdGluZ1BhcmFtSWQgPSBzdGF0ZS5lZGl0aW5nUGFyYW0/LmlkID8/IG51bGw7XG5cbiAgICAgIHJlbmRlckVkaXRhYmxlQ29udGVudCh7XG4gICAgICAgIGlucHV0OiBlbCxcbiAgICAgICAgc2VnbWVudHM6IHN0YXRlLnNlZ21lbnRzLFxuICAgICAgICBuZXdQYXJhbUlkOiBzdGF0ZS5uZXdQYXJhbUlkLFxuICAgICAgICBlZGl0aW5nUGFyYW1JZDogc3RhdGUuZWRpdGluZ1BhcmFtPy5pZCA/PyBudWxsLFxuICAgICAgICBwbGFjZWhvbGRlclRleHQ6IHN0YXRlLnBsYWNlaG9sZGVyVGV4dCxcbiAgICAgICAgaXNGb2N1c2VkOiBzdGF0ZS5pc0ZvY3VzZWQsXG4gICAgICB9KTtcblxuICAgICAgLy8gUG9zdC1wcm9tb3RlIHJlZm9jdXMgKyBjYXJldC1hZnRlci1ib2xkIHBsYWNlbWVudCAobWlycm9ycyBSZWFjdCdzXG4gICAgICAvLyB1c2VMYXlvdXRFZmZlY3Qgb24gbmV3UGFyYW1JZCkuXG4gICAgICBjb25zdCBjdXJyZW50UGFyYW1JZCA9IHN0YXRlLm5ld1BhcmFtSWQgPz8gXCJcIjtcbiAgICAgIGlmIChjdXJyZW50UGFyYW1JZCAmJiBjdXJyZW50UGFyYW1JZCAhPT0gdGhpcy5sYXN0U2VlblBhcmFtSWQpIHtcbiAgICAgICAgdGhpcy5sYXN0U2VlblBhcmFtSWQgPSBjdXJyZW50UGFyYW1JZDtcbiAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgY29uc3QgZGVzaXJlZCA9IHN0YXRlLmNhcmV0T2Zmc2V0ID8/IHBsYWluVGV4dExlbmd0aChlbCk7XG4gICAgICAgIHNldEN1cnNvck9mZnNldChlbCwgZGVzaXJlZCk7XG4gICAgICB9IGVsc2UgaWYgKCFjdXJyZW50UGFyYW1JZCkge1xuICAgICAgICB0aGlzLmxhc3RTZWVuUGFyYW1JZCA9IFwiXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlLWVkaXQgY2FyZXQgcGFyayAobWlycm9ycyBSZWFjdCdzIHVzZUxheW91dEVmZmVjdCBvbiBlZGl0aW5nUGFyYW0pLlxuICAgICAgY29uc3QgZWRpdGluZ0lkID0gc3RhdGUuZWRpdGluZ1BhcmFtPy5pZCA/PyBcIlwiO1xuICAgICAgaWYgKGVkaXRpbmdJZCAmJiBlZGl0aW5nSWQgIT09IHRoaXMubGFzdEVkaXRpbmdJZCAmJiBzdGF0ZS5lZGl0aW5nQW5jaG9yICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5sYXN0RWRpdGluZ0lkID0gZWRpdGluZ0lkO1xuICAgICAgICBzZXRDdXJzb3JPZmZzZXQoZWwsIHN0YXRlLmVkaXRpbmdBbmNob3IpO1xuICAgICAgfSBlbHNlIGlmICghZWRpdGluZ0lkKSB7XG4gICAgICAgIHRoaXMubGFzdEVkaXRpbmdJZCA9IFwiXCI7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWhvc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9pbnRlcm5hbC9lZGl0b3ItaG9zdC9lZGl0b3ItaG9zdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsZUFBZSxHQUNoQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcxQzs7O0dBR0c7QUFDSCxJQUFJLGtCQUF1QyxDQUFDO0FBQzVDLFNBQVMscUJBQXFCO0lBQzVCLElBQUksa0JBQWtCLEtBQUssU0FBUztRQUFFLE9BQU8sa0JBQWtCLENBQUM7SUFDaEUsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDbEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDeEQsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGVBQWUsS0FBSyxnQkFBZ0IsQ0FBQztJQUNoRSxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQW9CSCxNQUFNLE9BQU8saUNBQWlDO0lBbkI5QztRQXFCVyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRVQsT0FBRSxHQUFHLE1BQU0sQ0FBNkIsVUFBVSxDQUFDLENBQUM7UUFDcEQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENB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QyxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDaEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7Z0JBQy9CLGVBQWUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzFDO2lCQUFNLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzsrSEE5TVUsaUNBQWlDO21IQUFqQyxpQ0FBaUM7NEZBQWpDLGlDQUFpQztrQkFuQjdDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsbUJBQW1CLEVBQUUsTUFBTTt3QkFDM0IsZUFBZSxFQUFFLFNBQVM7d0JBQzFCLFVBQVUsRUFBRSxNQUFNO3dCQUNsQixZQUFZLEVBQUUsTUFBTTt3QkFDcEIsUUFBUSxFQUFFLEdBQUc7d0JBQ2IsU0FBUyxFQUFFLFdBQVc7d0JBQ3RCLFdBQVcsRUFBRSxtQkFBbUI7d0JBQ2hDLG9CQUFvQixFQUFFLHNCQUFzQjt3QkFDNUMsa0JBQWtCLEVBQUUsb0JBQW9CO3dCQUN4QyxTQUFTLEVBQUUsaUJBQWlCO3dCQUM1QixTQUFTLEVBQUUsV0FBVzt3QkFDdEIsUUFBUSxFQUFFLFVBQVU7cUJBQ3JCO2lCQUNGOzhCQUV5QixVQUFVO3NCQUFqQyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ2IsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIGluamVjdCxcbiAgTmdab25lLFxuICB0eXBlIE9uRGVzdHJveSxcbiAgdHlwZSBPbkluaXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGV4dHJhY3RQbGFpblRleHQsXG4gIGdldEN1cnNvck9mZnNldCxcbiAgcGxhaW5UZXh0TGVuZ3RoLFxuICByZW5kZXJFZGl0YWJsZUNvbnRlbnQsXG4gIHNldEN1cnNvck9mZnNldCxcbn0gZnJvbSBcIkBtYWdpY3gtZW5nL2FpLWF1dG9jb21wbGV0ZS12YW5pbGxhXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHR5cGUgeyBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vY29udHJvbGxlci9haS1hdXRvY29tcGxldGUuY29udHJvbGxlclwiO1xuXG4vKipcbiAqIE1vZHVsZS1sZXZlbCBjYWNoZSBmb3IgdGhlIG9uZS10aW1lIHBsYWludGV4dC1vbmx5IGZlYXR1cmUgZGV0ZWN0aW9uLlxuICogTWlycm9ycyBgc3VwcG9ydHNQbGFpbnRleHRPbmx5YCBpbiB1c2VDb250ZW50RWRpdGFibGVFZGl0b3IudHMuXG4gKi9cbmxldCBwbGFpbnRleHRPbmx5Q2FjaGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBzdXBwb3J0c1BsYWludGV4dE9ubHkoKTogYm9vbGVhbiB7XG4gIGlmIChwbGFpbnRleHRPbmx5Q2FjaGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHBsYWludGV4dE9ubHlDYWNoZTtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwcm9iZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIHByb2JlLnNldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiLCBcInBsYWludGV4dC1vbmx5XCIpO1xuICBwbGFpbnRleHRPbmx5Q2FjaGUgPSBwcm9iZS5jb250ZW50RWRpdGFibGUgPT09IFwicGxhaW50ZXh0LW9ubHlcIjtcbiAgcmV0dXJuIHBsYWludGV4dE9ubHlDYWNoZTtcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBkaXJlY3RpdmUgdGhhdCBvd25zIGV2ZXJ5IGNvbmNlcm4gc3BlY2lmaWMgdG8gcnVubmluZyB0aGVcbiAqIGF1dG9jb21wbGV0ZSBvbiB0b3Agb2YgYSBjb250ZW50RWRpdGFibGUgaG9zdDogY29tcG9zaXRpb24gc3RhdGUsIGNhcmV0XG4gKiB0cmFja2luZywgc2VsZWN0aW9uY2hhbmdlIGhhbmRsaW5nLCBgYmVmb3JlaW5wdXRgIGludGVyY2VwdGlvbiwgcGFzdGVcbiAqIHNhbml0aXphdGlvbiwgcGxhaW50ZXh0LW9ubHkgZmVhdHVyZSBkZXRlY3Rpb24sIHNlZ21lbnQgcmVuZGVyaW5nLFxuICogcG9zdC1wcm9tb3RlIHJlZm9jdXMsIGFuZCByZS1lZGl0IGNhcmV0IHBhcmsuXG4gKlxuICogTWlycm9ycyBgcGFja2FnZXMvcmVhY3Qvc3JjL2hvb2tzL3VzZUNvbnRlbnRFZGl0YWJsZUVkaXRvci50c2Agb25lLWZvci1vbmUuXG4gKiBVc2VkIG9ubHkgYnkgdGhlIFRpZXIgMSBgPGFpLWF1dG9jb21wbGV0ZT5gIGNvbXBvbmVudCDigJQgbmV2ZXIgZXhwb3J0ZWQuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbYWlhRWRpdG9ySG9zdF1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgIHJvbGU6IFwiY29tYm9ib3hcIixcbiAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IFwibGlzdFwiLFxuICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImxpc3Rib3hcIixcbiAgICBzcGVsbGNoZWNrOiBcInRydWVcIixcbiAgICBlbnRlcmtleWhpbnQ6IFwic2VuZFwiLFxuICAgIHRhYmluZGV4OiBcIjBcIixcbiAgICBcIihpbnB1dClcIjogXCJvbklucHV0KClcIixcbiAgICBcIihrZXlkb3duKVwiOiBcIm9uS2V5RG93bigkZXZlbnQpXCIsXG4gICAgXCIoY29tcG9zaXRpb25zdGFydClcIjogXCJvbkNvbXBvc2l0aW9uU3RhcnQoKVwiLFxuICAgIFwiKGNvbXBvc2l0aW9uZW5kKVwiOiBcIm9uQ29tcG9zaXRpb25FbmQoKVwiLFxuICAgIFwiKHBhc3RlKVwiOiBcIm9uUGFzdGUoJGV2ZW50KVwiLFxuICAgIFwiKGZvY3VzKVwiOiBcIm9uRm9jdXMoKVwiLFxuICAgIFwiKGJsdXIpXCI6IFwib25CbHVyKClcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQUlBdXRvY29tcGxldGVFZGl0b3JIb3N0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoXCJhaWFFZGl0b3JIb3N0XCIpIGNvbnRyb2xsZXIhOiBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IHRydWU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgY29tcG9zaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgbGFzdElucHV0QXQgPSAwO1xuICBwcml2YXRlIGxhc3RTZWVuUGFyYW1JZCA9IFwiXCI7XG4gIHByaXZhdGUgbGFzdEVkaXRpbmdJZCA9IFwiXCI7XG4gIHByaXZhdGUgZWRpdGluZ1BhcmFtSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgZG9jdW1lbnRTZWxlY3Rpb25MaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgYmVmb3JlSW5wdXRMaXN0ZW5lcj86IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2xsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlthaWFFZGl0b3JIb3N0XSByZXF1aXJlcyBhIGNvbnRyb2xsZXJcIik7XG4gICAgfVxuXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgY2VNb2RlID0gc3VwcG9ydHNQbGFpbnRleHRPbmx5KCkgPyBcInBsYWludGV4dC1vbmx5XCIgOiBcInRydWVcIjtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgXCJjb250ZW50ZWRpdGFibGVcIiwgY2VNb2RlKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgXCJhcmlhLWNvbnRyb2xzXCIsIHRoaXMuY29udHJvbGxlci5saXN0Ym94SWQpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCBcInN1cHByZXNzLWNvbnRlbnQtZWRpdGFibGUtd2FybmluZ1wiLCBcInRydWVcIik7XG5cbiAgICAvLyBBdXRvLWZvY3VzIG9uIG1vdW50LiBJZiB0aGUgZWRpdG9yIGFscmVhZHkgaGFzIGZvY3VzIChlLmcuIGZyb20gYVxuICAgIC8vIGNsaWNrIHRoYXQgZmlyZWQgYmVmb3JlIG91ciBsaWZlY3ljbGUgcmFuKSwgbm90aWZ5IHRoZSBjb250cm9sbGVyXG4gICAgLy8gaW5zdGVhZCBvZiBzdGVhbGluZyBmb2N1cy5cbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZWwpIHtcbiAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmJpbmREb2N1bWVudFNlbGVjdGlvbkxpc3RlbmVyKCk7XG4gICAgdGhpcy5iaW5kQmVmb3JlSW5wdXRMaXN0ZW5lcigpO1xuICAgIHRoaXMuYmluZFN0YXRlU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRTZWxlY3Rpb25MaXN0ZW5lciAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzZWxlY3Rpb25jaGFuZ2VcIiwgdGhpcy5kb2N1bWVudFNlbGVjdGlvbkxpc3RlbmVyKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYmVmb3JlSW5wdXRMaXN0ZW5lcikge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJiZWZvcmVpbnB1dFwiLCB0aGlzLmJlZm9yZUlucHV0TGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PSBIb3N0IGV2ZW50IGhhbmRsZXJzID09PVxuXG4gIG9uQ29tcG9zaXRpb25TdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvc2luZyA9IHRydWU7XG4gIH1cblxuICBvbkNvbXBvc2l0aW9uRW5kKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9zaW5nID0gZmFsc2U7XG4gICAgdGhpcy5maXJlSW5wdXQoKTtcbiAgfVxuXG4gIG9uSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5sYXN0SW5wdXRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMuZmlyZUlucHV0KCk7XG4gICAgdGhpcy5jb250cm9sbGVyLmhhbmRsZUNhcmV0QWZ0ZXJJbnB1dChnZXRDdXJzb3JPZmZzZXQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuaGFuZGxlS2V5RG93bihldmVudCk7XG4gIH1cblxuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dCA9IChldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKFwidGV4dC9wbGFpblwiKSA/PyBcIlwiKS5yZXBsYWNlKC9cXHI/XFxuL2csIFwiIFwiKTtcbiAgICBpZiAoIXRleHQpIHJldHVybjtcbiAgICBjb25zdCBkb2MgPSBlbC5vd25lckRvY3VtZW50ID8/IGRvY3VtZW50O1xuICAgIGNvbnN0IHNlbCA9IGRvYy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbCB8fCBzZWwucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7XG4gICAgaWYgKCFlbC5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikpIHJldHVybjtcbiAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgIGNvbnN0IG5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShub2RlKTtcbiAgICByYW5nZS5zZXRTdGFydEFmdGVyKG5vZGUpO1xuICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgIHRoaXMuZmlyZUlucHV0KCk7XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRGb2N1c2VkKHRydWUpO1xuICB9XG5cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgfVxuXG4gIC8vID09PSBJbnRlcm5hbCBoZWxwZXJzID09PVxuXG4gIHByaXZhdGUgZmlyZUlucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbXBvc2luZykgcmV0dXJuO1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHJhdyA9IGV4dHJhY3RQbGFpblRleHQoZWwpO1xuICAgIGNvbnN0IHNob3VsZENhcGl0YWxpemUgPSByYXcubGVuZ3RoID4gMCAmJiByYXdbMF0gIT09IHJhd1swXS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5leHQgPSBzaG91bGRDYXBpdGFsaXplID8gcmF3WzBdLnRvVXBwZXJDYXNlKCkgKyByYXcuc2xpY2UoMSkgOiByYXc7XG4gICAgdGhpcy5jb250cm9sbGVyLmhhbmRsZVRleHRDaGFuZ2UobmV4dCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmREb2N1bWVudFNlbGVjdGlvbkxpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAvLyBzZWxlY3Rpb25jaGFuZ2UgZmlyZXMgb24gZXZlcnkga2V5c3Ryb2tlIGFuZCBjYXJldCBtb3ZlIOKAlCBydW4gb3V0c2lkZVxuICAgIC8vIEFuZ3VsYXIncyB6b25lICjCpzE2LjEpIGFuZCByZS1lbnRlciBvbmx5IHdoZW4gd2UgYWN0dWFsbHkgbmVlZCB0b1xuICAgIC8vIG5vdGlmeSB0aGUgY29udHJvbGxlciBvZiBhIG1lYW5pbmdmdWwgY2hhbmdlLlxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBzZWwgPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKCFzZWwgfHwgc2VsLnJhbmdlQ291bnQgPT09IDApIHJldHVybjtcbiAgICAgICAgaWYgKCFzZWwuYW5jaG9yTm9kZSB8fCAhZWwuY29udGFpbnMoc2VsLmFuY2hvck5vZGUpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHNlbC5hbmNob3JOb2RlO1xuICAgICAgICBjb25zdCBzdGFydEVsID1cbiAgICAgICAgICBhbmNob3Iubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFID8gKGFuY2hvciBhcyBFbGVtZW50KSA6IGFuY2hvci5wYXJlbnRFbGVtZW50O1xuICAgICAgICBjb25zdCBzdHJvbmcgPSBzdGFydEVsPy5jbG9zZXN0PEhUTUxFbGVtZW50Pignc3Ryb25nW2RhdGEtc2VnPVwiY29tcGxldGVkXCJdW2RhdGEtcGFyYW0taWRdJyk7XG4gICAgICAgIC8vIGBET01TdHJpbmdNYXBgIGlzIGFuIGluZGV4IHNpZ25hdHVyZTsgYnJhY2tldCBub3RhdGlvbiBpcyByZXF1aXJlZFxuICAgICAgICAvLyBieSBgbm9Qcm9wZXJ0eUFjY2Vzc0Zyb21JbmRleFNpZ25hdHVyZWAuXG4gICAgICAgIGNvbnN0IGVuY2xvc2luZyA9IHN0cm9uZz8uZGF0YXNldFtcInBhcmFtSWRcIl0gPz8gbnVsbDtcbiAgICAgICAgaWYgKGVuY2xvc2luZyAmJiBlbmNsb3NpbmcgIT09IHRoaXMuZWRpdGluZ1BhcmFtSWQpIHtcbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuY29udHJvbGxlci5zdGFydEVkaXRpbmdQYXJhbShlbmNsb3NpbmcpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcmZvcm1hbmNlLm5vdygpIC0gdGhpcy5sYXN0SW5wdXRBdCA8IDUwKSByZXR1cm47XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5jb250cm9sbGVyLmhhbmRsZUNhcmV0TW92ZShnZXRDdXJzb3JPZmZzZXQoZWwpKSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kb2N1bWVudFNlbGVjdGlvbkxpc3RlbmVyID0gaGFuZGxlcjtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzZWxlY3Rpb25jaGFuZ2VcIiwgaGFuZGxlcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRCZWZvcmVJbnB1dExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIC8vIE5hdGl2ZSBiZWZvcmVpbnB1dCDigJQgUmVhY3QncyBzeW50aGV0aWMgb25CZWZvcmVJbnB1dCBpcyB3aXJlZCB0byB0aGVcbiAgICAvLyBsZWdhY3kgdGV4dElucHV0IGV2ZW50IGFuZCBkb2Vzbid0IGZpcmUgcmVsaWFibHkgZm9yIGRlbGV0ZSogdHlwZXMuXG4gICAgY29uc3QgaGFuZGxlciA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGlucHV0RXZlbnQgPSBldmVudCBhcyBJbnB1dEV2ZW50O1xuICAgICAgY29uc3QgdCA9IGlucHV0RXZlbnQuaW5wdXRUeXBlO1xuICAgICAgaWYgKHQgPT09IFwiaW5zZXJ0UGFyYWdyYXBoXCIgfHwgdCA9PT0gXCJpbnNlcnRMaW5lQnJlYWtcIiB8fCB0ID09PSBcImluc2VydEZyb21Ecm9wXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHQuc3RhcnRzV2l0aChcImluc2VydFwiKSB8fCB0LnN0YXJ0c1dpdGgoXCJkZWxldGVcIikpIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSB0LnN0YXJ0c1dpdGgoXCJkZWxldGVcIikgPyBcIlwiIDogKGlucHV0RXZlbnQuZGF0YSA/PyBcIlwiKTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbGxlci5yZXBsYWNlRWRpdGluZ1JhbmdlKHJlcGxhY2VtZW50KSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuYmVmb3JlSW5wdXRMaXN0ZW5lciA9IGhhbmRsZXI7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZWlucHV0XCIsIGhhbmRsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kU3RhdGVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5jb250cm9sbGVyLnN0YXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgdGhpcy5lZGl0aW5nUGFyYW1JZCA9IHN0YXRlLmVkaXRpbmdQYXJhbT8uaWQgPz8gbnVsbDtcblxuICAgICAgcmVuZGVyRWRpdGFibGVDb250ZW50KHtcbiAgICAgICAgaW5wdXQ6IGVsLFxuICAgICAgICBzZWdtZW50czogc3RhdGUuc2VnbWVudHMsXG4gICAgICAgIG5ld1BhcmFtSWQ6IHN0YXRlLm5ld1BhcmFtSWQsXG4gICAgICAgIGVkaXRpbmdQYXJhbUlkOiBzdGF0ZS5lZGl0aW5nUGFyYW0/LmlkID8/IG51bGwsXG4gICAgICAgIHBsYWNlaG9sZGVyVGV4dDogc3RhdGUucGxhY2Vob2xkZXJUZXh0LFxuICAgICAgICBpc0ZvY3VzZWQ6IHN0YXRlLmlzRm9jdXNlZCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQb3N0LXByb21vdGUgcmVmb2N1cyArIGNhcmV0LWFmdGVyLWJvbGQgcGxhY2VtZW50IChtaXJyb3JzIFJlYWN0J3NcbiAgICAgIC8vIHVzZUxheW91dEVmZmVjdCBvbiBuZXdQYXJhbUlkKS5cbiAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbUlkID0gc3RhdGUubmV3UGFyYW1JZCA/PyBcIlwiO1xuICAgICAgaWYgKGN1cnJlbnRQYXJhbUlkICYmIGN1cnJlbnRQYXJhbUlkICE9PSB0aGlzLmxhc3RTZWVuUGFyYW1JZCkge1xuICAgICAgICB0aGlzLmxhc3RTZWVuUGFyYW1JZCA9IGN1cnJlbnRQYXJhbUlkO1xuICAgICAgICBlbC5mb2N1cygpO1xuICAgICAgICBjb25zdCBkZXNpcmVkID0gc3RhdGUuY2FyZXRPZmZzZXQgPz8gcGxhaW5UZXh0TGVuZ3RoKGVsKTtcbiAgICAgICAgc2V0Q3Vyc29yT2Zmc2V0KGVsLCBkZXNpcmVkKTtcbiAgICAgIH0gZWxzZSBpZiAoIWN1cnJlbnRQYXJhbUlkKSB7XG4gICAgICAgIHRoaXMubGFzdFNlZW5QYXJhbUlkID0gXCJcIjtcbiAgICAgIH1cblxuICAgICAgLy8gUmUtZWRpdCBjYXJldCBwYXJrIChtaXJyb3JzIFJlYWN0J3MgdXNlTGF5b3V0RWZmZWN0IG9uIGVkaXRpbmdQYXJhbSkuXG4gICAgICBjb25zdCBlZGl0aW5nSWQgPSBzdGF0ZS5lZGl0aW5nUGFyYW0/LmlkID8/IFwiXCI7XG4gICAgICBpZiAoZWRpdGluZ0lkICYmIGVkaXRpbmdJZCAhPT0gdGhpcy5sYXN0RWRpdGluZ0lkICYmIHN0YXRlLmVkaXRpbmdBbmNob3IgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmxhc3RFZGl0aW5nSWQgPSBlZGl0aW5nSWQ7XG4gICAgICAgIHNldEN1cnNvck9mZnNldChlbCwgc3RhdGUuZWRpdGluZ0FuY2hvcik7XG4gICAgICB9IGVsc2UgaWYgKCFlZGl0aW5nSWQpIHtcbiAgICAgICAgdGhpcy5sYXN0RWRpdGluZ0lkID0gXCJcIjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Horizontal layout primitive — children sit in a row and wrap when out of
|
|
5
|
+
* room. Mirrors the React `<Cluster>` component / vanilla `.aia-cluster` CSS
|
|
6
|
+
* primitive. `noWrap` keeps a single row; `inline` makes it inline-level.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export class ClusterComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
/** Cross-axis alignment. Defaults to `center`. */
|
|
13
|
+
this.align = "center";
|
|
14
|
+
/** Main-axis distribution. Defaults to `start`. */
|
|
15
|
+
this.justify = "start";
|
|
16
|
+
/** When true, the cluster does NOT flex-wrap (single-row clusters). */
|
|
17
|
+
this.noWrap = false;
|
|
18
|
+
/** Render inline-level (inline-flex) instead of block. */
|
|
19
|
+
this.inline = false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
ClusterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClusterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
ClusterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ClusterComponent, isStandalone: true, selector: "aia-cluster", inputs: { gap: "gap", align: "align", justify: "justify", noWrap: "noWrap", inline: "inline" }, host: { properties: { "attr.data-align": "align", "attr.data-justify": "justify", "attr.data-nowrap": "noWrap ? '' : null", "attr.data-inline": "inline ? '' : null", "style.--aia-cluster-gap": "gap" }, classAttribute: "aia-cluster" }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, styles: ["@layer layout{.aia-cluster{display:flex;flex-wrap:wrap;gap:var(--aia-cluster-gap, .5rem)}.aia-cluster[data-inline]{display:inline-flex}.aia-cluster[data-nowrap]{flex-wrap:nowrap}.aia-cluster[data-align=start]{align-items:start}.aia-cluster[data-align=center]{align-items:center}.aia-cluster[data-align=end]{align-items:end}.aia-cluster[data-align=baseline]{align-items:baseline}.aia-cluster[data-justify=start]{justify-content:start}.aia-cluster[data-justify=center]{justify-content:center}.aia-cluster[data-justify=end]{justify-content:end}.aia-cluster[data-justify=between]{justify-content:space-between}.aia-cluster[data-justify=around]{justify-content:space-around}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClusterComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: "aia-cluster", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>", host: {
|
|
27
|
+
class: "aia-cluster",
|
|
28
|
+
"[attr.data-align]": "align",
|
|
29
|
+
"[attr.data-justify]": "justify",
|
|
30
|
+
"[attr.data-nowrap]": "noWrap ? '' : null",
|
|
31
|
+
"[attr.data-inline]": "inline ? '' : null",
|
|
32
|
+
"[style.--aia-cluster-gap]": "gap",
|
|
33
|
+
}, styles: ["@layer layout{.aia-cluster{display:flex;flex-wrap:wrap;gap:var(--aia-cluster-gap, .5rem)}.aia-cluster[data-inline]{display:inline-flex}.aia-cluster[data-nowrap]{flex-wrap:nowrap}.aia-cluster[data-align=start]{align-items:start}.aia-cluster[data-align=center]{align-items:center}.aia-cluster[data-align=end]{align-items:end}.aia-cluster[data-align=baseline]{align-items:baseline}.aia-cluster[data-justify=start]{justify-content:start}.aia-cluster[data-justify=center]{justify-content:center}.aia-cluster[data-justify=end]{justify-content:end}.aia-cluster[data-justify=between]{justify-content:space-between}.aia-cluster[data-justify=around]{justify-content:space-around}}\n"] }]
|
|
34
|
+
}], propDecorators: { gap: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], align: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], justify: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], noWrap: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], inline: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL2xheW91dC9jbHVzdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFN0Y7Ozs7OztHQU1HO0FBaUJILE1BQU0sT0FBTyxnQkFBZ0I7SUFoQjdCO1FBbUJFLGtEQUFrRDtRQUN6QyxVQUFLLEdBQTRDLFFBQVEsQ0FBQztRQUNuRSxtREFBbUQ7UUFDMUMsWUFBTyxHQUFzRCxPQUFPLENBQUM7UUFDOUUsdUVBQXVFO1FBQzlELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDeEIsMERBQTBEO1FBQ2pELFdBQU0sR0FBRyxLQUFLLENBQUM7S0FDekI7OzhHQVhZLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLGtaQVhqQiwyQkFBMkI7NEZBVzFCLGdCQUFnQjtrQkFoQjVCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxZQUMzQiwyQkFBMkIsUUFFL0I7d0JBQ0osS0FBSyxFQUFFLGFBQWE7d0JBQ3BCLG1CQUFtQixFQUFFLE9BQU87d0JBQzVCLHFCQUFxQixFQUFFLFNBQVM7d0JBQ2hDLG9CQUFvQixFQUFFLG9CQUFvQjt3QkFDMUMsb0JBQW9CLEVBQUUsb0JBQW9CO3dCQUMxQywyQkFBMkIsRUFBRSxLQUFLO3FCQUNuQzs4QkFJUSxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuLyoqXG4gKiBIb3Jpem9udGFsIGxheW91dCBwcmltaXRpdmUg4oCUIGNoaWxkcmVuIHNpdCBpbiBhIHJvdyBhbmQgd3JhcCB3aGVuIG91dCBvZlxuICogcm9vbS4gTWlycm9ycyB0aGUgUmVhY3QgYDxDbHVzdGVyPmAgY29tcG9uZW50IC8gdmFuaWxsYSBgLmFpYS1jbHVzdGVyYCBDU1NcbiAqIHByaW1pdGl2ZS4gYG5vV3JhcGAga2VlcHMgYSBzaW5nbGUgcm93OyBgaW5saW5lYCBtYWtlcyBpdCBpbmxpbmUtbGV2ZWwuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhaWEtY2x1c3RlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IFwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlwiLFxuICBzdHlsZVVybHM6IFtcIi4vY2x1c3Rlci5jb21wb25lbnQuY3NzXCJdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6IFwiYWlhLWNsdXN0ZXJcIixcbiAgICBcIlthdHRyLmRhdGEtYWxpZ25dXCI6IFwiYWxpZ25cIixcbiAgICBcIlthdHRyLmRhdGEtanVzdGlmeV1cIjogXCJqdXN0aWZ5XCIsXG4gICAgXCJbYXR0ci5kYXRhLW5vd3JhcF1cIjogXCJub1dyYXAgPyAnJyA6IG51bGxcIixcbiAgICBcIlthdHRyLmRhdGEtaW5saW5lXVwiOiBcImlubGluZSA/ICcnIDogbnVsbFwiLFxuICAgIFwiW3N0eWxlLi0tYWlhLWNsdXN0ZXItZ2FwXVwiOiBcImdhcFwiLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDbHVzdGVyQ29tcG9uZW50IHtcbiAgLyoqIEdhcCBiZXR3ZWVuIGNoaWxkcmVuLiBBbnkgQ1NTIGxlbmd0aC4gRGVmYXVsdHMgdG8gdGhlIENTUyBmYWxsYmFjayAoMC41cmVtKS4gKi9cbiAgQElucHV0KCkgZ2FwPzogc3RyaW5nO1xuICAvKiogQ3Jvc3MtYXhpcyBhbGlnbm1lbnQuIERlZmF1bHRzIHRvIGBjZW50ZXJgLiAqL1xuICBASW5wdXQoKSBhbGlnbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCIgfCBcImJhc2VsaW5lXCIgPSBcImNlbnRlclwiO1xuICAvKiogTWFpbi1heGlzIGRpc3RyaWJ1dGlvbi4gRGVmYXVsdHMgdG8gYHN0YXJ0YC4gKi9cbiAgQElucHV0KCkganVzdGlmeTogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCIgfCBcImJldHdlZW5cIiB8IFwiYXJvdW5kXCIgPSBcInN0YXJ0XCI7XG4gIC8qKiBXaGVuIHRydWUsIHRoZSBjbHVzdGVyIGRvZXMgTk9UIGZsZXgtd3JhcCAoc2luZ2xlLXJvdyBjbHVzdGVycykuICovXG4gIEBJbnB1dCgpIG5vV3JhcCA9IGZhbHNlO1xuICAvKiogUmVuZGVyIGlubGluZS1sZXZlbCAoaW5saW5lLWZsZXgpIGluc3RlYWQgb2YgYmxvY2suICovXG4gIEBJbnB1dCgpIGlubGluZSA9IGZhbHNlO1xufVxuIl19
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject, NgZone, ViewChild, ViewEncapsulation, } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Intrinsic grid layout primitive — auto-fits as many columns as fit between
|
|
5
|
+
* `min` and `max` wide, wrapping to new rows when there's no more horizontal
|
|
6
|
+
* room. Mirrors the React `<Grid>` component / vanilla `.aia-grid` primitive.
|
|
7
|
+
*
|
|
8
|
+
* Optionally scrolls (`scroll`, capped height) with a bottom fade overlay
|
|
9
|
+
* (`fade`) that appears while there's hidden overflow below. The fade is driven
|
|
10
|
+
* by a ResizeObserver + scroll listener + MutationObserver (for projected
|
|
11
|
+
* content changes) — all run outside Angular's zone so high-frequency layout
|
|
12
|
+
* events don't trip change detection (mirrors the former SuggestionGrid).
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export class GridComponent {
|
|
17
|
+
constructor() {
|
|
18
|
+
/** Minimum cell width. CSS length, e.g. "16rem". Columns auto-fit at runtime. */
|
|
19
|
+
this.min = "16rem";
|
|
20
|
+
/** Cap the height and scroll vertically when content overflows. */
|
|
21
|
+
this.scroll = false;
|
|
22
|
+
/** Show a bottom fade overlay while the grid has hidden overflow below. */
|
|
23
|
+
this.fade = false;
|
|
24
|
+
this.hasBottomOverflow = false;
|
|
25
|
+
this.zone = inject(NgZone);
|
|
26
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
27
|
+
}
|
|
28
|
+
ngAfterViewInit() {
|
|
29
|
+
if (!this.fade)
|
|
30
|
+
return;
|
|
31
|
+
this.bindOverflowTracking();
|
|
32
|
+
this.measureOverflow();
|
|
33
|
+
}
|
|
34
|
+
ngOnDestroy() {
|
|
35
|
+
this.resizeObserver?.disconnect();
|
|
36
|
+
this.mutationObserver?.disconnect();
|
|
37
|
+
if (this.scrollListener && this.gridRef) {
|
|
38
|
+
this.gridRef.nativeElement.removeEventListener("scroll", this.scrollListener);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
bindOverflowTracking() {
|
|
42
|
+
const grid = this.gridRef?.nativeElement;
|
|
43
|
+
if (!grid)
|
|
44
|
+
return;
|
|
45
|
+
this.zone.runOutsideAngular(() => {
|
|
46
|
+
this.scrollListener = () => this.measureOverflow();
|
|
47
|
+
grid.addEventListener("scroll", this.scrollListener, { passive: true });
|
|
48
|
+
if (typeof ResizeObserver !== "undefined") {
|
|
49
|
+
this.resizeObserver = new ResizeObserver(() => this.measureOverflow());
|
|
50
|
+
this.resizeObserver.observe(grid);
|
|
51
|
+
}
|
|
52
|
+
// Projected option count changes don't resize the capped grid box, so
|
|
53
|
+
// ResizeObserver misses them — watch the child list directly to match
|
|
54
|
+
// React's useLayoutEffect-on-options re-measure.
|
|
55
|
+
if (typeof MutationObserver !== "undefined") {
|
|
56
|
+
this.mutationObserver = new MutationObserver(() => this.measureOverflow());
|
|
57
|
+
this.mutationObserver.observe(grid, { childList: true, subtree: true });
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
measureOverflow() {
|
|
62
|
+
const grid = this.gridRef?.nativeElement;
|
|
63
|
+
if (!grid)
|
|
64
|
+
return;
|
|
65
|
+
const next = grid.scrollHeight - grid.scrollTop - grid.clientHeight > 1;
|
|
66
|
+
if (next !== this.hasBottomOverflow) {
|
|
67
|
+
this.zone.run(() => {
|
|
68
|
+
this.hasBottomOverflow = next;
|
|
69
|
+
this.cdr.markForCheck();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
GridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
+
GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GridComponent, isStandalone: true, selector: "aia-grid", inputs: { min: "min", max: "max", gap: "gap", scroll: "scroll", maxHeight: "maxHeight", fade: "fade" }, viewQueries: [{ propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true }], ngImport: i0, template: "<div [class.aia-grid-fade]=\"fade\" [attr.data-fade]=\"fade && hasBottomOverflow ? '' : null\">\n <div\n #grid\n class=\"aia-grid\"\n [attr.data-scroll]=\"scroll ? '' : null\"\n [style.--aia-grid-min]=\"min\"\n [style.--aia-grid-max]=\"max\"\n [style.--aia-grid-gap]=\"gap\"\n [style.--aia-grid-max-height]=\"maxHeight\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["aia-grid{display:contents}@layer layout{.aia-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--aia-grid-min),100%),var(--aia-grid-max, 1fr)));gap:var(--aia-grid-gap, 0)}.aia-grid[data-scroll]{grid-auto-rows:min-content;align-content:start;justify-content:start;padding:var(--aia-grid-scroll-pad, 0);max-height:var(--aia-grid-max-height, 200px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--aia-scrollbar-thumb, rgba(0, 0, 0, .3)) transparent}.aia-grid[data-scroll]::-webkit-scrollbar{width:6px}.aia-grid[data-scroll]::-webkit-scrollbar-track{background:transparent}.aia-grid[data-scroll]::-webkit-scrollbar-thumb{background:var(--aia-scrollbar-thumb, rgba(0, 0, 0, .3));border-radius:3px}.aia-grid-fade{position:relative}.aia-grid-fade:after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:50%;pointer-events:none;opacity:0;transition:opacity .15s ease-out;backdrop-filter:blur(12px);mask-image:linear-gradient(to bottom,transparent,white)}.aia-grid-fade[data-fade]:after{opacity:1}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GridComponent, decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{ selector: "aia-grid", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div [class.aia-grid-fade]=\"fade\" [attr.data-fade]=\"fade && hasBottomOverflow ? '' : null\">\n <div\n #grid\n class=\"aia-grid\"\n [attr.data-scroll]=\"scroll ? '' : null\"\n [style.--aia-grid-min]=\"min\"\n [style.--aia-grid-max]=\"max\"\n [style.--aia-grid-gap]=\"gap\"\n [style.--aia-grid-max-height]=\"maxHeight\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["aia-grid{display:contents}@layer layout{.aia-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--aia-grid-min),100%),var(--aia-grid-max, 1fr)));gap:var(--aia-grid-gap, 0)}.aia-grid[data-scroll]{grid-auto-rows:min-content;align-content:start;justify-content:start;padding:var(--aia-grid-scroll-pad, 0);max-height:var(--aia-grid-max-height, 200px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--aia-scrollbar-thumb, rgba(0, 0, 0, .3)) transparent}.aia-grid[data-scroll]::-webkit-scrollbar{width:6px}.aia-grid[data-scroll]::-webkit-scrollbar-track{background:transparent}.aia-grid[data-scroll]::-webkit-scrollbar-thumb{background:var(--aia-scrollbar-thumb, rgba(0, 0, 0, .3));border-radius:3px}.aia-grid-fade{position:relative}.aia-grid-fade:after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:50%;pointer-events:none;opacity:0;transition:opacity .15s ease-out;backdrop-filter:blur(12px);mask-image:linear-gradient(to bottom,transparent,white)}.aia-grid-fade[data-fade]:after{opacity:1}}\n"] }]
|
|
79
|
+
}], propDecorators: { min: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], max: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], gap: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], scroll: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], maxHeight: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], fade: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], gridRef: [{
|
|
92
|
+
type: ViewChild,
|
|
93
|
+
args: ["grid", { static: false }]
|
|
94
|
+
}] } });
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL2xheW91dC9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvbGF5b3V0L2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7O0FBRXZCOzs7Ozs7Ozs7Ozs7R0FZRztBQVNILE1BQU0sT0FBTyxhQUFhO0lBUjFCO1FBU0UsaUZBQWlGO1FBQ3hFLFFBQUcsR0FBRyxPQUFPLENBQUM7UUFLdkIsbUVBQW1FO1FBQzFELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFHeEIsMkVBQTJFO1FBQ2xFLFNBQUksR0FBRyxLQUFLLENBQUM7UUFJdEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRVQsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FxRGxEO0lBaERDLGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDL0U7SUFDSCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUV4RSxJQUFJLE9BQU8sY0FBYyxLQUFLLFdBQVcsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFFRCxzRUFBc0U7WUFDdEUsc0VBQXNFO1lBQ3RFLGlEQUFpRDtZQUNqRCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssV0FBVyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3pFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7OzJHQXZFVSxhQUFhOytGQUFiLGFBQWEsNlFDbkMxQixnWkFhQTs0RkRzQmEsYUFBYTtrQkFSekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQU01QixHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRWdDLE9BQU87c0JBQTVDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIHR5cGUgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIGluamVjdCxcbiAgTmdab25lLFxuICB0eXBlIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuLyoqXG4gKiBJbnRyaW5zaWMgZ3JpZCBsYXlvdXQgcHJpbWl0aXZlIOKAlCBhdXRvLWZpdHMgYXMgbWFueSBjb2x1bW5zIGFzIGZpdCBiZXR3ZWVuXG4gKiBgbWluYCBhbmQgYG1heGAgd2lkZSwgd3JhcHBpbmcgdG8gbmV3IHJvd3Mgd2hlbiB0aGVyZSdzIG5vIG1vcmUgaG9yaXpvbnRhbFxuICogcm9vbS4gTWlycm9ycyB0aGUgUmVhY3QgYDxHcmlkPmAgY29tcG9uZW50IC8gdmFuaWxsYSBgLmFpYS1ncmlkYCBwcmltaXRpdmUuXG4gKlxuICogT3B0aW9uYWxseSBzY3JvbGxzIChgc2Nyb2xsYCwgY2FwcGVkIGhlaWdodCkgd2l0aCBhIGJvdHRvbSBmYWRlIG92ZXJsYXlcbiAqIChgZmFkZWApIHRoYXQgYXBwZWFycyB3aGlsZSB0aGVyZSdzIGhpZGRlbiBvdmVyZmxvdyBiZWxvdy4gVGhlIGZhZGUgaXMgZHJpdmVuXG4gKiBieSBhIFJlc2l6ZU9ic2VydmVyICsgc2Nyb2xsIGxpc3RlbmVyICsgTXV0YXRpb25PYnNlcnZlciAoZm9yIHByb2plY3RlZFxuICogY29udGVudCBjaGFuZ2VzKSDigJQgYWxsIHJ1biBvdXRzaWRlIEFuZ3VsYXIncyB6b25lIHNvIGhpZ2gtZnJlcXVlbmN5IGxheW91dFxuICogZXZlbnRzIGRvbid0IHRyaXAgY2hhbmdlIGRldGVjdGlvbiAobWlycm9ycyB0aGUgZm9ybWVyIFN1Z2dlc3Rpb25HcmlkKS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFpYS1ncmlkXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogXCIuL2dyaWQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2dyaWQuY29tcG9uZW50LmNzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBNaW5pbXVtIGNlbGwgd2lkdGguIENTUyBsZW5ndGgsIGUuZy4gXCIxNnJlbVwiLiBDb2x1bW5zIGF1dG8tZml0IGF0IHJ1bnRpbWUuICovXG4gIEBJbnB1dCgpIG1pbiA9IFwiMTZyZW1cIjtcbiAgLyoqIE1heGltdW0gY2VsbCB3aWR0aC4gQ1NTIGxlbmd0aC4gRGVmYXVsdHMgKHZpYSBDU1MpIHRvIGAxZnJgIChzdHJldGNoKS4gKi9cbiAgQElucHV0KCkgbWF4Pzogc3RyaW5nO1xuICAvKiogR2FwIGJldHdlZW4gY2VsbHMuICovXG4gIEBJbnB1dCgpIGdhcD86IHN0cmluZztcbiAgLyoqIENhcCB0aGUgaGVpZ2h0IGFuZCBzY3JvbGwgdmVydGljYWxseSB3aGVuIGNvbnRlbnQgb3ZlcmZsb3dzLiAqL1xuICBASW5wdXQoKSBzY3JvbGwgPSBmYWxzZTtcbiAgLyoqIE1heCBoZWlnaHQgd2hlbiBgc2Nyb2xsYC4gQ1NTIGxlbmd0aC4gRGVmYXVsdHMgKHZpYSBDU1MpIHRvIDIwMHB4LiAqL1xuICBASW5wdXQoKSBtYXhIZWlnaHQ/OiBzdHJpbmc7XG4gIC8qKiBTaG93IGEgYm90dG9tIGZhZGUgb3ZlcmxheSB3aGlsZSB0aGUgZ3JpZCBoYXMgaGlkZGVuIG92ZXJmbG93IGJlbG93LiAqL1xuICBASW5wdXQoKSBmYWRlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChcImdyaWRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGdyaWRSZWY/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBoYXNCb3R0b21PdmVyZmxvdyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyPzogTXV0YXRpb25PYnNlcnZlcjtcbiAgcHJpdmF0ZSBzY3JvbGxMaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mYWRlKSByZXR1cm47XG4gICAgdGhpcy5iaW5kT3ZlcmZsb3dUcmFja2luZygpO1xuICAgIHRoaXMubWVhc3VyZU92ZXJmbG93KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgaWYgKHRoaXMuc2Nyb2xsTGlzdGVuZXIgJiYgdGhpcy5ncmlkUmVmKSB7XG4gICAgICB0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMuc2Nyb2xsTGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYmluZE92ZXJmbG93VHJhY2tpbmcoKTogdm9pZCB7XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZFJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWdyaWQpIHJldHVybjtcblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbExpc3RlbmVyID0gKCkgPT4gdGhpcy5tZWFzdXJlT3ZlcmZsb3coKTtcbiAgICAgIGdyaWQuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLnNjcm9sbExpc3RlbmVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cbiAgICAgIGlmICh0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLm1lYXN1cmVPdmVyZmxvdygpKTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGdyaWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9qZWN0ZWQgb3B0aW9uIGNvdW50IGNoYW5nZXMgZG9uJ3QgcmVzaXplIHRoZSBjYXBwZWQgZ3JpZCBib3gsIHNvXG4gICAgICAvLyBSZXNpemVPYnNlcnZlciBtaXNzZXMgdGhlbSDigJQgd2F0Y2ggdGhlIGNoaWxkIGxpc3QgZGlyZWN0bHkgdG8gbWF0Y2hcbiAgICAgIC8vIFJlYWN0J3MgdXNlTGF5b3V0RWZmZWN0LW9uLW9wdGlvbnMgcmUtbWVhc3VyZS5cbiAgICAgIGlmICh0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLm1lYXN1cmVPdmVyZmxvdygpKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoZ3JpZCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1lYXN1cmVPdmVyZmxvdygpOiB2b2lkIHtcbiAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghZ3JpZCkgcmV0dXJuO1xuICAgIGNvbnN0IG5leHQgPSBncmlkLnNjcm9sbEhlaWdodCAtIGdyaWQuc2Nyb2xsVG9wIC0gZ3JpZC5jbGllbnRIZWlnaHQgPiAxO1xuICAgIGlmIChuZXh0ICE9PSB0aGlzLmhhc0JvdHRvbU92ZXJmbG93KSB7XG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5oYXNCb3R0b21PdmVyZmxvdyA9IG5leHQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtjbGFzcy5haWEtZ3JpZC1mYWRlXT1cImZhZGVcIiBbYXR0ci5kYXRhLWZhZGVdPVwiZmFkZSAmJiBoYXNCb3R0b21PdmVyZmxvdyA/ICcnIDogbnVsbFwiPlxuICA8ZGl2XG4gICAgI2dyaWRcbiAgICBjbGFzcz1cImFpYS1ncmlkXCJcbiAgICBbYXR0ci5kYXRhLXNjcm9sbF09XCJzY3JvbGwgPyAnJyA6IG51bGxcIlxuICAgIFtzdHlsZS4tLWFpYS1ncmlkLW1pbl09XCJtaW5cIlxuICAgIFtzdHlsZS4tLWFpYS1ncmlkLW1heF09XCJtYXhcIlxuICAgIFtzdHlsZS4tLWFpYS1ncmlkLWdhcF09XCJnYXBcIlxuICAgIFtzdHlsZS4tLWFpYS1ncmlkLW1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCJcbiAgPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Vertical layout primitive — children stack top-to-bottom with `space` gap.
|
|
5
|
+
* Mirrors the React `<Stack>` component / vanilla `.aia-stack` CSS primitive.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export class StackComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
/** Cross-axis alignment of children. Defaults to `stretch` (full width). */
|
|
12
|
+
this.align = "stretch";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
StackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
StackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: StackComponent, isStandalone: true, selector: "aia-stack", inputs: { space: "space", align: "align" }, host: { properties: { "attr.data-align": "align", "style.--aia-stack-space": "space" }, classAttribute: "aia-stack" }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, styles: ["@layer layout{.aia-stack{display:flex;flex-direction:column;gap:var(--aia-stack-space, .5rem)}.aia-stack[data-align=start]{align-items:start}.aia-stack[data-align=center]{align-items:center}.aia-stack[data-align=end]{align-items:end}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StackComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: "aia-stack", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>", host: {
|
|
20
|
+
class: "aia-stack",
|
|
21
|
+
"[attr.data-align]": "align",
|
|
22
|
+
"[style.--aia-stack-space]": "space",
|
|
23
|
+
}, styles: ["@layer layout{.aia-stack{display:flex;flex-direction:column;gap:var(--aia-stack-space, .5rem)}.aia-stack[data-align=start]{align-items:start}.aia-stack[data-align=center]{align-items:center}.aia-stack[data-align=end]{align-items:end}}\n"] }]
|
|
24
|
+
}], propDecorators: { space: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], align: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}] } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9pbnRlcm5hbC9sYXlvdXQvc3RhY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU3Rjs7Ozs7R0FLRztBQWNILE1BQU0sT0FBTyxjQUFjO0lBYjNCO1FBZ0JFLDRFQUE0RTtRQUNuRSxVQUFLLEdBQTJDLFNBQVMsQ0FBQztLQUNwRTs7NEdBTFksY0FBYztnR0FBZCxjQUFjLHdPQVJmLDJCQUEyQjs0RkFRMUIsY0FBYztrQkFiMUIsU0FBUzsrQkFDRSxXQUFXLGNBQ1QsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCLDJCQUEyQixRQUUvQjt3QkFDSixLQUFLLEVBQUUsV0FBVzt3QkFDbEIsbUJBQW1CLEVBQUUsT0FBTzt3QkFDNUIsMkJBQTJCLEVBQUUsT0FBTztxQkFDckM7OEJBSVEsS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbi8qKlxuICogVmVydGljYWwgbGF5b3V0IHByaW1pdGl2ZSDigJQgY2hpbGRyZW4gc3RhY2sgdG9wLXRvLWJvdHRvbSB3aXRoIGBzcGFjZWAgZ2FwLlxuICogTWlycm9ycyB0aGUgUmVhY3QgYDxTdGFjaz5gIGNvbXBvbmVudCAvIHZhbmlsbGEgYC5haWEtc3RhY2tgIENTUyBwcmltaXRpdmUuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhaWEtc3RhY2tcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cIixcbiAgc3R5bGVVcmxzOiBbXCIuL3N0YWNrLmNvbXBvbmVudC5jc3NcIl0sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogXCJhaWEtc3RhY2tcIixcbiAgICBcIlthdHRyLmRhdGEtYWxpZ25dXCI6IFwiYWxpZ25cIixcbiAgICBcIltzdHlsZS4tLWFpYS1zdGFjay1zcGFjZV1cIjogXCJzcGFjZVwiLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTdGFja0NvbXBvbmVudCB7XG4gIC8qKiBHYXAgYmV0d2VlbiBjaGlsZHJlbi4gQW55IENTUyBsZW5ndGguIERlZmF1bHRzIHRvIHRoZSBDU1MgZmFsbGJhY2sgKDAuNXJlbSkuICovXG4gIEBJbnB1dCgpIHNwYWNlPzogc3RyaW5nO1xuICAvKiogQ3Jvc3MtYXhpcyBhbGlnbm1lbnQgb2YgY2hpbGRyZW4uIERlZmF1bHRzIHRvIGBzdHJldGNoYCAoZnVsbCB3aWR0aCkuICovXG4gIEBJbnB1dCgpIGFsaWduOiBcInN0YXJ0XCIgfCBcImNlbnRlclwiIHwgXCJlbmRcIiB8IFwic3RyZXRjaFwiID0gXCJzdHJldGNoXCI7XG59XG4iXX0=
|