valtech-components 4.0.26 → 4.0.28

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.
Files changed (28) hide show
  1. package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +4 -7
  2. package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +34 -30
  3. package/esm2022/lib/components/organisms/api-key-create-modal/api-key-create-modal.component.mjs +7 -7
  4. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +13 -13
  5. package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +3 -3
  6. package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +3 -3
  7. package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.component.mjs +91 -65
  8. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +106 -84
  9. package/esm2022/lib/components/organisms/login-attempt-modal/login-attempt-modal.component.mjs +6 -3
  10. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +9 -9
  11. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
  12. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +16 -3
  13. package/esm2022/lib/components/organisms/permissions-view/permissions-modal.component.mjs +70 -0
  14. package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +16 -5
  15. package/esm2022/lib/components/organisms/session-list-modal/session-list-modal.component.mjs +4 -3
  16. package/esm2022/lib/version.mjs +2 -2
  17. package/esm2022/public-api.mjs +2 -1
  18. package/fesm2022/valtech-components.mjs +1942 -1799
  19. package/fesm2022/valtech-components.mjs.map +1 -1
  20. package/lib/components/organisms/account-view/account-view.component.d.ts +3 -0
  21. package/lib/components/organisms/create-org-modal/create-org-modal.component.d.ts +8 -8
  22. package/lib/components/organisms/delete-account-modal/delete-account-modal.component.d.ts +7 -8
  23. package/lib/components/organisms/organization-view/organization-view.component.d.ts +1 -0
  24. package/lib/components/organisms/permissions-view/permissions-modal.component.d.ts +13 -0
  25. package/lib/components/organisms/permissions-view/permissions-view.component.d.ts +9 -2
  26. package/lib/version.d.ts +1 -1
  27. package/package.json +1 -1
  28. package/public-api.d.ts +1 -0
@@ -1,6 +1,6 @@
1
- import { Component, computed, inject, Input, signal } from '@angular/core';
1
+ import { Component, computed, EventEmitter, inject, Input, Output, signal } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
- import { IonButton, IonButtons, IonContent, IonHeader, IonSpinner, IonToolbar } from '@ionic/angular/standalone';
3
+ import { IonButton, IonButtons, IonContent, IonHeader, IonModal, IonSpinner, IonToolbar } from '@ionic/angular/standalone';
4
4
  import { firstValueFrom } from 'rxjs';
5
5
  import { FormComponent } from '../form/form.component';
6
6
  import { ComponentStates, InputType } from '../../types';
@@ -30,6 +30,21 @@ const DEFAULT_NAMESPACE = 'Settings.DeleteAccount';
30
30
  * proveyó el namespace `Settings.DeleteAccount`.
31
31
  */
