valtech-components 4.0.240 → 4.0.242

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.
@@ -185,6 +185,10 @@ export class ChatComposerComponent {
185
185
  this.recStream = stream;
186
186
  const mimeType = this.pickAudioMime();
187
187
  this.recorder = new MediaRecorder(stream, mimeType ? { mimeType } : undefined);
188
+ console.log('[ChatComposer] recording start', {
189
+ picked: mimeType || '(default)',
190
+ recorderMimeType: this.recorder.mimeType,
191
+ });
188
192
  this.recChunks = [];
189
193
  this.recorder.ondataavailable = e => {
190
194
  if (e.data.size > 0)
@@ -211,6 +215,13 @@ export class ChatComposerComponent {
211
215
  const blob = new Blob(this.recChunks, { type });
212
216
  const ext = type.includes('mp4') ? 'm4a' : 'webm';
213
217
  const file = new File([blob], `audio-${this.recSeconds()}s.${ext}`, { type });
218
+ console.log('[ChatComposer] audio recorded', {
219
+ type,
220
+ size: blob.size,
221
+ chunks: this.recChunks.length,
222
+ canPlayWebm: this.canPlay('audio/webm'),
223
+ canPlayMp4: this.canPlay('audio/mp4'),
224
+ });
214
225
  if (blob.size > 0)
215
226
  this.addPending(file);
216
227
  this.cleanupRecording();
@@ -241,6 +252,43 @@ export class ChatComposerComponent {
241
252
  this.recording.set(false);
242
253
  this.recSeconds.set(0);
243
254
  }
255
+ /** Diagnóstico: el navegador no pudo reproducir el adjunto de audio. */
256
+ onAudioError(where, file, event) {
257
+ const el = event.target;
258
+ const err = el.error;
259
+ const codes = {
260
+ 1: 'ABORTED',
261
+ 2: 'NETWORK',
262
+ 3: 'DECODE',
263
+ 4: 'SRC_NOT_SUPPORTED',
264
+ };
265
+ console.error('[ChatComposer] audio play error', {
266
+ where,
267
+ fileType: file.type,
268
+ fileName: file.name,
269
+ code: err?.code,
270
+ reason: err ? codes[err.code] : 'unknown',
271
+ message: err?.message,
272
+ canPlayThisType: this.canPlay(file.type),
273
+ });
274
+ }
275
+ onAudioLoaded(where, file, event) {
276
+ const el = event.target;
277
+ console.log('[ChatComposer] audio loadedmetadata', {
278
+ where,
279
+ fileType: file.type,
280
+ duration: el.duration,
281
+ });
282
+ }
283
+ /** ¿El navegador declara que puede reproducir este tipo? '' / 'maybe' / 'probably'. */
284
+ canPlay(type) {
285
+ try {
286
+ return document.createElement('audio').canPlayType(type);
287
+ }
288
+ catch {
289
+ return 'error';
290
+ }
291
+ }
244
292
  ngOnDestroy() {
245
293
  this.cleanupRecording();
246
294
  for (const att of this.pending()) {
@@ -271,7 +319,13 @@ export class ChatComposerComponent {
271
319
  @for (att of pending(); track att.id) {
272
320
  @if (att.kind === 'audio') {
273
321
  <div class="audio-chip">
274
- <audio controls preload="metadata" [src]="att.url"></audio>
322
+ <audio
323
+ controls
324
+ preload="metadata"
325
+ [src]="att.url"
326
+ (error)="onAudioError('preview', att.file, $event)"
327
+ (loadedmetadata)="onAudioLoaded('preview', att.file, $event)"
328
+ ></audio>
275
329
  <button class="thumb-remove inline" [attr.aria-label]="t('remove')" (click)="removePending(att.id)">
276
330
  <ion-icon name="close-outline" aria-hidden="true" />
277
331
  </button>
@@ -322,21 +376,22 @@ export class ChatComposerComponent {
322
376
  ></div>
323
377
 
324
378
  <div class="actions">
379
+ <span class="actions-spacer"></span>
325
380
  @if (showAttach()) {
326
381
  <label class="icon-btn" [attr.aria-label]="t('attach')">
327
382
  <ion-icon name="add-outline" aria-hidden="true" />
328
383
  <input type="file" hidden (change)="onFile($event)" accept="image/*,application/pdf" />
329
384
  </label>
330
385
  }
331
- <span class="actions-spacer"></span>
386
+ @if (showMic()) {
387
+ <button class="icon-btn mic" [attr.aria-label]="t('voice')" (click)="startRecording()">
388
+ <ion-icon name="mic-outline" aria-hidden="true" />
389
+ </button>
390
+ }
332
391
  @if (canSend()) {
333
392
  <button class="send-btn" [attr.aria-label]="t('send')" (click)="onSend()">
334
393
  <ion-icon name="arrow-up-outline" aria-hidden="true" />
335
394
  </button>
336
- } @else if (showMic()) {
337
- <button class="icon-btn mic" [attr.aria-label]="t('voice')" (click)="startRecording()">
338
- <ion-icon name="mic-outline" aria-hidden="true" />
339
- </button>
340
395
  }
341
396
  </div>
342
397
  </div>
@@ -365,7 +420,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
365
420
  @for (att of pending(); track att.id) {
366
421
  @if (att.kind === 'audio') {
367
422
  <div class="audio-chip">
368
- <audio controls preload="metadata" [src]="att.url"></audio>
423
+ <audio
424
+ controls
425
+ preload="metadata"
426
+ [src]="att.url"
427
+ (error)="onAudioError('preview', att.file, $event)"
428
+ (loadedmetadata)="onAudioLoaded('preview', att.file, $event)"
429
+ ></audio>
369
430
  <button class="thumb-remove inline" [attr.aria-label]="t('remove')" (click)="removePending(att.id)">
370
431
  <ion-icon name="close-outline" aria-hidden="true" />
371
432
  </button>
@@ -416,21 +477,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
416
477
  ></div>
417
478
 
418
479
  <div class="actions">
480
+ <span class="actions-spacer"></span>
419
481
  @if (showAttach()) {
420
482
  <label class="icon-btn" [attr.aria-label]="t('attach')">
421
483
  <ion-icon name="add-outline" aria-hidden="true" />
422
484
  <input type="file" hidden (change)="onFile($event)" accept="image/*,application/pdf" />
423
485
  </label>
424
486
  }
425
- <span class="actions-spacer"></span>
487
+ @if (showMic()) {
488
+ <button class="icon-btn mic" [attr.aria-label]="t('voice')" (click)="startRecording()">
489
+ <ion-icon name="mic-outline" aria-hidden="true" />
490
+ </button>
491
+ }
426
492
  @if (canSend()) {
427
493
  <button class="send-btn" [attr.aria-label]="t('send')" (click)="onSend()">
428
494
  <ion-icon name="arrow-up-outline" aria-hidden="true" />
429
495
  </button>
430
- } @else if (showMic()) {
431
- <button class="icon-btn mic" [attr.aria-label]="t('voice')" (click)="startRecording()">
432
- <ion-icon name="mic-outline" aria-hidden="true" />
433
- </button>
434
496
  }
435
497
  </div>
436
498
  </div>
@@ -438,4 +500,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
438
500
  </div>
439
501
  `, styles: [":host{display:block}.composer{display:flex;flex-direction:column;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px));background:var(--ion-background-color, #fff);border-top:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.reply-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-left:3px solid var(--ion-color-primary);border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.reply-content{display:flex;flex-direction:column;flex:1;min-width:0;font-size:.8125rem}.reply-name{font-weight:700;color:var(--ion-color-primary)}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ion-color-medium, #92949c)}.pending-row{display:flex;gap:8px;flex-wrap:wrap;padding:2px 4px}.thumb{position:relative;width:64px;height:64px;border-radius:10px;overflow:hidden;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.thumb img{width:100%;height:100%;object-fit:cover}.thumb.file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;color:var(--ion-color-medium, #92949c);font-size:1.5rem}.thumb-name{font-size:.5625rem;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ion-text-color, #000)}.thumb-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;border-radius:50%;background:#0000008c;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.875rem}.shell{display:flex;flex-direction:column;gap:4px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:20px;padding:8px 12px}.editable{min-height:24px;max-height:160px;overflow-y:auto;outline:none;font-size:.9375rem;line-height:1.4;color:var(--ion-text-color, #000);white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text}.editable.is-empty:before{content:attr(data-placeholder);color:var(--ion-color-medium, #92949c);pointer-events:none}.actions{display:flex;align-items:center;gap:4px}.actions-spacer{flex:1}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border:none;border-radius:50%;background:transparent;color:var(--ion-color-medium, #92949c);cursor:pointer;font-size:1.25rem}.icon-btn:hover{color:var(--ion-color-primary)}.send-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border:none;border-radius:50%;background:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff);cursor:pointer;font-size:1.125rem;transition:transform .1s ease}.send-btn:active{transform:scale(.92)}.icon-btn.danger{color:var(--ion-color-danger, #eb445a)}.audio-chip{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-color-step-100, rgba(127, 127, 127, .1))}.audio-chip audio{flex:1;height:36px;min-width:0}.thumb-remove.inline{position:static;flex-shrink:0;background:var(--ion-color-medium, #92949c)}.rec-bar{display:flex;align-items:center;gap:10px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:20px;padding:4px 8px}.rec-dot{width:10px;height:10px;border-radius:50%;background:var(--ion-color-danger, #eb445a);animation:rec-pulse 1.2s ease-in-out infinite}.rec-time{font-variant-numeric:tabular-nums;font-size:.9375rem;color:var(--ion-text-color, #000)}.rec-spacer{flex:1}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.3}}\n"] }]
440
502
  }], ctorParameters: () => [] });
441
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb21wb3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoYXQtY29tcG9zZXIvY2hhdC1jb21wb3Nlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBR3JELFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUVwSCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEVBQUUsRUFBRTtRQUNGLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsVUFBVTtRQUNsQixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLElBQUksRUFBRSxPQUFPO1FBQ2IsVUFBVSxFQUFFLGdCQUFnQjtRQUM1QixNQUFNLEVBQUUsVUFBVTtRQUNsQixNQUFNLEVBQUUsUUFBUTtLQUNqQjtJQUNELEVBQUUs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEZULHNySEEzRlMsWUFBWSwrQkFBRSxPQUFPOzs0RkE0VHBCLHFCQUFxQjtrQkEvVGpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBGVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWRkT3V0bGluZSxcbiAgY2hlY2ttYXJrT3V0bGluZSxcbiAgY2xvc2VPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIG1pY091dGxpbmUsXG4gIGFycm93VXBPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1lc3NhZ2VSZXBseVRvIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hhdC90eXBlcyc7XG5cbmFkZEljb25zKHsgYWRkT3V0bGluZSwgY2hlY2ttYXJrT3V0bGluZSwgY2xvc2VPdXRsaW5lLCBkb2N1bWVudE91dGxpbmUsIG1pY091dGxpbmUsIGFycm93VXBPdXRsaW5lLCB0cmFzaE91dGxpbmUgfSk7XG5cbmNvbnN0IENIQVRfQ09NUE9TRVJfSTE4TiA9IHtcbiAgZXM6IHtcbiAgICBwbGFjZWhvbGRlcjogJ0VzY3JpYmUgdW4gbWVuc2FqZScsXG4gICAgc2VuZDogJ0VudmlhcicsXG4gICAgYXR0YWNoOiAnQWRqdW50YXInLFxuICAgIHZvaWNlOiAnTWVuc2FqZSBkZSB2b3onLFxuICAgIGRvbmU6ICdMaXN0bycsXG4gICAgcmVwbHlpbmdUbzogJ1Jlc3BvbmRpZW5kbyBhJyxcbiAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgcmVtb3ZlOiAnUXVpdGFyJyxcbiAgfSxcbiAgZW46IHtcbiAgICBwbGFjZWhvbGRlcjogJ1dyaXRlIGEgbWVzc2FnZScsXG4gICAgc2VuZDogJ1NlbmQnLFxuICAgIGF0dGFjaDogJ0F0dGFjaCcsXG4gICAgdm9pY2U6ICdWb2ljZSBtZXNzYWdlJyxcbiAgICBkb25lOiAnRG9uZScsXG4gICAgcmVwbHlpbmdUbzogJ1JlcGx5aW5nIHRvJyxcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICAgIHJlbW92ZTogJ1JlbW92ZScsXG4gIH0sXG59O1xuXG50eXBlIFBlbmRpbmdLaW5kID0gJ2ltYWdlJyB8ICdhdWRpbycgfCAnZmlsZSc7XG5cbmludGVyZmFjZSBQZW5kaW5nQXR0YWNobWVudCB7XG4gIGlkOiBudW1iZXI7XG4gIGZpbGU6IEZpbGU7XG4gIHVybD86IHN0cmluZztcbiAga2luZDogUGVuZGluZ0tpbmQ7XG59XG5cbi8qKiBFdmVudG8gZGUgZW52w61vOiB0ZXh0byAoY2FwdGlvbikgKyBhZGp1bnRvcyBzdGFnZWQuIGZpbGVzIHZhY8OtbyA9PiBzb2xvIHRleHRvLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29tcG9zZXJTZW5kRXZlbnQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGZpbGVzOiBGaWxlW107XG59XG5cbi8qKlxuICogdmFsLWNoYXQtY29tcG9zZXIg4oCUIGJhcnJhIGRlIHJlZGFjY2nDs24gZXN0aWxvIE5vdGlvbi9DbGF1ZGUgKGZ1bGwgY3VzdG9tKS5cbiAqXG4gKiBFbCBlZGl0b3IgZXMgdW4gYGNvbnRlbnRlZGl0YWJsZWAgKE5PIGlvbi10ZXh0YXJlYSk6IGNyZWNlIGhhc3RhIHVuIG1heC1oZWlnaHQsXG4gKiBzb3BvcnRhIHBlZ2FyIHRleHRvIHBsYW5vIGUgaW3DoWdlbmVzIGRlbCBwb3J0YXBhcGVsZXMsIEVudGVyIGVudsOtYSAvIFNoaWZ0K0VudGVyXG4gKiBzYWx0YSBsw61uZWEuIERlYmFqbywgdW5hIGZpbGEgZGUgYWNjaW9uZXMgcHJvcGlhczogYWRqdW50YXIgKCspLCBtaWMvZW52aWFyLlxuICogTG9zIGFkanVudG9zIChib3TDs24gLyBwZWdhciAvIGF1ZGlvIGdyYWJhZG8pIHNlIGFjdW11bGFuIGNvbW8gbWluaWF0dXJhcyBkZVxuICogUFJFVklFVyB5IHNlIG1hbmRhbiBlbiBVTiBzb2xvIGV2ZW50byBgc2VuZCB7dGV4dCwgZmlsZXN9YCAoY2FwdGlvbiArIGFkanVudG9zKS5cbiAqXG4gKiBQZW5zYWRvIHBhcmEgdml2aXIgZW4gdW4gY29udGVuZWRvciBmaWpvIGFsIGZvbmRvIGRlbCB2aWV3cG9ydCAoZWwgY29uc3VtZXJcbiAqIGFuY2xhIGxhIHBvc2ljacOzbikuIE5vIGluY2x1eWUgZW1vamkgcGlja2VyIChlbCB0ZWNsYWRvIGRlbCBzaXN0ZW1hIGxvIHRyYWUpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hhdC1jb21wb3NlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjb21wb3NlclwiPlxuICAgICAgQGlmIChyZXBseWluZ1RvKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcGx5LWJhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXBseS1jb250ZW50XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyByZXBseWluZ1RvKCkhLnNlbmRlck5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyByZXBseWluZ1RvKCkhLmJvZHkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjYW5jZWwnKVwiIChjbGljayk9XCJjYW5jZWxSZXBseS5lbWl0KClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKHBlbmRpbmcoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZW5kaW5nLXJvd1wiPlxuICAgICAgICAgIEBmb3IgKGF0dCBvZiBwZW5kaW5nKCk7IHRyYWNrIGF0dC5pZCkge1xuICAgICAgICAgICAgQGlmIChhdHQua2luZCA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXVkaW8tY2hpcFwiPlxuICAgICAgICAgICAgICAgIDxhdWRpbyBjb250cm9scyBwcmVsb2FkPVwibWV0YWRhdGFcIiBbc3JjXT1cImF0dC51cmxcIj48L2F1ZGlvPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aHVtYi1yZW1vdmUgaW5saW5lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdyZW1vdmUnKVwiIChjbGljayk9XCJyZW1vdmVQZW5kaW5nKGF0dC5pZClcIj5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYlwiIFtjbGFzcy5maWxlXT1cImF0dC5raW5kID09PSAnZmlsZSdcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGF0dC5raW5kID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXR0LnVybFwiIFthbHRdPVwiYXR0LmZpbGUubmFtZVwiIC8+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvY3VtZW50LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHVtYi1uYW1lXCI+e3sgYXR0LmZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRodW1iLXJlbW92ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncmVtb3ZlJylcIiAoY2xpY2spPVwicmVtb3ZlUGVuZGluZyhhdHQuaWQpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKHJlY29yZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWMtYmFyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuIGRhbmdlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2FuY2VsJylcIiAoY2xpY2spPVwiY2FuY2VsUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWMtZG90XCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjLXRpbWVcIj57eyByZWNUaW1lTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYy1zcGFjZXJcIj48L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlbmQtYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkb25lJylcIiAoY2xpY2spPVwiZmluaXNoUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjZWRpdGFibGVcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWVtcHR5XT1cIiFib2R5KClcIlxuICAgICAgICAgICAgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICBhcmlhLW11bHRpbGluZT1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHQoKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYWNlaG9sZGVyVGV4dCgpXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJzeW5jQm9keSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAgID48L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dBdHRhY2goKSkge1xuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpY29uLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnYXR0YWNoJylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBoaWRkZW4gKGNoYW5nZSk9XCJvbkZpbGUoJGV2ZW50KVwiIGFjY2VwdD1cImltYWdlLyosYXBwbGljYXRpb24vcGRmXCIgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9ucy1zcGFjZXJcIj48L3NwYW4+XG4gICAgICAgICAgICBAaWYgKGNhblNlbmQoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG5cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3NlbmQnKVwiIChjbGljayk9XCJvblNlbmQoKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctdXAtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoc2hvd01pYygpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ0biBtaWNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3ZvaWNlJylcIiAoY2xpY2spPVwic3RhcnRSZWNvcmRpbmcoKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWljLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuY29tcG9zZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogOHB4IDEwcHggY2FsYyg4cHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgLnJlcGx5LWJhciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMSkpO1xuICAgICAgfVxuICAgICAgLnJlcGx5LWNvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgfVxuICAgICAgLnJlcGx5LW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgfVxuICAgICAgLnJlcGx5LWJvZHkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgfVxuICAgICAgLnBlbmRpbmctcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgcGFkZGluZzogMnB4IDRweDtcbiAgICAgIH1cbiAgICAgIC50aHVtYiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMSkpO1xuICAgICAgfVxuICAgICAgLnRodW1iIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLnRodW1iLmZpbGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgIH1cbiAgICAgIC50aHVtYi1uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjU2MjVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAudGh1bWItcmVtb3ZlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDJweDtcbiAgICAgICAgcmlnaHQ6IDJweDtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41NSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cbiAgICAgIC8qIFNoZWxsIGVzdGlsbyBOb3Rpb246IGVkaXRhYmxlIGFycmliYSwgZmlsYSBkZSBhY2Npb25lcyBhYmFqby4gKi9cbiAgICAgIC5zaGVsbCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICB9XG4gICAgICAuZWRpdGFibGUge1xuICAgICAgICBtaW4taGVpZ2h0OiAyNHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiAxNjBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDtcbiAgICAgICAgdXNlci1zZWxlY3Q6IHRleHQ7XG4gICAgICB9XG4gICAgICAuZWRpdGFibGUuaXMtZW1wdHk6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1wbGFjZWhvbGRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG4gICAgICAuYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMtc3BhY2VyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgIH1cbiAgICAgIC5pY29uLWJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgIH1cbiAgICAgIC5pY29uLWJ0bjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAuc2VuZC1idG4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3QsICNmZmYpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG4gICAgICB9XG4gICAgICAuc2VuZC1idG46YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkyKTtcbiAgICAgIH1cbiAgICAgIC5pY29uLWJ0bi5kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICB9XG4gICAgICAuYXVkaW8tY2hpcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogNHB4IDZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMSkpO1xuICAgICAgfVxuICAgICAgLmF1ZGlvLWNoaXAgYXVkaW8ge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC50aHVtYi1yZW1vdmUuaW5saW5lIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgfVxuICAgICAgLnJlYy1iYXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggOHB4O1xuICAgICAgfVxuICAgICAgLnJlYy1kb3Qge1xuICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgICBhbmltYXRpb246IHJlYy1wdWxzZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuICAgICAgLnJlYy10aW1lIHtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAucmVjLXNwYWNlciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgICBAa2V5ZnJhbWVzIHJlYy1wdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdENvbXBvc2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWF4TGVuZ3RoID0gaW5wdXQ8bnVtYmVyPig0MDAwKTtcbiAgcmVhZG9ubHkgcmVwbHlpbmdUbyA9IGlucHV0PE1lc3NhZ2VSZXBseVRvIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHNob3dBdHRhY2ggPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd01pYyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHNlbmQgPSBvdXRwdXQ8Q2hhdENvbXBvc2VyU2VuZEV2ZW50PigpO1xuICByZWFkb25seSB0eXBpbmcgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgdm9pY2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgY2FuY2VsUmVwbHkgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRhYmxlUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignZWRpdGFibGUnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYm9keSA9IHNpZ25hbCgnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwZW5kaW5nID0gc2lnbmFsPFBlbmRpbmdBdHRhY2htZW50W10+KFtdKTtcbiAgcHJpdmF0ZSBwZW5kaW5nSWQgPSAwO1xuXG4gIC8vIEdyYWJhY2nDs24gZGUgYXVkaW8gKE1lZGlhUmVjb3JkZXIpLlxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjb3JkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWNTZWNvbmRzID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHJlY29yZGVyPzogTWVkaWFSZWNvcmRlcjtcbiAgcHJpdmF0ZSByZWNTdHJlYW0/OiBNZWRpYVN0cmVhbTtcbiAgcHJpdmF0ZSByZWNDaHVua3M6IEJsb2JbXSA9IFtdO1xuICBwcml2YXRlIHJlY1RpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByZWNUaW1lTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcyA9IHRoaXMucmVjU2Vjb25kcygpO1xuICAgIGNvbnN0IG1tID0gU3RyaW5nKE1hdGguZmxvb3IocyAvIDYwKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBzcyA9IFN0cmluZyhzICUgNjApLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgcmV0dXJuIGAke21tfToke3NzfWA7XG4gIH0pO1xuXG4gIHByaXZhdGUgbGFzdFR5cGluZ0VtaXQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdDaGF0Q29tcG9zZXInLCBDSEFUX0NPTVBPU0VSX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhblNlbmQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHQgPSB0aGlzLmJvZHkoKS50cmltKCk7XG4gICAgcmV0dXJuICh0Lmxlbmd0aCA+IDAgJiYgdC5sZW5ndGggPD0gdGhpcy5tYXhMZW5ndGgoKSkgfHwgdGhpcy5wZW5kaW5nKCkubGVuZ3RoID4gMDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsYWNlaG9sZGVyVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyKCkgfHwgdGhpcy5pMThuLnQoJ3BsYWNlaG9sZGVyJywgJ0NoYXRDb21wb3NlcicpO1xuICB9KTtcblxuICAvKiogTGVlIGVsIHRleHRvIGRlbCBjb250ZW50ZWRpdGFibGUgYSBsYSBzaWduYWwgYGJvZHlgLiAqL1xuICBwcm90ZWN0ZWQgc3luY0JvZHkoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVkaXRhYmxlUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgLy8gaW5uZXJUZXh0IGNvbnNlcnZhIGxvcyBzYWx0b3MgZGUgbMOtbmVhOyBxdWl0YSBlbCBcXG4gZmluYWwgcXVlIGVsIG5hdmVnYWRvciBhZ3JlZ2EuXG4gICAgY29uc3QgdGV4dCA9IChlbD8uaW5uZXJUZXh0ID8/ICcnKS5yZXBsYWNlKC9cXG4kLywgJycpO1xuICAgIHRoaXMuYm9keS5zZXQodGV4dCk7XG4gICAgdGhpcy5lbWl0VHlwaW5nRGVib3VuY2VkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9uU2VuZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQZWdhcjogdGV4dG8gcGxhbm8gKHNpbiBmb3JtYXRvKSArIGltw6FnZW5lcyBkZWwgcG9ydGFwYXBlbGVzLiAqL1xuICBwcm90ZWN0ZWQgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGRhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhO1xuICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgLy8gSW3DoWdlbmVzIChjYXB0dXJhcyAvIGNvcGlhciBpbWFnZW4pLlxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBBcnJheS5mcm9tKGRhdGEuaXRlbXMpKSB7XG4gICAgICBpZiAoaXRlbS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBpdGVtLmdldEFzRmlsZSgpO1xuICAgICAgICBpZiAoZmlsZSkgdGhpcy5hZGRQZW5kaW5nKGZpbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRleHRvIHBsYW5vIGluc2VydGFkbyBlbiBlbCBjYXJldCAoZXZpdGEgcGVnYXIgSFRNTCBjb24gZXN0aWxvcykuXG4gICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgIGlmICh0ZXh0KSB7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0VGV4dCcsIGZhbHNlLCB0ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5zeW5jQm9keSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2VuZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuU2VuZCgpKSByZXR1cm47XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLnBlbmRpbmcoKS5tYXAocCA9PiBwLmZpbGUpO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLmJvZHkoKS50cmltKCk7XG4gICAgdGhpcy5zZW5kLmVtaXQoeyB0ZXh0LCBmaWxlcyB9KTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMucGVuZGluZygpKSB7XG4gICAgICBpZiAoYXR0LnVybCkgVVJMLnJldm9rZU9iamVjdFVSTChhdHQudXJsKTtcbiAgICB9XG4gICAgdGhpcy5wZW5kaW5nLnNldChbXSk7XG4gICAgdGhpcy5jbGVhckVkaXRhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRWRpdGFibGUoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVkaXRhYmxlUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGVsKSBlbC5pbm5lclRleHQgPSAnJztcbiAgICB0aGlzLmJvZHkuc2V0KCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkZpbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcbiAgICBpZiAoZmlsZSkgdGhpcy5hZGRQZW5kaW5nKGZpbGUpO1xuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gIH1cblxuICBwcml2YXRlIGFkZFBlbmRpbmcoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIGNvbnN0IGtpbmQ6IFBlbmRpbmdLaW5kID0gZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpXG4gICAgICA/ICdpbWFnZSdcbiAgICAgIDogZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpXG4gICAgICAgID8gJ2F1ZGlvJ1xuICAgICAgICA6ICdmaWxlJztcbiAgICBjb25zdCB1cmwgPSBraW5kID09PSAnZmlsZScgPyB1bmRlZmluZWQgOiBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICAgIHRoaXMucGVuZGluZy51cGRhdGUoYXJyID0+IFsuLi5hcnIsIHsgaWQ6IHRoaXMucGVuZGluZ0lkKyssIGZpbGUsIHVybCwga2luZCB9XSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlUGVuZGluZyhpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nLnVwZGF0ZShhcnIgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSBhcnIuZmluZChhID0+IGEuaWQgPT09IGlkKTtcbiAgICAgIGlmIChmb3VuZD8udXJsKSBVUkwucmV2b2tlT2JqZWN0VVJMKGZvdW5kLnVybCk7XG4gICAgICByZXR1cm4gYXJyLmZpbHRlcihhID0+IGEuaWQgIT09IGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFR5cGluZ0RlYm91bmNlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0VHlwaW5nRW1pdCA+IDIwMDApIHtcbiAgICAgIHRoaXMubGFzdFR5cGluZ0VtaXQgPSBub3c7XG4gICAgICB0aGlzLnR5cGluZy5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8g4pSA4pSA4pSAIEdyYWJhY2nDs24gZGUgYXVkaW8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBwaWNrQXVkaW9NaW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IFsnYXVkaW8vd2VibTtjb2RlY3M9b3B1cycsICdhdWRpby93ZWJtJywgJ2F1ZGlvL21wNCddO1xuICAgIGNvbnN0IE1SID0gKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgTWVkaWFSZWNvcmRlcj86IHR5cGVvZiBNZWRpYVJlY29yZGVyIH0pLk1lZGlhUmVjb3JkZXI7XG4gICAgaWYgKCFNUj8uaXNUeXBlU3VwcG9ydGVkKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZXMuZmluZChjID0+IE1SLmlzVHlwZVN1cHBvcnRlZChjKSkgPz8gJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3RhcnRSZWNvcmRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucmVjb3JkaW5nKCkpIHJldHVybjtcbiAgICBpZiAoIW5hdmlnYXRvci5tZWRpYURldmljZXM/LmdldFVzZXJNZWRpYSB8fCAhKCdNZWRpYVJlY29yZGVyJyBpbiB3aW5kb3cpKSB7XG4gICAgICB0aGlzLnZvaWNlLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7XG4gICAgICB0aGlzLnJlY1N0cmVhbSA9IHN0cmVhbTtcbiAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5waWNrQXVkaW9NaW1lKCk7XG4gICAgICB0aGlzLnJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCBtaW1lVHlwZSA/IHsgbWltZVR5cGUgfSA6IHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnJlY0NodW5rcyA9IFtdO1xuICAgICAgdGhpcy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSBlID0+IHtcbiAgICAgICAgaWYgKGUuZGF0YS5zaXplID4gMCkgdGhpcy5yZWNDaHVua3MucHVzaChlLmRhdGEpO1xuICAgICAgfTtcbiAgICAgIHRoaXMucmVjb3JkZXIuc3RhcnQoKTtcbiAgICAgIHRoaXMucmVjb3JkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMucmVjU2Vjb25kcy5zZXQoMCk7XG4gICAgICB0aGlzLnJlY1RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5yZWNTZWNvbmRzLnVwZGF0ZShzID0+IHMgKyAxKSwgMTAwMCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUGFyYSBsYSBncmFiYWNpw7NuIHkgbGEgc3RhZ2VhIGNvbW8gYWRqdW50byBwZW5kaWVudGUgKGNvbiBwcmV2aWV3IGRlIGF1ZGlvKS4gKi9cbiAgcHJvdGVjdGVkIGZpbmlzaFJlY29yZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCByZWMgPSB0aGlzLnJlY29yZGVyO1xuICAgIGlmICghcmVjKSB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVjLm9uc3RvcCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSByZWMubWltZVR5cGUgfHwgJ2F1ZGlvL3dlYm0nO1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKHRoaXMucmVjQ2h1bmtzLCB7IHR5cGUgfSk7XG4gICAgICBjb25zdCBleHQgPSB0eXBlLmluY2x1ZGVzKCdtcDQnKSA/ICdtNGEnIDogJ3dlYm0nO1xuICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgYGF1ZGlvLSR7dGhpcy5yZWNTZWNvbmRzKCl9cy4ke2V4dH1gLCB7IHR5cGUgfSk7XG4gICAgICBpZiAoYmxvYi5zaXplID4gMCkgdGhpcy5hZGRQZW5kaW5nKGZpbGUpO1xuICAgICAgdGhpcy5jbGVhbnVwUmVjb3JkaW5nKCk7XG4gICAgfTtcbiAgICByZWMuc3RvcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbmNlbFJlY29yZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCByZWMgPSB0aGlzLnJlY29yZGVyO1xuICAgIGlmIChyZWMpIHJlYy5vbnN0b3AgPSAoKSA9PiB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB0cnkge1xuICAgICAgcmVjPy5zdG9wKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9XG4gICAgaWYgKCFyZWMpIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY1RpbWVyKSBjbGVhckludGVydmFsKHRoaXMucmVjVGltZXIpO1xuICAgIHRoaXMucmVjVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWNTdHJlYW0/LmdldFRyYWNrcygpLmZvckVhY2godCA9PiB0LnN0b3AoKSk7XG4gICAgdGhpcy5yZWNTdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWNvcmRlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY0NodW5rcyA9IFtdO1xuICAgIHRoaXMucmVjb3JkaW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZWNTZWNvbmRzLnNldCgwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMucGVuZGluZygpKSB7XG4gICAgICBpZiAoYXR0LnVybCkgVVJMLnJldm9rZU9iamVjdFVSTChhdHQudXJsKTtcbiAgICB9XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnQ2hhdENvbXBvc2VyJyk7XG4gIH1cbn1cbiJdfQ==
503
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb21wb3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoYXQtY29tcG9zZXIvY2hhdC1jb21wb3Nlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBR3JELFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUVwSCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEVBQUUsRUFBRTtRQUNGLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsVUFBVTtRQUNsQixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLElBQUksRUFBRSxPQUFPO1FBQ2IsVUFBVSxFQUFFLGdCQUFnQjtRQUM1QixNQUFNLEVBQUUsVUFBVTtRQUNsQixNQUFNLEVBQUUsUUFBUTtLQUNqQjtJQUNELEVBQUUsRUFBRTtRQUNGLFdBQVcsRUFBRSxpQkFBaUI7UUFDOUIsSUFBSSxFQUFFLE1BQU07UUFDWixNQUFNLEVBQUUsUUFBUTtRQUNoQixLQUFLLEVBQUUsZUFBZTtRQUN0QixJQUFJLEVBQUUsTUFBTTtRQUNaLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE1BQU0sRUFBRSxRQUFRO0tBQ2pCO0NBQ0YsQ0FBQztBQWlCRjs7Ozs7Ozs7Ozs7R0FXRztBQXVVSCxNQUFNLE9BQU8scUJBQXFCO0lBc0NoQztRQXJDUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFCLGdCQUFXLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNoQyxlQUFVLEdBQUcsS0FBSyxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUNoRCxlQUFVLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFL0IsU0FBSSxHQUFHLE1BQU0sRUFBeUIsQ0FBQztRQUN2QyxXQUFNLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFFckIsZ0JBQVcsR0FBRyxTQUFTLENBQTZCLFVBQVUsQ0FBQyxDQUFDO1FBRTlELFNBQUksR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEIsWUFBTyxHQUFHLE1BQU0sQ0FBc0IsRUFBRSxDQUFDLENBQUM7UUFDckQsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUV0QixzQ0FBc0M7UUFDbkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBR2hDLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFHWixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDOUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSyxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQU1SLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7UUFFZ0Isb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBWkQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBYUQsMkRBQTJEO0lBQ2pELFFBQVE7UUFDaEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsQ0FBQztRQUM3QyxxRkFBcUY7UUFDckYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVTLFNBQVMsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRCxvRUFBb0U7SUFDMUQsT0FBTyxDQUFDLEtBQXFCO1FBQ3JDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQix1Q0FBdUM7UUFDdkMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixJQUFJLElBQUk7b0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUVELG9FQUFvRTtRQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRVMsTUFBTTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQUUsT0FBTztRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakMsSUFBSSxHQUFHLENBQUMsR0FBRztnQkFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDN0MsSUFBSSxFQUFFO1lBQUUsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxLQUFZO1FBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBVTtRQUMzQixNQUFNLElBQUksR0FBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLE9BQU87Z0JBQ1QsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFUyxhQUFhLENBQUMsRUFBVTtRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUssRUFBRSxHQUFHO2dCQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCw2RUFBNkU7SUFFckUsYUFBYTtRQUNuQixNQUFNLFVBQVUsR0FBRyxDQUFDLHdCQUF3QixFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RSxNQUFNLEVBQUUsR0FBSSxNQUE4RCxDQUFDLGFBQWEsQ0FBQztRQUN6RixJQUFJLENBQUMsRUFBRSxFQUFFLGVBQWU7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFUyxLQUFLLENBQUMsY0FBYztRQUM1QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFlBQVksSUFBSSxDQUFDLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFO2dCQUM1QyxNQUFNLEVBQUUsUUFBUSxJQUFJLFdBQVc7Z0JBQy9CLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUTthQUN6QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO29CQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELG1GQUFtRjtJQUN6RSxlQUFlO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFDRCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNoQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQztZQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFO2dCQUMzQyxJQUFJO2dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO2dCQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUN0QyxDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztRQUNGLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDMUIsSUFBSSxHQUFHO1lBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUM7WUFDSCxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCx3RUFBd0U7SUFDOUQsWUFBWSxDQUFDLEtBQWEsRUFBRSxJQUFVLEVBQUUsS0FBWTtRQUM1RCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUM1QyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxHQUEyQjtZQUNwQyxDQUFDLEVBQUUsU0FBUztZQUNaLENBQUMsRUFBRSxTQUFTO1lBQ1osQ0FBQyxFQUFFLFFBQVE7WUFDWCxDQUFDLEVBQUUsbUJBQW1CO1NBQ3ZCLENBQUM7UUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFO1lBQy9DLEtBQUs7WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ25CLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSTtZQUNmLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGFBQWEsQ0FBQyxLQUFhLEVBQUUsSUFBVSxFQUFFLEtBQVk7UUFDN0QsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsRUFBRTtZQUNqRCxLQUFLO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ25CLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUTtTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUZBQXVGO0lBQy9FLE9BQU8sQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakMsSUFBSSxHQUFHLENBQUMsR0FBRztnQkFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELENBQUMsQ0FBQyxHQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0FuUlUscUJBQXFCO21HQUFyQixxQkFBcUIsc2tDQWxVdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpR1Qsc3JIQWxHUyxZQUFZLCtCQUFFLE9BQU87OzRGQW1VcEIscUJBQXFCO2tCQXRVakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWRkT3V0bGluZSxcbiAgY2hlY2ttYXJrT3V0bGluZSxcbiAgY2xvc2VPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIG1pY091dGxpbmUsXG4gIGFycm93VXBPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1lc3NhZ2VSZXBseVRvIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hhdC90eXBlcyc7XG5cbmFkZEljb25zKHsgYWRkT3V0bGluZSwgY2hlY2ttYXJrT3V0bGluZSwgY2xvc2VPdXRsaW5lLCBkb2N1bWVudE91dGxpbmUsIG1pY091dGxpbmUsIGFycm93VXBPdXRsaW5lLCB0cmFzaE91dGxpbmUgfSk7XG5cbmNvbnN0IENIQVRfQ09NUE9TRVJfSTE4TiA9IHtcbiAgZXM6IHtcbiAgICBwbGFjZWhvbGRlcjogJ0VzY3JpYmUgdW4gbWVuc2FqZScsXG4gICAgc2VuZDogJ0VudmlhcicsXG4gICAgYXR0YWNoOiAnQWRqdW50YXInLFxuICAgIHZvaWNlOiAnTWVuc2FqZSBkZSB2b3onLFxuICAgIGRvbmU6ICdMaXN0bycsXG4gICAgcmVwbHlpbmdUbzogJ1Jlc3BvbmRpZW5kbyBhJyxcbiAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgcmVtb3ZlOiAnUXVpdGFyJyxcbiAgfSxcbiAgZW46IHtcbiAgICBwbGFjZWhvbGRlcjogJ1dyaXRlIGEgbWVzc2FnZScsXG4gICAgc2VuZDogJ1NlbmQnLFxuICAgIGF0dGFjaDogJ0F0dGFjaCcsXG4gICAgdm9pY2U6ICdWb2ljZSBtZXNzYWdlJyxcbiAgICBkb25lOiAnRG9uZScsXG4gICAgcmVwbHlpbmdUbzogJ1JlcGx5aW5nIHRvJyxcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICAgIHJlbW92ZTogJ1JlbW92ZScsXG4gIH0sXG59O1xuXG50eXBlIFBlbmRpbmdLaW5kID0gJ2ltYWdlJyB8ICdhdWRpbycgfCAnZmlsZSc7XG5cbmludGVyZmFjZSBQZW5kaW5nQXR0YWNobWVudCB7XG4gIGlkOiBudW1iZXI7XG4gIGZpbGU6IEZpbGU7XG4gIHVybD86IHN0cmluZztcbiAga2luZDogUGVuZGluZ0tpbmQ7XG59XG5cbi8qKiBFdmVudG8gZGUgZW52w61vOiB0ZXh0byAoY2FwdGlvbikgKyBhZGp1bnRvcyBzdGFnZWQuIGZpbGVzIHZhY8OtbyA9PiBzb2xvIHRleHRvLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29tcG9zZXJTZW5kRXZlbnQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGZpbGVzOiBGaWxlW107XG59XG5cbi8qKlxuICogdmFsLWNoYXQtY29tcG9zZXIg4oCUIGJhcnJhIGRlIHJlZGFjY2nDs24gZXN0aWxvIE5vdGlvbi9DbGF1ZGUgKGZ1bGwgY3VzdG9tKS5cbiAqXG4gKiBFbCBlZGl0b3IgZXMgdW4gYGNvbnRlbnRlZGl0YWJsZWAgKE5PIGlvbi10ZXh0YXJlYSk6IGNyZWNlIGhhc3RhIHVuIG1heC1oZWlnaHQsXG4gKiBzb3BvcnRhIHBlZ2FyIHRleHRvIHBsYW5vIGUgaW3DoWdlbmVzIGRlbCBwb3J0YXBhcGVsZXMsIEVudGVyIGVudsOtYSAvIFNoaWZ0K0VudGVyXG4gKiBzYWx0YSBsw61uZWEuIERlYmFqbywgdW5hIGZpbGEgZGUgYWNjaW9uZXMgcHJvcGlhczogYWRqdW50YXIgKCspLCBtaWMvZW52aWFyLlxuICogTG9zIGFkanVudG9zIChib3TDs24gLyBwZWdhciAvIGF1ZGlvIGdyYWJhZG8pIHNlIGFjdW11bGFuIGNvbW8gbWluaWF0dXJhcyBkZVxuICogUFJFVklFVyB5IHNlIG1hbmRhbiBlbiBVTiBzb2xvIGV2ZW50byBgc2VuZCB7dGV4dCwgZmlsZXN9YCAoY2FwdGlvbiArIGFkanVudG9zKS5cbiAqXG4gKiBQZW5zYWRvIHBhcmEgdml2aXIgZW4gdW4gY29udGVuZWRvciBmaWpvIGFsIGZvbmRvIGRlbCB2aWV3cG9ydCAoZWwgY29uc3VtZXJcbiAqIGFuY2xhIGxhIHBvc2ljacOzbikuIE5vIGluY2x1eWUgZW1vamkgcGlja2VyIChlbCB0ZWNsYWRvIGRlbCBzaXN0ZW1hIGxvIHRyYWUpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hhdC1jb21wb3NlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjb21wb3NlclwiPlxuICAgICAgQGlmIChyZXBseWluZ1RvKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcGx5LWJhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXBseS1jb250ZW50XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyByZXBseWluZ1RvKCkhLnNlbmRlck5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyByZXBseWluZ1RvKCkhLmJvZHkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjYW5jZWwnKVwiIChjbGljayk9XCJjYW5jZWxSZXBseS5lbWl0KClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKHBlbmRpbmcoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZW5kaW5nLXJvd1wiPlxuICAgICAgICAgIEBmb3IgKGF0dCBvZiBwZW5kaW5nKCk7IHRyYWNrIGF0dC5pZCkge1xuICAgICAgICAgICAgQGlmIChhdHQua2luZCA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXVkaW8tY2hpcFwiPlxuICAgICAgICAgICAgICAgIDxhdWRpb1xuICAgICAgICAgICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICAgICAgICAgIHByZWxvYWQ9XCJtZXRhZGF0YVwiXG4gICAgICAgICAgICAgICAgICBbc3JjXT1cImF0dC51cmxcIlxuICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uQXVkaW9FcnJvcigncHJldmlldycsIGF0dC5maWxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChsb2FkZWRtZXRhZGF0YSk9XCJvbkF1ZGlvTG9hZGVkKCdwcmV2aWV3JywgYXR0LmZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2F1ZGlvPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aHVtYi1yZW1vdmUgaW5saW5lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdyZW1vdmUnKVwiIChjbGljayk9XCJyZW1vdmVQZW5kaW5nKGF0dC5pZClcIj5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYlwiIFtjbGFzcy5maWxlXT1cImF0dC5raW5kID09PSAnZmlsZSdcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGF0dC5raW5kID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXR0LnVybFwiIFthbHRdPVwiYXR0LmZpbGUubmFtZVwiIC8+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvY3VtZW50LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHVtYi1uYW1lXCI+e3sgYXR0LmZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRodW1iLXJlbW92ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncmVtb3ZlJylcIiAoY2xpY2spPVwicmVtb3ZlUGVuZGluZyhhdHQuaWQpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKHJlY29yZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWMtYmFyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuIGRhbmdlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2FuY2VsJylcIiAoY2xpY2spPVwiY2FuY2VsUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWMtZG90XCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjLXRpbWVcIj57eyByZWNUaW1lTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYy1zcGFjZXJcIj48L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlbmQtYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkb25lJylcIiAoY2xpY2spPVwiZmluaXNoUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjZWRpdGFibGVcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWVtcHR5XT1cIiFib2R5KClcIlxuICAgICAgICAgICAgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICBhcmlhLW11bHRpbGluZT1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHQoKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYWNlaG9sZGVyVGV4dCgpXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJzeW5jQm9keSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAgID48L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbnMtc3BhY2VyXCI+PC9zcGFuPlxuICAgICAgICAgICAgQGlmIChzaG93QXR0YWNoKCkpIHtcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaWNvbi1idG5cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2F0dGFjaCcpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhZGQtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgaGlkZGVuIChjaGFuZ2UpPVwib25GaWxlKCRldmVudClcIiBhY2NlcHQ9XCJpbWFnZS8qLGFwcGxpY2F0aW9uL3BkZlwiIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dNaWMoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idG4gbWljXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCd2b2ljZScpXCIgKGNsaWNrKT1cInN0YXJ0UmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm1pYy1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGNhblNlbmQoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG5cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3NlbmQnKVwiIChjbGljayk9XCJvblNlbmQoKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctdXAtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5jb21wb3NlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA4cHggMTBweCBjYWxjKDhweCArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICB9XG4gICAgICAucmVwbHktYmFyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICB9XG4gICAgICAucmVwbHktY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAucmVwbHktbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAucmVwbHktYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAucGVuZGluZy1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBwYWRkaW5nOiAycHggNHB4O1xuICAgICAgfVxuICAgICAgLnRodW1iIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogNjRweDtcbiAgICAgICAgaGVpZ2h0OiA2NHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICB9XG4gICAgICAudGh1bWIgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICB9XG4gICAgICAudGh1bWIuZmlsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgfVxuICAgICAgLnRodW1iLW5hbWUge1xuICAgICAgICBmb250LXNpemU6IDAuNTYyNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC50aHVtYi1yZW1vdmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMnB4O1xuICAgICAgICByaWdodDogMnB4O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjU1KTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgfVxuICAgICAgLyogU2hlbGwgZXN0aWxvIE5vdGlvbjogZWRpdGFibGUgYXJyaWJhLCBmaWxhIGRlIGFjY2lvbmVzIGFiYWpvLiAqL1xuICAgICAgLnNoZWxsIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgIH1cbiAgICAgIC5lZGl0YWJsZSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDI0cHg7XG4gICAgICAgIG1heC1oZWlnaHQ6IDE2MHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0O1xuICAgICAgICB1c2VyLXNlbGVjdDogdGV4dDtcbiAgICAgIH1cbiAgICAgIC5lZGl0YWJsZS5pcy1lbXB0eTo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogYXR0cihkYXRhLXBsYWNlaG9sZGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICB9XG4gICAgICAuYWN0aW9ucy1zcGFjZXIge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5zZW5kLWJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5zZW5kLWJ0bjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTIpO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuLmRhbmdlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cbiAgICAgIC5hdWRpby1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICB9XG4gICAgICAuYXVkaW8tY2hpcCBhdWRpbyB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLnRodW1iLXJlbW92ZS5pbmxpbmUge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAucmVjLWJhciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICB9XG4gICAgICAucmVjLWRvdCB7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGFuaW1hdGlvbjogcmVjLXB1bHNlIDEuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG4gICAgICAucmVjLXRpbWUge1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWMtc3BhY2VyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgIH1cbiAgICAgIEBrZXlmcmFtZXMgcmVjLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0Q29tcG9zZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBtYXhMZW5ndGggPSBpbnB1dDxudW1iZXI+KDQwMDApO1xuICByZWFkb25seSByZXBseWluZ1RvID0gaW5wdXQ8TWVzc2FnZVJlcGx5VG8gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgc2hvd0F0dGFjaCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzaG93TWljID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcmVhZG9ubHkgc2VuZCA9IG91dHB1dDxDaGF0Q29tcG9zZXJTZW5kRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IHR5cGluZyA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSB2b2ljZSA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBjYW5jZWxSZXBseSA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZWRpdGFibGVSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdlZGl0YWJsZScpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBib2R5ID0gc2lnbmFsKCcnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBlbmRpbmcgPSBzaWduYWw8UGVuZGluZ0F0dGFjaG1lbnRbXT4oW10pO1xuICBwcml2YXRlIHBlbmRpbmdJZCA9IDA7XG5cbiAgLy8gR3JhYmFjacOzbiBkZSBhdWRpbyAoTWVkaWFSZWNvcmRlcikuXG4gIHByb3RlY3RlZCByZWFkb25seSByZWNvcmRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlY1NlY29uZHMgPSBzaWduYWwoMCk7XG4gIHByaXZhdGUgcmVjb3JkZXI/OiBNZWRpYVJlY29yZGVyO1xuICBwcml2YXRlIHJlY1N0cmVhbT86IE1lZGlhU3RyZWFtO1xuICBwcml2YXRlIHJlY0NodW5rczogQmxvYltdID0gW107XG4gIHByaXZhdGUgcmVjVGltZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlY1RpbWVMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzID0gdGhpcy5yZWNTZWNvbmRzKCk7XG4gICAgY29uc3QgbW0gPSBTdHJpbmcoTWF0aC5mbG9vcihzIC8gNjApKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IHNzID0gU3RyaW5nKHMgJSA2MCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICByZXR1cm4gYCR7bW19OiR7c3N9YDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBsYXN0VHlwaW5nRW1pdCA9IDA7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ0NoYXRDb21wb3NlcicsIENIQVRfQ09NUE9TRVJfSTE4Tik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuU2VuZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgdCA9IHRoaXMuYm9keSgpLnRyaW0oKTtcbiAgICByZXR1cm4gKHQubGVuZ3RoID4gMCAmJiB0Lmxlbmd0aCA8PSB0aGlzLm1heExlbmd0aCgpKSB8fCB0aGlzLnBlbmRpbmcoKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGxhY2Vob2xkZXJUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIoKSB8fCB0aGlzLmkxOG4udCgncGxhY2Vob2xkZXInLCAnQ2hhdENvbXBvc2VyJyk7XG4gIH0pO1xuXG4gIC8qKiBMZWUgZWwgdGV4dG8gZGVsIGNvbnRlbnRlZGl0YWJsZSBhIGxhIHNpZ25hbCBgYm9keWAuICovXG4gIHByb3RlY3RlZCBzeW5jQm9keSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWRpdGFibGVSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAvLyBpbm5lclRleHQgY29uc2VydmEgbG9zIHNhbHRvcyBkZSBsw61uZWE7IHF1aXRhIGVsIFxcbiBmaW5hbCBxdWUgZWwgbmF2ZWdhZG9yIGFncmVnYS5cbiAgICBjb25zdCB0ZXh0ID0gKGVsPy5pbm5lclRleHQgPz8gJycpLnJlcGxhY2UoL1xcbiQvLCAnJyk7XG4gICAgdGhpcy5ib2R5LnNldCh0ZXh0KTtcbiAgICB0aGlzLmVtaXRUeXBpbmdEZWJvdW5jZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMub25TZW5kKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFBlZ2FyOiB0ZXh0byBwbGFubyAoc2luIGZvcm1hdG8pICsgaW3DoWdlbmVzIGRlbCBwb3J0YXBhcGVsZXMuICovXG4gIHByb3RlY3RlZCBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgZGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGE7XG4gICAgaWYgKCFkYXRhKSByZXR1cm47XG5cbiAgICAvLyBJbcOhZ2VuZXMgKGNhcHR1cmFzIC8gY29waWFyIGltYWdlbikuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIEFycmF5LmZyb20oZGF0YS5pdGVtcykpIHtcbiAgICAgIGlmIChpdGVtLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IGl0ZW0uZ2V0QXNGaWxlKCk7XG4gICAgICAgIGlmIChmaWxlKSB0aGlzLmFkZFBlbmRpbmcoZmlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGV4dG8gcGxhbm8gaW5zZXJ0YWRvIGVuIGVsIGNhcmV0IChldml0YSBwZWdhciBIVE1MIGNvbiBlc3RpbG9zKS5cbiAgICBjb25zdCB0ZXh0ID0gZGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRUZXh0JywgZmFsc2UsIHRleHQpO1xuICAgIH1cbiAgICB0aGlzLnN5bmNCb2R5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TZW5kKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5TZW5kKCkpIHJldHVybjtcbiAgICBjb25zdCBmaWxlcyA9IHRoaXMucGVuZGluZygpLm1hcChwID0+IHAuZmlsZSk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuYm9keSgpLnRyaW0oKTtcbiAgICB0aGlzLnNlbmQuZW1pdCh7IHRleHQsIGZpbGVzIH0pO1xuXG4gICAgZm9yIChjb25zdCBhdHQgb2YgdGhpcy5wZW5kaW5nKCkpIHtcbiAgICAgIGlmIChhdHQudXJsKSBVUkwucmV2b2tlT2JqZWN0VVJMKGF0dC51cmwpO1xuICAgIH1cbiAgICB0aGlzLnBlbmRpbmcuc2V0KFtdKTtcbiAgICB0aGlzLmNsZWFyRWRpdGFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJFZGl0YWJsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWRpdGFibGVSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoZWwpIGVsLmlubmVyVGV4dCA9ICcnO1xuICAgIHRoaXMuYm9keS5zZXQoJycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRmlsZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlcz8uWzBdO1xuICAgIGlmIChmaWxlKSB0aGlzLmFkZFBlbmRpbmcoZmlsZSk7XG4gICAgaW5wdXQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgYWRkUGVuZGluZyhmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgY29uc3Qga2luZDogUGVuZGluZ0tpbmQgPSBmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJylcbiAgICAgID8gJ2ltYWdlJ1xuICAgICAgOiBmaWxlLnR5cGUuc3RhcnRzV2l0aCgnYXVkaW8vJylcbiAgICAgICAgPyAnYXVkaW8nXG4gICAgICAgIDogJ2ZpbGUnO1xuICAgIGNvbnN0IHVybCA9IGtpbmQgPT09ICdmaWxlJyA/IHVuZGVmaW5lZCA6IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG4gICAgdGhpcy5wZW5kaW5nLnVwZGF0ZShhcnIgPT4gWy4uLmFyciwgeyBpZDogdGhpcy5wZW5kaW5nSWQrKywgZmlsZSwgdXJsLCBraW5kIH1dKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVQZW5kaW5nKGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmcudXBkYXRlKGFyciA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IGFyci5maW5kKGEgPT4gYS5pZCA9PT0gaWQpO1xuICAgICAgaWYgKGZvdW5kPy51cmwpIFVSTC5yZXZva2VPYmplY3RVUkwoZm91bmQudXJsKTtcbiAgICAgIHJldHVybiBhcnIuZmlsdGVyKGEgPT4gYS5pZCAhPT0gaWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VHlwaW5nRGVib3VuY2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGlmIChub3cgLSB0aGlzLmxhc3RUeXBpbmdFbWl0ID4gMjAwMCkge1xuICAgICAgdGhpcy5sYXN0VHlwaW5nRW1pdCA9IG5vdztcbiAgICAgIHRoaXMudHlwaW5nLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICAvLyDilIDilIDilIAgR3JhYmFjacOzbiBkZSBhdWRpbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBwcml2YXRlIHBpY2tBdWRpb01pbWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjYW5kaWRhdGVzID0gWydhdWRpby93ZWJtO2NvZGVjcz1vcHVzJywgJ2F1ZGlvL3dlYm0nLCAnYXVkaW8vbXA0J107XG4gICAgY29uc3QgTVIgPSAod2luZG93IGFzIHVua25vd24gYXMgeyBNZWRpYVJlY29yZGVyPzogdHlwZW9mIE1lZGlhUmVjb3JkZXIgfSkuTWVkaWFSZWNvcmRlcjtcbiAgICBpZiAoIU1SPy5pc1R5cGVTdXBwb3J0ZWQpIHJldHVybiAnJztcbiAgICByZXR1cm4gY2FuZGlkYXRlcy5maW5kKGMgPT4gTVIuaXNUeXBlU3VwcG9ydGVkKGMpKSA/PyAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzdGFydFJlY29yZGluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5yZWNvcmRpbmcoKSkgcmV0dXJuO1xuICAgIGlmICghbmF2aWdhdG9yLm1lZGlhRGV2aWNlcz8uZ2V0VXNlck1lZGlhIHx8ICEoJ01lZGlhUmVjb3JkZXInIGluIHdpbmRvdykpIHtcbiAgICAgIHRoaXMudm9pY2UuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzogdHJ1ZSB9KTtcbiAgICAgIHRoaXMucmVjU3RyZWFtID0gc3RyZWFtO1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0aGlzLnBpY2tBdWRpb01pbWUoKTtcbiAgICAgIHRoaXMucmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIG1pbWVUeXBlID8geyBtaW1lVHlwZSB9IDogdW5kZWZpbmVkKTtcbiAgICAgIGNvbnNvbGUubG9nKCdbQ2hhdENvbXBvc2VyXSByZWNvcmRpbmcgc3RhcnQnLCB7XG4gICAgICAgIHBpY2tlZDogbWltZVR5cGUgfHwgJyhkZWZhdWx0KScsXG4gICAgICAgIHJlY29yZGVyTWltZVR5cGU6IHRoaXMucmVjb3JkZXIubWltZVR5cGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVjQ2h1bmtzID0gW107XG4gICAgICB0aGlzLnJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IGUgPT4ge1xuICAgICAgICBpZiAoZS5kYXRhLnNpemUgPiAwKSB0aGlzLnJlY0NodW5rcy5wdXNoKGUuZGF0YSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5yZWNvcmRlci5zdGFydCgpO1xuICAgICAgdGhpcy5yZWNvcmRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5yZWNTZWNvbmRzLnNldCgwKTtcbiAgICAgIHRoaXMucmVjVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLnJlY1NlY29uZHMudXBkYXRlKHMgPT4gcyArIDEpLCAxMDAwKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQYXJhIGxhIGdyYWJhY2nDs24geSBsYSBzdGFnZWEgY29tbyBhZGp1bnRvIHBlbmRpZW50ZSAoY29uIHByZXZpZXcgZGUgYXVkaW8pLiAqL1xuICBwcm90ZWN0ZWQgZmluaXNoUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlYyA9IHRoaXMucmVjb3JkZXI7XG4gICAgaWYgKCFyZWMpIHtcbiAgICAgIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZWMub25zdG9wID0gKCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHJlYy5taW1lVHlwZSB8fCAnYXVkaW8vd2VibSc7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IodGhpcy5yZWNDaHVua3MsIHsgdHlwZSB9KTtcbiAgICAgIGNvbnN0IGV4dCA9IHR5cGUuaW5jbHVkZXMoJ21wNCcpID8gJ200YScgOiAnd2VibSc7XG4gICAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCBgYXVkaW8tJHt0aGlzLnJlY1NlY29uZHMoKX1zLiR7ZXh0fWAsIHsgdHlwZSB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCdbQ2hhdENvbXBvc2VyXSBhdWRpbyByZWNvcmRlZCcsIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgc2l6ZTogYmxvYi5zaXplLFxuICAgICAgICBjaHVua3M6IHRoaXMucmVjQ2h1bmtzLmxlbmd0aCxcbiAgICAgICAgY2FuUGxheVdlYm06IHRoaXMuY2FuUGxheSgnYXVkaW8vd2VibScpLFxuICAgICAgICBjYW5QbGF5TXA0OiB0aGlzLmNhblBsYXkoJ2F1ZGlvL21wNCcpLFxuICAgICAgfSk7XG4gICAgICBpZiAoYmxvYi5zaXplID4gMCkgdGhpcy5hZGRQZW5kaW5nKGZpbGUpO1xuICAgICAgdGhpcy5jbGVhbnVwUmVjb3JkaW5nKCk7XG4gICAgfTtcbiAgICByZWMuc3RvcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbmNlbFJlY29yZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCByZWMgPSB0aGlzLnJlY29yZGVyO1xuICAgIGlmIChyZWMpIHJlYy5vbnN0b3AgPSAoKSA9PiB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB0cnkge1xuICAgICAgcmVjPy5zdG9wKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9XG4gICAgaWYgKCFyZWMpIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY1RpbWVyKSBjbGVhckludGVydmFsKHRoaXMucmVjVGltZXIpO1xuICAgIHRoaXMucmVjVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWNTdHJlYW0/LmdldFRyYWNrcygpLmZvckVhY2godCA9PiB0LnN0b3AoKSk7XG4gICAgdGhpcy5yZWNTdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWNvcmRlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY0NodW5rcyA9IFtdO1xuICAgIHRoaXMucmVjb3JkaW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZWNTZWNvbmRzLnNldCgwKTtcbiAgfVxuXG4gIC8qKiBEaWFnbsOzc3RpY286IGVsIG5hdmVnYWRvciBubyBwdWRvIHJlcHJvZHVjaXIgZWwgYWRqdW50byBkZSBhdWRpby4gKi9cbiAgcHJvdGVjdGVkIG9uQXVkaW9FcnJvcih3aGVyZTogc3RyaW5nLCBmaWxlOiBGaWxlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQXVkaW9FbGVtZW50O1xuICAgIGNvbnN0IGVyciA9IGVsLmVycm9yO1xuICAgIGNvbnN0IGNvZGVzOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICAgICAgMTogJ0FCT1JURUQnLFxuICAgICAgMjogJ05FVFdPUksnLFxuICAgICAgMzogJ0RFQ09ERScsXG4gICAgICA0OiAnU1JDX05PVF9TVVBQT1JURUQnLFxuICAgIH07XG4gICAgY29uc29sZS5lcnJvcignW0NoYXRDb21wb3Nlcl0gYXVkaW8gcGxheSBlcnJvcicsIHtcbiAgICAgIHdoZXJlLFxuICAgICAgZmlsZVR5cGU6IGZpbGUudHlwZSxcbiAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICBjb2RlOiBlcnI/LmNvZGUsXG4gICAgICByZWFzb246IGVyciA/IGNvZGVzW2Vyci5jb2RlXSA6ICd1bmtub3duJyxcbiAgICAgIG1lc3NhZ2U6IGVycj8ubWVzc2FnZSxcbiAgICAgIGNhblBsYXlUaGlzVHlwZTogdGhpcy5jYW5QbGF5KGZpbGUudHlwZSksXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25BdWRpb0xvYWRlZCh3aGVyZTogc3RyaW5nLCBmaWxlOiBGaWxlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQXVkaW9FbGVtZW50O1xuICAgIGNvbnNvbGUubG9nKCdbQ2hhdENvbXBvc2VyXSBhdWRpbyBsb2FkZWRtZXRhZGF0YScsIHtcbiAgICAgIHdoZXJlLFxuICAgICAgZmlsZVR5cGU6IGZpbGUudHlwZSxcbiAgICAgIGR1cmF0aW9uOiBlbC5kdXJhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiDCv0VsIG5hdmVnYWRvciBkZWNsYXJhIHF1ZSBwdWVkZSByZXByb2R1Y2lyIGVzdGUgdGlwbz8gJycgLyAnbWF5YmUnIC8gJ3Byb2JhYmx5Jy4gKi9cbiAgcHJpdmF0ZSBjYW5QbGF5KHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhdWRpbycpLmNhblBsYXlUeXBlKHR5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwUmVjb3JkaW5nKCk7XG4gICAgZm9yIChjb25zdCBhdHQgb2YgdGhpcy5wZW5kaW5nKCkpIHtcbiAgICAgIGlmIChhdHQudXJsKSBVUkwucmV2b2tlT2JqZWN0VVJMKGF0dC51cmwpO1xuICAgIH1cbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdDaGF0Q29tcG9zZXInKTtcbiAgfVxufVxuIl19
@@ -92,6 +92,19 @@ export class MessageBubbleComponent {
92
92
  this.actionsOpen.set(false);
93
93
  this.action.emit({ type, msgId: this.msg().msgId, token });
94
94
  }
95
+ /** Diagnóstico: el navegador no pudo reproducir el audio recibido. */
96
+ onAudioError(att, event) {
97
+ const el = event.target;
98
+ const codes = { 1: 'ABORTED', 2: 'NETWORK', 3: 'DECODE', 4: 'SRC_NOT_SUPPORTED' };
99
+ const canPlay = att.mimeType ? document.createElement('audio').canPlayType(att.mimeType) : '';
100
+ console.error('[MessageBubble] audio play error', {
101
+ mimeType: att.mimeType,
102
+ url: att.url.slice(0, 80),
103
+ code: el.error?.code,
104
+ reason: el.error ? codes[el.error.code] : 'unknown',
105
+ canPlayThisType: canPlay,
106
+ });
107
+ }
95
108
  t(key) {
96
109
  return this.i18n.t(key, 'MessageBubble');
97
110
  }
@@ -140,7 +153,13 @@ export class MessageBubbleComponent {
140
153
  @if (audioAttachments().length > 0) {
141
154
  <div class="audios">
142
155
  @for (att of audioAttachments(); track att.url) {
143
- <audio class="att-audio" controls preload="metadata" [src]="att.url"></audio>
156
+ <audio
157
+ class="att-audio"
158
+ controls
159
+ preload="metadata"
160
+ [src]="att.url"
161
+ (error)="onAudioError(att, $event)"
162
+ ></audio>
144
163
  }
145
164
  </div>
146
165
  }
@@ -255,7 +274,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
255
274
  @if (audioAttachments().length > 0) {
256
275
  <div class="audios">
257
276
  @for (att of audioAttachments(); track att.url) {
258
- <audio class="att-audio" controls preload="metadata" [src]="att.url"></audio>
277
+ <audio
278
+ class="att-audio"
279
+ controls
280
+ preload="metadata"
281
+ [src]="att.url"
282
+ (error)="onAudioError(att, $event)"
283
+ ></audio>
259
284
  }
260
285
  </div>
261
286
  }
@@ -324,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
324
349
  </div>
325
350
  `, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:.7}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-medium, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
326
351
  }], ctorParameters: () => [] });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUdqRSxRQUFRLENBQUM7SUFDUCxXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFFSCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxXQUFXO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLFlBQVk7UUFDbkIsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixN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QW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGVydENpcmNsZSxcbiAgY2hlY2ttYXJrLFxuICBjaGVja21hcmtEb25lLFxuICBjcmVhdGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGhhcHB5T3V0bGluZSxcbiAgYXJyb3dVbmRvT3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgZm9ybWF0Q2xvY2tUaW1lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2RhdGV0aW1lJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSk7XG5cbmNvbnN0IE1FU1NBR0VfQlVCQkxFX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcmVwbHk6ICdSZXNwb25kZXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGRlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICByZWFjdDogJ1JlYWNjaW9uYXInLFxuICAgIGRlbGV0ZWQ6ICdNZW5zYWplIGVsaW1pbmFkbycsXG4gICAgZWRpdGVkOiAnZWRpdGFkbycsXG4gIH0sXG4gIGVuOiB7XG4gICAgcmVwbHk6ICdSZXBseScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcmVhY3Q6ICdSZWFjdCcsXG4gICAgZGVsZXRlZDogJ01lc3NhZ2UgZGVsZXRlZCcsXG4gICAgZWRpdGVkOiAnZWRpdGVkJyxcbiAgfSxcbn07XG5cbi8qKiBBY2Npw7NuIGRpc3BhcmFkYSBkZXNkZSB1bmEgYnVyYnVqYS4gVW4gc29sbyBvdXRwdXQgdGlwYWRvIGVuIHZleiBkZSA0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQnViYmxlQWN0aW9uIHtcbiAgdHlwZTogJ3JlcGx5JyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgJ3JlYWN0JztcbiAgbXNnSWQ6IHN0cmluZztcbiAgLyoqIFRva2VuIGRlbCBlbW9qaSwgc29sbyBwYXJhIHR5cGUgJ3JlYWN0Jy4gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLW1lc3NhZ2UtYnViYmxlIOKAlCBidXJidWphIGRlIG1lbnNhamUgcHJlc2VudGFjaW9uYWwgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIFNpbiBsw7NnaWNhIGRlIG5lZ29jaW86IGVsIGNvbnRlbmVkb3IgKGB2YWwtY2hhdC13aW5kb3dgKSBkZWNpZGUgYWdydXBhY2nDs24geVxuICogcGFzYSBmbGFncyAoc2hvd0F2YXRhci9zaG93TmFtZS90YWlsKS4gTGFzIGFjY2lvbmVzIChyZXNwb25kZXIvZWRpdGFyL2JvcnJhci9cbiAqIHJlYWNjaW9uYXIpIE5PIGVzdMOhbiBzaWVtcHJlIHZpc2libGVzOiBzZSByZXZlbGFuIGVuIGhvdmVyIChkZXNrdG9wKSBvIGFsIHRvY2FyXG4gKiBsYSBidXJidWphIChtw7N2aWwpLCB5IHNlIGVtaXRlbiBwb3IgdW4gw7puaWNvIGAoYWN0aW9uKWAgdGlwYWRvLlxuICpcbiAqIFJlYWQgcmVjZWlwdHMgZXN0aWxvIFdoYXRzQXBwOiBzZW5kaW5nIOKGkiByZWxvaiwgc2VudCDihpIg4pyTLCBkZWxpdmVyZWQvcmVhZCDihpIg4pyT4pyTXG4gKiAocmVhZCBlbiBjb2xvciksIGZhaWxlZCDihpIgYWxlcnRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVzc2FnZS1idWJibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChhdWRpb0F0dGFjaG1lbnRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXVkaW9zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYXR0IG9mIGF1ZGlvQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGF1ZGlvIGNsYXNzPVwiYXR0LWF1ZGlvXCIgY29udHJvbHMgcHJlbG9hZD1cIm1ldGFkYXRhXCIgW3NyY109XCJhdHQudXJsXCI+PC9hdWRpbz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgQGlmIChtc2coKS5pc0VkaXRlZCAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkXCI+e3sgdCgnZWRpdGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj57eyB0aW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVhZF09XCJtc2coKS5zdGF0dXMgPT09ICdyZWFkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZhaWxlZF09XCJtc2coKS5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzdGF0dXNJY29uKClcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIFtjbGFzcy5vcGVuXT1cImFjdGlvbnNPcGVuKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlYWN0JylcIiAoY2xpY2spPVwiZW1pdCgncmVhY3QnLCAn8J+RjScpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGFwcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlcGx5JylcIiAoY2xpY2spPVwiZW1pdCgncmVwbHknKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG8tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2VkaXQnKVwiIChjbGljayk9XCJlbWl0KCdlZGl0JylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3QgZGFuZ2VyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkZWxldGUnKVwiIChjbGljayk9XCJlbWl0KCdkZWxldGUnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDFweCAwO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgfVxuICAgICAgLnJvdy50YWlsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oNzglLCA1MjBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogN3B4IDExcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKS50YWlsIC5idWJibGUge1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAubWluZSAuYnViYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5taW5lLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAuYnViYmxlLmRlbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIC5uYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgICAgLnJlcGx5LXByZXZpZXcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIH1cbiAgICAgIC5kZWxldGVkLXRleHQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICAgIC5hdHRhY2htZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5hdWRpb3Mge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmF0dC1hdWRpbyB7XG4gICAgICAgIHdpZHRoOiAyNDBweDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICB9XG4gICAgICAuZmlsZXMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmZpbGUtY2hpcCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAubWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW46IDJweCAwIC0ycHggOHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgICAgLmVkaXRlZCB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cbiAgICAgIC5zdGF0dXMge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy5yZWFkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnksICM0ZmMzZjcpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy5mYWlsZWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xuICAgICAgfVxuICAgICAgLnJlYWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogM3B4O1xuICAgICAgICBwYWRkaW5nOiAxcHggN3B4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24uYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24gLmNvdW50IHtcbiAgICAgICAgb3BhY2l0eTogMC43NTtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTJzIGVhc2U7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmFjdGlvbnMge1xuICAgICAgICByaWdodDogMDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKSAuYWN0aW9ucyB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG4gICAgICAuYnViYmxlLXdyYXA6aG92ZXIgLmFjdGlvbnMsXG4gICAgICAuYWN0aW9ucy5vcGVuIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICB9XG4gICAgICAuYWN0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICAuYWN0OmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5hY3QuZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWJibGVDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IG1zZyA9IGlucHV0LnJlcXVpcmVkPE1lc3NhZ2VCdWJibGVNZXRhZGF0YT4oKTtcbiAgcmVhZG9ubHkgc2hvd0F2YXRhciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd05hbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHRhaWwgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgbG9jYWxlID0gaW5wdXQ8c3RyaW5nPignZXMtQ0wnKTtcblxuICByZWFkb25seSBhY3Rpb24gPSBvdXRwdXQ8TWVzc2FnZUJ1YmJsZUFjdGlvbj4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aW9uc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNZXNzYWdlQnViYmxlJywgTUVTU0FHRV9CVUJCTEVfSTE4Tik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZSA9IGNvbXB1dGVkKCgpID0+IGZvcm1hdENsb2NrVGltZSh0aGlzLm1zZygpLmNyZWF0ZWRBdCwgdGhpcy5sb2NhbGUoKSkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbml0aWFscyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5tc2coKS5zZW5kZXJOYW1lPy50cmltKCkgPz8gJyc7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJz8nO1xuICAgIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdCgvXFxzKy8pO1xuICAgIHJldHVybiAocGFydHNbMF1bMF0gKyAocGFydHNbMV0/LlswXSA/PyAnJykpLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbWFnZUF0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGF1ZGlvQXR0YWNobWVudHMgPSBjb21wdXRlZCgoKSA9PlxuICAgICh0aGlzLm1zZygpLmF0dGFjaG1lbnRzID8/IFtdKS5maWx0ZXIoYSA9PiBhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdhdWRpby8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsZUF0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gIWEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpICYmICFhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdhdWRpby8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhdHVzSWNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMubXNnKCkuc3RhdHVzKSB7XG4gICAgICBjYXNlICdzZW5kaW5nJzpcbiAgICAgICAgcmV0dXJuICd0aW1lLW91dGxpbmUnO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuICdhbGVydC1jaXJjbGUnO1xuICAgICAgY2FzZSAnZGVsaXZlcmVkJzpcbiAgICAgIGNhc2UgJ3JlYWQnOlxuICAgICAgICByZXR1cm4gJ2NoZWNrbWFyay1kb25lJztcbiAgICAgIGNhc2UgJ3NlbnQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjaGVja21hcmsnO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXNnKCkuaXNEZWxldGVkKSByZXR1cm47XG4gICAgdGhpcy5hY3Rpb25zT3Blbi51cGRhdGUodiA9PiAhdik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdCh0eXBlOiBNZXNzYWdlQnViYmxlQWN0aW9uWyd0eXBlJ10sIHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25zT3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyB0eXBlLCBtc2dJZDogdGhpcy5tc2coKS5tc2dJZCwgdG9rZW4gfSk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWVzc2FnZUJ1YmJsZScpO1xuICB9XG59XG4iXX0=
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUdqRSxRQUFRLENBQUM7SUFDUCxXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFFSCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxXQUFXO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLFlBQVk7UUFDbkIsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixN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bmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWxlcnRDaXJjbGUsXG4gIGNoZWNrbWFyayxcbiAgY2hlY2ttYXJrRG9uZSxcbiAgY3JlYXRlT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxuICBoYXBweU91dGxpbmUsXG4gIGFycm93VW5kb091dGxpbmUsXG4gIHRpbWVPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IGZvcm1hdENsb2NrVGltZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9kYXRldGltZSc7XG5pbXBvcnQgeyBNZXNzYWdlQnViYmxlTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoe1xuICBhbGVydENpcmNsZSxcbiAgY2hlY2ttYXJrLFxuICBjaGVja21hcmtEb25lLFxuICBjcmVhdGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGhhcHB5T3V0bGluZSxcbiAgYXJyb3dVbmRvT3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0pO1xuXG5jb25zdCBNRVNTQUdFX0JVQkJMRV9JMThOID0ge1xuICBlczoge1xuICAgIHJlcGx5OiAnUmVzcG9uZGVyJyxcbiAgICBlZGl0OiAnRWRpdGFyJyxcbiAgICBkZWxldGU6ICdFbGltaW5hcicsXG4gICAgcmVhY3Q6ICdSZWFjY2lvbmFyJyxcbiAgICBkZWxldGVkOiAnTWVuc2FqZSBlbGltaW5hZG8nLFxuICAgIGVkaXRlZDogJ2VkaXRhZG8nLFxuICB9LFxuICBlbjoge1xuICAgIHJlcGx5OiAnUmVwbHknLFxuICAgIGVkaXQ6ICdFZGl0JyxcbiAgICBkZWxldGU6ICdEZWxldGUnLFxuICAgIHJlYWN0OiAnUmVhY3QnLFxuICAgIGRlbGV0ZWQ6ICdNZXNzYWdlIGRlbGV0ZWQnLFxuICAgIGVkaXRlZDogJ2VkaXRlZCcsXG4gIH0sXG59O1xuXG4vKiogQWNjacOzbiBkaXNwYXJhZGEgZGVzZGUgdW5hIGJ1cmJ1amEuIFVuIHNvbG8gb3V0cHV0IHRpcGFkbyBlbiB2ZXogZGUgNC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUJ1YmJsZUFjdGlvbiB7XG4gIHR5cGU6ICdyZXBseScgfCAnZWRpdCcgfCAnZGVsZXRlJyB8ICdyZWFjdCc7XG4gIG1zZ0lkOiBzdHJpbmc7XG4gIC8qKiBUb2tlbiBkZWwgZW1vamksIHNvbG8gcGFyYSB0eXBlICdyZWFjdCcuICovXG4gIHRva2VuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIHZhbC1tZXNzYWdlLWJ1YmJsZSDigJQgYnVyYnVqYSBkZSBtZW5zYWplIHByZXNlbnRhY2lvbmFsIChzaWduYWwgaW5wdXRzKS5cbiAqXG4gKiBTaW4gbMOzZ2ljYSBkZSBuZWdvY2lvOiBlbCBjb250ZW5lZG9yIChgdmFsLWNoYXQtd2luZG93YCkgZGVjaWRlIGFncnVwYWNpw7NuIHlcbiAqIHBhc2EgZmxhZ3MgKHNob3dBdmF0YXIvc2hvd05hbWUvdGFpbCkuIExhcyBhY2Npb25lcyAocmVzcG9uZGVyL2VkaXRhci9ib3JyYXIvXG4gKiByZWFjY2lvbmFyKSBOTyBlc3TDoW4gc2llbXByZSB2aXNpYmxlczogc2UgcmV2ZWxhbiBlbiBob3ZlciAoZGVza3RvcCkgbyBhbCB0b2NhclxuICogbGEgYnVyYnVqYSAobcOzdmlsKSwgeSBzZSBlbWl0ZW4gcG9yIHVuIMO6bmljbyBgKGFjdGlvbilgIHRpcGFkby5cbiAqXG4gKiBSZWFkIHJlY2VpcHRzIGVzdGlsbyBXaGF0c0FwcDogc2VuZGluZyDihpIgcmVsb2osIHNlbnQg4oaSIOKckywgZGVsaXZlcmVkL3JlYWQg4oaSIOKck+Kck1xuICogKHJlYWQgZW4gY29sb3IpLCBmYWlsZWQg4oaSIGFsZXJ0YS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW1lc3NhZ2UtYnViYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiIFtjbGFzcy5taW5lXT1cIm1zZygpLmlzTWluZVwiIFtjbGFzcy50YWlsXT1cInRhaWwoKVwiIFtjbGFzcy53aXRoLWF2YXRhcl09XCJzaG93QXZhdGFyKClcIj5cbiAgICAgIEBpZiAoc2hvd0F2YXRhcigpICYmICFtc2coKS5pc01pbmUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhclwiIFtjbGFzcy5oaWRkZW5dPVwiIXRhaWwoKVwiPlxuICAgICAgICAgIEBpZiAobXNnKCkuc2VuZGVyQXZhdGFyKSB7XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwibXNnKCkuc2VuZGVyQXZhdGFyXCIgW2FsdF09XCJtc2coKS5zZW5kZXJOYW1lXCIgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IGluaXRpYWxzKCkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cImJ1YmJsZS13cmFwXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImJ1YmJsZVwiXG4gICAgICAgICAgW2NsYXNzLmRlbGV0ZWRdPVwibXNnKCkuaXNEZWxldGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlQWN0aW9ucygpXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmIChzaG93TmFtZSgpICYmICFtc2coKS5pc01pbmUgJiYgIW1zZygpLmlzRGVsZXRlZCkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgbXNnKCkuc2VuZGVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKG1zZygpLnJlcGx5VG8gJiYgIW1zZygpLmlzRGVsZXRlZCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcGx5LXByZXZpZXdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXBseS1uYW1lXCI+e3sgbXNnKCkucmVwbHlUbyEuc2VuZGVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXBseS1ib2R5XCI+e3sgbXNnKCkucmVwbHlUbyEuYm9keSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHkgZGVsZXRlZC10ZXh0XCI+e3sgdCgnZGVsZXRlZCcpIH19PC9zcGFuPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChpbWFnZUF0dGFjaG1lbnRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudHNcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhdHQgb2YgaW1hZ2VBdHRhY2htZW50cygpOyB0cmFjayBhdHQudXJsKSB7XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiYXR0LWltYWdlXCIgW3NyY109XCJhdHQudXJsXCIgW2FsdF09XCJhdHQubmFtZVwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYXVkaW9BdHRhY2htZW50cygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1ZGlvc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBhdWRpb0F0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxhdWRpb1xuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF0dC1hdWRpb1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgIHByZWxvYWQ9XCJtZXRhZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYXR0LnVybFwiXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkF1ZGlvRXJyb3IoYXR0LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L2F1ZGlvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGZpbGVBdHRhY2htZW50cygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVzXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYXR0IG9mIGZpbGVBdHRhY2htZW50cygpOyB0cmFjayBhdHQudXJsKSB7XG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZpbGUtY2hpcFwiIFtocmVmXT1cImF0dC51cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvY3VtZW50LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBhdHQubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChtc2coKS5ib2R5KSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keVwiPnt7IG1zZygpLmJvZHkgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhXCI+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzRWRpdGVkICYmICFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlZGl0ZWRcIj57eyB0KCdlZGl0ZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZVwiPnt7IHRpbWUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lICYmICFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGF0dXNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5yZWFkXT1cIm1zZygpLnN0YXR1cyA9PT0gJ3JlYWQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmFpbGVkXT1cIm1zZygpLnN0YXR1cyA9PT0gJ2ZhaWxlZCdcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInN0YXR1c0ljb24oKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAobXNnKCkucmVhY3Rpb25zICYmIG1zZygpLnJlYWN0aW9ucyEubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBmb3IgKHIgb2YgbXNnKCkucmVhY3Rpb25zITsgdHJhY2sgci50b2tlbikge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVhY3Rpb25cIiBbY2xhc3MuYWN0aXZlXT1cInIuYWN0aXZlXCIgKGNsaWNrKT1cImVtaXQoJ3JlYWN0Jywgci50b2tlbilcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByLnRva2VuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRcIj57eyByLmNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoIW1zZygpLmlzRGVsZXRlZCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgW2NsYXNzLm9wZW5dPVwiYWN0aW9uc09wZW4oKVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncmVhY3QnKVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsICfwn5GNJylcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJoYXBweS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncmVwbHknKVwiIChjbGljayk9XCJlbWl0KCdyZXBseScpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctdW5kby1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmIChtc2coKS5pc01pbmUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnZWRpdCcpXCIgKGNsaWNrKT1cImVtaXQoJ2VkaXQnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjdCBkYW5nZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2RlbGV0ZScpXCIgKGNsaWNrKT1cImVtaXQoJ2RlbGV0ZScpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLnJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMXB4IDA7XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICB9XG4gICAgICAucm93LnRhaWwge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG4gICAgICAuYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuICAgICAgLmF2YXRhci5oaWRkZW4ge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgICAuYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbig3OCUsIDUyMHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSAuYnViYmxlLXdyYXAge1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICB9XG4gICAgICAuYnViYmxlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nOiA3cHggMTFweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgfVxuICAgICAgLnJvdzpub3QoLm1pbmUpLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDtcbiAgICAgIH1cbiAgICAgIC5taW5lIC5idWJibGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3QsICNmZmYpO1xuICAgICAgfVxuICAgICAgLm1pbmUudGFpbCAuYnViYmxlIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDtcbiAgICAgIH1cbiAgICAgIC5idWJibGUuZGVsZXRlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItc3R5bGU6IGRhc2hlZDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuICAgICAgLm5hbWUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgICB9XG4gICAgICAucmVwbHktcHJldmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMXB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgY3VycmVudENvbG9yO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEyKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjg1O1xuICAgICAgfVxuICAgICAgLnJlcGx5LW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuICAgICAgLnJlcGx5LWJvZHkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgbWF4LXdpZHRoOiAyNDBweDtcbiAgICAgIH1cbiAgICAgIC5ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgfVxuICAgICAgLmRlbGV0ZWQtdGV4dCB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgfVxuICAgICAgLmF0dGFjaG1lbnRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICAgIC5hdHQtaW1hZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLmF1ZGlvcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWF1ZGlvIHtcbiAgICAgICAgd2lkdGg6IDI0MHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgIH1cbiAgICAgIC5maWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuZmlsZS1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC5tZXRhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbjogMnB4IDAgLTJweCA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG4gICAgICAuZWRpdGVkIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuICAgICAgLnN0YXR1cyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAuc3RhdHVzLnJlYWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeSwgIzRmYzNmNyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAuc3RhdHVzLmZhaWxlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAzcHg7XG4gICAgICAgIHBhZGRpbmc6IDFweCA3cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbi5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktdGludCwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbiAuY291bnQge1xuICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xMnMgZWFzZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSAuYWN0aW9ucyB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgLnJvdzpub3QoLm1pbmUpIC5hY3Rpb25zIHtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcDpob3ZlciAuYWN0aW9ucyxcbiAgICAgIC5hY3Rpb25zLm9wZW4ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgIH1cbiAgICAgIC5hY3Qge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cbiAgICAgIC5hY3Q6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgfVxuICAgICAgLmFjdC5kYW5nZXI6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUJ1YmJsZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgbXNnID0gaW5wdXQucmVxdWlyZWQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhPigpO1xuICByZWFkb25seSBzaG93QXZhdGFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93TmFtZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgdGFpbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBsb2NhbGUgPSBpbnB1dDxzdHJpbmc+KCdlcy1DTCcpO1xuXG4gIHJlYWRvbmx5IGFjdGlvbiA9IG91dHB1dDxNZXNzYWdlQnViYmxlQWN0aW9uPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zT3BlbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01lc3NhZ2VCdWJibGUnLCBNRVNTQUdFX0JVQkJMRV9JMThOKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSB0aW1lID0gY29tcHV0ZWQoKCkgPT4gZm9ybWF0Q2xvY2tUaW1lKHRoaXMubXNnKCkuY3JlYXRlZEF0LCB0aGlzLmxvY2FsZSgpKSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluaXRpYWxzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLm1zZygpLnNlbmRlck5hbWU/LnRyaW0oKSA/PyAnJztcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7XG4gICAgY29uc3QgcGFydHMgPSBuYW1lLnNwbGl0KC9cXHMrLyk7XG4gICAgcmV0dXJuIChwYXJ0c1swXVswXSArIChwYXJ0c1sxXT8uWzBdID8/ICcnKSkudG9VcHBlckNhc2UoKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGltYWdlQXR0YWNobWVudHMgPSBjb21wdXRlZCgoKSA9PlxuICAgICh0aGlzLm1zZygpLmF0dGFjaG1lbnRzID8/IFtdKS5maWx0ZXIoYSA9PiBhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXVkaW9BdHRhY2htZW50cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMubXNnKCkuYXR0YWNobWVudHMgPz8gW10pLmZpbHRlcihhID0+IGEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2F1ZGlvLycpKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmaWxlQXR0YWNobWVudHMgPSBjb21wdXRlZCgoKSA9PlxuICAgICh0aGlzLm1zZygpLmF0dGFjaG1lbnRzID8/IFtdKS5maWx0ZXIoYSA9PiAhYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykgJiYgIWEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2F1ZGlvLycpKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGF0dXNJY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5tc2coKS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3NlbmRpbmcnOlxuICAgICAgICByZXR1cm4gJ3RpbWUtb3V0bGluZSc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJ2FsZXJ0LWNpcmNsZSc7XG4gICAgICBjYXNlICdkZWxpdmVyZWQnOlxuICAgICAgY2FzZSAncmVhZCc6XG4gICAgICAgIHJldHVybiAnY2hlY2ttYXJrLWRvbmUnO1xuICAgICAgY2FzZSAnc2VudCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NoZWNrbWFyayc7XG4gICAgfVxuICB9KTtcblxuICBwcm90ZWN0ZWQgdG9nZ2xlQWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tc2coKS5pc0RlbGV0ZWQpIHJldHVybjtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnVwZGF0ZSh2ID0+ICF2KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0KHR5cGU6IE1lc3NhZ2VCdWJibGVBY3Rpb25bJ3R5cGUnXSwgdG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IHR5cGUsIG1zZ0lkOiB0aGlzLm1zZygpLm1zZ0lkLCB0b2tlbiB9KTtcbiAgfVxuXG4gIC8qKiBEaWFnbsOzc3RpY286IGVsIG5hdmVnYWRvciBubyBwdWRvIHJlcHJvZHVjaXIgZWwgYXVkaW8gcmVjaWJpZG8uICovXG4gIHByb3RlY3RlZCBvbkF1ZGlvRXJyb3IoYXR0OiB7IHVybDogc3RyaW5nOyBtaW1lVHlwZT86IHN0cmluZyB9LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQXVkaW9FbGVtZW50O1xuICAgIGNvbnN0IGNvZGVzOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0geyAxOiAnQUJPUlRFRCcsIDI6ICdORVRXT1JLJywgMzogJ0RFQ09ERScsIDQ6ICdTUkNfTk9UX1NVUFBPUlRFRCcgfTtcbiAgICBjb25zdCBjYW5QbGF5ID0gYXR0Lm1pbWVUeXBlID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKS5jYW5QbGF5VHlwZShhdHQubWltZVR5cGUpIDogJyc7XG4gICAgY29uc29sZS5lcnJvcignW01lc3NhZ2VCdWJibGVdIGF1ZGlvIHBsYXkgZXJyb3InLCB7XG4gICAgICBtaW1lVHlwZTogYXR0Lm1pbWVUeXBlLFxuICAgICAgdXJsOiBhdHQudXJsLnNsaWNlKDAsIDgwKSxcbiAgICAgIGNvZGU6IGVsLmVycm9yPy5jb2RlLFxuICAgICAgcmVhc29uOiBlbC5lcnJvciA/IGNvZGVzW2VsLmVycm9yLmNvZGVdIDogJ3Vua25vd24nLFxuICAgICAgY2FuUGxheVRoaXNUeXBlOiBjYW5QbGF5LFxuICAgIH0pO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01lc3NhZ2VCdWJibGUnKTtcbiAgfVxufVxuIl19
@@ -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 = '4.0.240';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yNDAnO1xuIl19
5
+ export const VERSION = '4.0.242';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yNDInO1xuIl19