valtech-components 2.0.1012 → 2.0.1013
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/api-keys-modal/api-keys-modal.component.mjs +105 -106
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +100 -102
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/api-keys-modal/api-keys-modal.component.d.ts +8 -5
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/components/styles/overrides.scss +10 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { Component, inject, Input, signal } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { IonButton, IonButtons,
|
|
1
|
+
import { Component, computed, inject, Input, signal } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { IonButton, IonButtons, IonContent, IonHeader, IonSpinner, IonToolbar } from '@ionic/angular/standalone';
|
|
4
|
+
import { FormComponent } from '../form/form.component';
|
|
4
5
|
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
5
6
|
import { TextComponent } from '../../atoms/text/text.component';
|
|
6
7
|
import { TitleComponent } from '../../atoms/title/title.component';
|
|
8
|
+
import { ComponentStates, InputType } from '../../types';
|
|
7
9
|
import { I18nService } from '../../../services/i18n';
|
|
8
10
|
import { ApiKeyService } from '../../../services/apikeys/api-keys.service';
|
|
9
11
|
import { API_KEYS_MODAL_I18N } from './api-keys-modal.i18n';
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/forms";
|
|
12
13
|
const DEFAULT_NAMESPACE = 'Settings.ApiKeysModal';
|
|
13
14
|
/**
|
|
14
15
|
* `val-api-keys-modal` — gestión de Client API Keys org-scopeadas (ADR-023 fase 6).
|
|
@@ -31,9 +32,76 @@ export class ApiKeysModalComponent {
|
|
|
31
32
|
this.errorMsg = signal('');
|
|
32
33
|
this.secret = signal(null);
|
|
33
34
|
this.copied = signal(false);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
/**
|
|
36
|
+
* FormMetadata del form de crear key (val-form). Reactivo a idioma + permisos
|
|
37
|
+
* disponibles + estado submitting. Reemplaza los ion-input/ion-checkbox crudos
|
|
38
|
+
* por val-form (consistencia con el resto de modales del factory).
|
|
39
|
+
*/
|
|
40
|
+
this.createForm = computed(() => {
|
|
41
|
+
this.i18n.lang();
|
|
42
|
+
const working = this.submitting();
|
|
43
|
+
const nameField = {
|
|
44
|
+
token: 'apikey-name',
|
|
45
|
+
name: 'name',
|
|
46
|
+
label: this.t('nameLabel'),
|
|
47
|
+
hint: '',
|
|
48
|
+
placeholder: this.t('namePlaceholder'),
|
|
49
|
+
type: InputType.TEXT,
|
|
50
|
+
order: 1,
|
|
51
|
+
validators: [Validators.required, Validators.maxLength(120)],
|
|
52
|
+
errors: { required: this.t('noName') },
|
|
53
|
+
value: '',
|
|
54
|
+
state: ComponentStates.ENABLED,
|
|
55
|
+
};
|
|
56
|
+
const permsField = {
|
|
57
|
+
token: 'apikey-perms',
|
|
58
|
+
name: 'permissions',
|
|
59
|
+
label: this.t('permissionsLabel'),
|
|
60
|
+
hint: '',
|
|
61
|
+
placeholder: '',
|
|
62
|
+
type: InputType.MULTI_SELECT,
|
|
63
|
+
order: 2,
|
|
64
|
+
validators: [Validators.required],
|
|
65
|
+
errors: { required: this.t('noPerms') },
|
|
66
|
+
value: '',
|
|
67
|
+
options: this.availablePermissions().map((p, i) => ({
|
|
68
|
+
id: p,
|
|
69
|
+
name: p,
|
|
70
|
+
order: i + 1,
|
|
71
|
+
})),
|
|
72
|
+
state: ComponentStates.ENABLED,
|
|
73
|
+
};
|
|
74
|
+
const expiresField = {
|
|
75
|
+
token: 'apikey-expires',
|
|
76
|
+
name: 'expiresInDays',
|
|
77
|
+
label: this.t('expiresLabel'),
|
|
78
|
+
hint: '',
|
|
79
|
+
placeholder: '',
|
|
80
|
+
type: InputType.NUMBER,
|
|
81
|
+
order: 3,
|
|
82
|
+
validators: [Validators.min(1)],
|
|
83
|
+
errors: {},
|
|
84
|
+
value: '',
|
|
85
|
+
state: ComponentStates.ENABLED,
|
|
86
|
+
};
|
|
87
|
+
const submitButton = {
|
|
88
|
+
token: 'apikey-create-submit',
|
|
89
|
+
text: this.t('create'),
|
|
90
|
+
color: 'dark',
|
|
91
|
+
type: 'submit',
|
|
92
|
+
fill: 'solid',
|
|
93
|
+
size: 'default',
|
|
94
|
+
shape: 'round',
|
|
95
|
+
expand: 'block',
|
|
96
|
+
state: working ? ComponentStates.WORKING : ComponentStates.ENABLED,
|
|
97
|
+
};
|
|
98
|
+
return {
|
|
99
|
+
name: '',
|
|
100
|
+
state: working ? ComponentStates.WORKING : ComponentStates.ENABLED,
|
|
101
|
+
sections: [{ name: '', order: 1, fields: [nameField, permsField, expiresField] }],
|
|
102
|
+
actions: submitButton,
|
|
103
|
+
};
|
|
104
|
+
});
|
|
37
105
|
if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
|
|
38
106
|
this.i18n.registerContent(DEFAULT_NAMESPACE, API_KEYS_MODAL_I18N);
|
|
39
107
|
}
|
|
@@ -60,39 +128,36 @@ export class ApiKeysModalComponent {
|
|
|
60
128
|
}
|
|
61
129
|
openCreate() {
|
|
62
130
|
this.errorMsg.set('');
|
|
63
|
-
this.name = '';
|
|
64
|
-
this.expiresInDays = null;
|
|
65
|
-
this.selectedPerms.set(new Set());
|
|
66
131
|
this.showCreate.set(true);
|
|
67
132
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (checked) {
|
|
72
|
-
next.add(perm);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
next.delete(perm);
|
|
76
|
-
}
|
|
77
|
-
this.selectedPerms.set(next);
|
|
78
|
-
}
|
|
79
|
-
submit() {
|
|
133
|
+
onCreateSubmit(event) {
|
|
134
|
+
if (this.submitting())
|
|
135
|
+
return;
|
|
80
136
|
this.errorMsg.set('');
|
|
81
|
-
|
|
137
|
+
const name = String(event.fields['name'] ?? '').trim();
|
|
138
|
+
// MULTI_SELECT puede devolver array o csv según el render — normalizamos.
|
|
139
|
+
const rawPerms = event.fields['permissions'];
|
|
140
|
+
const permissions = Array.isArray(rawPerms)
|
|
141
|
+
? rawPerms
|
|
142
|
+
: String(rawPerms ?? '')
|
|
143
|
+
.split(',')
|
|
144
|
+
.map(s => s.trim())
|
|
145
|
+
.filter(Boolean);
|
|
146
|
+
const expiresRaw = Number(event.fields['expiresInDays']);
|
|
147
|
+
if (!name) {
|
|
82
148
|
this.errorMsg.set(this.t('noName'));
|
|
83
149
|
return;
|
|
84
150
|
}
|
|
85
|
-
|
|
86
|
-
if (permissions.length === 0) {
|
|
151
|
+
if (!permissions.length) {
|
|
87
152
|
this.errorMsg.set(this.t('noPerms'));
|
|
88
153
|
return;
|
|
89
154
|
}
|
|
90
155
|
this.submitting.set(true);
|
|
91
156
|
this.apiKeys
|
|
92
157
|
.create({
|
|
93
|
-
name
|
|
158
|
+
name,
|
|
94
159
|
permissions,
|
|
95
|
-
expiresInDays:
|
|
160
|
+
expiresInDays: Number.isFinite(expiresRaw) && expiresRaw > 0 ? expiresRaw : undefined,
|
|
96
161
|
})
|
|
97
162
|
.subscribe({
|
|
98
163
|
next: res => {
|
|
@@ -197,45 +262,13 @@ export class ApiKeysModalComponent {
|
|
|
197
262
|
<p class="apikey-error">{{ errorMsg() }}</p>
|
|
198
263
|
}
|
|
199
264
|
|
|
200
|
-
<!-- Crear -->
|
|
265
|
+
<!-- Crear — val-form (consistencia con el resto de modales del factory). -->
|
|
201
266
|
@if (showCreate()) {
|
|
202
267
|
<div class="apikey-create">
|
|
203
|
-
<
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
[(ngModel)]="name"
|
|
208
|
-
/>
|
|
209
|
-
<p class="apikey-create__label">{{ t('permissionsLabel') }}</p>
|
|
210
|
-
<div class="apikey-perms">
|
|
211
|
-
@for (p of availablePermissions(); track p) {
|
|
212
|
-
<ion-checkbox
|
|
213
|
-
labelPlacement="end"
|
|
214
|
-
[checked]="selectedPerms().has(p)"
|
|
215
|
-
(ionChange)="togglePerm(p, $event)"
|
|
216
|
-
>
|
|
217
|
-
{{ p }}
|
|
218
|
-
</ion-checkbox>
|
|
219
|
-
}
|
|
220
|
-
</div>
|
|
221
|
-
<ion-input
|
|
222
|
-
label="{{ t('expiresLabel') }}"
|
|
223
|
-
labelPlacement="stacked"
|
|
224
|
-
type="number"
|
|
225
|
-
[(ngModel)]="expiresInDays"
|
|
226
|
-
/>
|
|
227
|
-
<div class="apikey-actions">
|
|
228
|
-
<ion-button expand="block" color="dark" [disabled]="submitting()" (click)="submit()">
|
|
229
|
-
@if (submitting()) {
|
|
230
|
-
<ion-spinner name="dots" /> {{ t('creating') }}
|
|
231
|
-
} @else {
|
|
232
|
-
{{ t('create') }}
|
|
233
|
-
}
|
|
234
|
-
</ion-button>
|
|
235
|
-
<ion-button expand="block" fill="clear" color="medium" (click)="showCreate.set(false)">
|
|
236
|
-
{{ t('cancel') }}
|
|
237
|
-
</ion-button>
|
|
238
|
-
</div>
|
|
268
|
+
<val-form [props]="createForm()" (onSubmit)="onCreateSubmit($event)" />
|
|
269
|
+
<ion-button expand="block" fill="clear" color="medium" (click)="showCreate.set(false)">
|
|
270
|
+
{{ t('cancel') }}
|
|
271
|
+
</ion-button>
|
|
239
272
|
</div>
|
|
240
273
|
} @else {
|
|
241
274
|
<div class="apikey-actions">
|
|
@@ -247,20 +280,18 @@ export class ApiKeysModalComponent {
|
|
|
247
280
|
}
|
|
248
281
|
}
|
|
249
282
|
</ion-content>
|
|
250
|
-
`, isInline: true, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:12px}.apikey-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.apikey-row{display:flex;align-items:center;justify-content:space-between;padding:12px;border-radius:10px;border:1.5px solid var(--ion-color-light)}.apikey-row__main{display:flex;flex-direction:column}.apikey-row__name{font-weight:600;color:var(--ion-color-dark)}.apikey-row__meta{font-size:12px;color:var(--ion-color-medium-shade, #6b6e76)}.apikey-create{margin-top:8px;padding:16px;border-radius:12px;background:var(--ion-color-light)}.apikey-create__label{margin:12px 0 4px;font-size:13px;font-weight:600;color:var(--ion-color-dark)}.apikey-perms{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:13px}.apikey-actions{margin-top:16px;display:flex;flex-direction:column;gap:8px}.apikey-error{margin:8px 0;font-size:.875rem;color:var(--ion-color-danger, #c0392b)}.apikey-secret__warn{font-size:.875rem;color:var(--ion-color-warning-shade, #b88600);margin:0 0 12px}.apikey-secret__box{padding:12px;border-radius:8px;background:var(--ion-color-dark);color:#fff;word-break:break-all;font-family:monospace;font-size:13px}\n"], dependencies: [{ kind: "
|
|
283
|
+
`, isInline: true, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:12px}.apikey-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.apikey-row{display:flex;align-items:center;justify-content:space-between;padding:12px;border-radius:10px;border:1.5px solid var(--ion-color-light)}.apikey-row__main{display:flex;flex-direction:column}.apikey-row__name{font-weight:600;color:var(--ion-color-dark)}.apikey-row__meta{font-size:12px;color:var(--ion-color-medium-shade, #6b6e76)}.apikey-create{margin-top:8px;padding:16px;border-radius:12px;background:var(--ion-color-light)}.apikey-create__label{margin:12px 0 4px;font-size:13px;font-weight:600;color:var(--ion-color-dark)}.apikey-perms{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:13px}.apikey-actions{margin-top:16px;display:flex;flex-direction:column;gap:8px}.apikey-error{margin:8px 0;font-size:.875rem;color:var(--ion-color-danger, #c0392b)}.apikey-secret__warn{font-size:.875rem;color:var(--ion-color-warning-shade, #b88600);margin:0 0 12px}.apikey-secret__box{padding:12px;border-radius:8px;background:var(--ion-color-dark);color:#fff;word-break:break-all;font-family:monospace;font-size:13px}\n"], dependencies: [{ 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: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { 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"] }] }); }
|
|
251
284
|
}
|
|
252
285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiKeysModalComponent, decorators: [{
|
|
253
286
|
type: Component,
|
|
254
287
|
args: [{ selector: 'val-api-keys-modal', standalone: true, imports: [
|
|
255
|
-
FormsModule,
|
|
256
288
|
IonHeader,
|
|
257
289
|
IonToolbar,
|
|
258
290
|
IonButtons,
|
|
259
291
|
IonButton,
|
|
260
292
|
IonContent,
|
|
261
|
-
IonInput,
|
|
262
|
-
IonCheckbox,
|
|
263
293
|
IonSpinner,
|
|
294
|
+
FormComponent,
|
|
264
295
|
DisplayComponent,
|
|
265
296
|
TextComponent,
|
|
266
297
|
TitleComponent,
|
|
@@ -326,45 +357,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
326
357
|
<p class="apikey-error">{{ errorMsg() }}</p>
|
|
327
358
|
}
|
|
328
359
|
|
|
329
|
-
<!-- Crear -->
|
|
360
|
+
<!-- Crear — val-form (consistencia con el resto de modales del factory). -->
|
|
330
361
|
@if (showCreate()) {
|
|
331
362
|
<div class="apikey-create">
|
|
332
|
-
<
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
[(ngModel)]="name"
|
|
337
|
-
/>
|
|
338
|
-
<p class="apikey-create__label">{{ t('permissionsLabel') }}</p>
|
|
339
|
-
<div class="apikey-perms">
|
|
340
|
-
@for (p of availablePermissions(); track p) {
|
|
341
|
-
<ion-checkbox
|
|
342
|
-
labelPlacement="end"
|
|
343
|
-
[checked]="selectedPerms().has(p)"
|
|
344
|
-
(ionChange)="togglePerm(p, $event)"
|
|
345
|
-
>
|
|
346
|
-
{{ p }}
|
|
347
|
-
</ion-checkbox>
|
|
348
|
-
}
|
|
349
|
-
</div>
|
|
350
|
-
<ion-input
|
|
351
|
-
label="{{ t('expiresLabel') }}"
|
|
352
|
-
labelPlacement="stacked"
|
|
353
|
-
type="number"
|
|
354
|
-
[(ngModel)]="expiresInDays"
|
|
355
|
-
/>
|
|
356
|
-
<div class="apikey-actions">
|
|
357
|
-
<ion-button expand="block" color="dark" [disabled]="submitting()" (click)="submit()">
|
|
358
|
-
@if (submitting()) {
|
|
359
|
-
<ion-spinner name="dots" /> {{ t('creating') }}
|
|
360
|
-
} @else {
|
|
361
|
-
{{ t('create') }}
|
|
362
|
-
}
|
|
363
|
-
</ion-button>
|
|
364
|
-
<ion-button expand="block" fill="clear" color="medium" (click)="showCreate.set(false)">
|
|
365
|
-
{{ t('cancel') }}
|
|
366
|
-
</ion-button>
|
|
367
|
-
</div>
|
|
363
|
+
<val-form [props]="createForm()" (onSubmit)="onCreateSubmit($event)" />
|
|
364
|
+
<ion-button expand="block" fill="clear" color="medium" (click)="showCreate.set(false)">
|
|
365
|
+
{{ t('cancel') }}
|
|
366
|
+
</ion-button>
|
|
368
367
|
</div>
|
|
369
368
|
} @else {
|
|
370
369
|
<div class="apikey-actions">
|
|
@@ -382,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
382
381
|
}], i18nNamespace: [{
|
|
383
382
|
type: Input
|
|
384
383
|
}] } });
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleXMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcGkta2V5cy1tb2RhbC9hcGkta2V5cy1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUU1RCxNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0FBRWxEOzs7Ozs7R0FNRztBQXNOSCxNQUFNLE9BQU8scUJBQXFCO0lBdUJoQztRQXRCUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFLeEMsc0JBQXNCO1FBQ2Isa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQztRQUVsQyxTQUFJLEdBQUcsTUFBTSxDQUFpQixFQUFFLENBQUMsQ0FBQztRQUNsQyx5QkFBb0IsR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7UUFDNUMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixlQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixXQUFNLEdBQUcsTUFBTSxDQUFnQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhDLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQWMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBR3RELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzVDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ25ELEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWSxFQUFFLEVBQVM7UUFDaEMsTUFBTSxPQUFPLEdBQUksRUFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDcEMsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDckMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTzthQUNULE1BQU0sQ0FBQztZQUNOLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUN0QixXQUFXO1lBQ1gsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDN0YsQ0FBQzthQUNELFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDbkUsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBaUI7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQUUsT0FBTztRQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3ZDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFCLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDL0UsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUM7WUFDSCxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyRUFBMkU7UUFDN0UsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxDQUFDLENBQUMsR0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQW5JVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixrSkFwTXRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0hULDZ2Q0E3SEMsV0FBVywrVkFDWCxTQUFTLG9HQUNULFVBQVUsbUZBQ1YsVUFBVSw4RUFDVixTQUFTLG9QQUNULFVBQVUsd0tBQ1YsUUFBUSw4ZUFDUixXQUFXLHFNQUNYLFVBQVUseUdBQ1YsZ0JBQWdCLDJFQUNoQixhQUFhLHdFQUNiLGNBQWM7OzRGQXNNTCxxQkFBcUI7a0JBck5qQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsUUFBUTt3QkFDUixXQUFXO3dCQUNYLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGNBQWM7cUJBQ2YsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdIVDt3REF5RlEsU0FBUztzQkFBakIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25DaGVja2JveCxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25JbnB1dCxcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVG9vbGJhcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEFwaUtleVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcGlrZXlzL2FwaS1rZXlzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xpZW50QXBpS2V5LCBDbGllbnRBcGlLZXlXaXRoU2VjcmV0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBpa2V5cy90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9LRVlTX01PREFMX0kxOE4gfSBmcm9tICcuL2FwaS1rZXlzLW1vZGFsLmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5BcGlLZXlzTW9kYWwnO1xuXG4vKipcbiAqIGB2YWwtYXBpLWtleXMtbW9kYWxgIOKAlCBnZXN0acOzbiBkZSBDbGllbnQgQVBJIEtleXMgb3JnLXNjb3BlYWRhcyAoQURSLTAyMyBmYXNlIDYpLlxuICpcbiAqIExpc3RhIGxhcyBrZXlzIGRlIGxhIG9yZywgcGVybWl0ZSBjcmVhciAobW9zdHJhbmRvIGVsIHNlY3JldG8gVU5BIHZleiBjb24gY29waWEpXG4gKiB5IHJldm9jYXIuIFBlbnNhZG8gcGFyYSBoYWJpbGl0YXIgaW50ZWdyYWNpb25lcyBNMk0gZGVsIGltcG9ydCBkZSBtaWVtYnJvcywgcGVyb1xuICogc2lydmUgYSBjdWFscXVpZXIgcGVybWlzbyBkZWwgY2F0w6Fsb2dvLiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hcGkta2V5cy1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIElvbklucHV0LFxuICAgIElvbkNoZWNrYm94LFxuICAgIElvblNwaW5uZXIsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCd0aXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdoaW50JyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgIEBpZiAoc2VjcmV0KCk7IGFzIHMpIHtcbiAgICAgICAgPCEtLSBTZWNyZXRvIHJlY2nDqW4gY3JlYWRvOiBtb3N0cmFyIFVOQSB2ZXogLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktc2VjcmV0XCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdzZWNyZXRUaXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgICAgPHAgY2xhc3M9XCJhcGlrZXktc2VjcmV0X193YXJuXCI+e3sgdCgnc2VjcmV0V2FybmluZycpIH19PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktc2VjcmV0X19ib3hcIj5cbiAgICAgICAgICAgIDxjb2RlPnt7IHMuc2VjcmV0IH19PC9jb2RlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiY29weShzLnNlY3JldClcIj5cbiAgICAgICAgICAgICAge3sgY29waWVkKCkgPyB0KCdjb3BpZWQnKSA6IHQoJ2NvcHknKSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJmaW5pc2hTZWNyZXQoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdkb25lJykgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8IS0tIExpc3RhIC0tPlxuICAgICAgICAgIEBpZiAoa2V5cygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ2VtcHR5JyksIHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ21lZGl1bScsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwaWtleS1saXN0XCI+XG4gICAgICAgICAgICAgIEBmb3IgKGsgb2Yga2V5cygpOyB0cmFjayBrLmtleUlkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwaWtleS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktcm93X19tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBpa2V5LXJvd19fbmFtZVwiPnt7IGsubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcGlrZXktcm93X19tZXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgay5wZXJtaXNzaW9ucy5sZW5ndGggfX0ge3sgdCgncGVybXNDb3VudCcpIH19IMK3IHt7IHQoJ2xhc3RVc2VkJykgfX06XG4gICAgICAgICAgICAgICAgICAgICAge3sgay5sYXN0VXNlZEF0IHx8IHQoJ25ldmVyJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhbmdlclwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJyZXZva2UoaylcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgncmV2b2tlJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChlcnJvck1zZygpKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cImFwaWtleS1lcnJvclwiPnt7IGVycm9yTXNnKCkgfX08L3A+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBDcmVhciAtLT5cbiAgICAgICAgICBAaWYgKHNob3dDcmVhdGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwaWtleS1jcmVhdGVcIj5cbiAgICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3sgdCgnbmFtZUxhYmVsJykgfX1cIlxuICAgICAgICAgICAgICAgIGxhYmVsUGxhY2VtZW50PVwic3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ25hbWVQbGFjZWhvbGRlcicpXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5hbWVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImFwaWtleS1jcmVhdGVfX2xhYmVsXCI+e3sgdCgncGVybWlzc2lvbnNMYWJlbCcpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5LXBlcm1zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAocCBvZiBhdmFpbGFibGVQZXJtaXNzaW9ucygpOyB0cmFjayBwKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsUGxhY2VtZW50PVwiZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRQZXJtcygpLmhhcyhwKVwiXG4gICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwidG9nZ2xlUGVybShwLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcCB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3sgdCgnZXhwaXJlc0xhYmVsJykgfX1cIlxuICAgICAgICAgICAgICAgIGxhYmVsUGxhY2VtZW50PVwic3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJleHBpcmVzSW5EYXlzXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwaWtleS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cImRhcmtcIiBbZGlzYWJsZWRdPVwic3VibWl0dGluZygpXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKHN1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIiAvPiZuYnNwO3t7IHQoJ2NyZWF0aW5nJykgfX1cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjcmVhdGUnKSB9fVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwibWVkaXVtXCIgKGNsaWNrKT1cInNob3dDcmVhdGUuc2V0KGZhbHNlKVwiPlxuICAgICAgICAgICAgICAgICAge3sgdCgnY2FuY2VsJykgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkNyZWF0ZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnbmV3S2V5JykgfX1cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgdmFsLWRpc3BsYXkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgdmFsLXRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvd19fbWFpbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvd19fbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvd19fbWV0YSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0tc2hhZGUsICM2YjZlNzYpO1xuICAgICAgfVxuICAgICAgLmFwaWtleS1jcmVhdGUge1xuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LWNyZWF0ZV9fbGFiZWwge1xuICAgICAgICBtYXJnaW46IDEycHggMCA0cHggMDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmFwaWtleS1wZXJtcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LWFjdGlvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktZXJyb3Ige1xuICAgICAgICBtYXJnaW46IDhweCAwO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXNlY3JldF9fd2FybiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itd2FybmluZy1zaGFkZSwgI2I4ODYwMCk7XG4gICAgICAgIG1hcmdpbjogMCAwIDEycHggMDtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktc2VjcmV0X19ib3gge1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwaUtleXNNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgYXBpS2V5cyA9IGluamVjdChBcGlLZXlTZXJ2aWNlKTtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4bi4gKi9cbiAgQElucHV0KCkgaTE4bk5hbWVzcGFjZSA9IERFRkFVTFRfTkFNRVNQQUNFO1xuXG4gIHJlYWRvbmx5IGtleXMgPSBzaWduYWw8Q2xpZW50QXBpS2V5W10+KFtdKTtcbiAgcmVhZG9ubHkgYXZhaWxhYmxlUGVybWlzc2lvbnMgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd0NyZWF0ZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHN1Ym1pdHRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBlcnJvck1zZyA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHNlY3JldCA9IHNpZ25hbDxDbGllbnRBcGlLZXlXaXRoU2VjcmV0IHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGNvcGllZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgbmFtZSA9ICcnO1xuICBleHBpcmVzSW5EYXlzOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQZXJtcyA9IHNpZ25hbDxTZXQ8c3RyaW5nPj4obmV3IFNldCgpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoREVGQVVMVF9OQU1FU1BBQ0UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KERFRkFVTFRfTkFNRVNQQUNFLCBBUElfS0VZU19NT0RBTF9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UodGhpcy5pMThuTmFtZXNwYWNlKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCh0aGlzLmkxOG5OYW1lc3BhY2UsIEFQSV9LRVlTX01PREFMX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB0aGlzLmFwaUtleXMuYXZhaWxhYmxlUGVybWlzc2lvbnMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogcGVybXMgPT4gdGhpcy5hdmFpbGFibGVQZXJtaXNzaW9ucy5zZXQocGVybXMpLFxuICAgICAgZXJyb3I6ICgpID0+IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hcGlLZXlzLmxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDoga2V5cyA9PiB7XG4gICAgICAgIHRoaXMua2V5cy5zZXQoa2V5cyk7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5DcmVhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuICAgIHRoaXMubmFtZSA9ICcnO1xuICAgIHRoaXMuZXhwaXJlc0luRGF5cyA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZFBlcm1zLnNldChuZXcgU2V0KCkpO1xuICAgIHRoaXMuc2hvd0NyZWF0ZS5zZXQodHJ1ZSk7XG4gIH1cblxuICB0b2dnbGVQZXJtKHBlcm06IHN0cmluZywgZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY2hlY2tlZCA9IChldiBhcyBDdXN0b21FdmVudCkuZGV0YWlsPy5jaGVja2VkID8/IGZhbHNlO1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRQZXJtcygpKTtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgbmV4dC5hZGQocGVybSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQuZGVsZXRlKHBlcm0pO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkUGVybXMuc2V0KG5leHQpO1xuICB9XG5cbiAgc3VibWl0KCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JNc2cuc2V0KCcnKTtcbiAgICBpZiAoIXRoaXMubmFtZS50cmltKCkpIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cuc2V0KHRoaXMudCgnbm9OYW1lJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwZXJtaXNzaW9ucyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFBlcm1zKCkpO1xuICAgIGlmIChwZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cuc2V0KHRoaXMudCgnbm9QZXJtcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYXBpS2V5c1xuICAgICAgLmNyZWF0ZSh7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZS50cmltKCksXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICBleHBpcmVzSW5EYXlzOiB0aGlzLmV4cGlyZXNJbkRheXMgJiYgdGhpcy5leHBpcmVzSW5EYXlzID4gMCA/IHRoaXMuZXhwaXJlc0luRGF5cyA6IHVuZGVmaW5lZCxcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNob3dDcmVhdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNlY3JldC5zZXQocmVzLmtleSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZXJyb3JNc2cuc2V0KGVycj8uZXJyb3I/Lm1lc3NhZ2UgPz8gdGhpcy50KCdnZW5lcmljRXJyb3InKSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHJldm9rZShrZXk6IENsaWVudEFwaUtleSk6IHZvaWQge1xuICAgIGlmICghY29uZmlybSh0aGlzLnQoJ3Jldm9rZUNvbmZpcm0nKSkpIHJldHVybjtcbiAgICB0aGlzLmFwaUtleXMucmV2b2tlKGtleS5rZXlJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHRoaXMucmVmcmVzaCgpLFxuICAgICAgZXJyb3I6IGVyciA9PiB0aGlzLmVycm9yTXNnLnNldChlcnI/LmVycm9yPy5tZXNzYWdlID8/IHRoaXMudCgnZ2VuZXJpY0Vycm9yJykpLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29weShzZWNyZXQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWNyZXQpO1xuICAgICAgdGhpcy5jb3BpZWQuc2V0KHRydWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gY2xpcGJvYXJkIG5vIGRpc3BvbmlibGUg4oCUIGVsIHVzZXIgcHVlZGUgc2VsZWNjaW9uYXIgZWwgdGV4dG8gbWFudWFsbWVudGVcbiAgICB9XG4gIH1cblxuICBmaW5pc2hTZWNyZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWNyZXQuc2V0KG51bGwpO1xuICAgIHRoaXMuY29waWVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMuaTE4bk5hbWVzcGFjZSk7XG4gIH1cbn1cbiJdfQ==
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleXMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcGkta2V5cy1tb2RhbC9hcGkta2V5cy1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWpILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBa0IsZUFBZSxFQUEyQyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUczRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFNUQsTUFBTSxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQztBQUVsRDs7Ozs7O0dBTUc7QUFvTEgsTUFBTSxPQUFPLHFCQUFxQjtJQStGaEM7UUE5RlEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixZ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Q1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGNBQWM7cUJBQ2YsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnRlQ7d0RBeUZRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvblNwaW5uZXIsIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcblxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dE1ldGFkYXRhLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBBcGlLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBpa2V5cy9hcGkta2V5cy5zZXJ2aWNlJztcbmltcG9ydCB7IENsaWVudEFwaUtleSwgQ2xpZW50QXBpS2V5V2l0aFNlY3JldCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwaWtleXMvdHlwZXMnO1xuXG5pbXBvcnQgeyBBUElfS0VZU19NT0RBTF9JMThOIH0gZnJvbSAnLi9hcGkta2V5cy1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuQXBpS2V5c01vZGFsJztcblxuLyoqXG4gKiBgdmFsLWFwaS1rZXlzLW1vZGFsYCDigJQgZ2VzdGnDs24gZGUgQ2xpZW50IEFQSSBLZXlzIG9yZy1zY29wZWFkYXMgKEFEUi0wMjMgZmFzZSA2KS5cbiAqXG4gKiBMaXN0YSBsYXMga2V5cyBkZSBsYSBvcmcsIHBlcm1pdGUgY3JlYXIgKG1vc3RyYW5kbyBlbCBzZWNyZXRvIFVOQSB2ZXogY29uIGNvcGlhKVxuICogeSByZXZvY2FyLiBQZW5zYWRvIHBhcmEgaGFiaWxpdGFyIGludGVncmFjaW9uZXMgTTJNIGRlbCBpbXBvcnQgZGUgbWllbWJyb3MsIHBlcm9cbiAqIHNpcnZlIGEgY3VhbHF1aWVyIHBlcm1pc28gZGVsIGNhdMOhbG9nby4gSGVhZGVyIGNhbsOzbmljbyAoUmVnbGEgIzUpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYXBpLWtleXMtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25TcGlubmVyLFxuICAgIEZvcm1Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCd0aXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdoaW50JyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgIEBpZiAoc2VjcmV0KCk7IGFzIHMpIHtcbiAgICAgICAgPCEtLSBTZWNyZXRvIHJlY2nDqW4gY3JlYWRvOiBtb3N0cmFyIFVOQSB2ZXogLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktc2VjcmV0XCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdzZWNyZXRUaXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgICAgPHAgY2xhc3M9XCJhcGlrZXktc2VjcmV0X193YXJuXCI+e3sgdCgnc2VjcmV0V2FybmluZycpIH19PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktc2VjcmV0X19ib3hcIj5cbiAgICAgICAgICAgIDxjb2RlPnt7IHMuc2VjcmV0IH19PC9jb2RlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiY29weShzLnNlY3JldClcIj5cbiAgICAgICAgICAgICAge3sgY29waWVkKCkgPyB0KCdjb3BpZWQnKSA6IHQoJ2NvcHknKSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJmaW5pc2hTZWNyZXQoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdkb25lJykgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8IS0tIExpc3RhIC0tPlxuICAgICAgICAgIEBpZiAoa2V5cygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ2VtcHR5JyksIHNpemU6ICdtZWRpdW0nLCBjb2xvcjogJ21lZGl1bScsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwaWtleS1saXN0XCI+XG4gICAgICAgICAgICAgIEBmb3IgKGsgb2Yga2V5cygpOyB0cmFjayBrLmtleUlkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwaWtleS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktcm93X19tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBpa2V5LXJvd19fbmFtZVwiPnt7IGsubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcGlrZXktcm93X19tZXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgay5wZXJtaXNzaW9ucy5sZW5ndGggfX0ge3sgdCgncGVybXNDb3VudCcpIH19IMK3IHt7IHQoJ2xhc3RVc2VkJykgfX06XG4gICAgICAgICAgICAgICAgICAgICAge3sgay5sYXN0VXNlZEF0IHx8IHQoJ25ldmVyJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhbmdlclwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJyZXZva2UoaylcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgncmV2b2tlJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChlcnJvck1zZygpKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cImFwaWtleS1lcnJvclwiPnt7IGVycm9yTXNnKCkgfX08L3A+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBDcmVhciDigJQgdmFsLWZvcm0gKGNvbnNpc3RlbmNpYSBjb24gZWwgcmVzdG8gZGUgbW9kYWxlcyBkZWwgZmFjdG9yeSkuIC0tPlxuICAgICAgICAgIEBpZiAoc2hvd0NyZWF0ZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5LWNyZWF0ZVwiPlxuICAgICAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cImNyZWF0ZUZvcm0oKVwiIChvblN1Ym1pdCk9XCJvbkNyZWF0ZVN1Ym1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cIm1lZGl1bVwiIChjbGljayk9XCJzaG93Q3JlYXRlLnNldChmYWxzZSlcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjYW5jZWwnKSB9fVxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcGlrZXktYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvcGVuQ3JlYXRlKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCduZXdLZXknKSB9fVxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICB2YWwtZGlzcGxheSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICB2YWwtdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLmFwaWtleS1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93X19tYWluIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93X19uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93X19tZXRhIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgIzZiNmU3Nik7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LWNyZWF0ZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktY3JlYXRlX19sYWJlbCB7XG4gICAgICAgIG1hcmdpbjogMTJweCAwIDRweCAwO1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXBlcm1zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLmFwaWtleS1lcnJvciB7XG4gICAgICAgIG1hcmdpbjogOHB4IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjYzAzOTJiKTtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktc2VjcmV0X193YXJuIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci13YXJuaW5nLXNoYWRlLCAjYjg4NjAwKTtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTJweCAwO1xuICAgICAgfVxuICAgICAgLmFwaWtleS1zZWNyZXRfX2JveCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXBpS2V5c01vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhcGlLZXlzID0gaW5qZWN0KEFwaUtleVNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAuICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuLiAqL1xuICBASW5wdXQoKSBpMThuTmFtZXNwYWNlID0gREVGQVVMVF9OQU1FU1BBQ0U7XG5cbiAgcmVhZG9ubHkga2V5cyA9IHNpZ25hbDxDbGllbnRBcGlLZXlbXT4oW10pO1xuICByZWFkb25seSBhdmFpbGFibGVQZXJtaXNzaW9ucyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICByZWFkb25seSBzaG93Q3JlYXRlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc3VibWl0dGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGVycm9yTXNnID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgc2VjcmV0ID0gc2lnbmFsPENsaWVudEFwaUtleVdpdGhTZWNyZXQgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgY29waWVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogRm9ybU1ldGFkYXRhIGRlbCBmb3JtIGRlIGNyZWFyIGtleSAodmFsLWZvcm0pLiBSZWFjdGl2byBhIGlkaW9tYSArIHBlcm1pc29zXG4gICAqIGRpc3BvbmlibGVzICsgZXN0YWRvIHN1Ym1pdHRpbmcuIFJlZW1wbGF6YSBsb3MgaW9uLWlucHV0L2lvbi1jaGVja2JveCBjcnVkb3NcbiAgICogcG9yIHZhbC1mb3JtIChjb25zaXN0ZW5jaWEgY29uIGVsIHJlc3RvIGRlIG1vZGFsZXMgZGVsIGZhY3RvcnkpLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlRm9ybSA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3Qgd29ya2luZyA9IHRoaXMuc3VibWl0dGluZygpO1xuXG4gICAgY29uc3QgbmFtZUZpZWxkOiBJbnB1dE1ldGFkYXRhID0ge1xuICAgICAgdG9rZW46ICdhcGlrZXktbmFtZScsXG4gICAgICBuYW1lOiAnbmFtZScsXG4gICAgICBsYWJlbDogdGhpcy50KCduYW1lTGFiZWwnKSxcbiAgICAgIGhpbnQ6ICcnLFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudCgnbmFtZVBsYWNlaG9sZGVyJyksXG4gICAgICB0eXBlOiBJbnB1dFR5cGUuVEVYVCxcbiAgICAgIG9yZGVyOiAxLFxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldLFxuICAgICAgZXJyb3JzOiB7IHJlcXVpcmVkOiB0aGlzLnQoJ25vTmFtZScpIH0sXG4gICAgICB2YWx1ZTogJycsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfSBhcyBJbnB1dE1ldGFkYXRhO1xuXG4gICAgY29uc3QgcGVybXNGaWVsZDogSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIHRva2VuOiAnYXBpa2V5LXBlcm1zJyxcbiAgICAgIG5hbWU6ICdwZXJtaXNzaW9ucycsXG4gICAgICBsYWJlbDogdGhpcy50KCdwZXJtaXNzaW9uc0xhYmVsJyksXG4gICAgICBoaW50OiAnJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgIHR5cGU6IElucHV0VHlwZS5NVUxUSV9TRUxFQ1QsXG4gICAgICBvcmRlcjogMixcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGVycm9yczogeyByZXF1aXJlZDogdGhpcy50KCdub1Blcm1zJykgfSxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIG9wdGlvbnM6IHRoaXMuYXZhaWxhYmxlUGVybWlzc2lvbnMoKS5tYXAoKHAsIGkpID0+ICh7XG4gICAgICAgIGlkOiBwLFxuICAgICAgICBuYW1lOiBwLFxuICAgICAgICBvcmRlcjogaSArIDEsXG4gICAgICB9KSksXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfSBhcyBJbnB1dE1ldGFkYXRhO1xuXG4gICAgY29uc3QgZXhwaXJlc0ZpZWxkOiBJbnB1dE1ldGFkYXRhID0ge1xuICAgICAgdG9rZW46ICdhcGlrZXktZXhwaXJlcycsXG4gICAgICBuYW1lOiAnZXhwaXJlc0luRGF5cycsXG4gICAgICBsYWJlbDogdGhpcy50KCdleHBpcmVzTGFiZWwnKSxcbiAgICAgIGhpbnQ6ICcnLFxuICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgdHlwZTogSW5wdXRUeXBlLk5VTUJFUixcbiAgICAgIG9yZGVyOiAzLFxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMubWluKDEpXSxcbiAgICAgIGVycm9yczoge30sXG4gICAgICB2YWx1ZTogJycsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfSBhcyBJbnB1dE1ldGFkYXRhO1xuXG4gICAgY29uc3Qgc3VibWl0QnV0dG9uOiBCdXR0b25NZXRhZGF0YSA9IHtcbiAgICAgIHRva2VuOiAnYXBpa2V5LWNyZWF0ZS1zdWJtaXQnLFxuICAgICAgdGV4dDogdGhpcy50KCdjcmVhdGUnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICB0eXBlOiAnc3VibWl0JyxcbiAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICAgIHN0YXRlOiB3b3JraW5nID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9IGFzIEJ1dHRvbk1ldGFkYXRhO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgc3RhdGU6IHdvcmtpbmcgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgc2VjdGlvbnM6IFt7IG5hbWU6ICcnLCBvcmRlcjogMSwgZmllbGRzOiBbbmFtZUZpZWxkLCBwZXJtc0ZpZWxkLCBleHBpcmVzRmllbGRdIH1dLFxuICAgICAgYWN0aW9uczogc3VibWl0QnV0dG9uLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShERUZBVUxUX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoREVGQVVMVF9OQU1FU1BBQ0UsIEFQSV9LRVlTX01PREFMX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSh0aGlzLmkxOG5OYW1lc3BhY2UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KHRoaXMuaTE4bk5hbWVzcGFjZSwgQVBJX0tFWVNfTU9EQUxfSTE4Tik7XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIHRoaXMuYXBpS2V5cy5hdmFpbGFibGVQZXJtaXNzaW9ucygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBwZXJtcyA9PiB0aGlzLmF2YWlsYWJsZVBlcm1pc3Npb25zLnNldChwZXJtcyksXG4gICAgICBlcnJvcjogKCkgPT4ge30sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmFwaUtleXMubGlzdCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBrZXlzID0+IHtcbiAgICAgICAgdGhpcy5rZXlzLnNldChrZXlzKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMubG9hZGluZy5zZXQoZmFsc2UpLFxuICAgIH0pO1xuICB9XG5cbiAgb3BlbkNyZWF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgdGhpcy5zaG93Q3JlYXRlLnNldCh0cnVlKTtcbiAgfVxuXG4gIG9uQ3JlYXRlU3VibWl0KGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VibWl0dGluZygpKSByZXR1cm47XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuXG4gICAgY29uc3QgbmFtZSA9IFN0cmluZyhldmVudC5maWVsZHNbJ25hbWUnXSA/PyAnJykudHJpbSgpO1xuICAgIC8vIE1VTFRJX1NFTEVDVCBwdWVkZSBkZXZvbHZlciBhcnJheSBvIGNzdiBzZWfDum4gZWwgcmVuZGVyIOKAlCBub3JtYWxpemFtb3MuXG4gICAgY29uc3QgcmF3UGVybXMgPSBldmVudC5maWVsZHNbJ3Blcm1pc3Npb25zJ107XG4gICAgY29uc3QgcGVybWlzc2lvbnMgPSBBcnJheS5pc0FycmF5KHJhd1Blcm1zKVxuICAgICAgPyAocmF3UGVybXMgYXMgc3RyaW5nW10pXG4gICAgICA6IFN0cmluZyhyYXdQZXJtcyA/PyAnJylcbiAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgIC5tYXAocyA9PiBzLnRyaW0oKSlcbiAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IGV4cGlyZXNSYXcgPSBOdW1iZXIoZXZlbnQuZmllbGRzWydleHBpcmVzSW5EYXlzJ10pO1xuXG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICB0aGlzLmVycm9yTXNnLnNldCh0aGlzLnQoJ25vTmFtZScpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFwZXJtaXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cuc2V0KHRoaXMudCgnbm9QZXJtcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuYXBpS2V5c1xuICAgICAgLmNyZWF0ZSh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICBleHBpcmVzSW5EYXlzOiBOdW1iZXIuaXNGaW5pdGUoZXhwaXJlc1JhdykgJiYgZXhwaXJlc1JhdyA+IDAgPyBleHBpcmVzUmF3IDogdW5kZWZpbmVkLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuc2hvd0NyZWF0ZS5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuc2VjcmV0LnNldChyZXMua2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5lcnJvck1zZy5zZXQoZXJyPy5lcnJvcj8ubWVzc2FnZSA/PyB0aGlzLnQoJ2dlbmVyaWNFcnJvcicpKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcmV2b2tlKGtleTogQ2xpZW50QXBpS2V5KTogdm9pZCB7XG4gICAgaWYgKCFjb25maXJtKHRoaXMudCgncmV2b2tlQ29uZmlybScpKSkgcmV0dXJuO1xuICAgIHRoaXMuYXBpS2V5cy5yZXZva2Uoa2V5LmtleUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4gdGhpcy5yZWZyZXNoKCksXG4gICAgICBlcnJvcjogZXJyID0+IHRoaXMuZXJyb3JNc2cuc2V0KGVycj8uZXJyb3I/Lm1lc3NhZ2UgPz8gdGhpcy50KCdnZW5lcmljRXJyb3InKSksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb3B5KHNlY3JldDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlY3JldCk7XG4gICAgICB0aGlzLmNvcGllZC5zZXQodHJ1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBjbGlwYm9hcmQgbm8gZGlzcG9uaWJsZSDigJQgZWwgdXNlciBwdWVkZSBzZWxlY2Npb25hciBlbCB0ZXh0byBtYW51YWxtZW50ZVxuICAgIH1cbiAgfVxuXG4gIGZpbmlzaFNlY3JldCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlY3JldC5zZXQobnVsbCk7XG4gICAgdGhpcy5jb3BpZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3MobnVsbCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
|
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.1013';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC4xMDEzJztcbiJdfQ==
|