valtech-components 4.0.243 → 4.0.244

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.
@@ -3,6 +3,7 @@ import { CommonModule } from '@angular/common';
3
3
  import { IonIcon } from '@ionic/angular/standalone';
4
4
  import { addIcons } from 'ionicons';
5
5
  import { addOutline, checkmarkOutline, closeOutline, documentOutline, micOutline, arrowUpOutline, trashOutline, } from 'ionicons/icons';
6
+ import fixWebmDuration from 'fix-webm-duration';
6
7
  import { I18nService } from '../../../services/i18n';
7
8
  import { ModalService } from '../../../services/modal/modal.service';
8
9
  import { MediaViewerModalComponent } from '../../organisms/media-viewer-modal/media-viewer-modal.component';
@@ -220,9 +221,21 @@ export class ChatComposerComponent {
220
221
  this.cleanupRecording();
221
222
  return;
222
223
  }
223
- rec.onstop = () => {
224
+ rec.onstop = async () => {
224
225
  const type = rec.mimeType || 'audio/webm';
225
- const blob = new Blob(this.recChunks, { type });
226
+ const durationMs = this.recSeconds() * 1000;
227
+ let blob = new Blob(this.recChunks, { type });
228
+ // MediaRecorder escribe WebM SIN el header de duración (Segment/Duration) →
229
+ // el <audio> lo rechaza con SRC_NOT_SUPPORTED aunque el codec esté soportado.
230
+ // fix-webm-duration parchea el header con la duración real → reproducible.
231
+ if (type.includes('webm') && blob.size > 0) {
232
+ try {
233
+ blob = await fixWebmDuration(blob, durationMs, { logger: false });
234
+ }
235
+ catch (err) {
236
+ console.warn('[ChatComposer] fixWebmDuration falló, se usa el blob crudo', err);
237
+ }
238
+ }
226
239
  const ext = type.includes('mp4') ? 'm4a' : 'webm';
227
240
  const file = new File([blob], `audio-${this.recSeconds()}s.${ext}`, { type });
228
241
  console.log('[ChatComposer] audio recorded', {
@@ -530,4 +543,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
530
543
  </div>
531
544
  `, 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:72px;height:72px;border-radius:12px;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));cursor:pointer}.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:8px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-radius:26px;padding:12px 16px}.editable{min-height:40px;max-height:180px;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"] }]
532
545
  }], ctorParameters: () => [] });
533
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb21wb3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoYXQtY29tcG9zZXIvY2hhdC1jb21wb3Nlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDOztBQUU1RyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7QUFFcEgsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixFQUFFLEVBQUU7UUFDRixXQUFXLEVBQUUsb0JBQW9CO1FBQ2pDLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLGdCQUFnQjtRQUN2QixJQUFJLEVBQUUsT0FBTztRQUNiLFVBQVUsRUFBRSxnQkFBZ0I7UUFDNUIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFLFFBQVE7S0FDakI7SUFDRCxFQUFFLEVBQUU7UUFDRixXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLElBQUksRUFBRSxNQUFNO1FBQ1osTUFBTSxFQUFFLFFBQVE7UUFDaEIsS0FBSyxFQUFFLGVBQWU7UUFDdEIsSUFBSSxFQUFFLE1BQU07UUFDWixVQUFVLEVBQUUsYUFBYTtRQUN6QixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsUUFBUTtLQUNqQjtDQUNGLENBQUM7QUFpQkY7Ozs7Ozs7Ozs7O0dBV0c7QUFrVkgsTUFBTSxPQUFPLHFCQUFxQjtJQXVDaEM7UUF0Q1EsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTVCLGdCQUFXLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNoQyxlQUFVLEdBQUcsS0FBSyxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUNoRCxlQUFVLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFL0IsU0FBSSxHQUFHLE1BQU0sRUFBeUIsQ0FBQztRQUN2QyxXQUFNLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFFckIsZ0JBQVcsR0FBRyxTQUFTLENBQTZCLFVBQVUsQ0FBQyxDQUFDO1FBRTlELFNBQUksR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEIsWUFBTyxHQUFHLE1BQU0sQ0FBc0IsRUFBRSxDQUFDLENBQUM7UUFDckQsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUV0QixzQ0FBc0M7UUFDbkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBR2hDLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFHWixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDOUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSyxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQU1SLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7UUFFZ0Isb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBWkQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBYUQsMkRBQTJEO0lBQ2pELFFBQVE7UUFDaEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsQ0FBQztRQUM3QyxxRkFBcUY7UUFDckYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVTLFNBQVMsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRCxvRUFBb0U7SUFDMUQsT0FBTyxDQUFDLEtBQXFCO1FBQ3JDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQix1Q0FBdUM7UUFDdkMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixJQUFJLElBQUk7b0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUVELG9FQUFvRTtRQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRVMsTUFBTTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQUUsT0FBTztRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakMsSUFBSSxHQUFHLENBQUMsR0FBRztnQkFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDN0MsSUFBSSxFQUFFO1lBQUUsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxLQUFZO1FBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBVTtRQUMzQixNQUFNLElBQUksR0FBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLE9BQU87Z0JBQ1QsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFUyxhQUFhLENBQUMsRUFBVTtRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUssRUFBRSxHQUFHO2dCQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNkVBQTZFO0lBQ25FLGNBQWMsQ0FBQyxHQUFzQjtRQUM3QyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ25CLFNBQVMsRUFBRSx5QkFBeUI7WUFDcEMsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtTQUMvRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCw2RUFBNkU7SUFFckUsYUFBYTtRQUNuQixNQUFNLFVBQVUsR0FBRyxDQUFDLHdCQUF3QixFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RSxNQUFNLEVBQUUsR0FBSSxNQUE4RCxDQUFDLGFBQWEsQ0FBQztRQUN6RixJQUFJLENBQUMsRUFBRSxFQUFFLGVBQWU7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFUyxLQUFLLENBQUMsY0FBYztRQUM1QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFlBQVksSUFBSSxDQUFDLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFO2dCQUM1QyxNQUFNLEVBQUUsUUFBUSxJQUFJLFdBQVc7Z0JBQy9CLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUTthQUN6QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO29CQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELG1GQUFtRjtJQUN6RSxlQUFlO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFDRCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNoQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQztZQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFO2dCQUMzQyxJQUFJO2dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO2dCQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUN0QyxDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztRQUNGLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDMUIsSUFBSSxHQUFHO1lBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUM7WUFDSCxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCx3RUFBd0U7SUFDOUQsWUFBWSxDQUFDLEtBQWEsRUFBRSxJQUFVLEVBQUUsS0FBWTtRQUM1RCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUM1QyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxHQUEyQjtZQUNwQyxDQUFDLEVBQUUsU0FBUztZQUNaLENBQUMsRUFBRSxTQUFTO1lBQ1osQ0FBQyxFQUFFLFFBQVE7WUFDWCxDQUFDLEVBQUUsbUJBQW1CO1NBQ3ZCLENBQUM7UUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFO1lBQy9DLEtBQUs7WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ25CLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSTtZQUNmLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGFBQWEsQ0FBQyxLQUFhLEVBQUUsSUFBVSxFQUFFLEtBQVk7UUFDN0QsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsRUFBRTtZQUNqRCxLQUFLO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ25CLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUTtTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUZBQXVGO0lBQy9FLE9BQU8sQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakMsSUFBSSxHQUFHLENBQUMsR0FBRztnQkFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELENBQUMsQ0FBQyxHQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0E1UlUscUJBQXFCO21HQUFyQixxQkFBcUIsc2tDQTdVdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkdULHNzSEE1R1MsWUFBWSwrQkFBRSxPQUFPOzs0RkE4VXBCLHFCQUFxQjtrQkFqVmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkdUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhZGRPdXRsaW5lLFxuICBjaGVja21hcmtPdXRsaW5lLFxuICBjbG9zZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgbWljT3V0bGluZSxcbiAgYXJyb3dVcE91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTWVzc2FnZVJlcGx5VG8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGF0L3R5cGVzJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVkaWFWaWV3ZXJNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9tZWRpYS12aWV3ZXItbW9kYWwvbWVkaWEtdmlld2VyLW1vZGFsLmNvbXBvbmVudCc7XG5cbmFkZEljb25zKHsgYWRkT3V0bGluZSwgY2hlY2ttYXJrT3V0bGluZSwgY2xvc2VPdXRsaW5lLCBkb2N1bWVudE91dGxpbmUsIG1pY091dGxpbmUsIGFycm93VXBPdXRsaW5lLCB0cmFzaE91dGxpbmUgfSk7XG5cbmNvbnN0IENIQVRfQ09NUE9TRVJfSTE4TiA9IHtcbiAgZXM6IHtcbiAgICBwbGFjZWhvbGRlcjogJ0VzY3JpYmUgdW4gbWVuc2FqZScsXG4gICAgc2VuZDogJ0VudmlhcicsXG4gICAgYXR0YWNoOiAnQWRqdW50YXInLFxuICAgIHZvaWNlOiAnTWVuc2FqZSBkZSB2b3onLFxuICAgIGRvbmU6ICdMaXN0bycsXG4gICAgcmVwbHlpbmdUbzogJ1Jlc3BvbmRpZW5kbyBhJyxcbiAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgcmVtb3ZlOiAnUXVpdGFyJyxcbiAgfSxcbiAgZW46IHtcbiAgICBwbGFjZWhvbGRlcjogJ1dyaXRlIGEgbWVzc2FnZScsXG4gICAgc2VuZDogJ1NlbmQnLFxuICAgIGF0dGFjaDogJ0F0dGFjaCcsXG4gICAgdm9pY2U6ICdWb2ljZSBtZXNzYWdlJyxcbiAgICBkb25lOiAnRG9uZScsXG4gICAgcmVwbHlpbmdUbzogJ1JlcGx5aW5nIHRvJyxcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICAgIHJlbW92ZTogJ1JlbW92ZScsXG4gIH0sXG59O1xuXG50eXBlIFBlbmRpbmdLaW5kID0gJ2ltYWdlJyB8ICdhdWRpbycgfCAnZmlsZSc7XG5cbmludGVyZmFjZSBQZW5kaW5nQXR0YWNobWVudCB7XG4gIGlkOiBudW1iZXI7XG4gIGZpbGU6IEZpbGU7XG4gIHVybD86IHN0cmluZztcbiAga2luZDogUGVuZGluZ0tpbmQ7XG59XG5cbi8qKiBFdmVudG8gZGUgZW52w61vOiB0ZXh0byAoY2FwdGlvbikgKyBhZGp1bnRvcyBzdGFnZWQuIGZpbGVzIHZhY8OtbyA9PiBzb2xvIHRleHRvLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29tcG9zZXJTZW5kRXZlbnQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGZpbGVzOiBGaWxlW107XG59XG5cbi8qKlxuICogdmFsLWNoYXQtY29tcG9zZXIg4oCUIGJhcnJhIGRlIHJlZGFjY2nDs24gZXN0aWxvIE5vdGlvbi9DbGF1ZGUgKGZ1bGwgY3VzdG9tKS5cbiAqXG4gKiBFbCBlZGl0b3IgZXMgdW4gYGNvbnRlbnRlZGl0YWJsZWAgKE5PIGlvbi10ZXh0YXJlYSk6IGNyZWNlIGhhc3RhIHVuIG1heC1oZWlnaHQsXG4gKiBzb3BvcnRhIHBlZ2FyIHRleHRvIHBsYW5vIGUgaW3DoWdlbmVzIGRlbCBwb3J0YXBhcGVsZXMsIEVudGVyIGVudsOtYSAvIFNoaWZ0K0VudGVyXG4gKiBzYWx0YSBsw61uZWEuIERlYmFqbywgdW5hIGZpbGEgZGUgYWNjaW9uZXMgcHJvcGlhczogYWRqdW50YXIgKCspLCBtaWMvZW52aWFyLlxuICogTG9zIGFkanVudG9zIChib3TDs24gLyBwZWdhciAvIGF1ZGlvIGdyYWJhZG8pIHNlIGFjdW11bGFuIGNvbW8gbWluaWF0dXJhcyBkZVxuICogUFJFVklFVyB5IHNlIG1hbmRhbiBlbiBVTiBzb2xvIGV2ZW50byBgc2VuZCB7dGV4dCwgZmlsZXN9YCAoY2FwdGlvbiArIGFkanVudG9zKS5cbiAqXG4gKiBQZW5zYWRvIHBhcmEgdml2aXIgZW4gdW4gY29udGVuZWRvciBmaWpvIGFsIGZvbmRvIGRlbCB2aWV3cG9ydCAoZWwgY29uc3VtZXJcbiAqIGFuY2xhIGxhIHBvc2ljacOzbikuIE5vIGluY2x1eWUgZW1vamkgcGlja2VyIChlbCB0ZWNsYWRvIGRlbCBzaXN0ZW1hIGxvIHRyYWUpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hhdC1jb21wb3NlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjb21wb3NlclwiPlxuICAgICAgQGlmIChyZXBseWluZ1RvKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcGx5LWJhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXBseS1jb250ZW50XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyByZXBseWluZ1RvKCkhLnNlbmRlck5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyByZXBseWluZ1RvKCkhLmJvZHkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjYW5jZWwnKVwiIChjbGljayk9XCJjYW5jZWxSZXBseS5lbWl0KClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKHJlY29yZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWMtYmFyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuIGRhbmdlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2FuY2VsJylcIiAoY2xpY2spPVwiY2FuY2VsUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWMtZG90XCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjLXRpbWVcIj57eyByZWNUaW1lTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYy1zcGFjZXJcIj48L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlbmQtYnRuXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkb25lJylcIiAoY2xpY2spPVwiZmluaXNoUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICAgICAgICBAaWYgKHBlbmRpbmcoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVuZGluZy1yb3dcIj5cbiAgICAgICAgICAgICAgQGZvciAoYXR0IG9mIHBlbmRpbmcoKTsgdHJhY2sgYXR0LmlkKSB7XG4gICAgICAgICAgICAgICAgQGlmIChhdHQua2luZCA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1ZGlvLWNoaXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF1ZGlvXG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkPVwibWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYXR0LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uQXVkaW9FcnJvcigncHJldmlldycsIGF0dC5maWxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAobG9hZGVkbWV0YWRhdGEpPVwib25BdWRpb0xvYWRlZCgncHJldmlldycsIGF0dC5maWxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXVkaW8+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aHVtYi1yZW1vdmUgaW5saW5lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdyZW1vdmUnKVwiIChjbGljayk9XCJyZW1vdmVQZW5kaW5nKGF0dC5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRodW1iXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbGVdPVwiYXR0LmtpbmQgPT09ICdmaWxlJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3QXR0YWNobWVudChhdHQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInZpZXdBdHRhY2htZW50KGF0dClcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGF0dC5raW5kID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5maWxlLm5hbWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvY3VtZW50LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh1bWItbmFtZVwiPnt7IGF0dC5maWxlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGh1bWItcmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlbW92ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVQZW5kaW5nKGF0dC5pZClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICNlZGl0YWJsZVxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0YWJsZVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZW1wdHldPVwiIWJvZHkoKVwiXG4gICAgICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgICAgICAgIGFyaWEtbXVsdGlsaW5lPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyVGV4dCgpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGxhY2Vob2xkZXJUZXh0KClcIlxuICAgICAgICAgICAgKGlucHV0KT1cInN5bmNCb2R5KClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9ucy1zcGFjZXJcIj48L3NwYW4+XG4gICAgICAgICAgICBAaWYgKHNob3dBdHRhY2goKSkge1xuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpY29uLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnYXR0YWNoJylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBoaWRkZW4gKGNoYW5nZSk9XCJvbkZpbGUoJGV2ZW50KVwiIGFjY2VwdD1cImltYWdlLyosYXBwbGljYXRpb24vcGRmXCIgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2hvd01pYygpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ0biBtaWNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3ZvaWNlJylcIiAoY2xpY2spPVwic3RhcnRSZWNvcmRpbmcoKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWljLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY2FuU2VuZCgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZW5kLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnc2VuZCcpXCIgKGNsaWNrKT1cIm9uU2VuZCgpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy11cC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLmNvbXBvc2VyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHBhZGRpbmc6IDhweCAxMHB4IGNhbGMoOHB4ICsgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1iYXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEpKTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5wZW5kaW5nLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIHBhZGRpbmc6IDJweCA0cHg7XG4gICAgICB9XG4gICAgICAudGh1bWIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiA3MnB4O1xuICAgICAgICBoZWlnaHQ6IDcycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEpKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgICAgLnRodW1iIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLnRodW1iLmZpbGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgIH1cbiAgICAgIC50aHVtYi1uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjU2MjVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAudGh1bWItcmVtb3ZlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDJweDtcbiAgICAgICAgcmlnaHQ6IDJweDtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41NSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cbiAgICAgIC8qIFNoZWxsIGVzdGlsbyBOb3Rpb246IGVkaXRhYmxlIGFycmliYSwgZmlsYSBkZSBhY2Npb25lcyBhYmFqby4gKi9cbiAgICAgIC5zaGVsbCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjZweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgfVxuICAgICAgLmVkaXRhYmxlIHtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcbiAgICAgICAgbWF4LWhlaWdodDogMTgwcHg7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7XG4gICAgICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xuICAgICAgfVxuICAgICAgLmVkaXRhYmxlLmlzLWVtcHR5OjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtcGxhY2Vob2xkZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zLXNwYWNlciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgICAuaWNvbi1idG4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICB9XG4gICAgICAuaWNvbi1idG46aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgfVxuICAgICAgLnNlbmQtYnRuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xuICAgICAgfVxuICAgICAgLnNlbmQtYnRuOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Mik7XG4gICAgICB9XG4gICAgICAuaWNvbi1idG4uZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuICAgICAgLmF1ZGlvLWNoaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTEwMCwgcmdiYSgxMjcsIDEyNywgMTI3LCAwLjEpKTtcbiAgICAgIH1cbiAgICAgIC5hdWRpby1jaGlwIGF1ZGlvIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAudGh1bWItcmVtb3ZlLmlubGluZSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5yZWMtYmFyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgIH1cbiAgICAgIC5yZWMtZG90IHtcbiAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgYW5pbWF0aW9uOiByZWMtcHVsc2UgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cbiAgICAgIC5yZWMtdGltZSB7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgfVxuICAgICAgLnJlYy1zcGFjZXIge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuICAgICAgQGtleWZyYW1lcyByZWMtcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoYXRDb21wb3NlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgbW9kYWwgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcblxuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWF4TGVuZ3RoID0gaW5wdXQ8bnVtYmVyPig0MDAwKTtcbiAgcmVhZG9ubHkgcmVwbHlpbmdUbyA9IGlucHV0PE1lc3NhZ2VSZXBseVRvIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHNob3dBdHRhY2ggPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd01pYyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHNlbmQgPSBvdXRwdXQ8Q2hhdENvbXBvc2VyU2VuZEV2ZW50PigpO1xuICByZWFkb25seSB0eXBpbmcgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgdm9pY2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgY2FuY2VsUmVwbHkgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRhYmxlUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignZWRpdGFibGUnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYm9keSA9IHNpZ25hbCgnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwZW5kaW5nID0gc2lnbmFsPFBlbmRpbmdBdHRhY2htZW50W10+KFtdKTtcbiAgcHJpdmF0ZSBwZW5kaW5nSWQgPSAwO1xuXG4gIC8vIEdyYWJhY2nDs24gZGUgYXVkaW8gKE1lZGlhUmVjb3JkZXIpLlxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjb3JkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWNTZWNvbmRzID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHJlY29yZGVyPzogTWVkaWFSZWNvcmRlcjtcbiAgcHJpdmF0ZSByZWNTdHJlYW0/OiBNZWRpYVN0cmVhbTtcbiAgcHJpdmF0ZSByZWNDaHVua3M6IEJsb2JbXSA9IFtdO1xuICBwcml2YXRlIHJlY1RpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByZWNUaW1lTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcyA9IHRoaXMucmVjU2Vjb25kcygpO1xuICAgIGNvbnN0IG1tID0gU3RyaW5nKE1hdGguZmxvb3IocyAvIDYwKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBzcyA9IFN0cmluZyhzICUgNjApLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgcmV0dXJuIGAke21tfToke3NzfWA7XG4gIH0pO1xuXG4gIHByaXZhdGUgbGFzdFR5cGluZ0VtaXQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdDaGF0Q29tcG9zZXInLCBDSEFUX0NPTVBPU0VSX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhblNlbmQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHQgPSB0aGlzLmJvZHkoKS50cmltKCk7XG4gICAgcmV0dXJuICh0Lmxlbmd0aCA+IDAgJiYgdC5sZW5ndGggPD0gdGhpcy5tYXhMZW5ndGgoKSkgfHwgdGhpcy5wZW5kaW5nKCkubGVuZ3RoID4gMDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsYWNlaG9sZGVyVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyKCkgfHwgdGhpcy5pMThuLnQoJ3BsYWNlaG9sZGVyJywgJ0NoYXRDb21wb3NlcicpO1xuICB9KTtcblxuICAvKiogTGVlIGVsIHRleHRvIGRlbCBjb250ZW50ZWRpdGFibGUgYSBsYSBzaWduYWwgYGJvZHlgLiAqL1xuICBwcm90ZWN0ZWQgc3luY0JvZHkoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVkaXRhYmxlUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgLy8gaW5uZXJUZXh0IGNvbnNlcnZhIGxvcyBzYWx0b3MgZGUgbMOtbmVhOyBxdWl0YSBlbCBcXG4gZmluYWwgcXVlIGVsIG5hdmVnYWRvciBhZ3JlZ2EuXG4gICAgY29uc3QgdGV4dCA9IChlbD8uaW5uZXJUZXh0ID8/ICcnKS5yZXBsYWNlKC9cXG4kLywgJycpO1xuICAgIHRoaXMuYm9keS5zZXQodGV4dCk7XG4gICAgdGhpcy5lbWl0VHlwaW5nRGVib3VuY2VkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9uU2VuZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQZWdhcjogdGV4dG8gcGxhbm8gKHNpbiBmb3JtYXRvKSArIGltw6FnZW5lcyBkZWwgcG9ydGFwYXBlbGVzLiAqL1xuICBwcm90ZWN0ZWQgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGRhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhO1xuICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgLy8gSW3DoWdlbmVzIChjYXB0dXJhcyAvIGNvcGlhciBpbWFnZW4pLlxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBBcnJheS5mcm9tKGRhdGEuaXRlbXMpKSB7XG4gICAgICBpZiAoaXRlbS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBpdGVtLmdldEFzRmlsZSgpO1xuICAgICAgICBpZiAoZmlsZSkgdGhpcy5hZGRQZW5kaW5nKGZpbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRleHRvIHBsYW5vIGluc2VydGFkbyBlbiBlbCBjYXJldCAoZXZpdGEgcGVnYXIgSFRNTCBjb24gZXN0aWxvcykuXG4gICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgIGlmICh0ZXh0KSB7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0VGV4dCcsIGZhbHNlLCB0ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5zeW5jQm9keSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2VuZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuU2VuZCgpKSByZXR1cm47XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLnBlbmRpbmcoKS5tYXAocCA9PiBwLmZpbGUpO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLmJvZHkoKS50cmltKCk7XG4gICAgdGhpcy5zZW5kLmVtaXQoeyB0ZXh0LCBmaWxlcyB9KTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMucGVuZGluZygpKSB7XG4gICAgICBpZiAoYXR0LnVybCkgVVJMLnJldm9rZU9iamVjdFVSTChhdHQudXJsKTtcbiAgICB9XG4gICAgdGhpcy5wZW5kaW5nLnNldChbXSk7XG4gICAgdGhpcy5jbGVhckVkaXRhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRWRpdGFibGUoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVkaXRhYmxlUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGVsKSBlbC5pbm5lclRleHQgPSAnJztcbiAgICB0aGlzLmJvZHkuc2V0KCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkZpbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcbiAgICBpZiAoZmlsZSkgdGhpcy5hZGRQZW5kaW5nKGZpbGUpO1xuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gIH1cblxuICBwcml2YXRlIGFkZFBlbmRpbmcoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIGNvbnN0IGtpbmQ6IFBlbmRpbmdLaW5kID0gZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpXG4gICAgICA/ICdpbWFnZSdcbiAgICAgIDogZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpXG4gICAgICAgID8gJ2F1ZGlvJ1xuICAgICAgICA6ICdmaWxlJztcbiAgICBjb25zdCB1cmwgPSBraW5kID09PSAnZmlsZScgPyB1bmRlZmluZWQgOiBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICAgIHRoaXMucGVuZGluZy51cGRhdGUoYXJyID0+IFsuLi5hcnIsIHsgaWQ6IHRoaXMucGVuZGluZ0lkKyssIGZpbGUsIHVybCwga2luZCB9XSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlUGVuZGluZyhpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nLnVwZGF0ZShhcnIgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSBhcnIuZmluZChhID0+IGEuaWQgPT09IGlkKTtcbiAgICAgIGlmIChmb3VuZD8udXJsKSBVUkwucmV2b2tlT2JqZWN0VVJMKGZvdW5kLnVybCk7XG4gICAgICByZXR1cm4gYXJyLmZpbHRlcihhID0+IGEuaWQgIT09IGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBBYnJlIGVsIGFkanVudG8gc3RhZ2VkIGVuIGVsIHZpc29yIGRlIG1lZGlvcyAoaW1hZ2VuIGZ1bGwgLyBkZXNjYXJnYSkuICovXG4gIHByb3RlY3RlZCB2aWV3QXR0YWNobWVudChhdHQ6IFBlbmRpbmdBdHRhY2htZW50KTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLm1vZGFsLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBNZWRpYVZpZXdlck1vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHsgdXJsOiBhdHQudXJsLCBuYW1lOiBhdHQuZmlsZS5uYW1lLCBtaW1lVHlwZTogYXR0LmZpbGUudHlwZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VHlwaW5nRGVib3VuY2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGlmIChub3cgLSB0aGlzLmxhc3RUeXBpbmdFbWl0ID4gMjAwMCkge1xuICAgICAgdGhpcy5sYXN0VHlwaW5nRW1pdCA9IG5vdztcbiAgICAgIHRoaXMudHlwaW5nLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICAvLyDilIDilIDilIAgR3JhYmFjacOzbiBkZSBhdWRpbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBwcml2YXRlIHBpY2tBdWRpb01pbWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjYW5kaWRhdGVzID0gWydhdWRpby93ZWJtO2NvZGVjcz1vcHVzJywgJ2F1ZGlvL3dlYm0nLCAnYXVkaW8vbXA0J107XG4gICAgY29uc3QgTVIgPSAod2luZG93IGFzIHVua25vd24gYXMgeyBNZWRpYVJlY29yZGVyPzogdHlwZW9mIE1lZGlhUmVjb3JkZXIgfSkuTWVkaWFSZWNvcmRlcjtcbiAgICBpZiAoIU1SPy5pc1R5cGVTdXBwb3J0ZWQpIHJldHVybiAnJztcbiAgICByZXR1cm4gY2FuZGlkYXRlcy5maW5kKGMgPT4gTVIuaXNUeXBlU3VwcG9ydGVkKGMpKSA/PyAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzdGFydFJlY29yZGluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5yZWNvcmRpbmcoKSkgcmV0dXJuO1xuICAgIGlmICghbmF2aWdhdG9yLm1lZGlhRGV2aWNlcz8uZ2V0VXNlck1lZGlhIHx8ICEoJ01lZGlhUmVjb3JkZXInIGluIHdpbmRvdykpIHtcbiAgICAgIHRoaXMudm9pY2UuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzogdHJ1ZSB9KTtcbiAgICAgIHRoaXMucmVjU3RyZWFtID0gc3RyZWFtO1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0aGlzLnBpY2tBdWRpb01pbWUoKTtcbiAgICAgIHRoaXMucmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIG1pbWVUeXBlID8geyBtaW1lVHlwZSB9IDogdW5kZWZpbmVkKTtcbiAgICAgIGNvbnNvbGUubG9nKCdbQ2hhdENvbXBvc2VyXSByZWNvcmRpbmcgc3RhcnQnLCB7XG4gICAgICAgIHBpY2tlZDogbWltZVR5cGUgfHwgJyhkZWZhdWx0KScsXG4gICAgICAgIHJlY29yZGVyTWltZVR5cGU6IHRoaXMucmVjb3JkZXIubWltZVR5cGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVjQ2h1bmtzID0gW107XG4gICAgICB0aGlzLnJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IGUgPT4ge1xuICAgICAgICBpZiAoZS5kYXRhLnNpemUgPiAwKSB0aGlzLnJlY0NodW5rcy5wdXNoKGUuZGF0YSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5yZWNvcmRlci5zdGFydCgpO1xuICAgICAgdGhpcy5yZWNvcmRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5yZWNTZWNvbmRzLnNldCgwKTtcbiAgICAgIHRoaXMucmVjVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLnJlY1NlY29uZHMudXBkYXRlKHMgPT4gcyArIDEpLCAxMDAwKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQYXJhIGxhIGdyYWJhY2nDs24geSBsYSBzdGFnZWEgY29tbyBhZGp1bnRvIHBlbmRpZW50ZSAoY29uIHByZXZpZXcgZGUgYXVkaW8pLiAqL1xuICBwcm90ZWN0ZWQgZmluaXNoUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlYyA9IHRoaXMucmVjb3JkZXI7XG4gICAgaWYgKCFyZWMpIHtcbiAgICAgIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZWMub25zdG9wID0gKCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHJlYy5taW1lVHlwZSB8fCAnYXVkaW8vd2VibSc7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IodGhpcy5yZWNDaHVua3MsIHsgdHlwZSB9KTtcbiAgICAgIGNvbnN0IGV4dCA9IHR5cGUuaW5jbHVkZXMoJ21wNCcpID8gJ200YScgOiAnd2VibSc7XG4gICAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCBgYXVkaW8tJHt0aGlzLnJlY1NlY29uZHMoKX1zLiR7ZXh0fWAsIHsgdHlwZSB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCdbQ2hhdENvbXBvc2VyXSBhdWRpbyByZWNvcmRlZCcsIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgc2l6ZTogYmxvYi5zaXplLFxuICAgICAgICBjaHVua3M6IHRoaXMucmVjQ2h1bmtzLmxlbmd0aCxcbiAgICAgICAgY2FuUGxheVdlYm06IHRoaXMuY2FuUGxheSgnYXVkaW8vd2VibScpLFxuICAgICAgICBjYW5QbGF5TXA0OiB0aGlzLmNhblBsYXkoJ2F1ZGlvL21wNCcpLFxuICAgICAgfSk7XG4gICAgICBpZiAoYmxvYi5zaXplID4gMCkgdGhpcy5hZGRQZW5kaW5nKGZpbGUpO1xuICAgICAgdGhpcy5jbGVhbnVwUmVjb3JkaW5nKCk7XG4gICAgfTtcbiAgICByZWMuc3RvcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbmNlbFJlY29yZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCByZWMgPSB0aGlzLnJlY29yZGVyO1xuICAgIGlmIChyZWMpIHJlYy5vbnN0b3AgPSAoKSA9PiB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB0cnkge1xuICAgICAgcmVjPy5zdG9wKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9XG4gICAgaWYgKCFyZWMpIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY1RpbWVyKSBjbGVhckludGVydmFsKHRoaXMucmVjVGltZXIpO1xuICAgIHRoaXMucmVjVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWNTdHJlYW0/LmdldFRyYWNrcygpLmZvckVhY2godCA9PiB0LnN0b3AoKSk7XG4gICAgdGhpcy5yZWNTdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWNvcmRlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY0NodW5rcyA9IFtdO1xuICAgIHRoaXMucmVjb3JkaW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZWNTZWNvbmRzLnNldCgwKTtcbiAgfVxuXG4gIC8qKiBEaWFnbsOzc3RpY286IGVsIG5hdmVnYWRvciBubyBwdWRvIHJlcHJvZHVjaXIgZWwgYWRqdW50byBkZSBhdWRpby4gKi9cbiAgcHJvdGVjdGVkIG9uQXVkaW9FcnJvcih3aGVyZTogc3RyaW5nLCBmaWxlOiBGaWxlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQXVkaW9FbGVtZW50O1xuICAgIGNvbnN0IGVyciA9IGVsLmVycm9yO1xuICAgIGNvbnN0IGNvZGVzOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICAgICAgMTogJ0FCT1JURUQnLFxuICAgICAgMjogJ05FVFdPUksnLFxuICAgICAgMzogJ0RFQ09ERScsXG4gICAgICA0OiAnU1JDX05PVF9TVVBQT1JURUQnLFxuICAgIH07XG4gICAgY29uc29sZS5lcnJvcignW0NoYXRDb21wb3Nlcl0gYXVkaW8gcGxheSBlcnJvcicsIHtcbiAgICAgIHdoZXJlLFxuICAgICAgZmlsZVR5cGU6IGZpbGUudHlwZSxcbiAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICBjb2RlOiBlcnI/LmNvZGUsXG4gICAgICByZWFzb246IGVyciA/IGNvZGVzW2Vyci5jb2RlXSA6ICd1bmtub3duJyxcbiAgICAgIG1lc3NhZ2U6IGVycj8ubWVzc2FnZSxcbiAgICAgIGNhblBsYXlUaGlzVHlwZTogdGhpcy5jYW5QbGF5KGZpbGUudHlwZSksXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25BdWRpb0xvYWRlZCh3aGVyZTogc3RyaW5nLCBmaWxlOiBGaWxlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQXVkaW9FbGVtZW50O1xuICAgIGNvbnNvbGUubG9nKCdbQ2hhdENvbXBvc2VyXSBhdWRpbyBsb2FkZWRtZXRhZGF0YScsIHtcbiAgICAgIHdoZXJlLFxuICAgICAgZmlsZVR5cGU6IGZpbGUudHlwZSxcbiAgICAgIGR1cmF0aW9uOiBlbC5kdXJhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiDCv0VsIG5hdmVnYWRvciBkZWNsYXJhIHF1ZSBwdWVkZSByZXByb2R1Y2lyIGVzdGUgdGlwbz8gJycgLyAnbWF5YmUnIC8gJ3Byb2JhYmx5Jy4gKi9cbiAgcHJpdmF0ZSBjYW5QbGF5KHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhdWRpbycpLmNhblBsYXlUeXBlKHR5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwUmVjb3JkaW5nKCk7XG4gICAgZm9yIChjb25zdCBhdHQgb2YgdGhpcy5wZW5kaW5nKCkpIHtcbiAgICAgIGlmIChhdHQudXJsKSBVUkwucmV2b2tlT2JqZWN0VVJMKGF0dC51cmwpO1xuICAgIH1cbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdDaGF0Q29tcG9zZXInKTtcbiAgfVxufVxuIl19
546
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb21wb3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoYXQtY29tcG9zZXIvY2hhdC1jb21wb3Nlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDOztBQUU1RyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7QUFFcEgsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixFQUFFLEVBQUU7UUFDRixXQUFXLEVBQUUsb0JBQW9CO1FBQ2pDLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFD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QU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakMsSUFBSSxHQUFHLENBQUMsR0FBRztnQkFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELENBQUMsQ0FBQyxHQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0F6U1UscUJBQXFCO21HQUFyQixxQkFBcUIsc2tDQTdVdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkdULHNzSEE1R1MsWUFBWSwrQkFBRSxPQUFPOzs0RkE4VXBCLHFCQUFxQjtrQkFqVmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkdUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhZGRPdXRsaW5lLFxuICBjaGVja21hcmtPdXRsaW5lLFxuICBjbG9zZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgbWljT3V0bGluZSxcbiAgYXJyb3dVcE91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgZml4V2VibUR1cmF0aW9uIGZyb20gJ2ZpeC13ZWJtLWR1cmF0aW9uJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1lc3NhZ2VSZXBseVRvIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hhdC90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IE1lZGlhVmlld2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvbWVkaWEtdmlld2VyLW1vZGFsL21lZGlhLXZpZXdlci1tb2RhbC5jb21wb25lbnQnO1xuXG5hZGRJY29ucyh7IGFkZE91dGxpbmUsIGNoZWNrbWFya091dGxpbmUsIGNsb3NlT3V0bGluZSwgZG9jdW1lbnRPdXRsaW5lLCBtaWNPdXRsaW5lLCBhcnJvd1VwT3V0bGluZSwgdHJhc2hPdXRsaW5lIH0pO1xuXG5jb25zdCBDSEFUX0NPTVBPU0VSX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdFc2NyaWJlIHVuIG1lbnNhamUnLFxuICAgIHNlbmQ6ICdFbnZpYXInLFxuICAgIGF0dGFjaDogJ0FkanVudGFyJyxcbiAgICB2b2ljZTogJ01lbnNhamUgZGUgdm96JyxcbiAgICBkb25lOiAnTGlzdG8nLFxuICAgIHJlcGx5aW5nVG86ICdSZXNwb25kaWVuZG8gYScsXG4gICAgY2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgIHJlbW92ZTogJ1F1aXRhcicsXG4gIH0sXG4gIGVuOiB7XG4gICAgcGxhY2Vob2xkZXI6ICdXcml0ZSBhIG1lc3NhZ2UnLFxuICAgIHNlbmQ6ICdTZW5kJyxcbiAgICBhdHRhY2g6ICdBdHRhY2gnLFxuICAgIHZvaWNlOiAnVm9pY2UgbWVzc2FnZScsXG4gICAgZG9uZTogJ0RvbmUnLFxuICAgIHJlcGx5aW5nVG86ICdSZXBseWluZyB0bycsXG4gICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICByZW1vdmU6ICdSZW1vdmUnLFxuICB9LFxufTtcblxudHlwZSBQZW5kaW5nS2luZCA9ICdpbWFnZScgfCAnYXVkaW8nIHwgJ2ZpbGUnO1xuXG5pbnRlcmZhY2UgUGVuZGluZ0F0dGFjaG1lbnQge1xuICBpZDogbnVtYmVyO1xuICBmaWxlOiBGaWxlO1xuICB1cmw/OiBzdHJpbmc7XG4gIGtpbmQ6IFBlbmRpbmdLaW5kO1xufVxuXG4vKiogRXZlbnRvIGRlIGVudsOtbzogdGV4dG8gKGNhcHRpb24pICsgYWRqdW50b3Mgc3RhZ2VkLiBmaWxlcyB2YWPDrW8gPT4gc29sbyB0ZXh0by4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdENvbXBvc2VyU2VuZEV2ZW50IHtcbiAgdGV4dDogc3RyaW5nO1xuICBmaWxlczogRmlsZVtdO1xufVxuXG4vKipcbiAqIHZhbC1jaGF0LWNvbXBvc2VyIOKAlCBiYXJyYSBkZSByZWRhY2Npw7NuIGVzdGlsbyBOb3Rpb24vQ2xhdWRlIChmdWxsIGN1c3RvbSkuXG4gKlxuICogRWwgZWRpdG9yIGVzIHVuIGBjb250ZW50ZWRpdGFibGVgIChOTyBpb24tdGV4dGFyZWEpOiBjcmVjZSBoYXN0YSB1biBtYXgtaGVpZ2h0LFxuICogc29wb3J0YSBwZWdhciB0ZXh0byBwbGFubyBlIGltw6FnZW5lcyBkZWwgcG9ydGFwYXBlbGVzLCBFbnRlciBlbnbDrWEgLyBTaGlmdCtFbnRlclxuICogc2FsdGEgbMOtbmVhLiBEZWJham8sIHVuYSBmaWxhIGRlIGFjY2lvbmVzIHByb3BpYXM6IGFkanVudGFyICgrKSwgbWljL2Vudmlhci5cbiAqIExvcyBhZGp1bnRvcyAoYm90w7NuIC8gcGVnYXIgLyBhdWRpbyBncmFiYWRvKSBzZSBhY3VtdWxhbiBjb21vIG1pbmlhdHVyYXMgZGVcbiAqIFBSRVZJRVcgeSBzZSBtYW5kYW4gZW4gVU4gc29sbyBldmVudG8gYHNlbmQge3RleHQsIGZpbGVzfWAgKGNhcHRpb24gKyBhZGp1bnRvcykuXG4gKlxuICogUGVuc2FkbyBwYXJhIHZpdmlyIGVuIHVuIGNvbnRlbmVkb3IgZmlqbyBhbCBmb25kbyBkZWwgdmlld3BvcnQgKGVsIGNvbnN1bWVyXG4gKiBhbmNsYSBsYSBwb3NpY2nDs24pLiBObyBpbmNsdXllIGVtb2ppIHBpY2tlciAoZWwgdGVjbGFkbyBkZWwgc2lzdGVtYSBsbyB0cmFlKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYXQtY29tcG9zZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY29tcG9zZXJcIj5cbiAgICAgIEBpZiAocmVwbHlpbmdUbygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBseS1iYXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXBseS1uYW1lXCI+e3sgcmVwbHlpbmdUbygpIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXBseS1ib2R5XCI+e3sgcmVwbHlpbmdUbygpIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2FuY2VsJylcIiAoY2xpY2spPVwiY2FuY2VsUmVwbHkuZW1pdCgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZWNvcmRpbmcoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjLWJhclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ0biBkYW5nZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NhbmNlbCcpXCIgKGNsaWNrKT1cImNhbmNlbFJlY29yZGluZygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjLWRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYy10aW1lXCI+e3sgcmVjVGltZUxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWMtc3BhY2VyXCI+PC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZW5kLWJ0blwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnZG9uZScpXCIgKGNsaWNrKT1cImZpbmlzaFJlY29yZGluZygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxsXCI+XG4gICAgICAgICAgQGlmIChwZW5kaW5nKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlbmRpbmctcm93XCI+XG4gICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBwZW5kaW5nKCk7IHRyYWNrIGF0dC5pZCkge1xuICAgICAgICAgICAgICAgIEBpZiAoYXR0LmtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdWRpby1jaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhdWRpb1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgcHJlbG9hZD1cIm1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF0dC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkF1ZGlvRXJyb3IoJ3ByZXZpZXcnLCBhdHQuZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGxvYWRlZG1ldGFkYXRhKT1cIm9uQXVkaW9Mb2FkZWQoJ3ByZXZpZXcnLCBhdHQuZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2F1ZGlvPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGh1bWItcmVtb3ZlIGlubGluZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncmVtb3ZlJylcIiAoY2xpY2spPVwicmVtb3ZlUGVuZGluZyhhdHQuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHVtYlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWxlXT1cImF0dC5raW5kID09PSAnZmlsZSdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0F0dGFjaG1lbnQoYXR0KVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ2aWV3QXR0YWNobWVudChhdHQpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhdHQua2luZCA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdHQudXJsXCIgW2FsdF09XCJhdHQuZmlsZS5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRodW1iLW5hbWVcIj57eyBhdHQuZmlsZS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRodW1iLXJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdyZW1vdmUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlUGVuZGluZyhhdHQuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjZWRpdGFibGVcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWVtcHR5XT1cIiFib2R5KClcIlxuICAgICAgICAgICAgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICBhcmlhLW11bHRpbGluZT1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHQoKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYWNlaG9sZGVyVGV4dCgpXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJzeW5jQm9keSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAgID48L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbnMtc3BhY2VyXCI+PC9zcGFuPlxuICAgICAgICAgICAgQGlmIChzaG93QXR0YWNoKCkpIHtcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaWNvbi1idG5cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2F0dGFjaCcpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhZGQtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgaGlkZGVuIChjaGFuZ2UpPVwib25GaWxlKCRldmVudClcIiBhY2NlcHQ9XCJpbWFnZS8qLGFwcGxpY2F0aW9uL3BkZlwiIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dNaWMoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idG4gbWljXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCd2b2ljZScpXCIgKGNsaWNrKT1cInN0YXJ0UmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm1pYy1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGNhblNlbmQoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG5cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3NlbmQnKVwiIChjbGljayk9XCJvblNlbmQoKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctdXAtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5jb21wb3NlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA4cHggMTBweCBjYWxjKDhweCArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICB9XG4gICAgICAucmVwbHktYmFyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICB9XG4gICAgICAucmVwbHktY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAucmVwbHktbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAucmVwbHktYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAucGVuZGluZy1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBwYWRkaW5nOiAycHggNHB4O1xuICAgICAgfVxuICAgICAgLnRodW1iIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogNzJweDtcbiAgICAgICAgaGVpZ2h0OiA3MnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgIC50aHVtYiBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC50aHVtYi5maWxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICB9XG4gICAgICAudGh1bWItbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC41NjI1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgfVxuICAgICAgLnRodW1iLXJlbW92ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAycHg7XG4gICAgICAgIHJpZ2h0OiAycHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNTUpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAvKiBTaGVsbCBlc3RpbG8gTm90aW9uOiBlZGl0YWJsZSBhcnJpYmEsIGZpbGEgZGUgYWNjaW9uZXMgYWJham8uICovXG4gICAgICAuc2hlbGwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI2cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgIH1cbiAgICAgIC5lZGl0YWJsZSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgICAgIG1heC1oZWlnaHQ6IDE4MHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0O1xuICAgICAgICB1c2VyLXNlbGVjdDogdGV4dDtcbiAgICAgIH1cbiAgICAgIC5lZGl0YWJsZS5pcy1lbXB0eTo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogYXR0cihkYXRhLXBsYWNlaG9sZGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICB9XG4gICAgICAuYWN0aW9ucy1zcGFjZXIge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5zZW5kLWJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5zZW5kLWJ0bjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTIpO1xuICAgICAgfVxuICAgICAgLmljb24tYnRuLmRhbmdlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cbiAgICAgIC5hdWRpby1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xKSk7XG4gICAgICB9XG4gICAgICAuYXVkaW8tY2hpcCBhdWRpbyB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLnRodW1iLXJlbW92ZS5pbmxpbmUge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAucmVjLWJhciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICB9XG4gICAgICAucmVjLWRvdCB7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGFuaW1hdGlvbjogcmVjLXB1bHNlIDEuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG4gICAgICAucmVjLXRpbWUge1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWMtc3BhY2VyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgIH1cbiAgICAgIEBrZXlmcmFtZXMgcmVjLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0Q29tcG9zZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IG1heExlbmd0aCA9IGlucHV0PG51bWJlcj4oNDAwMCk7XG4gIHJlYWRvbmx5IHJlcGx5aW5nVG8gPSBpbnB1dDxNZXNzYWdlUmVwbHlUbyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBzaG93QXR0YWNoID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNob3dNaWMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBzZW5kID0gb3V0cHV0PENoYXRDb21wb3NlclNlbmRFdmVudD4oKTtcbiAgcmVhZG9ubHkgdHlwaW5nID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IHZvaWNlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGNhbmNlbFJlcGx5ID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlZGl0YWJsZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ2VkaXRhYmxlJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJvZHkgPSBzaWduYWwoJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGVuZGluZyA9IHNpZ25hbDxQZW5kaW5nQXR0YWNobWVudFtdPihbXSk7XG4gIHByaXZhdGUgcGVuZGluZ0lkID0gMDtcblxuICAvLyBHcmFiYWNpw7NuIGRlIGF1ZGlvIChNZWRpYVJlY29yZGVyKS5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlY29yZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVjU2Vjb25kcyA9IHNpZ25hbCgwKTtcbiAgcHJpdmF0ZSByZWNvcmRlcj86IE1lZGlhUmVjb3JkZXI7XG4gIHByaXZhdGUgcmVjU3RyZWFtPzogTWVkaWFTdHJlYW07XG4gIHByaXZhdGUgcmVjQ2h1bmtzOiBCbG9iW10gPSBbXTtcbiAgcHJpdmF0ZSByZWNUaW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjVGltZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHMgPSB0aGlzLnJlY1NlY29uZHMoKTtcbiAgICBjb25zdCBtbSA9IFN0cmluZyhNYXRoLmZsb29yKHMgLyA2MCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3Qgc3MgPSBTdHJpbmcocyAlIDYwKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIHJldHVybiBgJHttbX06JHtzc31gO1xuICB9KTtcblxuICBwcml2YXRlIGxhc3RUeXBpbmdFbWl0ID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnQ2hhdENvbXBvc2VyJywgQ0hBVF9DT01QT1NFUl9JMThOKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYW5TZW5kID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0ID0gdGhpcy5ib2R5KCkudHJpbSgpO1xuICAgIHJldHVybiAodC5sZW5ndGggPiAwICYmIHQubGVuZ3RoIDw9IHRoaXMubWF4TGVuZ3RoKCkpIHx8IHRoaXMucGVuZGluZygpLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwbGFjZWhvbGRlclRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcigpIHx8IHRoaXMuaTE4bi50KCdwbGFjZWhvbGRlcicsICdDaGF0Q29tcG9zZXInKTtcbiAgfSk7XG5cbiAgLyoqIExlZSBlbCB0ZXh0byBkZWwgY29udGVudGVkaXRhYmxlIGEgbGEgc2lnbmFsIGBib2R5YC4gKi9cbiAgcHJvdGVjdGVkIHN5bmNCb2R5KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lZGl0YWJsZVJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIC8vIGlubmVyVGV4dCBjb25zZXJ2YSBsb3Mgc2FsdG9zIGRlIGzDrW5lYTsgcXVpdGEgZWwgXFxuIGZpbmFsIHF1ZSBlbCBuYXZlZ2Fkb3IgYWdyZWdhLlxuICAgIGNvbnN0IHRleHQgPSAoZWw/LmlubmVyVGV4dCA/PyAnJykucmVwbGFjZSgvXFxuJC8sICcnKTtcbiAgICB0aGlzLmJvZHkuc2V0KHRleHQpO1xuICAgIHRoaXMuZW1pdFR5cGluZ0RlYm91bmNlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5vblNlbmQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUGVnYXI6IHRleHRvIHBsYW5vIChzaW4gZm9ybWF0bykgKyBpbcOhZ2VuZXMgZGVsIHBvcnRhcGFwZWxlcy4gKi9cbiAgcHJvdGVjdGVkIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBkYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YTtcbiAgICBpZiAoIWRhdGEpIHJldHVybjtcblxuICAgIC8vIEltw6FnZW5lcyAoY2FwdHVyYXMgLyBjb3BpYXIgaW1hZ2VuKS5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgQXJyYXkuZnJvbShkYXRhLml0ZW1zKSkge1xuICAgICAgaWYgKGl0ZW0udHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuICAgICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgaWYgKGZpbGUpIHRoaXMuYWRkUGVuZGluZyhmaWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUZXh0byBwbGFubyBpbnNlcnRhZG8gZW4gZWwgY2FyZXQgKGV2aXRhIHBlZ2FyIEhUTUwgY29uIGVzdGlsb3MpLlxuICAgIGNvbnN0IHRleHQgPSBkYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICBpZiAodGV4dCkge1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydFRleHQnLCBmYWxzZSwgdGV4dCk7XG4gICAgfVxuICAgIHRoaXMuc3luY0JvZHkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblNlbmQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhblNlbmQoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5wZW5kaW5nKCkubWFwKHAgPT4gcC5maWxlKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5ib2R5KCkudHJpbSgpO1xuICAgIHRoaXMuc2VuZC5lbWl0KHsgdGV4dCwgZmlsZXMgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnBlbmRpbmcoKSkge1xuICAgICAgaWYgKGF0dC51cmwpIFVSTC5yZXZva2VPYmplY3RVUkwoYXR0LnVybCk7XG4gICAgfVxuICAgIHRoaXMucGVuZGluZy5zZXQoW10pO1xuICAgIHRoaXMuY2xlYXJFZGl0YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVkaXRhYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lZGl0YWJsZVJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChlbCkgZWwuaW5uZXJUZXh0ID0gJyc7XG4gICAgdGhpcy5ib2R5LnNldCgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25GaWxlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzPy5bMF07XG4gICAgaWYgKGZpbGUpIHRoaXMuYWRkUGVuZGluZyhmaWxlKTtcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQZW5kaW5nKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBraW5kOiBQZW5kaW5nS2luZCA9IGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKVxuICAgICAgPyAnaW1hZ2UnXG4gICAgICA6IGZpbGUudHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKVxuICAgICAgICA/ICdhdWRpbydcbiAgICAgICAgOiAnZmlsZSc7XG4gICAgY29uc3QgdXJsID0ga2luZCA9PT0gJ2ZpbGUnID8gdW5kZWZpbmVkIDogVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICB0aGlzLnBlbmRpbmcudXBkYXRlKGFyciA9PiBbLi4uYXJyLCB7IGlkOiB0aGlzLnBlbmRpbmdJZCsrLCBmaWxlLCB1cmwsIGtpbmQgfV0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVBlbmRpbmcoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZy51cGRhdGUoYXJyID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gYXJyLmZpbmQoYSA9PiBhLmlkID09PSBpZCk7XG4gICAgICBpZiAoZm91bmQ/LnVybCkgVVJMLnJldm9rZU9iamVjdFVSTChmb3VuZC51cmwpO1xuICAgICAgcmV0dXJuIGFyci5maWx0ZXIoYSA9PiBhLmlkICE9PSBpZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQWJyZSBlbCBhZGp1bnRvIHN0YWdlZCBlbiBlbCB2aXNvciBkZSBtZWRpb3MgKGltYWdlbiBmdWxsIC8gZGVzY2FyZ2EpLiAqL1xuICBwcm90ZWN0ZWQgdmlld0F0dGFjaG1lbnQoYXR0OiBQZW5kaW5nQXR0YWNobWVudCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbC5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogTWVkaWFWaWV3ZXJNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7IHVybDogYXR0LnVybCwgbmFtZTogYXR0LmZpbGUubmFtZSwgbWltZVR5cGU6IGF0dC5maWxlLnR5cGUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFR5cGluZ0RlYm91bmNlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0VHlwaW5nRW1pdCA+IDIwMDApIHtcbiAgICAgIHRoaXMubGFzdFR5cGluZ0VtaXQgPSBub3c7XG4gICAgICB0aGlzLnR5cGluZy5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8g4pSA4pSA4pSAIEdyYWJhY2nDs24gZGUgYXVkaW8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBwaWNrQXVkaW9NaW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IFsnYXVkaW8vd2VibTtjb2RlY3M9b3B1cycsICdhdWRpby93ZWJtJywgJ2F1ZGlvL21wNCddO1xuICAgIGNvbnN0IE1SID0gKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgTWVkaWFSZWNvcmRlcj86IHR5cGVvZiBNZWRpYVJlY29yZGVyIH0pLk1lZGlhUmVjb3JkZXI7XG4gICAgaWYgKCFNUj8uaXNUeXBlU3VwcG9ydGVkKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZXMuZmluZChjID0+IE1SLmlzVHlwZVN1cHBvcnRlZChjKSkgPz8gJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3RhcnRSZWNvcmRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucmVjb3JkaW5nKCkpIHJldHVybjtcbiAgICBpZiAoIW5hdmlnYXRvci5tZWRpYURldmljZXM/LmdldFVzZXJNZWRpYSB8fCAhKCdNZWRpYVJlY29yZGVyJyBpbiB3aW5kb3cpKSB7XG4gICAgICB0aGlzLnZvaWNlLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7XG4gICAgICB0aGlzLnJlY1N0cmVhbSA9IHN0cmVhbTtcbiAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5waWNrQXVkaW9NaW1lKCk7XG4gICAgICB0aGlzLnJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCBtaW1lVHlwZSA/IHsgbWltZVR5cGUgfSA6IHVuZGVmaW5lZCk7XG4gICAgICBjb25zb2xlLmxvZygnW0NoYXRDb21wb3Nlcl0gcmVjb3JkaW5nIHN0YXJ0Jywge1xuICAgICAgICBwaWNrZWQ6IG1pbWVUeXBlIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICByZWNvcmRlck1pbWVUeXBlOiB0aGlzLnJlY29yZGVyLm1pbWVUeXBlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlY0NodW5rcyA9IFtdO1xuICAgICAgdGhpcy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSBlID0+IHtcbiAgICAgICAgaWYgKGUuZGF0YS5zaXplID4gMCkgdGhpcy5yZWNDaHVua3MucHVzaChlLmRhdGEpO1xuICAgICAgfTtcbiAgICAgIHRoaXMucmVjb3JkZXIuc3RhcnQoKTtcbiAgICAgIHRoaXMucmVjb3JkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMucmVjU2Vjb25kcy5zZXQoMCk7XG4gICAgICB0aGlzLnJlY1RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5yZWNTZWNvbmRzLnVwZGF0ZShzID0+IHMgKyAxKSwgMTAwMCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUGFyYSBsYSBncmFiYWNpw7NuIHkgbGEgc3RhZ2VhIGNvbW8gYWRqdW50byBwZW5kaWVudGUgKGNvbiBwcmV2aWV3IGRlIGF1ZGlvKS4gKi9cbiAgcHJvdGVjdGVkIGZpbmlzaFJlY29yZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCByZWMgPSB0aGlzLnJlY29yZGVyO1xuICAgIGlmICghcmVjKSB7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVjLm9uc3RvcCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSByZWMubWltZVR5cGUgfHwgJ2F1ZGlvL3dlYm0nO1xuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHRoaXMucmVjU2Vjb25kcygpICogMTAwMDtcbiAgICAgIGxldCBibG9iID0gbmV3IEJsb2IodGhpcy5yZWNDaHVua3MsIHsgdHlwZSB9KTtcblxuICAgICAgLy8gTWVkaWFSZWNvcmRlciBlc2NyaWJlIFdlYk0gU0lOIGVsIGhlYWRlciBkZSBkdXJhY2nDs24gKFNlZ21lbnQvRHVyYXRpb24pIOKGklxuICAgICAgLy8gZWwgPGF1ZGlvPiBsbyByZWNoYXphIGNvbiBTUkNfTk9UX1NVUFBPUlRFRCBhdW5xdWUgZWwgY29kZWMgZXN0w6kgc29wb3J0YWRvLlxuICAgICAgLy8gZml4LXdlYm0tZHVyYXRpb24gcGFyY2hlYSBlbCBoZWFkZXIgY29uIGxhIGR1cmFjacOzbiByZWFsIOKGkiByZXByb2R1Y2libGUuXG4gICAgICBpZiAodHlwZS5pbmNsdWRlcygnd2VibScpICYmIGJsb2Iuc2l6ZSA+IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBibG9iID0gYXdhaXQgZml4V2VibUR1cmF0aW9uKGJsb2IsIGR1cmF0aW9uTXMsIHsgbG9nZ2VyOiBmYWxzZSB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hhdENvbXBvc2VyXSBmaXhXZWJtRHVyYXRpb24gZmFsbMOzLCBzZSB1c2EgZWwgYmxvYiBjcnVkbycsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXh0ID0gdHlwZS5pbmNsdWRlcygnbXA0JykgPyAnbTRhJyA6ICd3ZWJtJztcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGBhdWRpby0ke3RoaXMucmVjU2Vjb25kcygpfXMuJHtleHR9YCwgeyB0eXBlIH0pO1xuICAgICAgY29uc29sZS5sb2coJ1tDaGF0Q29tcG9zZXJdIGF1ZGlvIHJlY29yZGVkJywge1xuICAgICAgICB0eXBlLFxuICAgICAgICBzaXplOiBibG9iLnNpemUsXG4gICAgICAgIGNodW5rczogdGhpcy5yZWNDaHVua3MubGVuZ3RoLFxuICAgICAgICBjYW5QbGF5V2VibTogdGhpcy5jYW5QbGF5KCdhdWRpby93ZWJtJyksXG4gICAgICAgIGNhblBsYXlNcDQ6IHRoaXMuY2FuUGxheSgnYXVkaW8vbXA0JyksXG4gICAgICB9KTtcbiAgICAgIGlmIChibG9iLnNpemUgPiAwKSB0aGlzLmFkZFBlbmRpbmcoZmlsZSk7XG4gICAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICB9O1xuICAgIHJlYy5zdG9wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FuY2VsUmVjb3JkaW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlYyA9IHRoaXMucmVjb3JkZXI7XG4gICAgaWYgKHJlYykgcmVjLm9uc3RvcCA9ICgpID0+IHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIHRyeSB7XG4gICAgICByZWM/LnN0b3AoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuY2xlYW51cFJlY29yZGluZygpO1xuICAgIH1cbiAgICBpZiAoIXJlYykgdGhpcy5jbGVhbnVwUmVjb3JkaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjVGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy5yZWNUaW1lcik7XG4gICAgdGhpcy5yZWNUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY1N0cmVhbT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0ID0+IHQuc3RvcCgpKTtcbiAgICB0aGlzLnJlY1N0cmVhbSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlY29yZGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVjQ2h1bmtzID0gW107XG4gICAgdGhpcy5yZWNvcmRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlY1NlY29uZHMuc2V0KDApO1xuICB9XG5cbiAgLyoqIERpYWduw7NzdGljbzogZWwgbmF2ZWdhZG9yIG5vIHB1ZG8gcmVwcm9kdWNpciBlbCBhZGp1bnRvIGRlIGF1ZGlvLiAqL1xuICBwcm90ZWN0ZWQgb25BdWRpb0Vycm9yKHdoZXJlOiBzdHJpbmcsIGZpbGU6IEZpbGUsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxBdWRpb0VsZW1lbnQ7XG4gICAgY29uc3QgZXJyID0gZWwuZXJyb3I7XG4gICAgY29uc3QgY29kZXM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gICAgICAxOiAnQUJPUlRFRCcsXG4gICAgICAyOiAnTkVUV09SSycsXG4gICAgICAzOiAnREVDT0RFJyxcbiAgICAgIDQ6ICdTUkNfTk9UX1NVUFBPUlRFRCcsXG4gICAgfTtcbiAgICBjb25zb2xlLmVycm9yKCdbQ2hhdENvbXBvc2VyXSBhdWRpbyBwbGF5IGVycm9yJywge1xuICAgICAgd2hlcmUsXG4gICAgICBmaWxlVHlwZTogZmlsZS50eXBlLFxuICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgIGNvZGU6IGVycj8uY29kZSxcbiAgICAgIHJlYXNvbjogZXJyID8gY29kZXNbZXJyLmNvZGVdIDogJ3Vua25vd24nLFxuICAgICAgbWVzc2FnZTogZXJyPy5tZXNzYWdlLFxuICAgICAgY2FuUGxheVRoaXNUeXBlOiB0aGlzLmNhblBsYXkoZmlsZS50eXBlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkF1ZGlvTG9hZGVkKHdoZXJlOiBzdHJpbmcsIGZpbGU6IEZpbGUsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxBdWRpb0VsZW1lbnQ7XG4gICAgY29uc29sZS5sb2coJ1tDaGF0Q29tcG9zZXJdIGF1ZGlvIGxvYWRlZG1ldGFkYXRhJywge1xuICAgICAgd2hlcmUsXG4gICAgICBmaWxlVHlwZTogZmlsZS50eXBlLFxuICAgICAgZHVyYXRpb246IGVsLmR1cmF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIMK/RWwgbmF2ZWdhZG9yIGRlY2xhcmEgcXVlIHB1ZWRlIHJlcHJvZHVjaXIgZXN0ZSB0aXBvPyAnJyAvICdtYXliZScgLyAncHJvYmFibHknLiAqL1xuICBwcml2YXRlIGNhblBsYXkodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJykuY2FuUGxheVR5cGUodHlwZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBSZWNvcmRpbmcoKTtcbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnBlbmRpbmcoKSkge1xuICAgICAgaWYgKGF0dC51cmwpIFVSTC5yZXZva2VPYmplY3RVUkwoYXR0LnVybCk7XG4gICAgfVxuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ0NoYXRDb21wb3NlcicpO1xuICB9XG59XG4iXX0=
@@ -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.243';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yNDMnO1xuIl19
5
+ export const VERSION = '4.0.244';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yNDQnO1xuIl19
@@ -51,12 +51,13 @@ import { Capacitor } from '@capacitor/core';
51
51
  import 'prismjs/components/prism-scss';
52
52
  import 'prismjs/components/prism-json';
53
53
  import { BrowserMultiFormatReader } from '@zxing/browser';
54
+ import fixWebmDuration from 'fix-webm-duration';
54
55
 
55
56
  /**
56
57
  * Current version of valtech-components.
57
58
  * This is automatically updated during the publish process.
58
59
  */
59
- const VERSION = '4.0.243';
60
+ const VERSION = '4.0.244';
60
61
 
61
62
  // Control de estado de refresco (singleton a nivel de módulo)
62
63
  let isRefreshing = false;
@@ -73356,9 +73357,21 @@ class ChatComposerComponent {
73356
73357
  this.cleanupRecording();
73357
73358
  return;
73358
73359
  }
73359
- rec.onstop = () => {
73360
+ rec.onstop = async () => {
73360
73361
  const type = rec.mimeType || 'audio/webm';
73361
- const blob = new Blob(this.recChunks, { type });
73362
+ const durationMs = this.recSeconds() * 1000;
73363
+ let blob = new Blob(this.recChunks, { type });
73364
+ // MediaRecorder escribe WebM SIN el header de duración (Segment/Duration) →
73365
+ // el <audio> lo rechaza con SRC_NOT_SUPPORTED aunque el codec esté soportado.
73366
+ // fix-webm-duration parchea el header con la duración real → reproducible.
73367
+ if (type.includes('webm') && blob.size > 0) {
73368
+ try {
73369
+ blob = await fixWebmDuration(blob, durationMs, { logger: false });
73370
+ }
73371
+ catch (err) {
73372
+ console.warn('[ChatComposer] fixWebmDuration falló, se usa el blob crudo', err);
73373
+ }
73374
+ }
73362
73375
  const ext = type.includes('mp4') ? 'm4a' : 'webm';
73363
73376
  const file = new File([blob], `audio-${this.recSeconds()}s.${ext}`, { type });
73364
73377
  console.log('[ChatComposer] audio recorded', {