valtech-components 2.0.1030 → 2.0.1031
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/organisms/member-import-modal/member-import-modal.component.mjs +88 -26
- package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.i18n.mjs +9 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +94 -26
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +4 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Component, computed, inject, Input, signal } from '@angular/core';
|
|
2
2
|
import { FormsModule } from '@angular/forms';
|
|
3
|
-
import { IonButton, IonButtons, IonCheckbox, IonContent, IonHeader, IonSelect, IonSelectOption, IonSpinner, IonTextarea, IonToolbar, } from '@ionic/angular/standalone';
|
|
3
|
+
import { IonButton, IonButtons, IonCheckbox, IonContent, IonHeader, IonIcon, IonSelect, IonSelectOption, IonSpinner, IonTextarea, IonToolbar, } from '@ionic/angular/standalone';
|
|
4
|
+
import { addIcons } from 'ionicons';
|
|
5
|
+
import { cloudUploadOutline } from 'ionicons/icons';
|
|
4
6
|
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
5
7
|
import { TextComponent } from '../../atoms/text/text.component';
|
|
6
8
|
import { TitleComponent } from '../../atoms/title/title.component';
|
|
@@ -10,6 +12,7 @@ import { MEMBER_IMPORT_MODAL_I18N } from './member-import-modal.i18n';
|
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
13
|
import * as i1 from "@angular/forms";
|
|
12
14
|
const DEFAULT_NAMESPACE = 'Settings.ImportModal';
|
|
15
|
+
addIcons({ cloudUploadOutline });
|
|
13
16
|
/**
|
|
14
17
|
* `val-member-import-modal` — panel de carga masiva de miembros (ADR-023 fase 6).
|
|
15
18
|
*
|
|
@@ -35,6 +38,8 @@ export class MemberImportModalComponent {
|
|
|
35
38
|
this.submitting = signal(false);
|
|
36
39
|
this.errorMsg = signal('');
|
|
37
40
|
this.results = signal(null);
|
|
41
|
+
/** Nombre del archivo CSV cargado (vacío si se pegó manualmente). */
|
|
42
|
+
this.fileName = signal('');
|
|
38
43
|
this.rolesHint = computed(() => this.availableRoles.length ? `${this.t('rolesAvailable')} ${this.availableRoles.join(', ')}` : '');
|
|
39
44
|
this.summaryLabel = computed(() => {
|
|
40
45
|
const s = this.results()?.summary;
|
|
@@ -51,6 +56,23 @@ export class MemberImportModalComponent {
|
|
|
51
56
|
this.i18n.registerContent(this.i18nNamespace, MEMBER_IMPORT_MODAL_I18N);
|
|
52
57
|
}
|
|
53
58
|
}
|
|
59
|
+
/** Carga un archivo CSV seleccionado: lee su texto al textarea (`csv`). */
|
|
60
|
+
onFileSelected(event) {
|
|
61
|
+
const input = event.target;
|
|
62
|
+
const file = input.files?.[0];
|
|
63
|
+
if (!file)
|
|
64
|
+
return;
|
|
65
|
+
this.errorMsg.set('');
|
|
66
|
+
const reader = new FileReader();
|
|
67
|
+
reader.onload = () => {
|
|
68
|
+
this.csv = String(reader.result ?? '');
|
|
69
|
+
this.fileName.set(file.name);
|
|
70
|
+
};
|
|
71
|
+
reader.onerror = () => this.errorMsg.set(this.t('fileReadError'));
|
|
72
|
+
reader.readAsText(file);
|
|
73
|
+
// Permite re-seleccionar el mismo archivo (el change no dispara si no se limpia).
|
|
74
|
+
input.value = '';
|
|
75
|
+
}
|
|
54
76
|
/** Parsea el CSV pegado a filas {email,name,roleName}. Tolera header. */
|
|
55
77
|
parseCsv() {
|
|
56
78
|
const rows = [];
|
|
@@ -109,6 +131,7 @@ export class MemberImportModalComponent {
|
|
|
109
131
|
}
|
|
110
132
|
reset() {
|
|
111
133
|
this.csv = '';
|
|
134
|
+
this.fileName.set('');
|
|
112
135
|
this.errorMsg.set('');
|
|
113
136
|
this.results.set(null);
|
|
114
137
|
}
|
|
@@ -140,6 +163,23 @@ export class MemberImportModalComponent {
|
|
|
140
163
|
<val-text [props]="{ content: rolesHint(), size: 'small', color: 'medium', bold: false }" />
|
|
141
164
|
}
|
|
142
165
|
|
|
166
|
+
<!-- Subida de archivo: label nativo envuelve el input (label trick, igual
|
|
167
|
+
que val-attachment-uploader) → gesto confiable en iOS/PWA. -->
|
|
168
|
+
<div class="import-upload">
|
|
169
|
+
<label class="import-upload__btn">
|
|
170
|
+
<ion-icon name="cloud-upload-outline" />
|
|
171
|
+
<span>{{ t('uploadFile') }}</span>
|
|
172
|
+
<input type="file" accept=".csv,text/csv,text/plain" (change)="onFileSelected($event)" />
|
|
173
|
+
</label>
|
|
174
|
+
<span class="import-upload__hint">{{ t('orPaste') }}</span>
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
@if (fileName()) {
|
|
178
|
+
<p class="import-file-loaded">
|
|
179
|
+
{{ t('fileLoaded').replace('{name}', fileName()) }}
|
|
180
|
+
</p>
|
|
181
|
+
}
|
|
182
|
+
|
|
143
183
|
<ion-textarea
|
|
144
184
|
class="import-csv"
|
|
145
185
|
[autoGrow]="true"
|
|
@@ -148,17 +188,19 @@ export class MemberImportModalComponent {
|
|
|
148
188
|
[(ngModel)]="csv"
|
|
149
189
|
/>
|
|
150
190
|
|
|
151
|
-
<
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
191
|
+
<div class="import-conflict-box">
|
|
192
|
+
<ion-select
|
|
193
|
+
class="import-conflict"
|
|
194
|
+
label="{{ t('onConflictLabel') }}"
|
|
195
|
+
labelPlacement="stacked"
|
|
196
|
+
interface="popover"
|
|
197
|
+
[(ngModel)]="onConflict"
|
|
198
|
+
>
|
|
199
|
+
<ion-select-option value="assignRole">{{ t('conflictAssign') }}</ion-select-option>
|
|
200
|
+
<ion-select-option value="skip">{{ t('conflictSkip') }}</ion-select-option>
|
|
201
|
+
<ion-select-option value="error">{{ t('conflictError') }}</ion-select-option>
|
|
202
|
+
</ion-select>
|
|
203
|
+
</div>
|
|
162
204
|
|
|
163
205
|
<ion-checkbox class="import-activation" labelPlacement="end" [(ngModel)]="sendActivation">
|
|
164
206
|
{{ t('sendActivation') }}
|
|
@@ -199,7 +241,7 @@ export class MemberImportModalComponent {
|
|
|
199
241
|
</div>
|
|
200
242
|
}
|
|
201
243
|
</ion-content>
|
|
202
|
-
`, isInline: true, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:12px}.import-csv{--background: var(--ion-color-light);border-radius:10px;margin-bottom:16px;font-family:monospace;font-size
|
|
244
|
+
`, isInline: true, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:12px}.import-upload{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px}.import-upload__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);color:var(--ion-color-dark);font-size:.875rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.import-upload__btn:hover{border-color:var(--ion-color-primary, #7026df)}.import-upload__btn ion-icon{font-size:1.25rem}.import-upload__btn input[type=file]{display:none}.import-upload__hint{font-size:.8125rem;color:var(--ion-color-medium)}.import-file-loaded{margin:0 0 12px;font-size:.8125rem;color:var(--ion-color-medium-shade, #6b6e76)}.import-csv{--background: var(--ion-color-light);border-radius:10px;margin-bottom:16px;font-family:monospace;font-size:.8125rem}.import-conflict-box{border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);padding:4px 12px;margin-bottom:16px}.import-conflict{--background: transparent;width:100%}.import-activation{display:block;margin-bottom:16px;font-size:14px}.import-error{margin:0 0 12px;font-size:.875rem;color:var(--ion-color-danger, #c0392b)}.import-actions{margin-top:8px}.import-results{display:flex;flex-direction:column;gap:6px;margin:12px 0}.import-row{display:grid;grid-template-columns:1fr auto;grid-row-gap:2px;align-items:center;padding:10px 12px;border-radius:8px;border-left:3px solid var(--ion-color-medium);background:var(--ion-color-light);font-size:14px}.import-row--created{border-left-color:var(--ion-color-success, #2dd36f)}.import-row--assigned{border-left-color:var(--ion-color-primary, #7026df)}.import-row--skipped{border-left-color:var(--ion-color-medium, #92949c)}.import-row--error{border-left-color:var(--ion-color-danger, #c0392b)}.import-row__email{font-weight:600;color:var(--ion-color-dark)}.import-row__status{text-align:right;color:var(--ion-color-medium-shade, #6b6e76)}.import-row__reason{grid-column:1 / -1;font-size:12px;color:var(--ion-color-danger, #c0392b)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { 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: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
203
245
|
}
|
|
204
246
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemberImportModalComponent, decorators: [{
|
|
205
247
|
type: Component,
|
|
@@ -215,6 +257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
215
257
|
IonSelectOption,
|
|
216
258
|
IonCheckbox,
|
|
217
259
|
IonSpinner,
|
|
260
|
+
IonIcon,
|
|
218
261
|
DisplayComponent,
|
|
219
262
|
TextComponent,
|
|
220
263
|
TitleComponent,
|
|
@@ -239,6 +282,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
239
282
|
<val-text [props]="{ content: rolesHint(), size: 'small', color: 'medium', bold: false }" />
|
|
240
283
|
}
|
|
241
284
|
|
|
285
|
+
<!-- Subida de archivo: label nativo envuelve el input (label trick, igual
|
|
286
|
+
que val-attachment-uploader) → gesto confiable en iOS/PWA. -->
|
|
287
|
+
<div class="import-upload">
|
|
288
|
+
<label class="import-upload__btn">
|
|
289
|
+
<ion-icon name="cloud-upload-outline" />
|
|
290
|
+
<span>{{ t('uploadFile') }}</span>
|
|
291
|
+
<input type="file" accept=".csv,text/csv,text/plain" (change)="onFileSelected($event)" />
|
|
292
|
+
</label>
|
|
293
|
+
<span class="import-upload__hint">{{ t('orPaste') }}</span>
|
|
294
|
+
</div>
|
|
295
|
+
|
|
296
|
+
@if (fileName()) {
|
|
297
|
+
<p class="import-file-loaded">
|
|
298
|
+
{{ t('fileLoaded').replace('{name}', fileName()) }}
|
|
299
|
+
</p>
|
|
300
|
+
}
|
|
301
|
+
|
|
242
302
|
<ion-textarea
|
|
243
303
|
class="import-csv"
|
|
244
304
|
[autoGrow]="true"
|
|
@@ -247,17 +307,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
247
307
|
[(ngModel)]="csv"
|
|
248
308
|
/>
|
|
249
309
|
|
|
250
|
-
<
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
310
|
+
<div class="import-conflict-box">
|
|
311
|
+
<ion-select
|
|
312
|
+
class="import-conflict"
|
|
313
|
+
label="{{ t('onConflictLabel') }}"
|
|
314
|
+
labelPlacement="stacked"
|
|
315
|
+
interface="popover"
|
|
316
|
+
[(ngModel)]="onConflict"
|
|
317
|
+
>
|
|
318
|
+
<ion-select-option value="assignRole">{{ t('conflictAssign') }}</ion-select-option>
|
|
319
|
+
<ion-select-option value="skip">{{ t('conflictSkip') }}</ion-select-option>
|
|
320
|
+
<ion-select-option value="error">{{ t('conflictError') }}</ion-select-option>
|
|
321
|
+
</ion-select>
|
|
322
|
+
</div>
|
|
261
323
|
|
|
262
324
|
<ion-checkbox class="import-activation" labelPlacement="end" [(ngModel)]="sendActivation">
|
|
263
325
|
{{ t('sendActivation') }}
|
|
@@ -298,7 +360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
298
360
|
</div>
|
|
299
361
|
}
|
|
300
362
|
</ion-content>
|
|
301
|
-
`, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:12px}.import-csv{--background: var(--ion-color-light);border-radius:10px;margin-bottom:16px;font-family:monospace;font-size
|
|
363
|
+
`, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:12px}.import-upload{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px}.import-upload__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);color:var(--ion-color-dark);font-size:.875rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.import-upload__btn:hover{border-color:var(--ion-color-primary, #7026df)}.import-upload__btn ion-icon{font-size:1.25rem}.import-upload__btn input[type=file]{display:none}.import-upload__hint{font-size:.8125rem;color:var(--ion-color-medium)}.import-file-loaded{margin:0 0 12px;font-size:.8125rem;color:var(--ion-color-medium-shade, #6b6e76)}.import-csv{--background: var(--ion-color-light);border-radius:10px;margin-bottom:16px;font-family:monospace;font-size:.8125rem}.import-conflict-box{border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);padding:4px 12px;margin-bottom:16px}.import-conflict{--background: transparent;width:100%}.import-activation{display:block;margin-bottom:16px;font-size:14px}.import-error{margin:0 0 12px;font-size:.875rem;color:var(--ion-color-danger, #c0392b)}.import-actions{margin-top:8px}.import-results{display:flex;flex-direction:column;gap:6px;margin:12px 0}.import-row{display:grid;grid-template-columns:1fr auto;grid-row-gap:2px;align-items:center;padding:10px 12px;border-radius:8px;border-left:3px solid var(--ion-color-medium);background:var(--ion-color-light);font-size:14px}.import-row--created{border-left-color:var(--ion-color-success, #2dd36f)}.import-row--assigned{border-left-color:var(--ion-color-primary, #7026df)}.import-row--skipped{border-left-color:var(--ion-color-medium, #92949c)}.import-row--error{border-left-color:var(--ion-color-danger, #c0392b)}.import-row__email{font-weight:600;color:var(--ion-color-dark)}.import-row__status{text-align:right;color:var(--ion-color-medium-shade, #6b6e76)}.import-row__reason{grid-column:1 / -1;font-size:12px;color:var(--ion-color-danger, #c0392b)}\n"] }]
|
|
302
364
|
}], ctorParameters: () => [], propDecorators: { orgId: [{
|
|
303
365
|
type: Input
|
|
304
366
|
}], availableRoles: [{
|
|
@@ -310,4 +372,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
310
372
|
}], i18nNamespace: [{
|
|
311
373
|
type: Input
|
|
312
374
|
}] } });
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1pbXBvcnQtbW9kYWwvbWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUV0RSxNQUFNLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO0FBRWpEOzs7Ozs7OztHQVFHO0FBbUxILE1BQU0sT0FBTywwQkFBMEI7SUF1Q3JDO1FBdENRLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4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LFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25DaGVja2JveCxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25TZWxlY3QsXG4gIElvblNlbGVjdE9wdGlvbixcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVGV4dGFyZWEsXG4gIElvblRvb2xiYXIsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuXG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBPcmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL29yZy5zZXJ2aWNlJztcbmltcG9ydCB7IEltcG9ydE1lbWJlcnNSZXNwb25zZSwgSW1wb3J0T25Db25mbGljdCwgSW1wb3J0Um93UmVzdWx0LCBJbXBvcnRVc2VyUm93IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcblxuaW1wb3J0IHsgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOIH0gZnJvbSAnLi9tZW1iZXItaW1wb3J0LW1vZGFsLmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5JbXBvcnRNb2RhbCc7XG5cbi8qKlxuICogYHZhbC1tZW1iZXItaW1wb3J0LW1vZGFsYCDigJQgcGFuZWwgZGUgY2FyZ2EgbWFzaXZhIGRlIG1pZW1icm9zIChBRFItMDIzIGZhc2UgNikuXG4gKlxuICogRWwgYWRtaW4gcGVnYSB1biBDU1YgKGBlbWFpbCxub21icmUscm9sYCk7IGVsIG1vZGFsIGxvIHBhcnNlYSBhIGZpbGFzIHkgbGxhbWFcbiAqIGBPcmdTZXJ2aWNlLmltcG9ydE1lbWJlcnNgLiBNdWVzdHJhIGVsIHJlc3VsdGFkbyBwb3ItZmlsYSAocGFydGlhbCBzdWNjZXNzKTpcbiAqIGBjcmVhdGVkYCAvIGBhc3NpZ25lZGAgLyBgc2tpcHBlZGAgLyBgZXJyb3JgLiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSkuXG4gKlxuICogQXV0by1yZWdpc3RyYSBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gYFNldHRpbmdzLkltcG9ydE1vZGFsYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lbWJlci1pbXBvcnQtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25UZXh0YXJlYSxcbiAgICBJb25TZWxlY3QsXG4gICAgSW9uU2VsZWN0T3B0aW9uLFxuICAgIElvbkNoZWNrYm94LFxuICAgIElvblNwaW5uZXIsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCd0aXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuXG4gICAgICBAaWYgKCFyZXN1bHRzKCkpIHtcbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdoaW50JyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgICAgQGlmIChyb2xlc0hpbnQoKSkge1xuICAgICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwieyBjb250ZW50OiByb2xlc0hpbnQoKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdtZWRpdW0nLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxpb24tdGV4dGFyZWFcbiAgICAgICAgICBjbGFzcz1cImltcG9ydC1jc3ZcIlxuICAgICAgICAgIFthdXRvR3Jvd109XCJ0cnVlXCJcbiAgICAgICAgICBbcm93c109XCI2XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnY3N2UGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjc3ZcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJpbXBvcnQtY29uZmxpY3RcIlxuICAgICAgICAgIGxhYmVsPVwie3sgdCgnb25Db25mbGljdExhYmVsJykgfX1cIlxuICAgICAgICAgIGxhYmVsUGxhY2VtZW50PVwic3RhY2tlZFwiXG4gICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJvbkNvbmZsaWN0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cImFzc2lnblJvbGVcIj57eyB0KCdjb25mbGljdEFzc2lnbicpIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCJza2lwXCI+e3sgdCgnY29uZmxpY3RTa2lwJykgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cImVycm9yXCI+e3sgdCgnY29uZmxpY3RFcnJvcicpIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgPC9pb24tc2VsZWN0PlxuXG4gICAgICAgIDxpb24tY2hlY2tib3ggY2xhc3M9XCJpbXBvcnQtYWN0aXZhdGlvblwiIGxhYmVsUGxhY2VtZW50PVwiZW5kXCIgWyhuZ01vZGVsKV09XCJzZW5kQWN0aXZhdGlvblwiPlxuICAgICAgICAgIHt7IHQoJ3NlbmRBY3RpdmF0aW9uJykgfX1cbiAgICAgICAgPC9pb24tY2hlY2tib3g+XG5cbiAgICAgICAgQGlmIChlcnJvck1zZygpKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJpbXBvcnQtZXJyb3JcIj57eyBlcnJvck1zZygpIH19PC9wPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1hY3Rpb25zXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cImRhcmtcIiBbZGlzYWJsZWRdPVwic3VibWl0dGluZygpXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAgICBAaWYgKHN1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIiAvPlxuICAgICAgICAgICAgICAmbmJzcDt7eyB0KCdzdWJtaXR0aW5nJykgfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICB7eyB0KCdzdWJtaXQnKSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPCEtLSBSZXN1bHRhZG9zIC0tPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHN1bW1hcnlMYWJlbCgpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtcmVzdWx0c1wiPlxuICAgICAgICAgIEBmb3IgKHIgb2YgcmVzdWx0cygpIS5yZXN1bHRzOyB0cmFjayByLmVtYWlsKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXJvdyBpbXBvcnQtcm93LS17eyByLnN0YXR1cyB9fVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1yb3dfX2VtYWlsXCI+e3sgci5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBvcnQtcm93X19zdGF0dXNcIj57eyBzdGF0dXNMYWJlbChyKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChyLnJlYXNvbikge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LXJvd19fcmVhc29uXCI+e3sgci5yZWFzb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtYWN0aW9uc1wiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxuICAgICAgICAgICAge3sgdCgnYWdhaW4nKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgdmFsLWRpc3BsYXkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgdmFsLXRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LWNzdiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1jb25mbGljdCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LWFjdGl2YXRpb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1lcnJvciB7XG4gICAgICAgIG1hcmdpbjogMCAwIDEycHggMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNjMDM5MmIpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yZXN1bHRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1hcmdpbjogMTJweCAwO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3cge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvO1xuICAgICAgICBncmlkLXJvdy1nYXA6IDJweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm93LS1jcmVhdGVkIHtcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLCAjMmRkMzZmKTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm93LS1hc3NpZ25lZCB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tc2tpcHBlZCB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm93LS1lcnJvciB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjYzAzOTJiKTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm93X19lbWFpbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fc3RhdHVzIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLXNoYWRlLCAjNmI2ZTc2KTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm93X19yZWFzb24ge1xuICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjYzAzOTJiKTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZW1iZXJJbXBvcnRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgb3JnU2VydmljZSA9IGluamVjdChPcmdTZXJ2aWNlKTtcblxuICAvKiogT3JnIGRlc3Rpbm8gZGVsIGltcG9ydC4gKi9cbiAgQElucHV0KCkgb3JnSWQgPSAnJztcblxuICAvKiogTm9tYnJlcyBkZSByb2xlcyBkaXNwb25pYmxlcyAocGFyYSBlbCBoaW50KS4gT3BjaW9uYWwuICovXG4gIEBJbnB1dCgpIGF2YWlsYWJsZVJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBDYWxsYmFjayB0cmFzIHVuYSBpbXBvcnRhY2nDs24gZXhpdG9zYSAo4omlMSBmaWxhIHByb2Nlc2FkYSkg4oCUIHJlZnJlc2NhIGxhIGxpc3RhLiAqL1xuICBASW5wdXQoKSBvblN1Y2Nlc3M/OiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAuICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuLiAqL1xuICBASW5wdXQoKSBpMThuTmFtZXNwYWNlID0gREVGQVVMVF9OQU1FU1BBQ0U7XG5cbiAgY3N2ID0gJyc7XG4gIG9uQ29uZmxpY3Q6IEltcG9ydE9uQ29uZmxpY3QgPSAnYXNzaWduUm9sZSc7XG4gIHNlbmRBY3RpdmF0aW9uID0gdHJ1ZTtcblxuICByZWFkb25seSBzdWJtaXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZXJyb3JNc2cgPSBzaWduYWwoJycpO1xuICByZWFkb25seSByZXN1bHRzID0gc2lnbmFsPEltcG9ydE1lbWJlcnNSZXNwb25zZSB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IHJvbGVzSGludCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5hdmFpbGFibGVSb2xlcy5sZW5ndGggPyBgJHt0aGlzLnQoJ3JvbGVzQXZhaWxhYmxlJyl9ICR7dGhpcy5hdmFpbGFibGVSb2xlcy5qb2luKCcsICcpfWAgOiAnJ1xuICApO1xuXG4gIHJlYWRvbmx5IHN1bW1hcnlMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzID0gdGhpcy5yZXN1bHRzKCk/LnN1bW1hcnk7XG4gICAgaWYgKCFzKSByZXR1cm4gdGhpcy50KCdzdW1tYXJ5Jyk7XG4gICAgcmV0dXJuIGAke3RoaXMudCgnc3VtbWFyeScpfTogJHtzLmNyZWF0ZWR9ICR7dGhpcy50KCdjcmVhdGVkJyl9IMK3ICR7cy5hc3NpZ25lZH0gJHt0aGlzLnQoXG4gICAgICAnYXNzaWduZWQnXG4gICAgKX0gwrcgJHtzLnNraXBwZWR9ICR7dGhpcy50KCdza2lwcGVkJyl9IMK3ICR7cy5mYWlsZWR9ICR7dGhpcy50KCdmYWlsZWQnKX1gO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoREVGQVVMVF9OQU1FU1BBQ0UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KERFRkFVTFRfTkFNRVNQQUNFLCBNRU1CRVJfSU1QT1JUX01PREFMX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSh0aGlzLmkxOG5OYW1lc3BhY2UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KHRoaXMuaTE4bk5hbWVzcGFjZSwgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOKTtcbiAgICB9XG4gIH1cblxuICAvKiogUGFyc2VhIGVsIENTViBwZWdhZG8gYSBmaWxhcyB7ZW1haWwsbmFtZSxyb2xlTmFtZX0uIFRvbGVyYSBoZWFkZXIuICovXG4gIHByaXZhdGUgcGFyc2VDc3YoKTogSW1wb3J0VXNlclJvd1tdIHtcbiAgICBjb25zdCByb3dzOiBJbXBvcnRVc2VyUm93W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJhdyBvZiB0aGlzLmNzdi5zcGxpdCgvXFxyP1xcbi8pKSB7XG4gICAgICBjb25zdCBsaW5lID0gcmF3LnRyaW0oKTtcbiAgICAgIGlmICghbGluZSkgY29udGludWU7XG4gICAgICBjb25zdCBjb2xzID0gbGluZS5zcGxpdCgnLCcpLm1hcChjID0+IGMudHJpbSgpKTtcbiAgICAgIGNvbnN0IGVtYWlsID0gKGNvbHNbMF0gPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAvLyBTYWx0YXIgaGVhZGVyIChwcmltZXJhIGNvbCBcImVtYWlsXCIpIG8gbMOtbmVhcyBzaW4gQC5cbiAgICAgIGlmICghZW1haWwgfHwgIWVtYWlsLmluY2x1ZGVzKCdAJykpIGNvbnRpbnVlO1xuICAgICAgcm93cy5wdXNoKHsgZW1haWwsIG5hbWU6IGNvbHNbMV0gPz8gJycsIHJvbGVOYW1lOiBjb2xzWzJdID8/ICcnIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgY29uc3QgdXNlcnMgPSB0aGlzLnBhcnNlQ3N2KCk7XG4gICAgaWYgKHVzZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdub1Jvd3MnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh1c2Vycy5zb21lKHUgPT4gIXUucm9sZU5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yTXNnLnNldCh0aGlzLnQoJ3BhcnNlRXJyb3InKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdWJtaXR0aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5pbXBvcnRNZW1iZXJzKHRoaXMub3JnSWQsIHtcbiAgICAgICAgdXNlcnMsXG4gICAgICAgIG9uQ29uZmxpY3Q6IHRoaXMub25Db25mbGljdCxcbiAgICAgICAgc2VuZEFjdGl2YXRpb246IHRoaXMuc2VuZEFjdGl2YXRpb24sXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5yZXN1bHRzLnNldChyZXMpO1xuICAgICAgICAgIC8vIFJlZnJlc2NhciBsaXN0YSBkZWwgY29uc3VtZXIgc2kgaHVibyBhbHRhcy9hc2lnbmFjaW9uZXMgZWZlY3RpdmFzLlxuICAgICAgICAgIGlmIChyZXMuc3VtbWFyeS5jcmVhdGVkICsgcmVzLnN1bW1hcnkuYXNzaWduZWQgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9uU3VjY2Vzcz8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmVycm9yTXNnLnNldChlcnI/LmVycm9yPy5tZXNzYWdlID8/IHRoaXMudCgnZ2VuZXJpY0Vycm9yJykpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBzdGF0dXNMYWJlbChyOiBJbXBvcnRSb3dSZXN1bHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLnQoci5zdGF0dXMgPT09ICdlcnJvcicgPyAnZmFpbGVkJyA6IHIuc3RhdHVzKTtcbiAgICBpZiAoci5zdGF0dXMgPT09ICdjcmVhdGVkJyAmJiByLmFjdGl2YXRpb24pIHtcbiAgICAgIHJldHVybiBgJHtiYXNlfSDCtyAke3RoaXMudChyLmFjdGl2YXRpb24gPT09ICdzZW50JyA/ICdhY3RpdmF0aW9uU2VudCcgOiAnYWN0aXZhdGlvblBlbmRpbmcnKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3N2ID0gJyc7XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuICAgIHRoaXMucmVzdWx0cy5zZXQobnVsbCk7XG4gIH1cblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMuaTE4bk5hbWVzcGFjZSk7XG4gIH1cbn1cbiJdfQ==
|
|
375
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1pbXBvcnQtbW9kYWwvbWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxHQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUV0RSxNQUFNLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO0FBRWpELFFBQVEsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMs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O0dBbUdUO3dEQXNJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ2hlY2tib3gsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uSWNvbixcbiAgSW9uU2VsZWN0LFxuICBJb25TZWxlY3RPcHRpb24sXG4gIElvblNwaW5uZXIsXG4gIElvblRleHRhcmVhLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2xvdWRVcGxvYWRPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBPcmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL29yZy5zZXJ2aWNlJztcbmltcG9ydCB7IEltcG9ydE1lbWJlcnNSZXNwb25zZSwgSW1wb3J0T25Db25mbGljdCwgSW1wb3J0Um93UmVzdWx0LCBJbXBvcnRVc2VyUm93IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcblxuaW1wb3J0IHsgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOIH0gZnJvbSAnLi9tZW1iZXItaW1wb3J0LW1vZGFsLmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5JbXBvcnRNb2RhbCc7XG5cbmFkZEljb25zKHsgY2xvdWRVcGxvYWRPdXRsaW5lIH0pO1xuXG4vKipcbiAqIGB2YWwtbWVtYmVyLWltcG9ydC1tb2RhbGAg4oCUIHBhbmVsIGRlIGNhcmdhIG1hc2l2YSBkZSBtaWVtYnJvcyAoQURSLTAyMyBmYXNlIDYpLlxuICpcbiAqIEVsIGFkbWluIHBlZ2EgdW4gQ1NWIChgZW1haWwsbm9tYnJlLHJvbGApOyBlbCBtb2RhbCBsbyBwYXJzZWEgYSBmaWxhcyB5IGxsYW1hXG4gKiBgT3JnU2VydmljZS5pbXBvcnRNZW1iZXJzYC4gTXVlc3RyYSBlbCByZXN1bHRhZG8gcG9yLWZpbGEgKHBhcnRpYWwgc3VjY2Vzcyk6XG4gKiBgY3JlYXRlZGAgLyBgYXNzaWduZWRgIC8gYHNraXBwZWRgIC8gYGVycm9yYC4gSGVhZGVyIGNhbsOzbmljbyAoUmVnbGEgIzUpLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgZGVmYXVsdHMgaTE4biAoZXMvZW4pIGVuIGBTZXR0aW5ncy5JbXBvcnRNb2RhbGAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1tZW1iZXItaW1wb3J0LW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uVGV4dGFyZWEsXG4gICAgSW9uU2VsZWN0LFxuICAgIElvblNlbGVjdE9wdGlvbixcbiAgICBJb25DaGVja2JveCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvbkljb24sXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCd0aXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuXG4gICAgICBAaWYgKCFyZXN1bHRzKCkpIHtcbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdoaW50JyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgICAgQGlmIChyb2xlc0hpbnQoKSkge1xuICAgICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwieyBjb250ZW50OiByb2xlc0hpbnQoKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdtZWRpdW0nLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gU3ViaWRhIGRlIGFyY2hpdm86IGxhYmVsIG5hdGl2byBlbnZ1ZWx2ZSBlbCBpbnB1dCAobGFiZWwgdHJpY2ssIGlndWFsXG4gICAgICAgICAgICAgcXVlIHZhbC1hdHRhY2htZW50LXVwbG9hZGVyKSDihpIgZ2VzdG8gY29uZmlhYmxlIGVuIGlPUy9QV0EuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXVwbG9hZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImltcG9ydC11cGxvYWRfX2J0blwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG91ZC11cGxvYWQtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICA8c3Bhbj57eyB0KCd1cGxvYWRGaWxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuY3N2LHRleHQvY3N2LHRleHQvcGxhaW5cIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBvcnQtdXBsb2FkX19oaW50XCI+e3sgdCgnb3JQYXN0ZScpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKGZpbGVOYW1lKCkpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cImltcG9ydC1maWxlLWxvYWRlZFwiPlxuICAgICAgICAgICAge3sgdCgnZmlsZUxvYWRlZCcpLnJlcGxhY2UoJ3tuYW1lfScsIGZpbGVOYW1lKCkpIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICB9XG5cbiAgICAgICAgPGlvbi10ZXh0YXJlYVxuICAgICAgICAgIGNsYXNzPVwiaW1wb3J0LWNzdlwiXG4gICAgICAgICAgW2F1dG9Hcm93XT1cInRydWVcIlxuICAgICAgICAgIFtyb3dzXT1cIjZcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0KCdjc3ZQbGFjZWhvbGRlcicpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNzdlwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1jb25mbGljdC1ib3hcIj5cbiAgICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgICAgY2xhc3M9XCJpbXBvcnQtY29uZmxpY3RcIlxuICAgICAgICAgICAgbGFiZWw9XCJ7eyB0KCdvbkNvbmZsaWN0TGFiZWwnKSB9fVwiXG4gICAgICAgICAgICBsYWJlbFBsYWNlbWVudD1cInN0YWNrZWRcIlxuICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm9uQ29uZmxpY3RcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cImFzc2lnblJvbGVcIj57eyB0KCdjb25mbGljdEFzc2lnbicpIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cInNraXBcIj57eyB0KCdjb25mbGljdFNraXAnKSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCJlcnJvclwiPnt7IHQoJ2NvbmZsaWN0RXJyb3InKSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW9uLWNoZWNrYm94IGNsYXNzPVwiaW1wb3J0LWFjdGl2YXRpb25cIiBsYWJlbFBsYWNlbWVudD1cImVuZFwiIFsobmdNb2RlbCldPVwic2VuZEFjdGl2YXRpb25cIj5cbiAgICAgICAgICB7eyB0KCdzZW5kQWN0aXZhdGlvbicpIH19XG4gICAgICAgIDwvaW9uLWNoZWNrYm94PlxuXG4gICAgICAgIEBpZiAoZXJyb3JNc2coKSkge1xuICAgICAgICAgIDxwIGNsYXNzPVwiaW1wb3J0LWVycm9yXCI+e3sgZXJyb3JNc2coKSB9fTwvcD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtYWN0aW9uc1wiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgY29sb3I9XCJkYXJrXCIgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmcoKVwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICAgICAgQGlmIChzdWJtaXR0aW5nKCkpIHtcbiAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJkb3RzXCIgLz5cbiAgICAgICAgICAgICAgJm5ic3A7e3sgdCgnc3VibWl0dGluZycpIH19XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgdCgnc3VibWl0JykgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDwhLS0gUmVzdWx0YWRvcyAtLT5cbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiBzdW1tYXJ5TGFiZWwoKSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiB0cnVlIH1cIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXJlc3VsdHNcIj5cbiAgICAgICAgICBAZm9yIChyIG9mIHJlc3VsdHMoKSEucmVzdWx0czsgdHJhY2sgci5lbWFpbCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1yb3cgaW1wb3J0LXJvdy0te3sgci5zdGF0dXMgfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBvcnQtcm93X19lbWFpbFwiPnt7IHIuZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LXJvd19fc3RhdHVzXCI+e3sgc3RhdHVzTGFiZWwocikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAoci5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1yb3dfX3JlYXNvblwiPnt7IHIucmVhc29uIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LWFjdGlvbnNcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cInJlc2V0KClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2FnYWluJykgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC11cGxvYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtdXBsb2FkX19idG4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXVwbG9hZF9fYnRuOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXVwbG9hZF9fYnRuIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgfVxuICAgICAgLyogRWwgaW5wdXQgbmF0aXZvIHF1ZWRhIG9jdWx0bzsgZWwgbGFiZWwgcmVlbnbDrWEgZWwgY2xpYyAobGFiZWwgdHJpY2spLiAqL1xuICAgICAgLmltcG9ydC11cGxvYWRfX2J0biBpbnB1dFt0eXBlPSdmaWxlJ10ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgICAgLmltcG9ydC11cGxvYWRfX2hpbnQge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1maWxlLWxvYWRlZCB7XG4gICAgICAgIG1hcmdpbjogMCAwIDEycHggMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLXNoYWRlLCAjNmI2ZTc2KTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtY3N2IHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC8qIENhamEgZGVsIHNlbGVjdG9yOiBib3JkZSArIGZvbmRvIGNvbnNpc3RlbnRlcyBjb24gZWwgdGV4dGFyZWEgKGFudGVzIGVsXG4gICAgICAgICBpb24tc2VsZWN0IHF1ZWRhYmEgXCJzdWVsdG9cIiBzaW4gY29udGVuZWRvciB2aXNpYmxlKS4gKi9cbiAgICAgIC5pbXBvcnQtY29uZmxpY3QtYm94IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1jb25mbGljdCB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1hY3RpdmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtZXJyb3Ige1xuICAgICAgICBtYXJnaW46IDAgMCAxMnB4IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjYzAzOTJiKTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcmVzdWx0cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBtYXJnaW46IDEycHggMDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm93IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0bztcbiAgICAgICAgZ3JpZC1yb3ctZ2FwOiAycHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tY3JlYXRlZCB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tYXNzaWduZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3ctLXNraXBwZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tZXJyb3Ige1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fZW1haWwge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3dfX3N0YXR1cyB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgIzZiNmU3Nik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fcmVhc29uIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1NlcnZpY2UgPSBpbmplY3QoT3JnU2VydmljZSk7XG5cbiAgLyoqIE9yZyBkZXN0aW5vIGRlbCBpbXBvcnQuICovXG4gIEBJbnB1dCgpIG9yZ0lkID0gJyc7XG5cbiAgLyoqIE5vbWJyZXMgZGUgcm9sZXMgZGlzcG9uaWJsZXMgKHBhcmEgZWwgaGludCkuIE9wY2lvbmFsLiAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVSb2xlczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogQ2FsbGJhY2sgdHJhcyB1bmEgaW1wb3J0YWNpw7NuIGV4aXRvc2EgKOKJpTEgZmlsYSBwcm9jZXNhZGEpIOKAlCByZWZyZXNjYSBsYSBsaXN0YS4gKi9cbiAgQElucHV0KCkgb25TdWNjZXNzPzogKCkgPT4gdm9pZDtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4bi4gKi9cbiAgQElucHV0KCkgaTE4bk5hbWVzcGFjZSA9IERFRkFVTFRfTkFNRVNQQUNFO1xuXG4gIGNzdiA9ICcnO1xuICBvbkNvbmZsaWN0OiBJbXBvcnRPbkNvbmZsaWN0ID0gJ2Fzc2lnblJvbGUnO1xuICBzZW5kQWN0aXZhdGlvbiA9IHRydWU7XG5cbiAgcmVhZG9ubHkgc3VibWl0dGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGVycm9yTXNnID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgcmVzdWx0cyA9IHNpZ25hbDxJbXBvcnRNZW1iZXJzUmVzcG9uc2UgfCBudWxsPihudWxsKTtcbiAgLyoqIE5vbWJyZSBkZWwgYXJjaGl2byBDU1YgY2FyZ2FkbyAodmFjw61vIHNpIHNlIHBlZ8OzIG1hbnVhbG1lbnRlKS4gKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWUgPSBzaWduYWwoJycpO1xuXG4gIHJlYWRvbmx5IHJvbGVzSGludCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5hdmFpbGFibGVSb2xlcy5sZW5ndGggPyBgJHt0aGlzLnQoJ3JvbGVzQXZhaWxhYmxlJyl9ICR7dGhpcy5hdmFpbGFibGVSb2xlcy5qb2luKCcsICcpfWAgOiAnJ1xuICApO1xuXG4gIHJlYWRvbmx5IHN1bW1hcnlMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzID0gdGhpcy5yZXN1bHRzKCk/LnN1bW1hcnk7XG4gICAgaWYgKCFzKSByZXR1cm4gdGhpcy50KCdzdW1tYXJ5Jyk7XG4gICAgcmV0dXJuIGAke3RoaXMudCgnc3VtbWFyeScpfTogJHtzLmNyZWF0ZWR9ICR7dGhpcy50KCdjcmVhdGVkJyl9IMK3ICR7cy5hc3NpZ25lZH0gJHt0aGlzLnQoXG4gICAgICAnYXNzaWduZWQnXG4gICAgKX0gwrcgJHtzLnNraXBwZWR9ICR7dGhpcy50KCdza2lwcGVkJyl9IMK3ICR7cy5mYWlsZWR9ICR7dGhpcy50KCdmYWlsZWQnKX1gO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoREVGQVVMVF9OQU1FU1BBQ0UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KERFRkFVTFRfTkFNRVNQQUNFLCBNRU1CRVJfSU1QT1JUX01PREFMX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSh0aGlzLmkxOG5OYW1lc3BhY2UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KHRoaXMuaTE4bk5hbWVzcGFjZSwgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FyZ2EgdW4gYXJjaGl2byBDU1Ygc2VsZWNjaW9uYWRvOiBsZWUgc3UgdGV4dG8gYWwgdGV4dGFyZWEgKGBjc3ZgKS4gKi9cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcbiAgICBpZiAoIWZpbGUpIHJldHVybjtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgdGhpcy5jc3YgPSBTdHJpbmcocmVhZGVyLnJlc3VsdCA/PyAnJyk7XG4gICAgICB0aGlzLmZpbGVOYW1lLnNldChmaWxlLm5hbWUpO1xuICAgIH07XG4gICAgcmVhZGVyLm9uZXJyb3IgPSAoKSA9PiB0aGlzLmVycm9yTXNnLnNldCh0aGlzLnQoJ2ZpbGVSZWFkRXJyb3InKSk7XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgLy8gUGVybWl0ZSByZS1zZWxlY2Npb25hciBlbCBtaXNtbyBhcmNoaXZvIChlbCBjaGFuZ2Ugbm8gZGlzcGFyYSBzaSBubyBzZSBsaW1waWEpLlxuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gIH1cblxuICAvKiogUGFyc2VhIGVsIENTViBwZWdhZG8gYSBmaWxhcyB7ZW1haWwsbmFtZSxyb2xlTmFtZX0uIFRvbGVyYSBoZWFkZXIuICovXG4gIHByaXZhdGUgcGFyc2VDc3YoKTogSW1wb3J0VXNlclJvd1tdIHtcbiAgICBjb25zdCByb3dzOiBJbXBvcnRVc2VyUm93W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJhdyBvZiB0aGlzLmNzdi5zcGxpdCgvXFxyP1xcbi8pKSB7XG4gICAgICBjb25zdCBsaW5lID0gcmF3LnRyaW0oKTtcbiAgICAgIGlmICghbGluZSkgY29udGludWU7XG4gICAgICBjb25zdCBjb2xzID0gbGluZS5zcGxpdCgnLCcpLm1hcChjID0+IGMudHJpbSgpKTtcbiAgICAgIGNvbnN0IGVtYWlsID0gKGNvbHNbMF0gPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAvLyBTYWx0YXIgaGVhZGVyIChwcmltZXJhIGNvbCBcImVtYWlsXCIpIG8gbMOtbmVhcyBzaW4gQC5cbiAgICAgIGlmICghZW1haWwgfHwgIWVtYWlsLmluY2x1ZGVzKCdAJykpIGNvbnRpbnVlO1xuICAgICAgcm93cy5wdXNoKHsgZW1haWwsIG5hbWU6IGNvbHNbMV0gPz8gJycsIHJvbGVOYW1lOiBjb2xzWzJdID8/ICcnIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgY29uc3QgdXNlcnMgPSB0aGlzLnBhcnNlQ3N2KCk7XG4gICAgaWYgKHVzZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdub1Jvd3MnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh1c2Vycy5zb21lKHUgPT4gIXUucm9sZU5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yTXNnLnNldCh0aGlzLnQoJ3BhcnNlRXJyb3InKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdWJtaXR0aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5pbXBvcnRNZW1iZXJzKHRoaXMub3JnSWQsIHtcbiAgICAgICAgdXNlcnMsXG4gICAgICAgIG9uQ29uZmxpY3Q6IHRoaXMub25Db25mbGljdCxcbiAgICAgICAgc2VuZEFjdGl2YXRpb246IHRoaXMuc2VuZEFjdGl2YXRpb24sXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5yZXN1bHRzLnNldChyZXMpO1xuICAgICAgICAgIC8vIFJlZnJlc2NhciBsaXN0YSBkZWwgY29uc3VtZXIgc2kgaHVibyBhbHRhcy9hc2lnbmFjaW9uZXMgZWZlY3RpdmFzLlxuICAgICAgICAgIGlmIChyZXMuc3VtbWFyeS5jcmVhdGVkICsgcmVzLnN1bW1hcnkuYXNzaWduZWQgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9uU3VjY2Vzcz8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmVycm9yTXNnLnNldChlcnI/LmVycm9yPy5tZXNzYWdlID8/IHRoaXMudCgnZ2VuZXJpY0Vycm9yJykpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBzdGF0dXNMYWJlbChyOiBJbXBvcnRSb3dSZXN1bHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLnQoci5zdGF0dXMgPT09ICdlcnJvcicgPyAnZmFpbGVkJyA6IHIuc3RhdHVzKTtcbiAgICBpZiAoci5zdGF0dXMgPT09ICdjcmVhdGVkJyAmJiByLmFjdGl2YXRpb24pIHtcbiAgICAgIHJldHVybiBgJHtiYXNlfSDCtyAke3RoaXMudChyLmFjdGl2YXRpb24gPT09ICdzZW50JyA/ICdhY3RpdmF0aW9uU2VudCcgOiAnYWN0aXZhdGlvblBlbmRpbmcnKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3N2ID0gJyc7XG4gICAgdGhpcy5maWxlTmFtZS5zZXQoJycpO1xuICAgIHRoaXMuZXJyb3JNc2cuc2V0KCcnKTtcbiAgICB0aGlzLnJlc3VsdHMuc2V0KG51bGwpO1xuICB9XG5cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLmkxOG5OYW1lc3BhY2UpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,10 @@ export const MEMBER_IMPORT_MODAL_I18N = {
|
|
|
7
7
|
title: 'Importar miembros',
|
|
8
8
|
hint: 'Pega un CSV con columnas: email, nombre, rol (una fila por persona).',
|
|
9
9
|
csvPlaceholder: 'email,nombre,rol\nana@x.com,Ana,editor\nbeto@x.com,Beto,viewer',
|
|
10
|
+
uploadFile: 'Subir archivo CSV',
|
|
11
|
+
orPaste: 'o pega el CSV abajo',
|
|
12
|
+
fileLoaded: 'Archivo cargado: {name}',
|
|
13
|
+
fileReadError: 'No se pudo leer el archivo.',
|
|
10
14
|
rolesAvailable: 'Roles disponibles:',
|
|
11
15
|
onConflictLabel: 'Si el email ya existe',
|
|
12
16
|
conflictAssign: 'Asignar el rol',
|
|
@@ -35,6 +39,10 @@ export const MEMBER_IMPORT_MODAL_I18N = {
|
|
|
35
39
|
title: 'Import members',
|
|
36
40
|
hint: 'Paste a CSV with columns: email, name, role (one row per person).',
|
|
37
41
|
csvPlaceholder: 'email,name,role\nana@x.com,Ana,editor\nbeto@x.com,Beto,viewer',
|
|
42
|
+
uploadFile: 'Upload CSV file',
|
|
43
|
+
orPaste: 'or paste the CSV below',
|
|
44
|
+
fileLoaded: 'File loaded: {name}',
|
|
45
|
+
fileReadError: "Couldn't read the file.",
|
|
38
46
|
rolesAvailable: 'Available roles:',
|
|
39
47
|
onConflictLabel: 'If the email already exists',
|
|
40
48
|
conflictAssign: 'Assign the role',
|
|
@@ -60,4 +68,4 @@ export const MEMBER_IMPORT_MODAL_I18N = {
|
|
|
60
68
|
genericError: "Couldn't complete the import. Try again.",
|
|
61
69
|
},
|
|
62
70
|
};
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWltcG9ydC1tb2RhbC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9tZW1iZXItaW1wb3J0LW1vZGFsL21lbWJlci1pbXBvcnQtbW9kYWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBcUI7SUFDeEQsRUFBRSxFQUFFO1FBQ0YsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixJQUFJLEVBQUUsc0VBQXNFO1FBQzVFLGNBQWMsRUFBRSxnRUFBZ0U7UUFDaEYsVUFBVSxFQUFFLG1CQUFtQjtRQUMvQixPQUFPLEVBQUUscUJBQXFCO1FBQzlCLFVBQVUsRUFBRSx5QkFBeUI7UUFDckMsYUFBYSxFQUFFLDZCQUE2QjtRQUM1QyxjQUFjLEVBQUUsb0JBQW9CO1FBQ3BDLGVBQWUsRUFBRSx1QkFBdUI7UUFDeEMsY0FBYyxFQUFFLGdCQUFnQjtRQUNoQyxZQUFZLEVBQUUsUUFBUTtRQUN0QixhQUFhLEVBQUUsY0FBYztRQUM3QixjQUFjLEVBQUUsaURBQWlEO1FBQ2pFLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFVBQVUsRUFBRSxlQUFlO1FBQzNCLFVBQVUsRUFBRSxtREFBbUQ7UUFDL0QsTUFBTSxFQUFFLDhDQUE4QztRQUN0RCxPQUFPLEVBQUUsU0FBUztRQUNsQixPQUFPLEVBQUUsU0FBUztRQUNsQixRQUFRLEVBQUUsV0FBVztRQUNyQixPQUFPLEVBQUUsVUFBVTtRQUNuQixNQUFNLEVBQUUsV0FBVztRQUNuQixRQUFRLEVBQUUsT0FBTztRQUNqQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsU0FBUztRQUNwQixjQUFjLEVBQUUsb0JBQW9CO1FBQ3BDLGlCQUFpQixFQUFFLHNCQUFzQjtRQUN6QyxLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLEtBQUssRUFBRSxRQUFRO1FBQ2YsWUFBWSxFQUFFLHdEQUF3RDtLQUN2RTtJQUNELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsSUFBSSxFQUFFLG1FQUFtRTtRQUN6RSxjQUFjLEVBQUUsK0RBQStEO1FBQy9FLFVBQVUsRUFBRSxpQkFBaUI7UUFDN0IsT0FBTyxFQUFFLHdCQUF3QjtRQUNqQyxVQUFVLEVBQUUscUJBQXFCO1FBQ2pDLGFBQWEsRUFBRSx5QkFBeUI7UUFDeEMsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxlQUFlLEVBQUUsNkJBQTZCO1FBQzlDLGNBQWMsRUFBRSxpQkFBaUI7UUFDakMsWUFBWSxFQUFFLE1BQU07UUFDcEIsYUFBYSxFQUFFLGVBQWU7UUFDOUIsY0FBYyxFQUFFLHVDQUF1QztRQUN2RCxNQUFNLEVBQUUsUUFBUTtRQUNoQixVQUFVLEVBQUUsY0FBYztRQUMxQixVQUFVLEVBQUUsMkNBQTJDO1FBQ3ZELE1BQU0sRUFBRSxnREFBZ0Q7UUFDeEQsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsUUFBUSxFQUFFLE9BQU87UUFDakIsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLFFBQVE7UUFDbkIsY0FBYyxFQUFFLGlCQUFpQjtRQUNqQyxpQkFBaUIsRUFBRSxvQkFBb0I7UUFDdkMsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixLQUFLLEVBQUUsT0FBTztRQUNkLFlBQVksRUFBRSwwQ0FBMEM7S0FDekQ7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VzQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbWJlYmlkb3MgZW4gYHZhbC1tZW1iZXItaW1wb3J0LW1vZGFsYCAoQURSLTAyMykuXG4gKiBBdXRvLXJlZ2lzdHJhZG9zIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBgU2V0dGluZ3MuSW1wb3J0TW9kYWxgLlxuICovXG5leHBvcnQgY29uc3QgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHRpdGxlOiAnSW1wb3J0YXIgbWllbWJyb3MnLFxuICAgIGhpbnQ6ICdQZWdhIHVuIENTViBjb24gY29sdW1uYXM6IGVtYWlsLCBub21icmUsIHJvbCAodW5hIGZpbGEgcG9yIHBlcnNvbmEpLicsXG4gICAgY3N2UGxhY2Vob2xkZXI6ICdlbWFpbCxub21icmUscm9sXFxuYW5hQHguY29tLEFuYSxlZGl0b3JcXG5iZXRvQHguY29tLEJldG8sdmlld2VyJyxcbiAgICB1cGxvYWRGaWxlOiAnU3ViaXIgYXJjaGl2byBDU1YnLFxuICAgIG9yUGFzdGU6ICdvIHBlZ2EgZWwgQ1NWIGFiYWpvJyxcbiAgICBmaWxlTG9hZGVkOiAnQXJjaGl2byBjYXJnYWRvOiB7bmFtZX0nLFxuICAgIGZpbGVSZWFkRXJyb3I6ICdObyBzZSBwdWRvIGxlZXIgZWwgYXJjaGl2by4nLFxuICAgIHJvbGVzQXZhaWxhYmxlOiAnUm9sZXMgZGlzcG9uaWJsZXM6JyxcbiAgICBvbkNvbmZsaWN0TGFiZWw6ICdTaSBlbCBlbWFpbCB5YSBleGlzdGUnLFxuICAgIGNvbmZsaWN0QXNzaWduOiAnQXNpZ25hciBlbCByb2wnLFxuICAgIGNvbmZsaWN0U2tpcDogJ09taXRpcicsXG4gICAgY29uZmxpY3RFcnJvcjogJ01hcmNhciBlcnJvcicsXG4gICAgc2VuZEFjdGl2YXRpb246ICdFbnZpYXIgZW1haWwgZGUgYWN0aXZhY2nDs24gYSBsYXMgY3VlbnRhcyBudWV2YXMnLFxuICAgIHN1Ym1pdDogJ0ltcG9ydGFyJyxcbiAgICBzdWJtaXR0aW5nOiAnSW1wb3J0YW5kby4uLicsXG4gICAgcGFyc2VFcnJvcjogJ05vIHNlIHB1ZG8gaW50ZXJwcmV0YXIgZWwgQ1NWLiBSZXZpc2EgZWwgZm9ybWF0by4nLFxuICAgIG5vUm93czogJ1BlZ2EgYWwgbWVub3MgdW5hIGZpbGEgdsOhbGlkYSAoZW1haWwgeSByb2wpLicsXG4gICAgc3VtbWFyeTogJ1Jlc3VtZW4nLFxuICAgIGNyZWF0ZWQ6ICdjcmVhZG9zJyxcbiAgICBhc3NpZ25lZDogJ2FzaWduYWRvcycsXG4gICAgc2tpcHBlZDogJ29taXRpZG9zJyxcbiAgICBmYWlsZWQ6ICdjb24gZXJyb3InLFxuICAgIGNvbEVtYWlsOiAnRW1haWwnLFxuICAgIGNvbFN0YXR1czogJ0VzdGFkbycsXG4gICAgY29sRGV0YWlsOiAnRGV0YWxsZScsXG4gICAgYWN0aXZhdGlvblNlbnQ6ICdhY3RpdmFjacOzbiBlbnZpYWRhJyxcbiAgICBhY3RpdmF0aW9uUGVuZGluZzogJ2FjdGl2YWNpw7NuIHBlbmRpZW50ZScsXG4gICAgYWdhaW46ICdJbXBvcnRhciBvdHJvIGxvdGUnLFxuICAgIGNsb3NlOiAnQ2VycmFyJyxcbiAgICBnZW5lcmljRXJyb3I6ICdObyBzZSBwdWRvIGNvbXBsZXRhciBsYSBpbXBvcnRhY2nDs24uIEludGVudGEgZGUgbnVldm8uJyxcbiAgfSxcbiAgZW46IHtcbiAgICB0aXRsZTogJ0ltcG9ydCBtZW1iZXJzJyxcbiAgICBoaW50OiAnUGFzdGUgYSBDU1Ygd2l0aCBjb2x1bW5zOiBlbWFpbCwgbmFtZSwgcm9sZSAob25lIHJvdyBwZXIgcGVyc29uKS4nLFxuICAgIGNzdlBsYWNlaG9sZGVyOiAnZW1haWwsbmFtZSxyb2xlXFxuYW5hQHguY29tLEFuYSxlZGl0b3JcXG5iZXRvQHguY29tLEJldG8sdmlld2VyJyxcbiAgICB1cGxvYWRGaWxlOiAnVXBsb2FkIENTViBmaWxlJyxcbiAgICBvclBhc3RlOiAnb3IgcGFzdGUgdGhlIENTViBiZWxvdycsXG4gICAgZmlsZUxvYWRlZDogJ0ZpbGUgbG9hZGVkOiB7bmFtZX0nLFxuICAgIGZpbGVSZWFkRXJyb3I6IFwiQ291bGRuJ3QgcmVhZCB0aGUgZmlsZS5cIixcbiAgICByb2xlc0F2YWlsYWJsZTogJ0F2YWlsYWJsZSByb2xlczonLFxuICAgIG9uQ29uZmxpY3RMYWJlbDogJ0lmIHRoZSBlbWFpbCBhbHJlYWR5IGV4aXN0cycsXG4gICAgY29uZmxpY3RBc3NpZ246ICdBc3NpZ24gdGhlIHJvbGUnLFxuICAgIGNvbmZsaWN0U2tpcDogJ1NraXAnLFxuICAgIGNvbmZsaWN0RXJyb3I6ICdNYXJrIGFzIGVycm9yJyxcbiAgICBzZW5kQWN0aXZhdGlvbjogJ1NlbmQgYWN0aXZhdGlvbiBlbWFpbCB0byBuZXcgYWNjb3VudHMnLFxuICAgIHN1Ym1pdDogJ0ltcG9ydCcsXG4gICAgc3VibWl0dGluZzogJ0ltcG9ydGluZy4uLicsXG4gICAgcGFyc2VFcnJvcjogXCJDb3VsZG4ndCBwYXJzZSB0aGUgQ1NWLiBDaGVjayB0aGUgZm9ybWF0LlwiLFxuICAgIG5vUm93czogJ1Bhc3RlIGF0IGxlYXN0IG9uZSB2YWxpZCByb3cgKGVtYWlsIGFuZCByb2xlKS4nLFxuICAgIHN1bW1hcnk6ICdTdW1tYXJ5JyxcbiAgICBjcmVhdGVkOiAnY3JlYXRlZCcsXG4gICAgYXNzaWduZWQ6ICdhc3NpZ25lZCcsXG4gICAgc2tpcHBlZDogJ3NraXBwZWQnLFxuICAgIGZhaWxlZDogJ2ZhaWxlZCcsXG4gICAgY29sRW1haWw6ICdFbWFpbCcsXG4gICAgY29sU3RhdHVzOiAnU3RhdHVzJyxcbiAgICBjb2xEZXRhaWw6ICdEZXRhaWwnLFxuICAgIGFjdGl2YXRpb25TZW50OiAnYWN0aXZhdGlvbiBzZW50JyxcbiAgICBhY3RpdmF0aW9uUGVuZGluZzogJ2FjdGl2YXRpb24gcGVuZGluZycsXG4gICAgYWdhaW46ICdJbXBvcnQgYW5vdGhlciBiYXRjaCcsXG4gICAgY2xvc2U6ICdDbG9zZScsXG4gICAgZ2VuZXJpY0Vycm9yOiBcIkNvdWxkbid0IGNvbXBsZXRlIHRoZSBpbXBvcnQuIFRyeSBhZ2Fpbi5cIixcbiAgfSxcbn07XG4iXX0=
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '2.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '2.0.1031';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC4xMDMxJztcbiJdfQ==
|