valtech-components 4.0.184 → 4.0.186
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/load-more/load-more.component.mjs +113 -0
- package/esm2022/lib/components/molecules/load-more/types.mjs +2 -0
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +27 -4
- package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +3 -5
- package/esm2022/lib/services/auth/auth.service.mjs +4 -4
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/esm2022/lib/services/org/org.service.mjs +13 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/valtech-components.mjs +153 -12
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/load-more/load-more.component.d.ts +38 -0
- package/lib/components/molecules/load-more/types.d.ts +23 -0
- package/lib/components/molecules/pin-input/pin-input.component.d.ts +7 -0
- package/lib/services/auth/types.d.ts +2 -0
- package/lib/services/org/org.service.d.ts +5 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Component, Output, EventEmitter, computed, effect, inject, input, signal } from '@angular/core';
|
|
2
|
+
import { IonButton, IonSpinner, IonInfiniteScroll, IonInfiniteScrollContent } from '@ionic/angular/standalone';
|
|
3
|
+
import { I18nService } from '../../../services/i18n';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const LOAD_MORE_I18N = {
|
|
6
|
+
es: { label: 'Cargar mas' },
|
|
7
|
+
en: { label: 'Load more' },
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Boton "Cargar mas" con spinner integrado, o infinite scroll.
|
|
11
|
+
*
|
|
12
|
+
* Modo button (default): muestra un ion-button con ion-spinner en slot=start
|
|
13
|
+
* mientras loading=true. Se oculta cuando hasMore=false.
|
|
14
|
+
*
|
|
15
|
+
* Modo infinite: usa ion-infinite-scroll. Emite (loadMore), espera que el
|
|
16
|
+
* padre ponga loading=false para completar el ciclo del scroll.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* <val-load-more
|
|
20
|
+
* [props]="{ loading: loadingMore(), hasMore: !!nextCursor() }"
|
|
21
|
+
* (loadMore)="onLoadMore()"
|
|
22
|
+
* />
|
|
23
|
+
*/
|
|
24
|
+
export class LoadMoreComponent {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.i18n = inject(I18nService);
|
|
27
|
+
this.props = input({});
|
|
28
|
+
this.loadMore = new EventEmitter();
|
|
29
|
+
this.loading = computed(() => this.props().loading ?? false);
|
|
30
|
+
this.hasMore = computed(() => this.props().hasMore ?? true);
|
|
31
|
+
this.mode = computed(() => this.props().mode ?? 'button');
|
|
32
|
+
this.color = computed(() => this.props().color ?? 'dark');
|
|
33
|
+
this.fill = computed(() => this.props().fill ?? 'outline');
|
|
34
|
+
this.shape = computed(() => this.props().shape ?? 'round');
|
|
35
|
+
this.size = computed(() => this.props().size ?? 'small');
|
|
36
|
+
this.threshold = computed(() => this.props().threshold ?? '100px');
|
|
37
|
+
this.label = computed(() => this.props().label ?? this.i18n.t('LoadMore.label'));
|
|
38
|
+
this._pendingComplete = signal(null);
|
|
39
|
+
if (!this.i18n.hasNamespace('LoadMore')) {
|
|
40
|
+
this.i18n.registerContent('LoadMore', LOAD_MORE_I18N);
|
|
41
|
+
}
|
|
42
|
+
effect(() => {
|
|
43
|
+
const complete = this._pendingComplete();
|
|
44
|
+
if (complete !== null && !this.loading()) {
|
|
45
|
+
complete();
|
|
46
|
+
this._pendingComplete.set(null);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
onButtonClick() {
|
|
51
|
+
if (!this.loading())
|
|
52
|
+
this.loadMore.emit();
|
|
53
|
+
}
|
|
54
|
+
onInfiniteScroll(event) {
|
|
55
|
+
this._pendingComplete.set(() => {
|
|
56
|
+
void event.target.complete();
|
|
57
|
+
});
|
|
58
|
+
this.loadMore.emit();
|
|
59
|
+
}
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadMoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LoadMoreComponent, isStandalone: true, selector: "val-load-more", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { loadMore: "loadMore" }, ngImport: i0, template: `
|
|
62
|
+
@if (mode() === 'infinite') {
|
|
63
|
+
<ion-infinite-scroll [disabled]="!hasMore()" [threshold]="threshold()" (ionInfinite)="onInfiniteScroll($event)">
|
|
64
|
+
<ion-infinite-scroll-content />
|
|
65
|
+
</ion-infinite-scroll>
|
|
66
|
+
} @else if (hasMore()) {
|
|
67
|
+
<div class="lm-wrap">
|
|
68
|
+
<ion-button
|
|
69
|
+
[color]="color()"
|
|
70
|
+
[fill]="fill()"
|
|
71
|
+
[shape]="shape()"
|
|
72
|
+
[size]="size()"
|
|
73
|
+
[disabled]="loading()"
|
|
74
|
+
(click)="onButtonClick()"
|
|
75
|
+
>
|
|
76
|
+
@if (loading()) {
|
|
77
|
+
<ion-spinner name="crescent" slot="start" />
|
|
78
|
+
}
|
|
79
|
+
{{ label() }}
|
|
80
|
+
</ion-button>
|
|
81
|
+
</div>
|
|
82
|
+
}
|
|
83
|
+
`, isInline: true, styles: [":host{display:block}.lm-wrap{display:flex;justify-content:center;padding:16px 0 8px}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }] }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadMoreComponent, decorators: [{
|
|
86
|
+
type: Component,
|
|
87
|
+
args: [{ selector: 'val-load-more', standalone: true, imports: [IonButton, IonSpinner, IonInfiniteScroll, IonInfiniteScrollContent], template: `
|
|
88
|
+
@if (mode() === 'infinite') {
|
|
89
|
+
<ion-infinite-scroll [disabled]="!hasMore()" [threshold]="threshold()" (ionInfinite)="onInfiniteScroll($event)">
|
|
90
|
+
<ion-infinite-scroll-content />
|
|
91
|
+
</ion-infinite-scroll>
|
|
92
|
+
} @else if (hasMore()) {
|
|
93
|
+
<div class="lm-wrap">
|
|
94
|
+
<ion-button
|
|
95
|
+
[color]="color()"
|
|
96
|
+
[fill]="fill()"
|
|
97
|
+
[shape]="shape()"
|
|
98
|
+
[size]="size()"
|
|
99
|
+
[disabled]="loading()"
|
|
100
|
+
(click)="onButtonClick()"
|
|
101
|
+
>
|
|
102
|
+
@if (loading()) {
|
|
103
|
+
<ion-spinner name="crescent" slot="start" />
|
|
104
|
+
}
|
|
105
|
+
{{ label() }}
|
|
106
|
+
</ion-button>
|
|
107
|
+
</div>
|
|
108
|
+
}
|
|
109
|
+
`, styles: [":host{display:block}.lm-wrap{display:flex;justify-content:center;padding:16px 0 8px}\n"] }]
|
|
110
|
+
}], ctorParameters: () => [], propDecorators: { loadMore: [{
|
|
111
|
+
type: Output
|
|
112
|
+
}] } });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1tb3JlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbG9hZC1tb3JlL2xvYWQtbW9yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBR3JELE1BQU0sY0FBYyxHQUFHO0lBQ3JCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7SUFDM0IsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtDQUMzQixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUF5Q0gsTUFBTSxPQUFPLGlCQUFpQjtJQW1CNUI7UUFsQmlCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbkMsVUFBSyxHQUFHLEtBQUssQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFFMUIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUMsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ3hELFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN2RCxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUM7UUFDckQsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQztRQUN0RCxVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUM7UUFDdEQsU0FBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQztRQUM5RCxVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBRXBFLHFCQUFnQixHQUFHLE1BQU0sQ0FBc0IsSUFBSSxDQUFDLENBQUM7UUFHcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekMsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3pDLFFBQVEsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWtCO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQzdCLEtBQU0sS0FBSyxDQUFDLE1BQXVDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7K0dBekNVLGlCQUFpQjttR0FBakIsaUJBQWlCLGdQQXBDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQsZ0tBdkJTLFNBQVMsb1BBQUUsVUFBVSx5R0FBRSxpQkFBaUIsK0dBQUUsd0JBQXdCOzs0RkFxQ2pFLGlCQUFpQjtrQkF4QzdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLENBQUMsWUFDbkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7d0RBbUJrQixRQUFRO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvblNwaW5uZXIsIElvbkluZmluaXRlU2Nyb2xsLCBJb25JbmZpbml0ZVNjcm9sbENvbnRlbnQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBMb2FkTW9yZU1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IExPQURfTU9SRV9JMThOID0ge1xuICBlczogeyBsYWJlbDogJ0NhcmdhciBtYXMnIH0sXG4gIGVuOiB7IGxhYmVsOiAnTG9hZCBtb3JlJyB9LFxufTtcblxuLyoqXG4gKiBCb3RvbiBcIkNhcmdhciBtYXNcIiBjb24gc3Bpbm5lciBpbnRlZ3JhZG8sIG8gaW5maW5pdGUgc2Nyb2xsLlxuICpcbiAqIE1vZG8gYnV0dG9uIChkZWZhdWx0KTogbXVlc3RyYSB1biBpb24tYnV0dG9uIGNvbiBpb24tc3Bpbm5lciBlbiBzbG90PXN0YXJ0XG4gKiBtaWVudHJhcyBsb2FkaW5nPXRydWUuIFNlIG9jdWx0YSBjdWFuZG8gaGFzTW9yZT1mYWxzZS5cbiAqXG4gKiBNb2RvIGluZmluaXRlOiB1c2EgaW9uLWluZmluaXRlLXNjcm9sbC4gRW1pdGUgKGxvYWRNb3JlKSwgZXNwZXJhIHF1ZSBlbFxuICogcGFkcmUgcG9uZ2EgbG9hZGluZz1mYWxzZSBwYXJhIGNvbXBsZXRhciBlbCBjaWNsbyBkZWwgc2Nyb2xsLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWxvYWQtbW9yZVxuICogICBbcHJvcHNdPVwieyBsb2FkaW5nOiBsb2FkaW5nTW9yZSgpLCBoYXNNb3JlOiAhIW5leHRDdXJzb3IoKSB9XCJcbiAqICAgKGxvYWRNb3JlKT1cIm9uTG9hZE1vcmUoKVwiXG4gKiAvPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbG9hZC1tb3JlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uU3Bpbm5lciwgSW9uSW5maW5pdGVTY3JvbGwsIElvbkluZmluaXRlU2Nyb2xsQ29udGVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChtb2RlKCkgPT09ICdpbmZpbml0ZScpIHtcbiAgICAgIDxpb24taW5maW5pdGUtc2Nyb2xsIFtkaXNhYmxlZF09XCIhaGFzTW9yZSgpXCIgW3RocmVzaG9sZF09XCJ0aHJlc2hvbGQoKVwiIChpb25JbmZpbml0ZSk9XCJvbkluZmluaXRlU2Nyb2xsKCRldmVudClcIj5cbiAgICAgICAgPGlvbi1pbmZpbml0ZS1zY3JvbGwtY29udGVudCAvPlxuICAgICAgPC9pb24taW5maW5pdGUtc2Nyb2xsPlxuICAgIH0gQGVsc2UgaWYgKGhhc01vcmUoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImxtLXdyYXBcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBbY29sb3JdPVwiY29sb3IoKVwiXG4gICAgICAgICAgW2ZpbGxdPVwiZmlsbCgpXCJcbiAgICAgICAgICBbc2hhcGVdPVwic2hhcGUoKVwiXG4gICAgICAgICAgW3NpemVdPVwic2l6ZSgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZygpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAge3sgbGFiZWwoKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAubG0td3JhcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDAgOHB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExvYWRNb3JlQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICByZWFkb25seSBwcm9wcyA9IGlucHV0PExvYWRNb3JlTWV0YWRhdGE+KHt9KTtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKS5sb2FkaW5nID8/IGZhbHNlKTtcbiAgcmVhZG9ubHkgaGFzTW9yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKS5oYXNNb3JlID8/IHRydWUpO1xuICByZWFkb25seSBtb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpLm1vZGUgPz8gJ2J1dHRvbicpO1xuICByZWFkb25seSBjb2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKS5jb2xvciA/PyAnZGFyaycpO1xuICByZWFkb25seSBmaWxsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpLmZpbGwgPz8gJ291dGxpbmUnKTtcbiAgcmVhZG9ubHkgc2hhcGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCkuc2hhcGUgPz8gJ3JvdW5kJyk7XG4gIHJlYWRvbmx5IHNpemUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCkuc2l6ZSA/PyAnc21hbGwnKTtcbiAgcmVhZG9ubHkgdGhyZXNob2xkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpLnRocmVzaG9sZCA/PyAnMTAwcHgnKTtcbiAgcmVhZG9ubHkgbGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCkubGFiZWwgPz8gdGhpcy5pMThuLnQoJ0xvYWRNb3JlLmxhYmVsJykpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlbmRpbmdDb21wbGV0ZSA9IHNpZ25hbDwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ0xvYWRNb3JlJykpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoJ0xvYWRNb3JlJywgTE9BRF9NT1JFX0kxOE4pO1xuICAgIH1cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY29tcGxldGUgPSB0aGlzLl9wZW5kaW5nQ29tcGxldGUoKTtcbiAgICAgIGlmIChjb21wbGV0ZSAhPT0gbnVsbCAmJiAhdGhpcy5sb2FkaW5nKCkpIHtcbiAgICAgICAgY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcGVuZGluZ0NvbXBsZXRlLnNldChudWxsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmcoKSkgdGhpcy5sb2FkTW9yZS5lbWl0KCk7XG4gIH1cblxuICBvbkluZmluaXRlU2Nyb2xsKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX3BlbmRpbmdDb21wbGV0ZS5zZXQoKCkgPT4ge1xuICAgICAgdm9pZCAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJb25JbmZpbml0ZVNjcm9sbEVsZW1lbnQpLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gICAgdGhpcy5sb2FkTW9yZS5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xvYWQtbW9yZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXRhZGF0YSBwYXJhIHZhbC1sb2FkLW1vcmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZE1vcmVNZXRhZGF0YSB7XG4gIC8qKiBNdWVzdHJhIHNwaW5uZXIgeSBkZXNoYWJpbGl0YSBlbCBib3Rvbi9zY3JvbGwgbWllbnRyYXMgZXMgdHJ1ZS4gKi9cbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIC8qKiBTaSBlcyBmYWxzZSwgb2N1bHRhIGVsIGNvbXBvbmVudGUgKG5vIGhheSBtYXMgaXRlbXMpLiBEZWZhdWx0OiB0cnVlLiAqL1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbiAgLyoqIE1vZG8gZGUgY2FyZ2EuIERlZmF1bHQ6ICdidXR0b24nLiAqL1xuICBtb2RlPzogJ2J1dHRvbicgfCAnaW5maW5pdGUnO1xuICAvKiogVGV4dG8gZGVsIGJvdG9uLiBEZWZhdWx0OiBpMThuICdDYXJnYXIgbWFzJyAvICdMb2FkIG1vcmUnLiAqL1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIENvbG9yIElvbmljIGRlbCBib3Rvbi4gRGVmYXVsdDogJ2RhcmsnLiAqL1xuICBjb2xvcj86IHN0cmluZztcbiAgLyoqIEZpbGwgZGVsIGJvdG9uLiBEZWZhdWx0OiAnb3V0bGluZScuICovXG4gIGZpbGw/OiBzdHJpbmc7XG4gIC8qKiBTaGFwZSBkZWwgYm90b24uIERlZmF1bHQ6ICdyb3VuZCcuICovXG4gIHNoYXBlPzogc3RyaW5nO1xuICAvKiogU2l6ZSBkZWwgYm90b24uIERlZmF1bHQ6ICdzbWFsbCcuICovXG4gIHNpemU/OiAnc21hbGwnIHwgJ2RlZmF1bHQnIHwgJ2xhcmdlJztcbiAgLyoqIFVtYnJhbCBkZSBzY3JvbGwgcGFyYSBtb2RvICdpbmZpbml0ZScuIERlZmF1bHQ6ICcxMDBweCcuICovXG4gIHRocmVzaG9sZD86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
1
|
+
import { Component, Input, ViewChild, inject } from '@angular/core';
|
|
2
2
|
import { NgOtpInputComponent, NgOtpInputModule } from 'ng-otp-input';
|
|
3
|
+
import { I18nService } from '../../../services/i18n';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "ng-otp-input";
|
|
5
6
|
/** Size configurations for PIN input boxes */
|
|
@@ -8,6 +9,15 @@ const SIZE_CONFIG = {
|
|
|
8
9
|
medium: { width: '50px', height: '54px', fontSize: '28px' },
|
|
9
10
|
large: { width: '58px', height: '60px', fontSize: '32px' },
|
|
10
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Defaults i18n del componente. Se auto-registran en el constructor (namespace
|
|
14
|
+
* `PinInput`) para que el grupo de inputs siempre tenga un nombre accesible
|
|
15
|
+
* aunque el consumer no provea `props.label` ni registre el namespace.
|
|
16
|
+
*/
|
|
17
|
+
const PIN_INPUT_I18N = {
|
|
18
|
+
es: { inputGroupLabel: 'Código de verificación' },
|
|
19
|
+
en: { inputGroupLabel: 'Verification code' },
|
|
20
|
+
};
|
|
11
21
|
/**
|
|
12
22
|
* val-pin-input
|
|
13
23
|
*
|
|
@@ -19,7 +29,16 @@ const SIZE_CONFIG = {
|
|
|
19
29
|
* @input props: PinInputMetadata - Configuration for the PIN input (form control, length, etc.)
|
|
20
30
|
*/
|
|
21
31
|
export class PinInputComponent {
|
|
32
|
+
/**
|
|
33
|
+
* Nombre accesible del grupo de cajas del PIN. Deriva de `props.label`; si está
|
|
34
|
+
* vacío usa el default i18n `PinInput.inputGroupLabel`. Como el componente no
|
|
35
|
+
* renderiza un label visible, se expone vía `aria-label` (no `aria-labelledby`).
|
|
36
|
+
*/
|
|
37
|
+
get ariaLabel() {
|
|
38
|
+
return this.props?.label?.trim() || this.i18n.t('inputGroupLabel', 'PinInput');
|
|
39
|
+
}
|
|
22
40
|
constructor() {
|
|
41
|
+
this.i18n = inject(I18nService);
|
|
23
42
|
this.codeLength = 5;
|
|
24
43
|
this.otpInputConfig = {
|
|
25
44
|
inputStyles: {
|
|
@@ -31,6 +50,10 @@ export class PinInputComponent {
|
|
|
31
50
|
length: this.codeLength,
|
|
32
51
|
allowNumbersOnly: true,
|
|
33
52
|
};
|
|
53
|
+
// Auto-registro de defaults i18n (es/en). Idempotente: solo mezcla las keys
|
|
54
|
+
// ausentes, sin pisar las que el consumer haya registrado. Garantiza que el
|
|
55
|
+
// grupo siempre tenga nombre accesible sin que el consumer registre nada.
|
|
56
|
+
this.i18n.registerDefaults('PinInput', PIN_INPUT_I18N);
|
|
34
57
|
}
|
|
35
58
|
ngOnInit() {
|
|
36
59
|
// Usar props.length si se proporciona, sino mantener default 5
|
|
@@ -65,7 +88,7 @@ export class PinInputComponent {
|
|
|
65
88
|
}
|
|
66
89
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
90
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PinInputComponent, isStandalone: true, selector: "val-pin-input", inputs: { props: "props" }, viewQueries: [{ propertyName: "pinCode", first: true, predicate: NgOtpInputComponent, descendants: true }], ngImport: i0, template: `
|
|
68
|
-
<div class="otp">
|
|
91
|
+
<div class="otp" role="group" [attr.aria-label]="ariaLabel">
|
|
69
92
|
<ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
|
|
70
93
|
</div>
|
|
71
94
|
`, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions--sticky{position:sticky;bottom:0;z-index:1;background:var(--ion-background-color);border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom))}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:1.5rem!important}}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
|
|
@@ -73,7 +96,7 @@ export class PinInputComponent {
|
|
|
73
96
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinInputComponent, decorators: [{
|
|
74
97
|
type: Component,
|
|
75
98
|
args: [{ selector: 'val-pin-input', standalone: true, imports: [NgOtpInputModule], template: `
|
|
76
|
-
<div class="otp">
|
|
99
|
+
<div class="otp" role="group" [attr.aria-label]="ariaLabel">
|
|
77
100
|
<ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
|
|
78
101
|
</div>
|
|
79
102
|
`, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions--sticky{position:sticky;bottom:0;z-index:1;background:var(--ion-background-color);border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom))}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:1.5rem!important}}.otp-input-box:focus{border-color:#0ff}\n"] }]
|
|
@@ -83,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
83
106
|
}], props: [{
|
|
84
107
|
type: Input
|
|
85
108
|
}] } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcGluLWlucHV0L3Bpbi1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUdyRCw4Q0FBOEM7QUFDOUMsTUFBTSxXQUFXLEdBQThFO0lBQzdGLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzFELE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzNELEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0NBQzNELENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxjQUFjLEdBQUc7SUFDckIsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFO0lBQ2pELEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRTtDQUM3QyxDQUFDO0FBYUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQWE1Qjs7OztPQUlHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBY0Q7UUF2QlEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVduQyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsbUJBQWMsR0FBcUI7WUFDakMsV0FBVyxFQUFFO2dCQUNYLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3hDLEtBQUssRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JBQy9CLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDbEM7WUFDRCxVQUFVLEVBQUUsZUFBZTtZQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDdkIsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUFDO1FBR0EsNEVBQTRFO1FBQzVFLDRFQUE0RTtRQUM1RSwwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFFBQVE7UUFDTiwrREFBK0Q7UUFDL0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3RDLG9FQUFvRTtRQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsR0FBRyxJQUFJLENBQUMsY0FBYztZQUN0QixNQUFNO1lBQ04sZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO1lBQ3JELFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQ2hDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztnQkFDdkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2dCQUN6QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLHlCQUF5QjthQUNyRDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUMzQyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsNkRBQTZEO1lBQzdELDREQUE0RDtZQUM1RCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7K0dBMUVVLGlCQUFpQjttR0FBakIsaUJBQWlCLDhJQUNqQixtQkFBbUIsZ0RBbEJwQjs7OztHQUlULCs5R0FMUyxnQkFBZ0I7OzRGQWtCZixpQkFBaUI7a0JBckI3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUNqQjs7OztHQUlUO3dEQWNrRCxPQUFPO3NCQUF6RCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFReEMsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdPdHBJbnB1dENvbXBvbmVudCwgTmdPdHBJbnB1dENvbmZpZywgTmdPdHBJbnB1dE1vZHVsZSB9IGZyb20gJ25nLW90cC1pbnB1dCc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgUGluSW5wdXRNZXRhZGF0YSwgUGluSW5wdXRTaXplIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKiBTaXplIGNvbmZpZ3VyYXRpb25zIGZvciBQSU4gaW5wdXQgYm94ZXMgKi9cbmNvbnN0IFNJWkVfQ09ORklHOiBSZWNvcmQ8UGluSW5wdXRTaXplLCB7IHdpZHRoOiBzdHJpbmc7IGhlaWdodDogc3RyaW5nOyBmb250U2l6ZTogc3RyaW5nIH0+ID0ge1xuICBzbWFsbDogeyB3aWR0aDogJzQwcHgnLCBoZWlnaHQ6ICc0NHB4JywgZm9udFNpemU6ICcyNHB4JyB9LFxuICBtZWRpdW06IHsgd2lkdGg6ICc1MHB4JywgaGVpZ2h0OiAnNTRweCcsIGZvbnRTaXplOiAnMjhweCcgfSxcbiAgbGFyZ2U6IHsgd2lkdGg6ICc1OHB4JywgaGVpZ2h0OiAnNjBweCcsIGZvbnRTaXplOiAnMzJweCcgfSxcbn07XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biBkZWwgY29tcG9uZW50ZS4gU2UgYXV0by1yZWdpc3RyYW4gZW4gZWwgY29uc3RydWN0b3IgKG5hbWVzcGFjZVxuICogYFBpbklucHV0YCkgcGFyYSBxdWUgZWwgZ3J1cG8gZGUgaW5wdXRzIHNpZW1wcmUgdGVuZ2EgdW4gbm9tYnJlIGFjY2VzaWJsZVxuICogYXVucXVlIGVsIGNvbnN1bWVyIG5vIHByb3ZlYSBgcHJvcHMubGFiZWxgIG5pIHJlZ2lzdHJlIGVsIG5hbWVzcGFjZS5cbiAqL1xuY29uc3QgUElOX0lOUFVUX0kxOE4gPSB7XG4gIGVzOiB7IGlucHV0R3JvdXBMYWJlbDogJ0PDs2RpZ28gZGUgdmVyaWZpY2FjacOzbicgfSxcbiAgZW46IHsgaW5wdXRHcm91cExhYmVsOiAnVmVyaWZpY2F0aW9uIGNvZGUnIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGluLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nT3RwSW5wdXRNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJvdHBcIiByb2xlPVwiZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiPlxuICAgICAgPG5nLW90cC1pbnB1dCBbZm9ybUN0cmxdPVwicHJvcHMuY29udHJvbFwiIFtjb25maWddPVwib3RwSW5wdXRDb25maWdcIj48L25nLW90cC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcGluLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtcGluLWlucHV0XG4gKlxuICogQSBQSU4gY29kZSBpbnB1dCB1c2luZyBuZy1vdHAtaW5wdXQsIGludGVncmF0ZWQgd2l0aCBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXBpbi1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wgfVwiPjwvdmFsLXBpbi1pbnB1dD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IFBpbklucHV0TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgUElOIGlucHV0IChmb3JtIGNvbnRyb2wsIGxlbmd0aCwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIFBpbklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChOZ090cElucHV0Q29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgcGluQ29kZTogTmdPdHBJbnB1dENvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtQaW5JbnB1dE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgUElOIGlucHV0LlxuICAgKiBAcHJvcGVydHkgbGVuZ3RoIC0gTnVtYmVyIG9mIGRpZ2l0cyBpbiBQSU4gKGRlZmF1bHQ6IDUpLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBpbklucHV0TWV0YWRhdGE7XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKipcbiAgICogTm9tYnJlIGFjY2VzaWJsZSBkZWwgZ3J1cG8gZGUgY2FqYXMgZGVsIFBJTi4gRGVyaXZhIGRlIGBwcm9wcy5sYWJlbGA7IHNpIGVzdMOhXG4gICAqIHZhY8OtbyB1c2EgZWwgZGVmYXVsdCBpMThuIGBQaW5JbnB1dC5pbnB1dEdyb3VwTGFiZWxgLiBDb21vIGVsIGNvbXBvbmVudGUgbm9cbiAgICogcmVuZGVyaXphIHVuIGxhYmVsIHZpc2libGUsIHNlIGV4cG9uZSB2w61hIGBhcmlhLWxhYmVsYCAobm8gYGFyaWEtbGFiZWxsZWRieWApLlxuICAgKi9cbiAgZ2V0IGFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzPy5sYWJlbD8udHJpbSgpIHx8IHRoaXMuaTE4bi50KCdpbnB1dEdyb3VwTGFiZWwnLCAnUGluSW5wdXQnKTtcbiAgfVxuXG4gIGNvZGVMZW5ndGggPSA1O1xuICBvdHBJbnB1dENvbmZpZzogTmdPdHBJbnB1dENvbmZpZyA9IHtcbiAgICBpbnB1dFN0eWxlczoge1xuICAgICAgJ2ZvbnQtc2l6ZSc6IFNJWkVfQ09ORklHLm1lZGl1bS5mb250U2l6ZSxcbiAgICAgIHdpZHRoOiBTSVpFX0NPTkZJRy5tZWRpdW0ud2lkdGgsXG4gICAgICBoZWlnaHQ6IFNJWkVfQ09ORklHLm1lZGl1bS5oZWlnaHQsXG4gICAgfSxcbiAgICBpbnB1dENsYXNzOiAnb3RwLWlucHV0LWJveCcsXG4gICAgbGVuZ3RoOiB0aGlzLmNvZGVMZW5ndGgsXG4gICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvLXJlZ2lzdHJvIGRlIGRlZmF1bHRzIGkxOG4gKGVzL2VuKS4gSWRlbXBvdGVudGU6IHNvbG8gbWV6Y2xhIGxhcyBrZXlzXG4gICAgLy8gYXVzZW50ZXMsIHNpbiBwaXNhciBsYXMgcXVlIGVsIGNvbnN1bWVyIGhheWEgcmVnaXN0cmFkby4gR2FyYW50aXphIHF1ZSBlbFxuICAgIC8vIGdydXBvIHNpZW1wcmUgdGVuZ2Egbm9tYnJlIGFjY2VzaWJsZSBzaW4gcXVlIGVsIGNvbnN1bWVyIHJlZ2lzdHJlIG5hZGEuXG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ1BpbklucHV0JywgUElOX0lOUFVUX0kxOE4pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gVXNhciBwcm9wcy5sZW5ndGggc2kgc2UgcHJvcG9yY2lvbmEsIHNpbm8gbWFudGVuZXIgZGVmYXVsdCA1XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wcm9wcy5sZW5ndGggPz8gNTtcbiAgICAvLyBVc2FyIHByb3BzLnNpemUgc2kgc2UgcHJvcG9yY2lvbmEsIHNpbm8gbWFudGVuZXIgZGVmYXVsdCAnbWVkaXVtJ1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgPz8gJ21lZGl1bSc7XG4gICAgY29uc3Qgc2l6ZVN0eWxlcyA9IFNJWkVfQ09ORklHW3NpemVdO1xuXG4gICAgdGhpcy5vdHBJbnB1dENvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMub3RwSW5wdXRDb25maWcsXG4gICAgICBsZW5ndGgsXG4gICAgICBhbGxvd051bWJlcnNPbmx5OiB0aGlzLnByb3BzLmFsbG93TnVtYmVyc09ubHkgPz8gdHJ1ZSxcbiAgICAgIGlucHV0U3R5bGVzOiB7XG4gICAgICAgICdmb250LXNpemUnOiBzaXplU3R5bGVzLmZvbnRTaXplLFxuICAgICAgICB3aWR0aDogc2l6ZVN0eWxlcy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzaXplU3R5bGVzLmhlaWdodCxcbiAgICAgICAgLi4udGhpcy5wcm9wcy5pbnB1dFN0eWxlcywgLy8gQWxsb3cgY3VzdG9tIG92ZXJyaWRlc1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLnByb3BzPy5jb250cm9sPy52YWx1ZTtcbiAgICBpZiAoaW5pdGlhbCAmJiB0aGlzLnBpbkNvZGUpIHtcbiAgICAgIC8vIG5nLW90cC1pbnB1dCBjcmVhIHN1cyBpbnB1dHMgaW50ZXJub3MgZGUgZm9ybWEgYXPDrW5jcm9uYSDigJRcbiAgICAgIC8vIHNldFZhbHVlIHNpbmNyw7NuaWNvIGFxdcOtIGxsZWdhIGFudGVzIGRlIHF1ZSBlc3TDqW4gbGlzdG9zLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnBpbkNvZGU/LnNldFZhbHVlKGluaXRpYWwpLCAwKTtcbiAgICB9XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBpZiAodGhpcy5waW5Db2RlKSB7XG4gICAgICB0aGlzLnBpbkNvZGUuc2V0VmFsdWUoJycpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -96,10 +96,8 @@ export class SwitchOrgModalComponent {
|
|
|
96
96
|
}
|
|
97
97
|
loadOrgs() {
|
|
98
98
|
this.loading.set(true);
|
|
99
|
-
this.orgService
|
|
100
|
-
|
|
101
|
-
.pipe(take(1))
|
|
102
|
-
.subscribe({
|
|
99
|
+
const source$ = this.auth.isSuperAdmin() ? this.orgService.listAllOrgs() : this.orgService.listMyOrgs();
|
|
100
|
+
source$.pipe(take(1)).subscribe({
|
|
103
101
|
next: orgs => {
|
|
104
102
|
const activeId = this.activeOrgId();
|
|
105
103
|
this.orgs.set([...orgs].sort((a, b) => (a.id === activeId ? -1 : b.id === activeId ? 1 : 0)));
|
|
@@ -361,4 +359,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
361
359
|
}], i18nNamespace: [{
|
|
362
360
|
type: Input
|
|
363
361
|
}] } });
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLW9yZy1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3N3aXRjaC1vcmctbW9kYWwvc3dpdGNoLW9yZy1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUdULHFyRkFySEMsU0FBUyxvR0FDVCxVQUFVLG1GQUNWLFVBQVUsOEVBQ1YsU0FBUyxvUEFDVCxVQUFVLHdLQUNWLFVBQVUseUdBQ1YsT0FBTywySkFDUCxnQkFBZ0IsMkVBQ2hCLG1CQUFtQiwrRUFDbkIsa0JBQWtCLDRJQUNsQixjQUFjOzs0RkFzUkwsdUJBQXVCO2tCQXBTbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYztxQkFDZixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5R1Q7d0RBbUxRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25JY29uLFxuICBJb25TcGlubmVyLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgYWRkT3V0bGluZSwgYnVzaW5lc3NPdXRsaW5lLCBjaGVja21hcmtDaXJjbGVPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hiYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2VhcmNoYmFyL3NlYXJjaGJhci5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBPcmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL29yZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5pbXBvcnQgeyBPcmdTd2l0Y2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9vcmctc3dpdGNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTV0lUQ0hfT1JHX01PREFMX0kxOE4gfSBmcm9tICcuL3N3aXRjaC1vcmctbW9kYWwuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLlN3aXRjaE9yZyc7XG5cbmFkZEljb25zKHsgYWRkT3V0bGluZSwgYnVzaW5lc3NPdXRsaW5lLCBjaGVja21hcmtDaXJjbGVPdXRsaW5lIH0pO1xuXG4vKipcbiAqIGB2YWwtc3dpdGNoLW9yZy1tb2RhbGAg4oCUIG1vZGFsIGRlIGNhbWJpbyBkZSBvcmdhbml6YWNpw7NuIGFjdGl2YSAob3JnYW5pc21cbiAqIGNvbXBhcnRpZG8pLiBQcm9tb3ZpZG8gZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS4gUmV1c2FkbyBwb3JcbiAqIGxhIHZpc3RhIEN1ZW50YSAoeSBmdXR1cmFzIHZpc3RhcyBvcmctYXdhcmUpLlxuICpcbiAqIExpc3RhIGxhcyBvcmdhbml6YWNpb25lcyBkZWwgdXNlciAodsOtYSBgT3JnU2VydmljZS5saXN0TXlPcmdzYCksIHBlcm1pdGUgYnVzY2FyXG4gKiBwb3Igbm9tYnJlLCB5IGNhbWJpYSBsYSBvcmcgYWN0aXZhIGNvbiBgT3JnU3dpdGNoU2VydmljZS5zd2l0Y2hUb2AuIExhIG9yZ1xuICogYWN0dWFsIHF1ZWRhIHByaW1lcmEgeSBkZXNoYWJpbGl0YWRhLlxuICpcbiAqIEFiaWVydG8gdsOtYSBgTW9kYWxTZXJ2aWNlYCDigJQgcmVjaWJlIGBfbW9kYWxSZWZgIHBvciBgY29tcG9uZW50UHJvcHNgICsgY2FsbGJhY2tcbiAqIGBvblN1Y2Nlc3NgLiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSk6IHNpbiBgaW9uLXRpdGxlYCwgYm90w7NuIENlcnJhciB0ZXh0byBlblxuICogYHNsb3Q9ZW5kYCwgdMOtdHVsby9zdWJ0w610dWxvIGVuIGVsIGJvZHkgY29uIGB2YWwtZGlzcGxheWAvYHZhbC10aXRsZWAuXG4gKlxuICogQXV0by1yZWdpc3RyYSBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZVxuICogYFNldHRpbmdzLlN3aXRjaE9yZ2AuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1zd2l0Y2gtb3JnLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uU3Bpbm5lcixcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBTZWFyY2hiYXJDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCd0aXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZVxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIGNvbnRlbnQ6IHQoJ3N1YnRpdGxlJyksXG4gICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICBjb2xvcjogJycsXG4gICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgIH1cIlxuICAgICAgLz5cblxuICAgICAgPGRpdiBjbGFzcz1cInVzZXItc3RyaXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItc3RyaXBfX2F2YXRhclwiPlxuICAgICAgICAgIEBpZiAodXNlcigpPy5hdmF0YXJVcmwgJiYgIXVzZXJBdmF0YXJGYWlsZWQoKSkge1xuICAgICAgICAgICAgPGltZyBbc3JjXT1cInVzZXIoKSEuYXZhdGFyVXJsIVwiIFthbHRdPVwidXNlcigpPy5uYW1lID8/ICcnXCIgKGVycm9yKT1cInVzZXJBdmF0YXJGYWlsZWQuc2V0KHRydWUpXCIgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IHVzZXJJbml0aWFscygpIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXN0cmlwX19pbmZvXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLXN0cmlwX19uYW1lXCI+e3sgdXNlcigpPy5uYW1lIHx8IHVzZXIoKT8uZW1haWwgfHwgJycgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLXN0cmlwX19lbWFpbFwiPnt7IHVzZXIoKT8uZW1haWwgfHwgJycgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidXNlci1zdHJpcF9fcHJvZmlsZS1idG5cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uUHJvZmlsZSgpXCI+XG4gICAgICAgICAge3sgdCgncHJvZmlsZScpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2gtc2VjdGlvblwiPlxuICAgICAgICA8dmFsLXNlYXJjaGJhclxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogdCgnc2VhcmNoUGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgIGRlYm91bmNlOiAyMDAsXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiAnbmV2ZXInLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChmaWx0ZXJFdmVudCk9XCJvblF1ZXJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaC1zdGF0ZVwiPlxuICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKGZpbHRlcmVkT3JncygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHZhcmlhbnQ6ICdlbXB0eScsXG4gICAgICAgICAgICAgIHRpdGxlOiB0KCdub1Jlc3VsdHMnKSxcbiAgICAgICAgICAgICAgaWNvbjogJ2J1c2luZXNzLW91dGxpbmUnLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAob3JnIG9mIGZpbHRlcmVkT3JncygpOyB0cmFjayBvcmcuaWQpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwib3JnLXJvd1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm9yZy1yb3ctLWFjdGl2ZV09XCJvcmcuaWQgPT09IGFjdGl2ZU9yZ0lkKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhIXN3aXRjaGluZ0lkKCkgfHwgb3JnLmlkID09PSBhY3RpdmVPcmdJZCgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3Qob3JnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLXJvd19faWNvblwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChvcmcubG9nb1VybCAmJiAhZmFpbGVkTG9nb3MoKS5oYXMob3JnLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwib3JnLmxvZ29VcmxcIiBbYWx0XT1cIm9yZy5uYW1lXCIgKGVycm9yKT1cIm9uTG9nb0Vycm9yKG9yZy5pZClcIiAvPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYnVzaW5lc3Mtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1yb3dfX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLXJvd19fbmFtZVwiPnt7IG9yZy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctcm93X190eXBlXCI+e3sgb3JnLnR5cGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1yb3dfX2VuZFwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChzd2l0Y2hpbmdJZCgpID09PSBvcmcuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIGNsYXNzPVwib3JnLXJvd19fc3Bpbm5lclwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChvcmcuaWQgPT09IGFjdGl2ZU9yZ0lkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctcm93X19jdXJyZW50XCI+e3sgdCgnY3VycmVudCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGUtb3V0bGluZVwiIGNsYXNzPVwib3JnLXJvd19fY2hlY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAob25DcmVhdGVPcmcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ldy1vcmctY3RhXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwib25DcmVhdGVOZXcoKVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhZGQtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICB7eyB0KCduZXdPcmcnKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnN3aXRjaC1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnN3aXRjaC1zdGF0ZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDA7XG4gICAgICB9XG4gICAgICAub3Jncy1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAub3JnLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IpLCAwLjE0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLFxuICAgICAgICAgIG9wYWNpdHkgMC4xNXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5vcmctcm93Om5vdCg6ZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cbiAgICAgIC5vcmctcm93OmRpc2FibGVkIHtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuICAgICAgLm9yZy1yb3ctLWFjdGl2ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLm9yZy1yb3dfX2ljb24ge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiksIDAuMDgpO1xuICAgICAgfVxuICAgICAgLm9yZy1yb3dfX2JvZHkge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgfVxuICAgICAgLm9yZy1yb3dfX25hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgfVxuICAgICAgLm9yZy1yb3dfX3R5cGUge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiKSwgMC43KTtcbiAgICAgIH1cbiAgICAgIC5vcmctcm93X19lbmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAub3JnLXJvd19fY3VycmVudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiKSwgMC43KTtcbiAgICAgIH1cbiAgICAgIC5vcmctcm93X19jaGVjayB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLm9yZy1yb3dfX3NwaW5uZXIge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLm9yZy1yb3dfX2ljb24gaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cbiAgICAgIC51c2VyLXN0cmlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDAgNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiksIDAuMSk7XG4gICAgICB9XG4gICAgICAudXNlci1zdHJpcF9fYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IpLCAwLjEpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLnVzZXItc3RyaXBfX2F2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC51c2VyLXN0cmlwX19pbmZvIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgIH1cbiAgICAgIC51c2VyLXN0cmlwX19uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgfVxuICAgICAgLnVzZXItc3RyaXBfX2VtYWlsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBjb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IpLCAwLjYpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICAgIC51c2VyLXN0cmlwX19wcm9maWxlLWJ0biB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogNnB4IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAzcHg7XG4gICAgICB9XG4gICAgICAubmV3LW9yZy1jdGEge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTZweDtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiKSwgMC4xKTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hPcmdNb2RhbENvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgb3JnU2VydmljZSA9IGluamVjdChPcmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTd2l0Y2ggPSBpbmplY3QoT3JnU3dpdGNoU2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBDYWxsYmFjayB0cmFzIHVuIHN3aXRjaCBleGl0b3NvIChwYXNhZG8gcG9yIGBjb21wb25lbnRQcm9wc2ApLiAqL1xuICBASW5wdXQoKSBvblN1Y2Nlc3M/OiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBDYWxsYmFjayBhbCBoYWNlciBjbGljIGVuIFwiTWkgcGVyZmlsXCIgKHBhc2FkbyBwb3IgYGNvbXBvbmVudFByb3BzYCkuICovXG4gIEBJbnB1dCgpIG9uUHJvZmlsZUNsaWNrPzogKCkgPT4gdm9pZDtcblxuICAvKiogQ2FsbGJhY2sgYWwgaGFjZXIgY2xpYyBlbiBcIk51ZXZhIG9yZ2FuaXphY2nDs25cIi4gU2kgZXN0w6EgcHJlc2VudGUsIG11ZXN0cmEgZWwgQ1RBLiAqL1xuICBASW5wdXQoKSBvbkNyZWF0ZU9yZz86ICgpID0+IHZvaWQ7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIGNvbiBxdWUgbGEgdmlzdGEgcmVzdWVsdmUgc3VzIHRleHRvcy4gKi9cbiAgQElucHV0KCkgaTE4bk5hbWVzcGFjZSA9IERFRkFVTFRfTkFNRVNQQUNFO1xuXG4gIHJlYWRvbmx5IG9yZ3MgPSBzaWduYWw8T3JnYW5pemF0aW9uW10+KFtdKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHF1ZXJ5ID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgc3dpdGNoaW5nSWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHVzZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF1dGgudXNlcigpKTtcblxuICAvKiogQXZhdGFyIGRlIHVzdWFyaW8gcXVlIGZhbGzDsyBhbCBjYXJnYXIg4oaSIGNhZSBhIGluaWNpYWxlcy4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHVzZXJBdmF0YXJGYWlsZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKiBJRHMgZGUgb3JncyBjdXlvIGxvZ28gZmFsbMOzIGFsIGNhcmdhciDihpIgY2FlbiBhbCDDrWNvbm8gYnVzaW5lc3Mtb3V0bGluZS4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhaWxlZExvZ29zID0gc2lnbmFsPFNldDxzdHJpbmc+PihuZXcgU2V0KCkpO1xuXG4gIHByb3RlY3RlZCBvbkxvZ29FcnJvcihvcmdJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IG5ldyBTZXQodGhpcy5mYWlsZWRMb2dvcygpKTtcbiAgICBuZXh0LmFkZChvcmdJZCk7XG4gICAgdGhpcy5mYWlsZWRMb2dvcy5zZXQobmV4dCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlckluaXRpYWxzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnVzZXIoKT8ubmFtZSA/PyB0aGlzLnVzZXIoKT8uZW1haWwgPz8gJz8nO1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZU9yZ0lkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHUgPSB0aGlzLmF1dGgudXNlcigpIGFzIHtcbiAgICAgIGFjdGl2ZU9yZ0lkPzogc3RyaW5nO1xuICAgICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAgIH0gfCBudWxsO1xuICAgIHJldHVybiB1Py5hY3RpdmVPcmdJZCA/PyB1Py5hY3RpdmVPcmcgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkT3JncyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBxID0gdGhpcy5xdWVyeSgpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLm9yZ3MoKTtcbiAgICBpZiAoIXEpIHJldHVybiBsaXN0O1xuICAgIHJldHVybiBsaXN0LmZpbHRlcihvID0+IG8ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoREVGQVVMVF9OQU1FU1BBQ0UsIFNXSVRDSF9PUkdfTU9EQUxfSTE4Tik7XG4gICAgdGhpcy5sb2FkT3JncygpO1xuICB9XG5cbiAgb25RdWVyeUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeS5zZXQodmFsdWUgPz8gJycpO1xuICB9XG5cbiAgYXN5bmMgb25TZWxlY3Qob3JnOiBPcmdhbml6YXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zd2l0Y2hpbmdJZCgpIHx8IG9yZy5pZCA9PT0gdGhpcy5hY3RpdmVPcmdJZCgpKSByZXR1cm47XG4gICAgdGhpcy5zd2l0Y2hpbmdJZC5zZXQob3JnLmlkKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vcmdTd2l0Y2guc3dpdGNoVG8ob3JnLmlkKTtcbiAgICAgIHRoaXMub25TdWNjZXNzPy4oKTtcbiAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnYWNjb3VudC5zd2l0Y2hPcmcnLFxuICAgICAgICBmYWxsYmFja0tleTogJ3N3aXRjaEVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5pMThuTmFtZXNwYWNlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnN3aXRjaGluZ0lkLnNldChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcmdzKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vcmdTZXJ2aWNlXG4gICAgICAubGlzdE15T3JncygpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IG9yZ3MgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZUlkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgICAgICAgIHRoaXMub3Jncy5zZXQoWy4uLm9yZ3NdLnNvcnQoKGEsIGIpID0+IChhLmlkID09PSBhY3RpdmVJZCA/IC0xIDogYi5pZCA9PT0gYWN0aXZlSWQgPyAxIDogMCkpKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMubG9hZGluZy5zZXQoZmFsc2UpLFxuICAgICAgfSk7XG4gIH1cblxuICBvblByb2ZpbGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzKCk7XG4gICAgdGhpcy5vblByb2ZpbGVDbGljaz8uKCk7XG4gIH1cblxuICBvbkNyZWF0ZU5ldygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc21pc3MoKTtcbiAgICB0aGlzLm9uQ3JlYXRlT3JnPy4oKTtcbiAgfVxuXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3MobnVsbCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLW9yZy1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3N3aXRjaC1vcmctbW9kYWwvc3dpdGNoLW9yZy1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFB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LE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQXBIVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwwT0FwUnhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5R1QscXJGQXJIQyxTQUFTLG9HQUNULFVBQVUsbUZBQ1YsVUFBVSw4RUFDVixTQUFTLG9QQUNULFVBQVUsd0tBQ1YsVUFBVSx5R0FDVixPQUFPLDJKQUNQLGdCQUFnQiwyRUFDaEIsbUJBQW1CLCtFQUNuQixrQkFBa0IsNElBQ2xCLGNBQWM7OzRGQXNSTCx1QkFBdUI7a0JBcFNuQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3FCQUNmLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlHVDt3REFtTFEsU0FBUztzQkFBakIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25Db250ZW50LFxuICBJb25IZWFkZXIsXG4gIElvbkljb24sXG4gIElvblNwaW5uZXIsXG4gIElvblRvb2xiYXIsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBhZGRPdXRsaW5lLCBidXNpbmVzc091dGxpbmUsIGNoZWNrbWFya0NpcmNsZU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGJhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWFyY2hiYXIvc2VhcmNoYmFyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcbmltcG9ydCB7IE9yZ1N3aXRjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL29yZy1zd2l0Y2guc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IFNXSVRDSF9PUkdfTU9EQUxfSTE4TiB9IGZyb20gJy4vc3dpdGNoLW9yZy1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuU3dpdGNoT3JnJztcblxuYWRkSWNvbnMoeyBhZGRPdXRsaW5lLCBidXNpbmVzc091dGxpbmUsIGNoZWNrbWFya0NpcmNsZU91dGxpbmUgfSk7XG5cbi8qKlxuICogYHZhbC1zd2l0Y2gtb3JnLW1vZGFsYCDigJQgbW9kYWwgZGUgY2FtYmlvIGRlIG9yZ2FuaXphY2nDs24gYWN0aXZhIChvcmdhbmlzbVxuICogY29tcGFydGlkbykuIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLiBSZXVzYWRvIHBvclxuICogbGEgdmlzdGEgQ3VlbnRhICh5IGZ1dHVyYXMgdmlzdGFzIG9yZy1hd2FyZSkuXG4gKlxuICogTGlzdGEgbGFzIG9yZ2FuaXphY2lvbmVzIGRlbCB1c2VyICh2w61hIGBPcmdTZXJ2aWNlLmxpc3RNeU9yZ3NgKSwgcGVybWl0ZSBidXNjYXJcbiAqIHBvciBub21icmUsIHkgY2FtYmlhIGxhIG9yZyBhY3RpdmEgY29uIGBPcmdTd2l0Y2hTZXJ2aWNlLnN3aXRjaFRvYC4gTGEgb3JnXG4gKiBhY3R1YWwgcXVlZGEgcHJpbWVyYSB5IGRlc2hhYmlsaXRhZGEuXG4gKlxuICogQWJpZXJ0byB2w61hIGBNb2RhbFNlcnZpY2VgIOKAlCByZWNpYmUgYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AgKyBjYWxsYmFja1xuICogYG9uU3VjY2Vzc2AuIEhlYWRlciBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyIHRleHRvIGVuXG4gKiBgc2xvdD1lbmRgLCB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSBjb24gYHZhbC1kaXNwbGF5YC9gdmFsLXRpdGxlYC5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiBgU2V0dGluZ3MuU3dpdGNoT3JnYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXN3aXRjaC1vcmctbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvbkljb24sXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIFNlYXJjaGJhckNvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWhlYWRlcj5cbiAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3RpdGxlJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG4gICAgICA8dmFsLXRpdGxlXG4gICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgY29udGVudDogdCgnc3VidGl0bGUnKSxcbiAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgIGNvbG9yOiAnJyxcbiAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgfVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidXNlci1zdHJpcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1zdHJpcF9fYXZhdGFyXCI+XG4gICAgICAgICAgQGlmICh1c2VyKCk/LmF2YXRhclVybCAmJiAhdXNlckF2YXRhckZhaWxlZCgpKSB7XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwidXNlcigpIS5hdmF0YXJVcmwhXCIgW2FsdF09XCJ1c2VyKCk/Lm5hbWUgPz8gJydcIiAoZXJyb3IpPVwidXNlckF2YXRhckZhaWxlZC5zZXQodHJ1ZSlcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgdXNlckluaXRpYWxzKCkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItc3RyaXBfX2luZm9cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItc3RyaXBfX25hbWVcIj57eyB1c2VyKCk/Lm5hbWUgfHwgdXNlcigpPy5lbWFpbCB8fCAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItc3RyaXBfX2VtYWlsXCI+e3sgdXNlcigpPy5lbWFpbCB8fCAnJyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ1c2VyLXN0cmlwX19wcm9maWxlLWJ0blwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25Qcm9maWxlKClcIj5cbiAgICAgICAgICB7eyB0KCdwcm9maWxlJykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaC1zZWN0aW9uXCI+XG4gICAgICAgIDx2YWwtc2VhcmNoYmFyXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0KCdzZWFyY2hQbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgZGVib3VuY2U6IDIwMCxcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246ICduZXZlcicsXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKGZpbHRlckV2ZW50KT1cIm9uUXVlcnlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoLXN0YXRlXCI+XG4gICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAoZmlsdGVyZWRPcmdzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgdmFyaWFudDogJ2VtcHR5JyxcbiAgICAgICAgICAgICAgdGl0bGU6IHQoJ25vUmVzdWx0cycpLFxuICAgICAgICAgICAgICBpY29uOiAnYnVzaW5lc3Mtb3V0bGluZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3Jncy1saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChvcmcgb2YgZmlsdGVyZWRPcmdzKCk7IHRyYWNrIG9yZy5pZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJvcmctcm93XCJcbiAgICAgICAgICAgICAgICBbY2xhc3Mub3JnLXJvdy0tYWN0aXZlXT1cIm9yZy5pZCA9PT0gYWN0aXZlT3JnSWQoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhc3dpdGNoaW5nSWQoKSB8fCBvcmcuaWQgPT09IGFjdGl2ZU9yZ0lkKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdChvcmcpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctcm93X19pY29uXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKG9yZy5sb2dvVXJsICYmICFmYWlsZWRMb2dvcygpLmhhcyhvcmcuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJvcmcubG9nb1VybFwiIFthbHRdPVwib3JnLm5hbWVcIiAoZXJyb3IpPVwib25Mb2dvRXJyb3Iob3JnLmlkKVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJidXNpbmVzcy1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLXJvd19fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctcm93X19uYW1lXCI+e3sgb3JnLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1yb3dfX3R5cGVcIj57eyBvcmcudHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLXJvd19fZW5kXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKHN3aXRjaGluZ0lkKCkgPT09IG9yZy5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCIgY2xhc3M9XCJvcmctcm93X19zcGlubmVyXCIgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKG9yZy5pZCA9PT0gYWN0aXZlT3JnSWQoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1yb3dfX2N1cnJlbnRcIj57eyB0KCdjdXJyZW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLWNpcmNsZS1vdXRsaW5lXCIgY2xhc3M9XCJvcmctcm93X19jaGVja1wiIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChvbkNyZWF0ZU9yZykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibmV3LW9yZy1jdGFcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYXJrXCIgc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJvbkNyZWF0ZU5ldygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImFkZC1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgIHt7IHQoJ25ld09yZycpIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc3dpdGNoLXNlY3Rpb24ge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICB9XG4gICAgICAuc3dpdGNoLXN0YXRlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMDtcbiAgICAgIH1cbiAgICAgIC5vcmdzLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5vcmctcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiksIDAuMTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsXG4gICAgICAgICAgb3BhY2l0eSAwLjE1cyBlYXNlO1xuICAgICAgfVxuICAgICAgLm9yZy1yb3c6bm90KDpkaXNhYmxlZCk6YWN0aXZlIHtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgICAgLm9yZy1yb3c6ZGlzYWJsZWQge1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICB9XG4gICAgICAub3JnLXJvdy0tYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAub3JnLXJvd19faWNvbiB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiKSwgMC4wOCk7XG4gICAgICB9XG4gICAgICAub3JnLXJvd19fYm9keSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICB9XG4gICAgICAub3JnLXJvd19fbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG4gICAgICAub3JnLXJvd19fdHlwZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBjb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IpLCAwLjcpO1xuICAgICAgfVxuICAgICAgLm9yZy1yb3dfX2VuZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICAgIC5vcmctcm93X19jdXJyZW50IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBjb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IpLCAwLjcpO1xuICAgICAgfVxuICAgICAgLm9yZy1yb3dfX2NoZWNrIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAub3JnLXJvd19fc3Bpbm5lciB7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAub3JnLXJvd19faWNvbiBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuICAgICAgLnVzZXItc3RyaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMCA0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiKSwgMC4xKTtcbiAgICAgIH1cbiAgICAgIC51c2VyLXN0cmlwX19hdmF0YXIge1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiksIDAuMSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAudXNlci1zdHJpcF9fYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLnVzZXItc3RyaXBfX2luZm8ge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgfVxuICAgICAgLnVzZXItc3RyaXBfX25hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG4gICAgICAudXNlci1zdHJpcF9fZW1haWwge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiksIDAuNik7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgfVxuICAgICAgLnVzZXItc3RyaXBfX3Byb2ZpbGUtYnRuIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nOiA2cHggMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDNweDtcbiAgICAgIH1cbiAgICAgIC5uZXctb3JnLWN0YSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNnB4O1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IpLCAwLjEpO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFN3aXRjaE9yZ01vZGFsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1N3aXRjaCA9IGluamVjdChPcmdTd2l0Y2hTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG5cbiAgLyoqIElueWVjdGFkbyBwb3IgYE1vZGFsU2VydmljZS5vcGVuYCDigJQgcmVmZXJlbmNpYSBwYXJhIGNlcnJhciBkZXNkZSBkZW50cm8uICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgLyoqIENhbGxiYWNrIHRyYXMgdW4gc3dpdGNoIGV4aXRvc28gKHBhc2FkbyBwb3IgYGNvbXBvbmVudFByb3BzYCkuICovXG4gIEBJbnB1dCgpIG9uU3VjY2Vzcz86ICgpID0+IHZvaWQ7XG5cbiAgLyoqIENhbGxiYWNrIGFsIGhhY2VyIGNsaWMgZW4gXCJNaSBwZXJmaWxcIiAocGFzYWRvIHBvciBgY29tcG9uZW50UHJvcHNgKS4gKi9cbiAgQElucHV0KCkgb25Qcm9maWxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBDYWxsYmFjayBhbCBoYWNlciBjbGljIGVuIFwiTnVldmEgb3JnYW5pemFjacOzblwiLiBTaSBlc3TDoSBwcmVzZW50ZSwgbXVlc3RyYSBlbCBDVEEuICovXG4gIEBJbnB1dCgpIG9uQ3JlYXRlT3JnPzogKCkgPT4gdm9pZDtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gY29uIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLiAqL1xuICBASW5wdXQoKSBpMThuTmFtZXNwYWNlID0gREVGQVVMVF9OQU1FU1BBQ0U7XG5cbiAgcmVhZG9ubHkgb3JncyA9IHNpZ25hbDxPcmdhbml6YXRpb25bXT4oW10pO1xuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgcXVlcnkgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBzd2l0Y2hpbmdJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXV0aC51c2VyKCkpO1xuXG4gIC8qKiBBdmF0YXIgZGUgdXN1YXJpbyBxdWUgZmFsbMOzIGFsIGNhcmdhciDihpIgY2FlIGEgaW5pY2lhbGVzLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlckF2YXRhckZhaWxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIElEcyBkZSBvcmdzIGN1eW8gbG9nbyBmYWxsw7MgYWwgY2FyZ2FyIOKGkiBjYWVuIGFsIMOtY29ubyBidXNpbmVzcy1vdXRsaW5lLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFpbGVkTG9nb3MgPSBzaWduYWw8U2V0PHN0cmluZz4+KG5ldyBTZXQoKSk7XG5cbiAgcHJvdGVjdGVkIG9uTG9nb0Vycm9yKG9yZ0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gbmV3IFNldCh0aGlzLmZhaWxlZExvZ29zKCkpO1xuICAgIG5leHQuYWRkKG9yZ0lkKTtcbiAgICB0aGlzLmZhaWxlZExvZ29zLnNldChuZXh0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSB1c2VySW5pdGlhbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMudXNlcigpPy5uYW1lID8/IHRoaXMudXNlcigpPy5lbWFpbCA/PyAnPyc7XG4gICAgcmV0dXJuIG5hbWUuc2xpY2UoMCwgMikudG9VcHBlckNhc2UoKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnSWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdSA9IHRoaXMuYXV0aC51c2VyKCkgYXMge1xuICAgICAgYWN0aXZlT3JnSWQ/OiBzdHJpbmc7XG4gICAgICBhY3RpdmVPcmc/OiBzdHJpbmc7XG4gICAgfSB8IG51bGw7XG4gICAgcmV0dXJuIHU/LmFjdGl2ZU9yZ0lkID8/IHU/LmFjdGl2ZU9yZyA/PyAnJztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyZWRPcmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHEgPSB0aGlzLnF1ZXJ5KCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMub3JncygpO1xuICAgIGlmICghcSkgcmV0dXJuIGxpc3Q7XG4gICAgcmV0dXJuIGxpc3QuZmlsdGVyKG8gPT4gby5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhERUZBVUxUX05BTUVTUEFDRSwgU1dJVENIX09SR19NT0RBTF9JMThOKTtcbiAgICB0aGlzLmxvYWRPcmdzKCk7XG4gIH1cblxuICBvblF1ZXJ5Q2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5LnNldCh2YWx1ZSA/PyAnJyk7XG4gIH1cblxuICBhc3luYyBvblNlbGVjdChvcmc6IE9yZ2FuaXphdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnN3aXRjaGluZ0lkKCkgfHwgb3JnLmlkID09PSB0aGlzLmFjdGl2ZU9yZ0lkKCkpIHJldHVybjtcbiAgICB0aGlzLnN3aXRjaGluZ0lkLnNldChvcmcuaWQpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9yZ1N3aXRjaC5zd2l0Y2hUbyhvcmcuaWQpO1xuICAgICAgdGhpcy5vblN1Y2Nlc3M/LigpO1xuICAgICAgdGhpcy5kaXNtaXNzKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdhY2NvdW50LnN3aXRjaE9yZycsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc3dpdGNoRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLmkxOG5OYW1lc3BhY2UsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3dpdGNoaW5nSWQuc2V0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZE9yZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICBjb25zdCBzb3VyY2UkID0gdGhpcy5hdXRoLmlzU3VwZXJBZG1pbigpID8gdGhpcy5vcmdTZXJ2aWNlLmxpc3RBbGxPcmdzKCkgOiB0aGlzLm9yZ1NlcnZpY2UubGlzdE15T3JncygpO1xuICAgIHNvdXJjZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogb3JncyA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUlkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgICAgICB0aGlzLm9yZ3Muc2V0KFsuLi5vcmdzXS5zb3J0KChhLCBiKSA9PiAoYS5pZCA9PT0gYWN0aXZlSWQgPyAtMSA6IGIuaWQgPT09IGFjdGl2ZUlkID8gMSA6IDApKSk7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uUHJvZmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc21pc3MoKTtcbiAgICB0aGlzLm9uUHJvZmlsZUNsaWNrPy4oKTtcbiAgfVxuXG4gIG9uQ3JlYXRlTmV3KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzcygpO1xuICAgIHRoaXMub25DcmVhdGVPcmc/LigpO1xuICB9XG5cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLmkxOG5OYW1lc3BhY2UpO1xuICB9XG59XG4iXX0=
|