32
32
  export class DeleteAccountModalComponent {
33
+ set isOpen(value) {
34
+ const opening = value && !this._isOpen;
35
+ this._isOpen = value;
36
+ if (opening) {
37
+ this.hasPassword.set(null);
38
+ this.codeSent.set(false);
39
+ this.formState.set(ComponentStates.ENABLED);
40
+ firstValueFrom(this.auth.getProfile())
41
+ .then(profile => this.hasPassword.set(profile.hasPassword ?? true))
42
+ .catch(() => this.hasPassword.set(true));
43
+ }
44
+ }
45
+ get isOpen() {
46
+ return this._isOpen;
47
+ }
33
48
  constructor() {
34
49
  this.auth = inject(AuthService);
35
50
  this.errors = inject(ValtechErrorService);
@@ -37,6 +52,8 @@ export class DeleteAccountModalComponent {
37
52
  this.toast = inject(ToastService);
38
53
  /** Namespace i18n con que la vista resuelve sus textos. */
39
54
  this.i18nNamespace = DEFAULT_NAMESPACE;
55
+ this._isOpen = false;
56
+ this.dismissed = new EventEmitter();
40
57
  this.hasPassword = signal(null);
41
58
  this.codeSent = signal(false);
42
59
  this.formState = signal(ComponentStates.ENABLED);
@@ -107,11 +124,6 @@ export class DeleteAccountModalComponent {
107
124
  this.i18n.registerContent(DEFAULT_NAMESPACE, DELETE_ACCOUNT_MODAL_I18N);
108
125
  }
109
126
  }
110
- ngOnInit() {
111
- firstValueFrom(this.auth.getProfile())
112
- .then(profile => this.hasPassword.set(profile.hasPassword ?? true))
113
- .catch(() => this.hasPassword.set(true));
114
- }
115
127
  submitBtn(token, textKey) {
116
128
  return {
117
129
  text: this.t(textKey),
@@ -126,7 +138,7 @@ export class DeleteAccountModalComponent {
126
138
  };
127
139
  }
128
140
  close() {
129
- this._modalRef?.dismiss(undefined, 'cancel');
141
+ this.dismissed.emit();
130
142
  }
131
143
  async onPasswordSubmit(event) {
132
144
  const password = event.fields['password'];
@@ -186,88 +198,98 @@ export class DeleteAccountModalComponent {
186
198
  }
187
199
  }
188
200
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteAccountModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
189
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DeleteAccountModalComponent, isStandalone: true, selector: "val-delete-account-modal", inputs: { _modalRef: "_modalRef", i18nNamespace: "i18nNamespace" }, ngImport: i0, template: `
190
- <ion-header>
191
- <ion-toolbar>
192
- <ion-buttons slot="end">
193
- <ion-button fill="clear" color="dark" shape="round" (click)="close()">
194
- <strong>{{ t('close') }}</strong>
195
- </ion-button>
196
- </ion-buttons>
197
- </ion-toolbar>
198
- </ion-header>
201
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DeleteAccountModalComponent, isStandalone: true, selector: "val-delete-account-modal", inputs: { i18nNamespace: "i18nNamespace", isOpen: "isOpen" }, outputs: { dismissed: "dismissed" }, ngImport: i0, template: `
202
+ <ion-modal [isOpen]="isOpen" (didDismiss)="close()" cssClass="val-modal-adaptive">
203
+ <ng-template>
204
+ <ion-header>
205
+ <ion-toolbar>
206
+ <ion-buttons slot="end">
207
+ <ion-button fill="clear" color="dark" shape="round" (click)="close()">
208
+ <strong>{{ t('close') }}</strong>
209
+ </ion-button>
210
+ </ion-buttons>
211
+ </ion-toolbar>
212
+ </ion-header>
199
213
 
200
- <ion-content class="ion-padding">
201
- <section class="modal-form-section">
202
- @if (hasPassword() === null) {
203
- <div class="spinner-center">
204
- <ion-spinner name="crescent" />
205
- </div>
206
- } @else if (hasPassword()) {
207
- <val-form [props]="passwordFormProps()" (onSubmit)="onPasswordSubmit($event)" />
208
- } @else if (!codeSent()) {
209
- <val-form [props]="sendCodeFormProps()" (onSubmit)="onSendCode()" />
210
- } @else {
211
- <val-form [props]="codeFormProps()" (onSubmit)="onCodeSubmit($event)" />
212
- <div class="resend-row">
213
- <ion-button
214
- fill="clear"
215
- color="medium"
216
- size="small"
217
- [disabled]="formState() === 'WORKING'"
218
- (click)="onResendCode()"
219
- >
220
- {{ t('resend') }}
221
- </ion-button>
222
- </div>
223
- }
224
- </section>
225
- </ion-content>
226
- `, isInline: true, styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.resend-row{display:flex;justify-content:center;margin-top:-8px}.spinner-center{display:flex;justify-content:center;padding-top:32px}\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"] }] }); }
214
+ <ion-content class="ion-padding">
215
+ <section class="modal-form-section">
216
+ @if (hasPassword() === null) {
217
+ <div class="spinner-center">
218
+ <ion-spinner name="crescent" />
219
+ </div>
220
+ } @else if (hasPassword()) {
221
+ <val-form [props]="passwordFormProps()" (onSubmit)="onPasswordSubmit($event)" />
222
+ } @else if (!codeSent()) {
223
+ <val-form [props]="sendCodeFormProps()" (onSubmit)="onSendCode()" />
224
+ } @else {
225
+ <val-form [props]="codeFormProps()" (onSubmit)="onCodeSubmit($event)" />
226
+ <div class="resend-row">
227
+ <ion-button
228
+ fill="clear"
229
+ color="medium"
230
+ size="small"
231
+ [disabled]="formState() === 'WORKING'"
232
+ (click)="onResendCode()"
233
+ >
234
+ {{ t('resend') }}
235
+ </ion-button>
236
+ </div>
237
+ }
238
+ </section>
239
+ </ion-content>
240
+ </ng-template>
241
+ </ion-modal>
242
+ `, isInline: true, styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.resend-row{display:flex;justify-content:center;margin-top:-8px}.spinner-center{display:flex;justify-content:center;padding-top:32px}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { 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"] }] }); }
227
243
  }
228
244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteAccountModalComponent, decorators: [{
229
245
  type: Component,
230
- args: [{ selector: 'val-delete-account-modal', standalone: true, imports: [IonHeader, IonToolbar, IonButtons, IonButton, IonContent, IonSpinner, FormComponent], template: `
231
- <ion-header>
232
- <ion-toolbar>
233
- <ion-buttons slot="end">
234
- <ion-button fill="clear" color="dark" shape="round" (click)="close()">
235
- <strong>{{ t('close') }}</strong>
236
- </ion-button>
237
- </ion-buttons>
238
- </ion-toolbar>
239
- </ion-header>
246
+ args: [{ selector: 'val-delete-account-modal', standalone: true, imports: [IonModal, IonHeader, IonToolbar, IonButtons, IonButton, IonContent, IonSpinner, FormComponent], template: `
247
+ <ion-modal [isOpen]="isOpen" (didDismiss)="close()" cssClass="val-modal-adaptive">
248
+ <ng-template>
249
+ <ion-header>
250
+ <ion-toolbar>
251
+ <ion-buttons slot="end">
252
+ <ion-button fill="clear" color="dark" shape="round" (click)="close()">
253
+ <strong>{{ t('close') }}</strong>
254
+ </ion-button>
255
+ </ion-buttons>
256
+ </ion-toolbar>
257
+ </ion-header>
240
258
 
241
- <ion-content class="ion-padding">
242
- <section class="modal-form-section">
243
- @if (hasPassword() === null) {
244
- <div class="spinner-center">
245
- <ion-spinner name="crescent" />
246
- </div>
247
- } @else if (hasPassword()) {
248
- <val-form [props]="passwordFormProps()" (onSubmit)="onPasswordSubmit($event)" />
249
- } @else if (!codeSent()) {
250
- <val-form [props]="sendCodeFormProps()" (onSubmit)="onSendCode()" />
251
- } @else {
252
- <val-form [props]="codeFormProps()" (onSubmit)="onCodeSubmit($event)" />
253
- <div class="resend-row">
254
- <ion-button
255
- fill="clear"
256
- color="medium"
257
- size="small"
258
- [disabled]="formState() === 'WORKING'"
259
- (click)="onResendCode()"
260
- >
261
- {{ t('resend') }}
262
- </ion-button>
263
- </div>
264
- }
265
- </section>
266
- </ion-content>
259
+ <ion-content class="ion-padding">
260
+ <section class="modal-form-section">
261
+ @if (hasPassword() === null) {
262
+ <div class="spinner-center">
263
+ <ion-spinner name="crescent" />
264
+ </div>
265
+ } @else if (hasPassword()) {
266
+ <val-form [props]="passwordFormProps()" (onSubmit)="onPasswordSubmit($event)" />
267
+ } @else if (!codeSent()) {
268
+ <val-form [props]="sendCodeFormProps()" (onSubmit)="onSendCode()" />
269
+ } @else {
270
+ <val-form [props]="codeFormProps()" (onSubmit)="onCodeSubmit($event)" />
271
+ <div class="resend-row">
272
+ <ion-button
273
+ fill="clear"
274
+ color="medium"
275
+ size="small"
276
+ [disabled]="formState() === 'WORKING'"
277
+ (click)="onResendCode()"
278
+ >
279
+ {{ t('resend') }}
280
+ </ion-button>
281
+ </div>
282
+ }
283
+ </section>
284
+ </ion-content>
285
+ </ng-template>
286
+ </ion-modal>
267
287
  `, styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.resend-row{display:flex;justify-content:center;margin-top:-8px}.spinner-center{display:flex;justify-content:center;padding-top:32px}\n"] }]
268
- }], ctorParameters: () => [], propDecorators: { _modalRef: [{
288
+ }], ctorParameters: () => [], propDecorators: { i18nNamespace: [{
269
289
  type: Input
270
- }], i18nNamespace: [{
290
+ }], isOpen: [{
271
291
  type: Input
292
+ }], dismissed: [{
293
+ type: Output
272
294
  }] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFjY291bnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kZWxldGUtYWNjb3VudC1tb2RhbC9kZWxldGUtYWNjb3VudC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsZUFBZSxFQUEyQyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFckYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRXhFLE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUM7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBa0VILE1BQU0sT0FBTywyQkFBMkI7SUFnQnRDO1FBZlEsU0FBSSxHQUFHLE1BQU0s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LElBQUksQ0FBQztZQUNILE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7K0dBeEtVLDJCQUEyQjttR0FBM0IsMkJBQTJCLHdKQTdENUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1QsK1RBdENTLFNBQVMsb0dBQUUsVUFBVSxtRkFBRSxVQUFVLDhFQUFFLFNBQVMsb1BBQUUsVUFBVSx3S0FBRSxVQUFVLHlHQUFFLGFBQWE7OzRGQThEbEYsMkJBQTJCO2tCQWpFdkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLFlBQ3BGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNUO3dEQStCUSxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uQnV0dG9ucywgSW9uQ29udGVudCwgSW9uSGVhZGVyLCBJb25TcGlubmVyLCBJb25Ub29sYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZSwgQ29tcG9uZW50U3RhdGVzLCBGb3JtTWV0YWRhdGEsIEZvcm1TdWJtaXQsIElucHV0TWV0YWRhdGEsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IERFTEVURV9BQ0NPVU5UX01PREFMX0kxOE4gfSBmcm9tICcuL2RlbGV0ZS1hY2NvdW50LW1vZGFsLmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5EZWxldGVBY2NvdW50JztcblxuLyoqXG4gKiBgdmFsLWRlbGV0ZS1hY2NvdW50LW1vZGFsYCDigJQgbW9kYWwgZGUgZWxpbWluYWNpw7NuIGRlIGN1ZW50YSAob3JnYW5pc20sXG4gKiBjdWVudGEtZXNwZWPDrWZpY28pLiBQcm9tb3ZpZG8gZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS5cbiAqXG4gKiBEZWNpZGUgZWwgZmx1am8gc2Vnw7puIHNpIGxhIGN1ZW50YSB0aWVuZSBjb250cmFzZcOxYTpcbiAqICAtICoqY29uIHBhc3N3b3JkKiog4oaSIHBpZGUgbGEgY29udHJhc2XDsWEgYWN0dWFsIHkgbGEgdmVyaWZpY2EgdsOtYVxuICogICAgYGF1dGguZGVsZXRlQWNjb3VudCh7IHBhc3N3b3JkIH0pYC5cbiAqICAtICoqc2luIHBhc3N3b3JkKiogKGN1ZW50YSBPQXV0aCkg4oaSIGVudsOtYSB1biBjw7NkaWdvIHBvciBlbWFpbFxuICogICAgKGBhdXRoLnNlbmREZWxldGVBY2NvdW50Q29kZSgpYCkgeSBsbyBwaWRlIHBhcmEgY29uZmlybWFyXG4gKiAgICAoYGF1dGguZGVsZXRlQWNjb3VudCh7IGNvZGUgfSlgKS5cbiAqXG4gKiBBYmllcnRvIHbDrWEgYE1vZGFsU2VydmljZWAg4oCUIHJlY2liZSBgX21vZGFsUmVmYCBwb3IgYGNvbXBvbmVudFByb3BzYCBwYXJhXG4gKiBjZXJyYXIgZGVzZGUgZGVudHJvLiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSk6IHNpbiBgaW9uLXRpdGxlYCwgYm90w7NuIENlcnJhclxuICogdGV4dG8gZW4gYHNsb3Q9ZW5kYCwgdMOtdHVsby9zdWJ0w610dWxvIGVuIGVsIGJvZHkgdsOtYSBgdmFsLWZvcm1gLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGBTZXR0aW5ncy5EZWxldGVBY2NvdW50YC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWRlbGV0ZS1hY2NvdW50LW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkhlYWRlciwgSW9uVG9vbGJhciwgSW9uQnV0dG9ucywgSW9uQnV0dG9uLCBJb25Db250ZW50LCBJb25TcGlubmVyLCBGb3JtQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWhlYWRlcj5cbiAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtZm9ybS1zZWN0aW9uXCI+XG4gICAgICAgIEBpZiAoaGFzUGFzc3dvcmQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKGhhc1Bhc3N3b3JkKCkpIHtcbiAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInBhc3N3b3JkRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25QYXNzd29yZFN1Ym1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoIWNvZGVTZW50KCkpIHtcbiAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInNlbmRDb2RlRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25TZW5kQ29kZSgpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHZhbC1mb3JtIFtwcm9wc109XCJjb2RlRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25Db2RlU3VibWl0KCRldmVudClcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNlbmQtcm93XCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtU3RhdGUoKSA9PT0gJ1dPUktJTkcnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVzZW5kQ29kZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdCgncmVzZW5kJykgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5tb2RhbC1mb3JtLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIG1heC13aWR0aDogNDIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBwYWRkaW5nLXRvcDogOHB4O1xuICAgICAgfVxuICAgICAgLnJlc2VuZC1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogLThweDtcbiAgICAgIH1cbiAgICAgIC5zcGlubmVyLWNlbnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nLXRvcDogMzJweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEZWxldGVBY2NvdW50TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biBjb24gcXVlIGxhIHZpc3RhIHJlc3VlbHZlIHN1cyB0ZXh0b3MuICovXG4gIEBJbnB1dCgpIGkxOG5OYW1lc3BhY2UgPSBERUZBVUxUX05BTUVTUEFDRTtcblxuICByZWFkb25seSBoYXNQYXNzd29yZCA9IHNpZ25hbDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGNvZGVTZW50ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZm9ybVN0YXRlID0gc2lnbmFsPENvbXBvbmVudFN0YXRlPihDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgREVMRVRFX0FDQ09VTlRfTU9EQUxfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmdldFByb2ZpbGUoKSlcbiAgICAgIC50aGVuKHByb2ZpbGUgPT4gdGhpcy5oYXNQYXNzd29yZC5zZXQocHJvZmlsZS5oYXNQYXNzd29yZCA/PyB0cnVlKSlcbiAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLmhhc1Bhc3N3b3JkLnNldCh0cnVlKSk7XG4gIH1cblxuICB0ID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcblxuICBwcml2YXRlIHN1Ym1pdEJ0bih0b2tlbjogc3RyaW5nLCB0ZXh0S2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy50KHRleHRLZXkpLFxuICAgICAgdHlwZTogJ3N1Ym1pdCcgYXMgY29uc3QsXG4gICAgICBleHBhbmQ6ICdibG9jaycgYXMgY29uc3QsXG4gICAgICBmaWxsOiAnc29saWQnIGFzIGNvbnN0LFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyBhcyBjb25zdCxcbiAgICAgIHNoYXBlOiAncm91bmQnIGFzIGNvbnN0LFxuICAgICAgdG9rZW4sXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfTtcbiAgfVxuXG4gIHJlYWRvbmx5IHBhc3N3b3JkRm9ybVByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PiAoe1xuICAgIG5hbWU6IHRoaXMudCgndGl0bGUnKSxcbiAgICBzdGF0ZTogdGhpcy5mb3JtU3RhdGUoKSxcbiAgICBzZWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnQoJ3dhcm5pbmdQYXNzd29yZCcpLFxuICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdG9rZW46ICdkZWxldGUtcGFzc3dvcmQnLFxuICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnQoJ3Bhc3N3b3JkTGFiZWwnKSxcbiAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudCgncGFzc3dvcmRQbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBBU1NXT1JELFxuICAgICAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBlcnJvcnM6IHsgcmVxdWlyZWQ6IHRoaXMudCgncGFzc3dvcmRSZXF1aXJlZCcpIH0sXG4gICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgfSBhcyBJbnB1dE1ldGFkYXRhLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFjdGlvbnM6IHRoaXMuc3VibWl0QnRuKCdkZWxldGUtcGFzc3dvcmQtc3VibWl0JywgJ2NvbmZpcm1DdGEnKSxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IHNlbmRDb2RlRm9ybVByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PiAoe1xuICAgIG5hbWU6IHRoaXMudCgndGl0bGUnKSxcbiAgICBzdGF0ZTogdGhpcy5mb3JtU3RhdGUoKSxcbiAgICBzZWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnQoJ3dhcm5pbmdTZW5kQ29kZScpLFxuICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhY3Rpb25zOiB0aGlzLnN1Ym1pdEJ0bignZGVsZXRlLXNlbmQtY29kZS1zdWJtaXQnLCAnc2VuZENvZGVDdGEnKSxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGNvZGVGb3JtUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgbmFtZTogdGhpcy50KCd0aXRsZScpLFxuICAgIHN0YXRlOiB0aGlzLmZvcm1TdGF0ZSgpLFxuICAgIHNlY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMudCgnd2FybmluZ0VudGVyQ29kZScpLFxuICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdG9rZW46ICdkZWxldGUtY29kZScsXG4gICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50KCdjb2RlTGFiZWwnKSxcbiAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudCgnY29kZVBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuVEVYVCxcbiAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgZXJyb3JzOiB7IHJlcXVpcmVkOiB0aGlzLnQoJ2NvZGVSZXF1aXJlZCcpIH0sXG4gICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgfSBhcyBJbnB1dE1ldGFkYXRhLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFjdGlvbnM6IHRoaXMuc3VibWl0QnRuKCdkZWxldGUtY29kZS1zdWJtaXQnLCAnY29uZmlybUN0YScpLFxuICB9KSk7XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3ModW5kZWZpbmVkLCAnY2FuY2VsJyk7XG4gIH1cblxuICBhc3luYyBvblBhc3N3b3JkU3VibWl0KGV2ZW50OiBGb3JtU3VibWl0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ3Bhc3N3b3JkJ107XG4gICAgaWYgKCFwYXNzd29yZCkge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdwYXNzd29yZFJlcXVpcmVkJyksXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmRlbGV0ZUFjY291bnQoeyBwYXNzd29yZCB9KSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7IGNvbnRleHQ6ICdkZWxldGUtYWNjb3VudC5wYXNzd29yZCcgfSk7XG4gICAgICB0aGlzLmZvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2VuZENvZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLnNlbmREZWxldGVBY2NvdW50Q29kZSgpKTtcbiAgICAgIHRoaXMuY29kZVNlbnQuc2V0KHRydWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBjb250ZXh0OiAnZGVsZXRlLWFjY291bnQuc2VuZC1jb2RlJyB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblJlc2VuZENvZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb2RlU2VudC5zZXQoZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMub25TZW5kQ29kZSgpO1xuICB9XG5cbiAgYXN5bmMgb25Db2RlU3VibWl0KGV2ZW50OiBGb3JtU3VibWl0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdjb2RlUmVxdWlyZWQnKSxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLldPUktJTkcpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGguZGVsZXRlQWNjb3VudCh7IGNvZGUgfSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBjb250ZXh0OiAnZGVsZXRlLWFjY291bnQuY29kZScgfSk7XG4gICAgICB0aGlzLmZvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgIH1cbiAgfVxufVxuIl19
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFjY291bnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kZWxldGUtYWNjb3VudC1tb2RhbC9kZWxldGUtYWNjb3VudC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsZUFBZSxFQUEyQyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFckYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRXhFLE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUM7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBc0VILE1BQU0sT0FBTywyQkFB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RkFrRTVGLDJCQUEyQjtrQkFyRXZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsWUFDOUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNUO3dEQStCUSxhQUFhO3NCQUFyQixLQUFLO2dCQUtGLE1BQU07c0JBRFQsS0FBSztnQkFpQkksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uTW9kYWwsIElvblNwaW5uZXIsIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlLCBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgREVMRVRFX0FDQ09VTlRfTU9EQUxfSTE4TiB9IGZyb20gJy4vZGVsZXRlLWFjY291bnQtbW9kYWwuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLkRlbGV0ZUFjY291bnQnO1xuXG4vKipcbiAqIGB2YWwtZGVsZXRlLWFjY291bnQtbW9kYWxgIOKAlCBtb2RhbCBkZSBlbGltaW5hY2nDs24gZGUgY3VlbnRhIChvcmdhbmlzbSxcbiAqIGN1ZW50YS1lc3BlY8OtZmljbykuIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqIERlY2lkZSBlbCBmbHVqbyBzZWfDum4gc2kgbGEgY3VlbnRhIHRpZW5lIGNvbnRyYXNlw7FhOlxuICogIC0gKipjb24gcGFzc3dvcmQqKiDihpIgcGlkZSBsYSBjb250cmFzZcOxYSBhY3R1YWwgeSBsYSB2ZXJpZmljYSB2w61hXG4gKiAgICBgYXV0aC5kZWxldGVBY2NvdW50KHsgcGFzc3dvcmQgfSlgLlxuICogIC0gKipzaW4gcGFzc3dvcmQqKiAoY3VlbnRhIE9BdXRoKSDihpIgZW52w61hIHVuIGPDs2RpZ28gcG9yIGVtYWlsXG4gKiAgICAoYGF1dGguc2VuZERlbGV0ZUFjY291bnRDb2RlKClgKSB5IGxvIHBpZGUgcGFyYSBjb25maXJtYXJcbiAqICAgIChgYXV0aC5kZWxldGVBY2NvdW50KHsgY29kZSB9KWApLlxuICpcbiAqIEFiaWVydG8gdsOtYSBgTW9kYWxTZXJ2aWNlYCDigJQgcmVjaWJlIGBfbW9kYWxSZWZgIHBvciBgY29tcG9uZW50UHJvcHNgIHBhcmFcbiAqIGNlcnJhciBkZXNkZSBkZW50cm8uIEhlYWRlciBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyXG4gKiB0ZXh0byBlbiBgc2xvdD1lbmRgLCB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSB2w61hIGB2YWwtZm9ybWAuXG4gKlxuICogQXV0by1yZWdpc3RyYSBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIGVuIGVsIGNvbnN0cnVjdG9yIHNpIGVsIGNvbnN1bWVyIG5vXG4gKiBwcm92ZXnDsyBlbCBuYW1lc3BhY2UgYFNldHRpbmdzLkRlbGV0ZUFjY291bnRgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZGVsZXRlLWFjY291bnQtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uTW9kYWwsIElvbkhlYWRlciwgSW9uVG9vbGJhciwgSW9uQnV0dG9ucywgSW9uQnV0dG9uLCBJb25Db250ZW50LCBJb25TcGlubmVyLCBGb3JtQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLW1vZGFsIFtpc09wZW5dPVwiaXNPcGVuXCIgKGRpZERpc21pc3MpPVwiY2xvc2UoKVwiIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCI+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxpb24taGVhZGVyPlxuICAgICAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgICAgIDwvaW9uLWhlYWRlcj5cblxuICAgICAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtZm9ybS1zZWN0aW9uXCI+XG4gICAgICAgICAgICBAaWYgKGhhc1Bhc3N3b3JkKCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoaGFzUGFzc3dvcmQoKSkge1xuICAgICAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInBhc3N3b3JkRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25QYXNzd29yZFN1Ym1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFjb2RlU2VudCgpKSB7XG4gICAgICAgICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwic2VuZENvZGVGb3JtUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJvblNlbmRDb2RlKClcIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwiY29kZUZvcm1Qcm9wcygpXCIgKG9uU3VibWl0KT1cIm9uQ29kZVN1Ym1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2VuZC1yb3dcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlKCkgPT09ICdXT1JLSU5HJ1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25SZXNlbmRDb2RlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ3Jlc2VuZCcpIH19XG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAubW9kYWwtZm9ybS1zZWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgICBtYXgtd2lkdGg6IDQyMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgcGFkZGluZy10b3A6IDhweDtcbiAgICAgIH1cbiAgICAgIC5yZXNlbmQtcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IC04cHg7XG4gICAgICB9XG4gICAgICAuc3Bpbm5lci1jZW50ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZy10b3A6IDMycHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGVsZXRlQWNjb3VudE1vZGFsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gY29uIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLiAqL1xuICBASW5wdXQoKSBpMThuTmFtZXNwYWNlID0gREVGQVVMVF9OQU1FU1BBQ0U7XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG9wZW5pbmcgPSB2YWx1ZSAmJiAhdGhpcy5faXNPcGVuO1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIGlmIChvcGVuaW5nKSB7XG4gICAgICB0aGlzLmhhc1Bhc3N3b3JkLnNldChudWxsKTtcbiAgICAgIHRoaXMuY29kZVNlbnQuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGguZ2V0UHJvZmlsZSgpKVxuICAgICAgICAudGhlbihwcm9maWxlID0+IHRoaXMuaGFzUGFzc3dvcmQuc2V0KHByb2ZpbGUuaGFzUGFzc3dvcmQgPz8gdHJ1ZSkpXG4gICAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLmhhc1Bhc3N3b3JkLnNldCh0cnVlKSk7XG4gICAgfVxuICB9XG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgaGFzUGFzc3dvcmQgPSBzaWduYWw8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBjb2RlU2VudCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGZvcm1TdGF0ZSA9IHNpZ25hbDxDb21wb25lbnRTdGF0ZT4oQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShERUZBVUxUX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoREVGQVVMVF9OQU1FU1BBQ0UsIERFTEVURV9BQ0NPVU5UX01PREFMX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIHQgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLmkxOG5OYW1lc3BhY2UpO1xuXG4gIHByaXZhdGUgc3VibWl0QnRuKHRva2VuOiBzdHJpbmcsIHRleHRLZXk6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiB0aGlzLnQodGV4dEtleSksXG4gICAgICB0eXBlOiAnc3VibWl0JyBhcyBjb25zdCxcbiAgICAgIGV4cGFuZDogJ2Jsb2NrJyBhcyBjb25zdCxcbiAgICAgIGZpbGw6ICdzb2xpZCcgYXMgY29uc3QsXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc2l6ZTogJ2RlZmF1bHQnIGFzIGNvbnN0LFxuICAgICAgc2hhcGU6ICdyb3VuZCcgYXMgY29uc3QsXG4gICAgICB0b2tlbixcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuICB9XG5cbiAgcmVhZG9ubHkgcGFzc3dvcmRGb3JtUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgbmFtZTogdGhpcy50KCd0aXRsZScpLFxuICAgIHN0YXRlOiB0aGlzLmZvcm1TdGF0ZSgpLFxuICAgIHNlY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMudCgnd2FybmluZ1Bhc3N3b3JkJyksXG4gICAgICAgIG9yZGVyOiAwLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b2tlbjogJ2RlbGV0ZS1wYXNzd29yZCcsXG4gICAgICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudCgncGFzc3dvcmRMYWJlbCcpLFxuICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50KCdwYXNzd29yZFBsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuUEFTU1dPUkQsXG4gICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGVycm9yczogeyByZXF1aXJlZDogdGhpcy50KCdwYXNzd29yZFJlcXVpcmVkJykgfSxcbiAgICAgICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgICB9IGFzIElucHV0TWV0YWRhdGEsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgYWN0aW9uczogdGhpcy5zdWJtaXRCdG4oJ2RlbGV0ZS1wYXNzd29yZC1zdWJtaXQnLCAnY29uZmlybUN0YScpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgc2VuZENvZGVGb3JtUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgbmFtZTogdGhpcy50KCd0aXRsZScpLFxuICAgIHN0YXRlOiB0aGlzLmZvcm1TdGF0ZSgpLFxuICAgIHNlY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMudCgnd2FybmluZ1NlbmRDb2RlJyksXG4gICAgICAgIG9yZGVyOiAwLFxuICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGFjdGlvbnM6IHRoaXMuc3VibWl0QnRuKCdkZWxldGUtc2VuZC1jb2RlLXN1Ym1pdCcsICdzZW5kQ29kZUN0YScpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgY29kZUZvcm1Qcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBuYW1lOiB0aGlzLnQoJ3RpdGxlJyksXG4gICAgc3RhdGU6IHRoaXMuZm9ybVN0YXRlKCksXG4gICAgc2VjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50KCd3YXJuaW5nRW50ZXJDb2RlJyksXG4gICAgICAgIG9yZGVyOiAwLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b2tlbjogJ2RlbGV0ZS1jb2RlJyxcbiAgICAgICAgICAgIG5hbWU6ICdjb2RlJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnQoJ2NvZGVMYWJlbCcpLFxuICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50KCdjb2RlUGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgIHR5cGU6IElucHV0VHlwZS5URVhULFxuICAgICAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBlcnJvcnM6IHsgcmVxdWlyZWQ6IHRoaXMudCgnY29kZVJlcXVpcmVkJykgfSxcbiAgICAgICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgICB9IGFzIElucHV0TWV0YWRhdGEsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgYWN0aW9uczogdGhpcy5zdWJtaXRCdG4oJ2RlbGV0ZS1jb2RlLXN1Ym1pdCcsICdjb25maXJtQ3RhJyksXG4gIH0pKTtcblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc21pc3NlZC5lbWl0KCk7XG4gIH1cblxuICBhc3luYyBvblBhc3N3b3JkU3VibWl0KGV2ZW50OiBGb3JtU3VibWl0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ3Bhc3N3b3JkJ107XG4gICAgaWYgKCFwYXNzd29yZCkge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdwYXNzd29yZFJlcXVpcmVkJyksXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmRlbGV0ZUFjY291bnQoeyBwYXNzd29yZCB9KSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7IGNvbnRleHQ6ICdkZWxldGUtYWNjb3VudC5wYXNzd29yZCcgfSk7XG4gICAgICB0aGlzLmZvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2VuZENvZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLnNlbmREZWxldGVBY2NvdW50Q29kZSgpKTtcbiAgICAgIHRoaXMuY29kZVNlbnQuc2V0KHRydWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBjb250ZXh0OiAnZGVsZXRlLWFjY291bnQuc2VuZC1jb2RlJyB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblJlc2VuZENvZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb2RlU2VudC5zZXQoZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMub25TZW5kQ29kZSgpO1xuICB9XG5cbiAgYXN5bmMgb25Db2RlU3VibWl0KGV2ZW50OiBGb3JtU3VibWl0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdjb2RlUmVxdWlyZWQnKSxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLldPUktJTkcpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGguZGVsZXRlQWNjb3VudCh7IGNvZGUgfSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBjb250ZXh0OiAnZGVsZXRlLWFjY291bnQuY29kZScgfSk7XG4gICAgICB0aGlzLmZvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -80,6 +80,7 @@ export class LoginAttemptModalComponent {
80
80
  fill: 'outline',
81
81
  size: 'default',
82
82
  type: 'button',
83
+ shape: 'round',
83
84
  state: ComponentStates.ENABLED,
84
85
  };
85
86
  }
@@ -90,6 +91,7 @@ export class LoginAttemptModalComponent {
90
91
  fill: 'solid',
91
92
  size: 'default',
92
93
  type: 'button',
94
+ shape: 'round',
93
95
  state: ComponentStates.ENABLED,
94
96
  };
95
97
  }
@@ -100,6 +102,7 @@ export class LoginAttemptModalComponent {
100
102
  fill: 'solid',
101
103
  size: 'default',
102
104
  type: 'button',
105
+ shape: 'round',
103
106
  state: ComponentStates.ENABLED,
104
107
  };
105
108
  }
@@ -108,7 +111,7 @@ export class LoginAttemptModalComponent {
108
111
  <ion-header>
109
112
  <ion-toolbar>
110
113
  <ion-buttons slot="end">
111
- <ion-button fill="clear" color="dark" (click)="close()">
114
+ <ion-button fill="clear" color="dark" shape="round" (click)="close()">
112
115
  <strong>{{ closeLabel }}</strong>
113
116
  </ion-button>
114
117
  </ion-buttons>
@@ -199,7 +202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
199
202
  <ion-header>
200
203
  <ion-toolbar>
201
204
  <ion-buttons slot="end">
202
- <ion-button fill="clear" color="dark" (click)="close()">
205
+ <ion-button fill="clear" color="dark" shape="round" (click)="close()">
203
206
  <strong>{{ closeLabel }}</strong>
204
207
  </ion-button>
205
208
  </ion-buttons>
@@ -295,4 +298,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
295
298
  }], _modalRef: [{
296
299
  type: Input
297
300
  }] } });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tYXR0ZW1wdC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2xvZ2luLWF0dGVtcHQtbW9kYWwvbG9naW4tYXR0ZW1wdC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFrQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRTlELFFBQVEsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQWdLSCxNQUFNLE9BQU8sMEJBQTBCO0lBL0p2QztRQWdLRSwyQ0FBMkM7UUFDbEMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNwQix5QkFBeUI7UUFDaEIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixnRUFBZ0U7UUFDdkQsZ0JBQVcsR0FBRyxFQUFF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Q1AsZ0JBQWdCLDJFQUNoQixhQUFhLHdFQUNiLGVBQWU7OzRGQWtKTiwwQkFBMEI7a0JBL0p0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsZUFBZTtxQkFDaEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRFVDs4QkFzRVEsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvbkljb24sIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSwgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuYWRkSWNvbnMoeyBzaGllbGRDaGVja21hcmtPdXRsaW5lLCBjaGVja21hcmtDaXJjbGVPdXRsaW5lIH0pO1xuXG4vKipcbiAqIGB2YWwtbG9naW4tYXR0ZW1wdC1tb2RhbGAg4oCUIG1vZGFsIGRlIGNvbmZpcm1hY2nDs24gZGUgaW50ZW50byBkZSBpbmljaW8gZGUgc2VzacOzbi5cbiAqXG4gKiBTZSBhYnJlIGN1YW5kbyBlbCB1c3VhcmlvIGxsZWdhIGEgbGEgdmlzdGEgU2VndXJpZGFkIHbDrWFcbiAqIGA/dG9rZW49Li4uYCBkZXNkZSBlbCBlbWFpbC9wdXNoIGRlIFwibnVldm8gYWNjZXNvXCIuIE11ZXN0cmEgZWwgZGlzcG9zaXRpdm9cbiAqIGRldGVjdGFkbyB5IGRvcyBhY2Npb25lczogY29uZmlybWFyIHF1ZSBmdWUgdW5vIG1pc21vIChjaWVycmEgc2luIGhhY2VyIG5hZGEpXG4gKiBvIGJsb3F1ZWFyIGVsIGRpc3Bvc2l0aXZvIChlamVjdXRhIGVsIHRva2VuIGRlIGFjY2nDs24pLlxuICpcbiAqIElucHV0cyB2w61hIGBjb21wb25lbnRQcm9wc2AgZGVsIE1vZGFsU2VydmljZS4gU2luIGBAT3V0cHV0YCAobm8gZnVuY2lvbmFuIGNvblxuICogYG1vZGFsQ29udHJvbGxlci5jcmVhdGUoKWApIOKAlCB1c2EgY2FsbGJhY2sgYG9uQmxvY2tgIHkgYF9tb2RhbFJlZi5kaXNtaXNzYC5cbiAqIFJlY2liZSBsb3MgbGFiZWxzIHlhIHRyYWR1Y2lkb3MgKGFnbsOzc3RpY28gYSBpMThuKS5cbiAqXG4gKiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSk6IHNpbiBgaW9uLXRpdGxlYCwgYm90w7NuIENlcnJhciB0ZXh0byBlbiBgc2xvdD1lbmRgLFxuICogdMOtdHVsbyBlbiBlbCBib2R5IGNvbiBgdmFsLWRpc3BsYXlgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbG9naW4tYXR0ZW1wdC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgY2xvc2VMYWJlbCB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgY29udGVudDogdGl0bGUsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdF9faGVyb1wiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2hpZWxkLWNoZWNrbWFyay1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJvZHksXG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdF9fZGV2aWNlXCI+XG4gICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImRldmljZUljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRlbXB0X19kZXZpY2UtYm9keVwiPlxuICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgY29udGVudDogZGV2aWNlTGFiZWwsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICBAaWYgKG1ldGFMYWJlbCkge1xuICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgY29udGVudDogbWV0YUxhYmVsLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKGRvbmUoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRlbXB0X19kb25lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGUtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBkb25lTGFiZWwsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29udGVudD5cblxuICAgIEBpZiAoIWRvbmUoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF0dGVtcHRfX2FjdGlvbnNcIj5cbiAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cIm1pbmVCdG5cIiAoY2xpY2spPVwiY29uZmlybU1pbmUoKVwiIC8+XG4gICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJibG9ja0J0blwiIChjbGljayk9XCJjb25maXJtQmxvY2soKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhdHRlbXB0X19hY3Rpb25zXCI+XG4gICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJjbG9zZUJ0blwiIChjbGljayk9XCJjbG9zZSgpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxOHB4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19oZXJvIHtcbiAgICAgICAgd2lkdGg6IDU2cHg7XG4gICAgICAgIGhlaWdodDogNTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTEyLCAzOCwgMjIzLCAwLjEpO1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2hlcm8gaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9fZGV2aWNlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19kZXZpY2UgaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDI2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2RldmljZS1ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19kb25lIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9fZG9uZSBpb24taWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4IGNhbGMoMTJweCArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2FjdGlvbnMgdmFsLWJ1dHRvbiB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5BdHRlbXB0TW9kYWxDb21wb25lbnQge1xuICAvKiogVMOtdHVsbyBkZWwgbW9kYWwgKGkxOG4geWEgcmVzdWVsdG8pLiAqL1xuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICAvKiogVGV4dG8gZXhwbGljYXRpdm8uICovXG4gIEBJbnB1dCgpIGJvZHkgPSAnJztcbiAgLyoqIERlc2NyaXBjacOzbiBkZWwgZGlzcG9zaXRpdm8gKG5hdmVnYWRvciDCtyBPUyDCtyB1YmljYWNpw7NuKS4gKi9cbiAgQElucHV0KCkgZGV2aWNlTGFiZWwgPSAnJztcbiAgLyoqIE1ldGFkYXRhIHNlY3VuZGFyaWEgKGZlY2hhLCBJUCkuIE9wY2lvbmFsLiAqL1xuICBASW5wdXQoKSBtZXRhTGFiZWwgPSAnJztcbiAgLyoqIE1lbnNhamUgbW9zdHJhZG8gdHJhcyBibG9xdWVhci4gKi9cbiAgQElucHV0KCkgZG9uZUxhYmVsID0gJyc7XG4gIC8qKiBMYWJlbHMgZGUgYm90b25lcy4gKi9cbiAgQElucHV0KCkgbWluZUxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIGJsb2NrTGFiZWwgPSAnJztcbiAgQElucHV0KCkgY2xvc2VMYWJlbCA9ICcnO1xuICAvKiogYHRydWVgIHNpIGVsIGRpc3Bvc2l0aXZvIGVzIG3Ds3ZpbCDigJQgY2FtYmlhIGVsIGljb25vLiAqL1xuICBASW5wdXQoKSBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBxdWUgZWplY3V0YSBlbCBibG9xdWVvIChleGVjdXRlQWN0aW9uIGNvbiBlbCB0b2tlbikgY29udHJhIGVsXG4gICAqIGJhY2tlbmQuIExvIHByb3ZlZSBlbCBwYXJlbnQgdsOtYSBgY29tcG9uZW50UHJvcHNgLiBEZWJlIGxhbnphciBzaSBmYWxsYS5cbiAgICovXG4gIEBJbnB1dCgpIG9uQmxvY2s/OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIuICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgLyoqIGB0cnVlYCB0cmFzIGJsb3F1ZWFyIGNvbiDDqXhpdG8g4oCUIGNhbWJpYSBlbCBtb2RhbCBhIGVzdGFkbyBcImhlY2hvXCIuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkb25lID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSB3b3JraW5nID0gZmFsc2U7XG5cbiAgZ2V0IGRldmljZUljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc01vYmlsZSA/ICdwaG9uZS1wb3J0cmFpdC1vdXRsaW5lJyA6ICdsYXB0b3Atb3V0bGluZSc7XG4gIH1cblxuICAvKiogXCJTw60sIGZ1aSB5b1wiIOKAlCBjaWVycmEgc2luIGFjY2nDs24uIEVsIGRpc3Bvc2l0aXZvIHlhIGVzdMOhIGFjdGl2by4gKi9cbiAgY29uZmlybU1pbmUoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3ModW5kZWZpbmVkLCAnbWluZScpO1xuICB9XG5cbiAgLyoqIFwiTm8gZnVpIHlvXCIg4oCUIGVqZWN1dGEgZWwgYmxvcXVlbyB5IHBhc2EgYSBlc3RhZG8gZG9uZS4gKi9cbiAgYXN5bmMgY29uZmlybUJsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLndvcmtpbmcgfHwgIXRoaXMub25CbG9jaykgcmV0dXJuO1xuICAgIHRoaXMud29ya2luZyA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25CbG9jaygpO1xuICAgICAgdGhpcy5kb25lLnNldCh0cnVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEVsIHBhcmVudCBtdWVzdHJhIGVsIHRvYXN0IGRlIGVycm9yOyBjZXJyYW1vcyBlbCBtb2RhbC5cbiAgICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHVuZGVmaW5lZCwgJ2Vycm9yJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHVuZGVmaW5lZCwgdGhpcy5kb25lKCkgPyAnYmxvY2tlZCcgOiAnY2xvc2UnKTtcbiAgfVxuXG4gIGdldCBtaW5lQnRuKCk6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5taW5lTGFiZWwsXG4gICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGJsb2NrQnRuKCk6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5ibG9ja0xhYmVsLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG4gIH1cblxuICBnZXQgY2xvc2VCdG4oKTogUGFydGlhbDxCdXR0b25NZXRhZGF0YT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiB0aGlzLmNsb3NlTGFiZWwsXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tYXR0ZW1wdC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2xvZ2luLWF0dGVtcHQtbW9kYWwvbG9naW4tYXR0ZW1wdC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFrQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRTlELFFBQVEsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQWdLSCxNQUFNLE9BQU8sMEJBQTBCO0lBL0p2QztRQWdLRSwyQ0FBMkM7UUFDbEMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNwQix5QkFBeUI7UUFDaEIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixnRUFBZ0U7UUFDdkQsZ0JBQVcsR0FBRyxFQUFF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VSx3S0FDVixTQUFTLG9HQUNULFVBQVUsbUZBQ1YsVUFBVSw4RUFDVixTQUFTLG9QQUNULE9BQU8sMkpBQ1AsZ0JBQWdCLDJFQUNoQixhQUFhLHdFQUNiLGVBQWU7OzRGQWtKTiwwQkFBMEI7a0JBL0p0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsZUFBZTtxQkFDaEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRFVDs4QkFzRVEsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvbkljb24sIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSwgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuYWRkSWNvbnMoeyBzaGllbGRDaGVja21hcmtPdXRsaW5lLCBjaGVja21hcmtDaXJjbGVPdXRsaW5lIH0pO1xuXG4vKipcbiAqIGB2YWwtbG9naW4tYXR0ZW1wdC1tb2RhbGAg4oCUIG1vZGFsIGRlIGNvbmZpcm1hY2nDs24gZGUgaW50ZW50byBkZSBpbmljaW8gZGUgc2VzacOzbi5cbiAqXG4gKiBTZSBhYnJlIGN1YW5kbyBlbCB1c3VhcmlvIGxsZWdhIGEgbGEgdmlzdGEgU2VndXJpZGFkIHbDrWFcbiAqIGA/dG9rZW49Li4uYCBkZXNkZSBlbCBlbWFpbC9wdXNoIGRlIFwibnVldm8gYWNjZXNvXCIuIE11ZXN0cmEgZWwgZGlzcG9zaXRpdm9cbiAqIGRldGVjdGFkbyB5IGRvcyBhY2Npb25lczogY29uZmlybWFyIHF1ZSBmdWUgdW5vIG1pc21vIChjaWVycmEgc2luIGhhY2VyIG5hZGEpXG4gKiBvIGJsb3F1ZWFyIGVsIGRpc3Bvc2l0aXZvIChlamVjdXRhIGVsIHRva2VuIGRlIGFjY2nDs24pLlxuICpcbiAqIElucHV0cyB2w61hIGBjb21wb25lbnRQcm9wc2AgZGVsIE1vZGFsU2VydmljZS4gU2luIGBAT3V0cHV0YCAobm8gZnVuY2lvbmFuIGNvblxuICogYG1vZGFsQ29udHJvbGxlci5jcmVhdGUoKWApIOKAlCB1c2EgY2FsbGJhY2sgYG9uQmxvY2tgIHkgYF9tb2RhbFJlZi5kaXNtaXNzYC5cbiAqIFJlY2liZSBsb3MgbGFiZWxzIHlhIHRyYWR1Y2lkb3MgKGFnbsOzc3RpY28gYSBpMThuKS5cbiAqXG4gKiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSk6IHNpbiBgaW9uLXRpdGxlYCwgYm90w7NuIENlcnJhciB0ZXh0byBlbiBgc2xvdD1lbmRgLFxuICogdMOtdHVsbyBlbiBlbCBib2R5IGNvbiBgdmFsLWRpc3BsYXlgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbG9naW4tYXR0ZW1wdC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IGNsb3NlTGFiZWwgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHRpdGxlLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cImF0dGVtcHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF0dGVtcHRfX2hlcm9cIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNoaWVsZC1jaGVja21hcmstb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBjb250ZW50OiBib2R5LFxuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF0dGVtcHRfX2RldmljZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJkZXZpY2VJY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdF9fZGV2aWNlLWJvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRldmljZUxhYmVsLFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmIChtZXRhTGFiZWwpIHtcbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG1ldGFMYWJlbCxcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChkb25lKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdF9fZG9uZVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgY29udGVudDogZG9uZUxhYmVsLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbnRlbnQ+XG5cbiAgICBAaWYgKCFkb25lKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhdHRlbXB0X19hY3Rpb25zXCI+XG4gICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJtaW5lQnRuXCIgKGNsaWNrKT1cImNvbmZpcm1NaW5lKClcIiAvPlxuICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwiYmxvY2tCdG5cIiAoY2xpY2spPVwiY29uZmlybUJsb2NrKClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdF9fYWN0aW9uc1wiPlxuICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwiY2xvc2VCdG5cIiAoY2xpY2spPVwiY2xvc2UoKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMThweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9faGVybyB7XG4gICAgICAgIHdpZHRoOiA1NnB4O1xuICAgICAgICBoZWlnaHQ6IDU2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDExMiwgMzgsIDIyMywgMC4xKTtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19oZXJvIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2RldmljZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdmFsLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9fZGV2aWNlIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyNnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19kZXZpY2UtYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9fZG9uZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2RvbmUgaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcyk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweCBjYWxjKDEycHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSk7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19hY3Rpb25zIHZhbC1idXR0b24ge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQXR0ZW1wdE1vZGFsQ29tcG9uZW50IHtcbiAgLyoqIFTDrXR1bG8gZGVsIG1vZGFsIChpMThuIHlhIHJlc3VlbHRvKS4gKi9cbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgLyoqIFRleHRvIGV4cGxpY2F0aXZvLiAqL1xuICBASW5wdXQoKSBib2R5ID0gJyc7XG4gIC8qKiBEZXNjcmlwY2nDs24gZGVsIGRpc3Bvc2l0aXZvIChuYXZlZ2Fkb3IgwrcgT1MgwrcgdWJpY2FjacOzbikuICovXG4gIEBJbnB1dCgpIGRldmljZUxhYmVsID0gJyc7XG4gIC8qKiBNZXRhZGF0YSBzZWN1bmRhcmlhIChmZWNoYSwgSVApLiBPcGNpb25hbC4gKi9cbiAgQElucHV0KCkgbWV0YUxhYmVsID0gJyc7XG4gIC8qKiBNZW5zYWplIG1vc3RyYWRvIHRyYXMgYmxvcXVlYXIuICovXG4gIEBJbnB1dCgpIGRvbmVMYWJlbCA9ICcnO1xuICAvKiogTGFiZWxzIGRlIGJvdG9uZXMuICovXG4gIEBJbnB1dCgpIG1pbmVMYWJlbCA9ICcnO1xuICBASW5wdXQoKSBibG9ja0xhYmVsID0gJyc7XG4gIEBJbnB1dCgpIGNsb3NlTGFiZWwgPSAnJztcbiAgLyoqIGB0cnVlYCBzaSBlbCBkaXNwb3NpdGl2byBlcyBtw7N2aWwg4oCUIGNhbWJpYSBlbCBpY29uby4gKi9cbiAgQElucHV0KCkgaXNNb2JpbGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgcXVlIGVqZWN1dGEgZWwgYmxvcXVlbyAoZXhlY3V0ZUFjdGlvbiBjb24gZWwgdG9rZW4pIGNvbnRyYSBlbFxuICAgKiBiYWNrZW5kLiBMbyBwcm92ZWUgZWwgcGFyZW50IHbDrWEgYGNvbXBvbmVudFByb3BzYC4gRGViZSBsYW56YXIgc2kgZmFsbGEuXG4gICAqL1xuICBASW5wdXQoKSBvbkJsb2NrPzogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gIOKAlCByZWZlcmVuY2lhIHBhcmEgY2VycmFyLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBgdHJ1ZWAgdHJhcyBibG9xdWVhciBjb24gw6l4aXRvIOKAlCBjYW1iaWEgZWwgbW9kYWwgYSBlc3RhZG8gXCJoZWNob1wiLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZG9uZSA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgd29ya2luZyA9IGZhbHNlO1xuXG4gIGdldCBkZXZpY2VJY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAncGhvbmUtcG9ydHJhaXQtb3V0bGluZScgOiAnbGFwdG9wLW91dGxpbmUnO1xuICB9XG5cbiAgLyoqIFwiU8OtLCBmdWkgeW9cIiDigJQgY2llcnJhIHNpbiBhY2Npw7NuLiBFbCBkaXNwb3NpdGl2byB5YSBlc3TDoSBhY3Rpdm8uICovXG4gIGNvbmZpcm1NaW5lKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHVuZGVmaW5lZCwgJ21pbmUnKTtcbiAgfVxuXG4gIC8qKiBcIk5vIGZ1aSB5b1wiIOKAlCBlamVjdXRhIGVsIGJsb3F1ZW8geSBwYXNhIGEgZXN0YWRvIGRvbmUuICovXG4gIGFzeW5jIGNvbmZpcm1CbG9jaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53b3JraW5nIHx8ICF0aGlzLm9uQmxvY2spIHJldHVybjtcbiAgICB0aGlzLndvcmtpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9uQmxvY2soKTtcbiAgICAgIHRoaXMuZG9uZS5zZXQodHJ1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFbCBwYXJlbnQgbXVlc3RyYSBlbCB0b2FzdCBkZSBlcnJvcjsgY2VycmFtb3MgZWwgbW9kYWwuXG4gICAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyh1bmRlZmluZWQsICdlcnJvcicpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyh1bmRlZmluZWQsIHRoaXMuZG9uZSgpID8gJ2Jsb2NrZWQnIDogJ2Nsb3NlJyk7XG4gIH1cblxuICBnZXQgbWluZUJ0bigpOiBQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IHRoaXMubWluZUxhYmVsLFxuICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGJsb2NrQnRuKCk6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5ibG9ja0xhYmVsLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBjbG9zZUJ0bigpOiBQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IHRoaXMuY2xvc2VMYWJlbCxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBmaWxsOiAnc29saWQnLFxuICAgICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuICB9XG59XG4iXX0=