speechrecorderng 2.24.2 → 2.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/esm2020/lib/audio/audio_display.mjs +4 -4
  2. package/esm2020/lib/audio/audio_player.mjs +4 -4
  3. package/esm2020/lib/audio/capture/capture.mjs +1 -1
  4. package/esm2020/lib/audio/io/stream.mjs +41 -1
  5. package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +7 -7
  6. package/esm2020/lib/audio/ui/audio_display_control.mjs +4 -4
  7. package/esm2020/lib/audio/ui/audio_display_scroll_pane.mjs +4 -4
  8. package/esm2020/lib/audio/ui/audiosignal.mjs +4 -4
  9. package/esm2020/lib/audio/ui/container.mjs +4 -4
  10. package/esm2020/lib/audio/ui/livelevel.mjs +4 -4
  11. package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +4 -4
  12. package/esm2020/lib/audio/ui/sonagram.mjs +4 -4
  13. package/esm2020/lib/io/stream.mjs +10 -1
  14. package/esm2020/lib/recorder_component.mjs +1 -1
  15. package/esm2020/lib/speechrecorder/project/project.mjs +1 -1
  16. package/esm2020/lib/speechrecorder/project/project.service.mjs +4 -4
  17. package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +4 -4
  18. package/esm2020/lib/speechrecorder/script/script.service.mjs +4 -4
  19. package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +122 -110
  20. package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +179 -14
  21. package/esm2020/lib/speechrecorder/session/controlpanel.mjs +46 -22
  22. package/esm2020/lib/speechrecorder/session/progress.mjs +4 -4
  23. package/esm2020/lib/speechrecorder/session/prompting.mjs +16 -16
  24. package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +4 -4
  25. package/esm2020/lib/speechrecorder/session/recording_list.mjs +4 -4
  26. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +4 -4
  27. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +4 -4
  28. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +4 -4
  29. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +4 -4
  30. package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +4 -4
  31. package/esm2020/lib/speechrecorder/session/session.service.mjs +4 -4
  32. package/esm2020/lib/speechrecorder/session/session_finished_dialog.mjs +4 -4
  33. package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +94 -61
  34. package/esm2020/lib/speechrecorder/session/warning_bar.mjs +4 -4
  35. package/esm2020/lib/speechrecorder/spruploader.mjs +4 -4
  36. package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
  37. package/esm2020/lib/speechrecorderng.component.mjs +18 -5
  38. package/esm2020/lib/speechrecorderng.module.mjs +8 -8
  39. package/esm2020/lib/spr.config.mjs +4 -4
  40. package/esm2020/lib/spr.module.version.mjs +2 -2
  41. package/esm2020/lib/ui/canvas_layer_comp.mjs +4 -4
  42. package/esm2020/lib/ui/message_dialog.mjs +4 -4
  43. package/esm2020/lib/ui/recordingitem_display.mjs +7 -7
  44. package/esm2020/lib/utils/scrollIntoViewToBottom.mjs +4 -4
  45. package/esm2020/lib/utils/wake_lock.mjs +114 -0
  46. package/esm2020/lib/utils/wake_lock_media.mjs +2 -0
  47. package/fesm2015/speechrecorderng.mjs +811 -404
  48. package/fesm2015/speechrecorderng.mjs.map +1 -1
  49. package/fesm2020/speechrecorderng.mjs +805 -404
  50. package/fesm2020/speechrecorderng.mjs.map +1 -1
  51. package/lib/audio/io/stream.d.ts +13 -0
  52. package/lib/io/stream.d.ts +3 -0
  53. package/lib/recorder_component.d.ts +1 -0
  54. package/lib/speechrecorder/project/project.d.ts +1 -0
  55. package/lib/speechrecorder/session/audiorecorder.d.ts +11 -11
  56. package/lib/speechrecorder/session/basicrecorder.d.ts +44 -4
  57. package/lib/speechrecorder/session/controlpanel.d.ts +7 -0
  58. package/lib/speechrecorder/session/sessionmanager.d.ts +13 -10
  59. package/lib/speechrecorderng.component.d.ts +1 -0
  60. package/lib/speechrecorderng.module.d.ts +1 -1
  61. package/lib/spr.module.version.d.ts +1 -1
  62. package/lib/utils/wake_lock.d.ts +23 -0
  63. package/lib/utils/wake_lock_media.d.ts +1 -0
  64. package/package.json +1 -1
@@ -16,14 +16,14 @@ export class StatusDisplay {
16
16
  this.statusWaiting = false;
17
17
  }
18
18
  }
19
- StatusDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: StatusDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- StatusDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: { statusAlertType: "statusAlertType", statusMsg: "statusMsg", statusWaiting: "statusWaiting" }, ngImport: i0, template: `
19
+ StatusDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: StatusDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ StatusDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: { statusAlertType: "statusAlertType", statusMsg: "statusMsg", statusWaiting: "statusWaiting" }, ngImport: i0, template: `
21
21
  <p matTooltip="Status">
22
22
  <mat-progress-spinner *ngIf="statusWaiting" color="black" mode="indeterminate" [diameter]="30" [strokeWidth]="5"></mat-progress-spinner><mat-icon *ngIf="statusAlertType==='error'" style="color:red">report_problem</mat-icon>
23
23
  {{statusMsg}}
24
24
  </p>
25
25
  `, isInline: true, styles: [":host{display:inline;text-align:left;font-size:smaller}\n", "p{padding:4px;white-space:nowrap;display:inline-block}\n", "mat-progress-spinner{color:#000;display:inline-block}\n", "span{color:red}\n"], components: [{ type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: StatusDisplay, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: StatusDisplay, decorators: [{
27
27
  type: Component,
28
28
  args: [{
29
29
  selector: 'app-sprstatusdisplay',
@@ -108,11 +108,11 @@ export class UploadStatus {
108
108
  return this._status;
109
109
  }
110
110
  }
111
- UploadStatus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: UploadStatus, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
- UploadStatus.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: UploadStatus, selector: "app-uploadstatus", inputs: { value: "value", awaitNewUpload: "awaitNewUpload", status: "status" }, ngImport: i0, template: `
111
+ UploadStatus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UploadStatus, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ UploadStatus.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: UploadStatus, selector: "app-uploadstatus", inputs: { value: "value", awaitNewUpload: "awaitNewUpload", status: "status" }, ngImport: i0, template: `
113
113
  <mat-progress-spinner [mode]="spinnerMode" [color]="status" [diameter]="30" [strokeWidth]="5" [value]="_value" [matTooltip]="toolTipText"></mat-progress-spinner>
114
114
  `, isInline: true, styles: [":host{flex:1;text-align:left}\n", "mat-progress-spinner{display:inline-block}\n"], components: [{ type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], directives: [{ type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: UploadStatus, decorators: [{
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UploadStatus, decorators: [{
116
116
  type: Component,
117
117
  args: [{
118
118
  selector: 'app-uploadstatus',
@@ -140,11 +140,11 @@ export class ProgressDisplay {
140
140
  this.progressMsg = '[itemcode]';
141
141
  }
142
142
  }
143
- ProgressDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ProgressDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
144
- ProgressDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: ProgressDisplay, selector: "app-sprprogressdisplay", ngImport: i0, template: `
143
+ ProgressDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ProgressDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
144
+ ProgressDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ProgressDisplay, selector: "app-sprprogressdisplay", ngImport: i0, template: `
145
145
  <p>{{progressMsg}}</p>
146
146
  `, isInline: true, styles: [":host{flex:1;width:100%;text-align:left}\n"] });
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ProgressDisplay, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ProgressDisplay, decorators: [{
148
148
  type: Component,
149
149
  args: [{
150
150
  selector: 'app-sprprogressdisplay',
@@ -244,8 +244,8 @@ export class TransportPanel {
244
244
  }
245
245
  }
246
246
  }
247
- TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: TransportPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
248
- TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: TransportPanel, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, ngImport: i0, template: `
247
+ TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TransportPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
248
+ TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TransportPanel, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, ngImport: i0, template: `
249
249
  <button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
250
250
  mat-raised-button>
251
251
  <mat-icon>chevron_left</mat-icon>
@@ -266,7 +266,7 @@ TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
266
266
  </button>
267
267
 
268
268
  `, isInline: true, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n"], components: [{ type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }] });
269
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: TransportPanel, decorators: [{
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TransportPanel, decorators: [{
270
270
  type: Component,
271
271
  args: [{
272
272
  selector: 'app-sprtransport',
@@ -318,6 +318,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
318
318
  }], pausingEnabled: [{
319
319
  type: Input
320
320
  }] } });
321
+ export class WakeLockIndicator {
322
+ constructor() {
323
+ this._screenLocked = false;
324
+ }
325
+ set screenLocked(screenLock) {
326
+ this._screenLocked = screenLock;
327
+ }
328
+ }
329
+ WakeLockIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: WakeLockIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
330
+ WakeLockIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: { screenLocked: "screenLocked" }, ngImport: i0, template: `
331
+ <mat-icon *ngIf="_screenLocked">screen_lock_portrait</mat-icon>
332
+ `, isInline: true, components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: WakeLockIndicator, decorators: [{
334
+ type: Component,
335
+ args: [{
336
+ selector: 'app-wakelockindicator',
337
+ template: `
338
+ <mat-icon *ngIf="_screenLocked">screen_lock_portrait</mat-icon>
339
+ `,
340
+ styles: []
341
+ }]
342
+ }], ctorParameters: function () { return []; }, propDecorators: { screenLocked: [{
343
+ type: Input
344
+ }] } });
321
345
  export class ReadyStateIndicator {
322
346
  constructor() {
323
347
  this._ready = true;
@@ -333,16 +357,16 @@ export class ReadyStateIndicator {
333
357
  return this._ready;
334
358
  }
335
359
  }
336
- ReadyStateIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ReadyStateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
337
- ReadyStateIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: { ready: "ready" }, ngImport: i0, template: `
338
- <mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
360
+ ReadyStateIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ReadyStateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
361
+ ReadyStateIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: { ready: "ready" }, ngImport: i0, template: `
362
+ <mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
339
363
  `, isInline: true, components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ReadyStateIndicator, decorators: [{
364
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ReadyStateIndicator, decorators: [{
341
365
  type: Component,
342
366
  args: [{
343
367
  selector: 'app-readystateindicator',
344
368
  template: `
345
- <mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
369
+ <mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
346
370
  `,
347
371
  styles: []
348
372
  }]
@@ -363,8 +387,8 @@ export class ControlPanel {
363
387
  return this._ready;
364
388
  }
365
389
  }
366
- ControlPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ControlPanel, deps: [{ token: i7.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
367
- ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: ControlPanel, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], ngImport: i0, template: `
390
+ ControlPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ControlPanel, deps: [{ token: i7.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
391
+ ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ControlPanel, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], ngImport: i0, template: `
368
392
  <div fxHide.xs fxLayout="row" >
369
393
  <app-sprstatusdisplay fxFlex="0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
370
394
  class="hidden-xs"></app-sprstatusdisplay>
@@ -384,8 +408,8 @@ ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
384
408
  <app-sprtransport [readonly]="readonly" [actions]="transportActions" [navigationEnabled]="navigationEnabled"></app-sprtransport>
385
409
 
386
410
  </div>
387
- `, isInline: true, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:-webkit-min-content;min-height:min-content}\n"], components: [{ type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }], directives: [{ type: i6.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { type: i8.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }] });
388
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ControlPanel, decorators: [{
411
+ `, isInline: true, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"], components: [{ type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }], directives: [{ type: i6.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { type: i8.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }] });
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ControlPanel, decorators: [{
389
413
  type: Component,
390
414
  args: [{
391
415
  selector: 'app-sprcontrolpanel',
@@ -449,4 +473,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
449
473
  }], ready: [{
450
474
  type: Input
451
475
  }] } });
452
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vY29udHJvbHBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQzVCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBdUN2QixNQUFNLE9BQU8sYUFBYTtJQWpDMUI7UUFrQ1csb0JBQWUsR0FBRyxNQUFNLENBQUM7UUFDekIsY0FBUyxHQUFHLGVBQWUsQ0FBQztRQUM1QixrQkFBYSxHQUFFLEtBQUssQ0FBQztLQUMvQjs7MEdBSlksYUFBYTs4RkFBYixhQUFhLG9LQTdCZDs7Ozs7R0FLVDsyRkF3QlUsYUFBYTtrQkFqQ3pCLFNBQVM7bUJBQUM7b0JBRVQsUUFBUSxFQUFFLHNCQUFzQjtvQkFFaEMsUUFBUSxFQUFFOzs7OztHQUtUO29CQUNELE1BQU0sRUFBRSxDQUFDOzs7O0lBSVAsRUFBRTs7Ozs7O0dBTUgsRUFBRTs7Ozs7R0FLRixFQUFFOzs7O0dBSUYsQ0FBQztpQkFFSDs4QkFHVSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSzs7QUFrQlIsTUFBTSxPQUFPLFlBQVk7SUFkekI7UUFlVSxvQkFBZSxHQUFDLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUF1QixhQUFhLENBQUM7UUFFaEQsV0FBTSxHQUFHLEdBQUcsQ0FBQTtRQUNaLGlCQUFZLEdBQWEsSUFBSSxDQUFBO1FBQzdCLGdCQUFXLEdBQVEsRUFBRSxDQUFBO0tBNEN0QjtJQTFDUyxjQUFjO1FBRXBCLElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFBO1lBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUMsMEJBQTBCLENBQUE7WUFDNUMsTUFBTSxHQUFDLG1CQUFtQixDQUFBO1NBQzNCO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQTtZQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsR0FBRyxDQUFBO1lBQ2pDLElBQUcsSUFBSSxDQUFDLE1BQU0sS0FBRyxHQUFHLEVBQUM7Z0JBQ25CLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQTthQUMzQjtpQkFBSztnQkFDSixNQUFNLEdBQUcsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTthQUNqRDtTQUNGO1FBQ0QsSUFBRyxJQUFJLENBQUMsTUFBTSxLQUFHLE1BQU0sRUFBQztZQUN0QixNQUFNLEdBQUMsK0RBQStELEdBQUMsTUFBTSxDQUFBO1NBQzlFO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBQyxNQUFNLENBQUE7SUFDekIsQ0FBQztJQUVELElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBYSxjQUFjLENBQUMsY0FBc0I7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBQyxjQUFjLENBQUE7UUFDbkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxNQUFhO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUMsTUFBTSxDQUFBO1FBQ25CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7O3lHQWhEVSxZQUFZOzZGQUFaLFlBQVksd0lBWmI7O0dBRVQ7MkZBVVUsWUFBWTtrQkFkeEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUU7O0dBRVQ7b0JBQ0QsTUFBTSxFQUFFLENBQUM7Ozs7O0lBS1AsRUFBQzs7SUFFRCxDQUFDO2lCQUNKOzhCQWdDSyxLQUFLO3NCQURSLEtBQUs7Z0JBTU8sY0FBYztzQkFBMUIsS0FBSztnQkFLTyxNQUFNO3NCQUFsQixLQUFLOztBQXlCUixNQUFNLE9BQU8sZUFBZTtJQWI1QjtRQWNFLGdCQUFXLEdBQUcsWUFBWSxDQUFDO0tBQzVCOzs0R0FGWSxlQUFlO2dHQUFmLGVBQWUsOERBWGhCOztHQUVUOzJGQVNVLGVBQWU7a0JBYjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFOztHQUVUO29CQUNELE1BQU0sRUFBRSxDQUFDOzs7Ozs7SUFNUCxDQUFDO2lCQUNKOztBQVFELE1BQU0sT0FBTyxnQkFBZ0I7SUFTM0I7UUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFMUMsQ0FBQztDQUNGO0FBOENELE1BQU0sT0FBTyxjQUFjO0lBNUMzQjtRQWdEVyxzQkFBaUIsR0FBQyxJQUFJLENBQUM7UUFDdkIsbUJBQWMsR0FBQyxJQUFJLENBQUM7S0F5RTlCO0lBcEVDLGFBQWE7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQTtJQUM1RSxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQTtJQUMxRCxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUN0RixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDcEYsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDckYsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDekYsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDckYsQ0FBQztJQUVDLGlCQUFpQjtRQUNiLElBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUM7WUFDcEIsSUFBSSxDQUFDLHVCQUF1QixHQUFFLE1BQU0sQ0FBQTtTQUN2QzthQUFLLElBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUM7WUFDM0IsSUFBSSxDQUFDLHVCQUF1QixHQUFDLE9BQU8sQ0FBQTtTQUN2QzthQUFLLElBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQTtTQUN4QztRQUNELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3hDLENBQUM7SUFDSCxxQkFBcUI7UUFDakIsSUFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBQztZQUN0QixJQUFJLENBQUMsMkJBQTJCLEdBQUMscUJBQXFCLENBQUE7U0FDeEQ7YUFBSyxJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDO1lBQzFCLElBQUksQ0FBQywyQkFBMkIsR0FBQyxNQUFNLENBQUE7U0FDMUM7YUFBSyxJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDO1lBQzFCLElBQUksQ0FBQywyQkFBMkIsR0FBQyxNQUFNLENBQUE7U0FDMUM7UUFDRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQTtJQUMzQyxDQUFDO0lBQ0Msc0JBQXNCO1FBQ2xCLElBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUM7WUFDckIsT0FBTyxLQUFLLENBQUE7U0FDZjthQUFLLElBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUM7WUFDbEQsT0FBTyxRQUFRLENBQUE7U0FDbEI7YUFBSTtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVILG9CQUFvQjtRQUNsQixJQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3BDO2FBQUssSUFBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBQztZQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNuQzthQUFLLElBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDOzsyR0E1RVUsY0FBYzsrRkFBZCxjQUFjLHdMQXhDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQ7MkZBb0JVLGNBQWM7a0JBNUMxQixTQUFTO21CQUFDO29CQUVULFFBQVEsRUFBRSxrQkFBa0I7b0JBRTVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQ7b0JBQ0QsTUFBTSxFQUFFLENBQUM7Ozs7Ozs7O0lBUVAsRUFBRTs7OztNQUlBLEVBQUM7OztPQUdBO3FCQUNKO2lCQUVGOzhCQUdVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLOztBQW9GUixNQUFNLE9BQU8sbUJBQW1CO0lBSzlCO1FBSkEsV0FBTSxHQUFDLElBQUksQ0FBQTtRQUNYLHNCQUFpQixHQUFDLGlCQUFpQixDQUFBO1FBQ25DLHNCQUFpQixHQUFRLEVBQUUsQ0FBQTtJQUVaLENBQUM7SUFFaEIsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFDLEtBQUssQ0FBQTtRQUNqQixJQUFJLENBQUMsaUJBQWlCLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUEsaUJBQWlCLENBQUEsQ0FBQyxDQUFBLGdCQUFnQixDQUFBO1FBQ3JFLElBQUksQ0FBQyxpQkFBaUIsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQSw2RUFBNkUsQ0FBQSxDQUFDLENBQUEsNEZBQTRGLENBQUE7SUFDL00sQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUNwQixDQUFDOztnSEFmVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwyRkFMcEI7O0dBRVQ7MkZBR1UsbUJBQW1CO2tCQVQvQixTQUFTO21CQUFDO29CQUVULFFBQVEsRUFBRSx5QkFBeUI7b0JBRW5DLFFBQVEsRUFBRTs7R0FFVDtvQkFDRCxNQUFNLEVBQUUsRUFBRTtpQkFDWDswRUFRYyxLQUFLO3NCQUFqQixLQUFLOztBQTZDUixNQUFNLE9BQU8sWUFBWTtJQWtCdkIsWUFBbUIsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVozQixlQUFVLEdBQUMsS0FBSyxDQUFBO1FBUWhCLHNCQUFpQixHQUFDLElBQUksQ0FBQztRQUVoQyxXQUFNLEdBQUMsSUFBSSxDQUFBO0lBSVgsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBQyxLQUFLLENBQUE7SUFDbkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUNwQixDQUFDOzt5R0E1QlUsWUFBWTs2RkFBWixZQUFZLHdmQUNaLGFBQWEsK0ZBQ2IsY0FBYyw4REEvQmY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JULCtLQW5TVSxhQUFhLHlHQStKYixjQUFjLGtIQTFJZCxZQUFZLHlGQW1PWixtQkFBbUI7MkZBb0RuQixZQUFZO2tCQWpDeEIsU0FBUzttQkFBQztvQkFFVCxRQUFRLEVBQUUscUJBQXFCO29CQUUvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUO29CQUNELE1BQU0sRUFBRSxDQUFDOzs7Ozs7SUFNUCxDQUFDO2lCQUNKO2dHQUU2QyxhQUFhO3NCQUF4RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0csY0FBYztzQkFBMUQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVsQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFRTyxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3Rpb259IGZyb20gJy4uLy4uL2FjdGlvbi9hY3Rpb24nXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIElucHV0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IE1hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge1Byb2dyZXNzU3Bpbm5lck1vZGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnN0YXR1c2Rpc3BsYXknLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHAgbWF0VG9vbHRpcD1cIlN0YXR1c1wiPlxyXG4gICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgKm5nSWY9XCJzdGF0dXNXYWl0aW5nXCIgY29sb3I9XCJibGFja1wiICBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtkaWFtZXRlcl09XCIzMFwiIFtzdHJva2VXaWR0aF09XCI1XCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj48bWF0LWljb24gKm5nSWY9XCJzdGF0dXNBbGVydFR5cGU9PT0nZXJyb3InXCIgc3R5bGU9XCJjb2xvcjpyZWRcIj5yZXBvcnRfcHJvYmxlbTwvbWF0LWljb24+XHJcbiAgICAgIHt7c3RhdHVzTXNnfX1cclxuICAgIDwvcD5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG4gIH1gLCBgXHJcbiAgICBwIHtcclxuICAgICAgcGFkZGluZzogNHB4O1xyXG4gICAgICB3aGl0ZS1zcGFjZTpub3dyYXA7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICBgLCBgXHJcbiAgICBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciB7XHJcbiAgICAgIGNvbG9yOiBibGFjaztcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gIGAsIGBcclxuICAgIHNwYW4ge1xyXG4gICAgICBjb2xvcjogcmVkO1xyXG4gICAgfVxyXG4gIGBdXHJcblxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFN0YXR1c0Rpc3BsYXkge1xyXG4gIEBJbnB1dCgpIHN0YXR1c0FsZXJ0VHlwZSA9ICdpbmZvJztcclxuICBASW5wdXQoKSBzdGF0dXNNc2cgPSAnSW5pdGlhbGl6ZS4uLic7XHJcbiAgQElucHV0KCkgc3RhdHVzV2FpdGluZyA9ZmFsc2U7XHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11cGxvYWRzdGF0dXMnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgW21vZGVdPVwic3Bpbm5lck1vZGVcIiBbY29sb3JdPVwic3RhdHVzXCIgW2RpYW1ldGVyXT1cIjMwXCIgW3N0cm9rZVdpZHRoXT1cIjVcIiBbdmFsdWVdPVwiX3ZhbHVlXCIgW21hdFRvb2x0aXBdPVwidG9vbFRpcFRleHRcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgIGZsZXg6IDE7XHJcbiAgLyogYWxpZ24tc2VsZjogZmxleC1zdGFydDsgKi9cclxuICAgIC8qZGlzcGxheTogaW5saW5lOyAqL1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICB9YCxgbWF0LXByb2dyZXNzLXNwaW5uZXJ7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9YF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZFN0YXR1cyB7XHJcbiAgcHJpdmF0ZSBfYXdhaXROZXdVcGxvYWQ9ZmFsc2U7XHJcbiAgc3Bpbm5lck1vZGU6UHJvZ3Jlc3NTcGlubmVyTW9kZSA9ICdkZXRlcm1pbmF0ZSc7XHJcbiAgX3N0YXR1cyE6c3RyaW5nXHJcbiAgX3ZhbHVlID0gMTAwXHJcbiAgZGlzcGxheVZhbHVlOnN0cmluZ3xudWxsPW51bGxcclxuICB0b29sVGlwVGV4dDpzdHJpbmc9JydcclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlU3Bpbm5lcigpe1xyXG5cclxuICAgIGxldCB1cGxNc2c7XHJcbiAgICBpZiAodGhpcy5fYXdhaXROZXdVcGxvYWQgfHwgdGhpcy5fdmFsdWUgPT09IDApIHtcclxuICAgICAgdGhpcy5zcGlubmVyTW9kZSA9ICdpbmRldGVybWluYXRlJ1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZT0nJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7J1xyXG4gICAgICB1cGxNc2c9J1ByZXBhcmluZyB1cGxvYWQuJ1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zcGlubmVyTW9kZSA9ICdkZXRlcm1pbmF0ZSdcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWU9dGhpcy5fdmFsdWUrJyUnXHJcbiAgICAgIGlmKHRoaXMuX3ZhbHVlPT09MTAwKXtcclxuICAgICAgICB1cGxNc2cgPSAnVXBsb2FkIGNvbXBsZXRlJ1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdXBsTXNnID0gJ1VwbG9hZCBwcm9ncmVzczogJyArIHRoaXMuZGlzcGxheVZhbHVlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmKHRoaXMuc3RhdHVzPT09J3dhcm4nKXtcclxuICAgICAgdXBsTXNnPSdVcGxvYWQgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbi4gJyt1cGxNc2dcclxuICAgIH1cclxuICAgIHRoaXMudG9vbFRpcFRleHQ9dXBsTXNnXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fdXBkYXRlU3Bpbm5lcigpXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGF3YWl0TmV3VXBsb2FkKGF3YWl0TmV3VXBsb2FkOmJvb2xlYW4pe1xyXG4gICAgdGhpcy5fYXdhaXROZXdVcGxvYWQ9YXdhaXROZXdVcGxvYWRcclxuICAgIHRoaXMuX3VwZGF0ZVNwaW5uZXIoKVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHN0YXR1cyhzdGF0dXM6c3RyaW5nKXtcclxuICAgIHRoaXMuX3N0YXR1cz1zdGF0dXNcclxuICAgIHRoaXMuX3VwZGF0ZVNwaW5uZXIoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXR1cygpOnN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLl9zdGF0dXNcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3BycHJvZ3Jlc3NkaXNwbGF5JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHA+e3twcm9ncmVzc01zZ319PC9wPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgIGZsZXg6IDE7XHJcbiAgLyogYWxpZ24tc2VsZjogZmxleC1zdGFydDsgKi9cclxuICAgIC8qZGlzcGxheTogaW5saW5lOyAqL1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgfWBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc0Rpc3BsYXkge1xyXG4gIHByb2dyZXNzTXNnID0gJ1tpdGVtY29kZV0nO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNwb3J0QWN0aW9ucyB7XHJcbiAgc3RhcnRBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBzdG9wQWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgbmV4dEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIGZ3ZE5leHRBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBwYXVzZUFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIGZ3ZEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIGJ3ZEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc3RhcnRBY3Rpb24gPSBuZXcgQWN0aW9uKCdTdGFydCcpO1xyXG4gICAgdGhpcy5zdG9wQWN0aW9uID0gbmV3IEFjdGlvbignU3RvcCcpO1xyXG4gICAgdGhpcy5uZXh0QWN0aW9uID0gbmV3IEFjdGlvbignTmV4dCcpO1xyXG4gICAgdGhpcy5wYXVzZUFjdGlvbiA9IG5ldyBBY3Rpb24oJ1BhdXNlJyk7XHJcbiAgICB0aGlzLmZ3ZE5leHRBY3Rpb24gPSBuZXcgQWN0aW9uKCdOZXh0IHJlY29yZGluZycpO1xyXG4gICAgdGhpcy5md2RBY3Rpb24gPSBuZXcgQWN0aW9uKCdGb3J3YXJkJyk7XHJcbiAgICB0aGlzLmJ3ZEFjdGlvbiA9IG5ldyBBY3Rpb24oJ0JhY2t3YXJkJyk7XHJcblxyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnRyYW5zcG9ydCcsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8YnV0dG9uIGlkPVwiYndkQnRuXCIgKm5nSWY9XCJuYXZpZ2F0aW9uRW5hYmxlZFwiICAoY2xpY2spPVwiYWN0aW9ucy5id2RBY3Rpb24ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cImJ3ZERpc2FibGVkKClcIlxyXG4gICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cInN0YXJ0U3RvcE5leHRQZXJmb3JtKClcIiBbZGlzYWJsZWRdPVwic3RhcnREaXNhYmxlZCgpICYmIHN0b3BEaXNhYmxlZCgpICYmIG5leHREaXNhYmxlZCgpXCIgIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cInN0YXJ0U3RvcE5leHRJY29uQ29sb3IoKVwiPnt7c3RhcnRTdG9wTmV4dEljb25OYW1lKCl9fTwvbWF0LWljb24+PG1hdC1pY29uICpuZ0lmPVwiIW5leHREaXNhYmxlZCgpXCIgW3N0eWxlLmNvbG9yXT1cIm5leHREaXNhYmxlZCgpID8gJ2dyZXknIDogJ2JsYWNrJ1wiPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICA8c3BhbiBmeFNob3cueHM9XCJmYWxzZVwiPnt7c3RhcnRTdG9wTmV4dE5hbWUoKX19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwicGF1c2luZ0VuYWJsZWRcIiAoY2xpY2spPVwiYWN0aW9ucy5wYXVzZUFjdGlvbi5wZXJmb3JtKClcIiBbZGlzYWJsZWRdPVwicGF1c2VEaXNhYmxlZCgpXCIgbWF0LXJhaXNlZC1idXR0b24+XHJcbiAgICAgIDxtYXQtaWNvbj5wYXVzZTwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuIGZ4U2hvdy54cz1cImZhbHNlXCI+UGF1c2U8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJmd2ROZXh0QnRuXCIgKm5nSWY9XCJuYXZpZ2F0aW9uRW5hYmxlZFwiIGZ4SGlkZS54cyAoY2xpY2spPVwiYWN0aW9ucy5md2ROZXh0QWN0aW9uLnBlcmZvcm0oKVwiIFtkaXNhYmxlZF09XCJmd2ROZXh0RGlzYWJsZWQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICA8bWF0LWljb24+cmVkbzwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJmd2RCdG5cIiAqbmdJZj1cIm5hdmlnYXRpb25FbmFibGVkXCIgIChjbGljayk9XCJhY3Rpb25zLmZ3ZEFjdGlvbi5wZXJmb3JtKClcIiBbZGlzYWJsZWRdPVwiZndkRGlzYWJsZWQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgZmxleDogMjA7XHJcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIG1hcmdpbjogMDtcclxuXHJcbiAgfWAsIGBcclxuICAgIGRpdiB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcclxuICAgICAgZmxleDogMDtcclxuICAgIH1gLGBcclxuICAgICBidXR0b24ge1xyXG4gICAgICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XHJcbiAgICAgfWBcclxuICBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNwb3J0UGFuZWwge1xyXG5cclxuICBASW5wdXQoKSByZWFkb25seSE6Ym9vbGVhbjtcclxuICBASW5wdXQoKSBhY3Rpb25zITogVHJhbnNwb3J0QWN0aW9ucztcclxuICBASW5wdXQoKSBuYXZpZ2F0aW9uRW5hYmxlZD10cnVlO1xyXG4gIEBJbnB1dCgpIHBhdXNpbmdFbmFibGVkPXRydWU7XHJcblxyXG4gIHN0YXJ0U3RvcE5leHRCdXR0b25OYW1lITpzdHJpbmc7XHJcbiAgc3RhcnRTdG9wTmV4dEJ1dHRvbkljb25OYW1lITpzdHJpbmc7XHJcblxyXG4gIHN0YXJ0RGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuYWN0aW9ucy5zdGFydEFjdGlvbi5kaXNhYmxlZFxyXG4gIH1cclxuXHJcbiAgc3RvcERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zLnN0b3BBY3Rpb24uZGlzYWJsZWRcclxuICB9XHJcblxyXG4gIG5leHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5uZXh0QWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgcGF1c2VEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5wYXVzZUFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5wYXVzaW5nRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIGZ3ZERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zLmZ3ZEFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5uYXZpZ2F0aW9uRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIGZ3ZE5leHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5md2ROZXh0QWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgYndkRGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLmFjdGlvbnMuYndkQWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgICBzdGFydFN0b3BOZXh0TmFtZSgpOnN0cmluZ3tcclxuICAgICAgICBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTdG9wTmV4dEJ1dHRvbk5hbWU9IFwiTmV4dFwiXHJcbiAgICAgICAgfWVsc2UgaWYoIXRoaXMuc3RhcnREaXNhYmxlZCgpKXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFN0b3BOZXh0QnV0dG9uTmFtZT1cIlN0YXJ0XCJcclxuICAgICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25OYW1lID0gXCJTdG9wXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRTdG9wTmV4dEJ1dHRvbk5hbWU7XHJcbiAgICB9XHJcbiAgc3RhcnRTdG9wTmV4dEljb25OYW1lKCk6c3RyaW5ne1xyXG4gICAgICBpZighdGhpcy5zdGFydERpc2FibGVkKCkpe1xyXG4gICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cImZpYmVyX21hbnVhbF9yZWNvcmRcIlxyXG4gICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cInN0b3BcIlxyXG4gICAgICB9ZWxzZSBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cInN0b3BcIlxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZVxyXG4gIH1cclxuICAgIHN0YXJ0U3RvcE5leHRJY29uQ29sb3IoKTpzdHJpbmd7XHJcbiAgICAgICAgaWYoIXRoaXMuc3RhcnREaXNhYmxlZCgpKXtcclxuICAgICAgICAgICAgcmV0dXJuIFwicmVkXCJcclxuICAgICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSB8fCAhdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICAgIHJldHVybiBcInllbGxvd1wiXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJldHVybiBcImdyZXlcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHN0YXJ0U3RvcE5leHRQZXJmb3JtKCl7XHJcbiAgICBpZighdGhpcy5zdGFydERpc2FibGVkKCkpe1xyXG4gICAgICB0aGlzLmFjdGlvbnMuc3RhcnRBY3Rpb24ucGVyZm9ybSgpO1xyXG4gICAgfWVsc2UgaWYoIXRoaXMuc3RvcERpc2FibGVkKCkpe1xyXG4gICAgICB0aGlzLmFjdGlvbnMuc3RvcEFjdGlvbi5wZXJmb3JtKCk7XHJcbiAgICB9ZWxzZSBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgIHRoaXMuYWN0aW9ucy5uZXh0QWN0aW9uLnBlcmZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVhZHlzdGF0ZWluZGljYXRvcicsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPG1hdC1pY29uIFttYXRUb29sdGlwXT1cInJlYWR5U3RhdGVUb29sVGlwXCI+e3tob3VyR2xhc3NJY29uTmFtZX19PC9tYXQtaWNvbj5cclxuICBgLFxyXG4gIHN0eWxlczogW11cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlYWR5U3RhdGVJbmRpY2F0b3Ige1xyXG4gIF9yZWFkeT10cnVlXHJcbiAgaG91ckdsYXNzSWNvbk5hbWU9J2hvdXJnbGFzc19lbXB0eSdcclxuICByZWFkeVN0YXRlVG9vbFRpcDpzdHJpbmc9JydcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBASW5wdXQoKSBzZXQgcmVhZHkocmVhZHk6Ym9vbGVhbil7XHJcbiAgICB0aGlzLl9yZWFkeT1yZWFkeVxyXG4gICAgdGhpcy5ob3VyR2xhc3NJY29uTmFtZT10aGlzLl9yZWFkeT8naG91cmdsYXNzX2VtcHR5JzonaG91cmdsYXNzX2Z1bGwnXHJcbiAgICB0aGlzLnJlYWR5U3RhdGVUb29sVGlwPXRoaXMuX3JlYWR5PydBdWRpbyBwcm9jZXNzaW5nIGFuZCB1cGxvYWQgZG9uZS4gWW91IGNhbiBsZWF2ZSB0aGUgcGFnZSB3aXRob3V0IGRhdGEgbG9zcy4nOidQbGVhc2Ugd2FpdCB1bnRpbCBhdWRpbyBwcm9jZXNzaW5nIGFuZCB1cGxvYWQgaGF2ZSBmaW5pc2hlZC4gUGxlYXNlIGRvIG5vdCBsZWF2ZSB0aGUgcGFnZS4nXHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZHkoKTpib29sZWFue1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5XHJcbiAgfVxyXG5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcmNvbnRyb2xwYW5lbCcsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGZ4SGlkZS54cyAgZnhMYXlvdXQ9XCJyb3dcIiA+XHJcbiAgICAgPGFwcC1zcHJzdGF0dXNkaXNwbGF5IGZ4RmxleD1cIjAgMCAwXCIgW3N0YXR1c01zZ109XCJzdGF0dXNNc2dcIiBbc3RhdHVzQWxlcnRUeXBlXT1cInN0YXR1c0FsZXJ0VHlwZVwiIFtzdGF0dXNXYWl0aW5nXT1cInN0YXR1c1dhaXRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuLXhzXCI+PC9hcHAtc3Byc3RhdHVzZGlzcGxheT5cclxuICAgICAgPGFwcC1zcHJ0cmFuc3BvcnQgZnhGbGV4PVwiMTAgMCAwXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2FjdGlvbnNdPVwidHJhbnNwb3J0QWN0aW9uc1wiIFtuYXZpZ2F0aW9uRW5hYmxlZF09XCJuYXZpZ2F0aW9uRW5hYmxlZFwiPjwvYXBwLXNwcnRyYW5zcG9ydD5cclxuICAgICAgPGFwcC11cGxvYWRzdGF0dXMgZnhGbGV4PVwiMCAwIDBcIiAqbmdJZj1cImVuYWJsZVVwbG9hZFJlY29yZGluZ3NcIiBbdmFsdWVdPVwidXBsb2FkUHJvZ3Jlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJ1cGxvYWRTdGF0dXNcIiBbYXdhaXROZXdVcGxvYWRdPVwicHJvY2Vzc2luZ1wiPjwvYXBwLXVwbG9hZHN0YXR1cz5cclxuICAgICAgPGFwcC1yZWFkeXN0YXRlaW5kaWNhdG9yIFtyZWFkeV09XCJfcmVhZHlcIj48L2FwcC1yZWFkeXN0YXRlaW5kaWNhdG9yPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4U2hvdy54cyBmeEhpZGUgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4RmxleEZpbGw+XHJcbiAgICAgICA8YXBwLXNwcnN0YXR1c2Rpc3BsYXkgZnhGbGV4PVwiMTAgMCAwXCIgZnhGbGV4QWxpZ249XCJsZWZ0XCIgW3N0YXR1c01zZ109XCJzdGF0dXNNc2dcIiBbc3RhdHVzQWxlcnRUeXBlXT1cInN0YXR1c0FsZXJ0VHlwZVwiIFtzdGF0dXNXYWl0aW5nXT1cInN0YXR1c1dhaXRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW4teHNcIj48L2FwcC1zcHJzdGF0dXNkaXNwbGF5PlxyXG4gICAgICAgPGFwcC11cGxvYWRzdGF0dXMgZnhGbGV4PVwiMCAwIDBcIiAqbmdJZj1cImVuYWJsZVVwbG9hZFJlY29yZGluZ3NcIiBbdmFsdWVdPVwidXBsb2FkUHJvZ3Jlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInVwbG9hZFN0YXR1c1wiIFthd2FpdE5ld1VwbG9hZF09XCJwcm9jZXNzaW5nXCI+PC9hcHAtdXBsb2Fkc3RhdHVzPlxyXG4gICAgICAgIDxhcHAtcmVhZHlzdGF0ZWluZGljYXRvciBbcmVhZHldPVwiX3JlYWR5XCI+PC9hcHAtcmVhZHlzdGF0ZWluZGljYXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxhcHAtc3BydHJhbnNwb3J0IFtyZWFkb25seV09XCJyZWFkb25seVwiIFthY3Rpb25zXT1cInRyYW5zcG9ydEFjdGlvbnNcIiBbbmF2aWdhdGlvbkVuYWJsZWRdPVwibmF2aWdhdGlvbkVuYWJsZWRcIj48L2FwcC1zcHJ0cmFuc3BvcnQ+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgZGl2IHtcclxuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgbWluLWhlaWdodDogbWluLWNvbnRlbnQ7IC8qIGltcG9ydGFudCAqL1xyXG4gIH1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFBhbmVsIHtcclxuICBAVmlld0NoaWxkKFN0YXR1c0Rpc3BsYXksIHsgc3RhdGljOiB0cnVlIH0pIHN0YXR1c0Rpc3BsYXkhOiBTdGF0dXNEaXNwbGF5O1xyXG4gIEBWaWV3Q2hpbGQoVHJhbnNwb3J0UGFuZWwsIHsgc3RhdGljOiB0cnVlIH0pIHRyYW5zcG9ydFBhbmVsITogVHJhbnNwb3J0UGFuZWw7XHJcblxyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ITpib29sZWFuXHJcbiAgQElucHV0KCkgdHJhbnNwb3J0QWN0aW9ucyE6IFRyYW5zcG9ydEFjdGlvbnNcclxuICBASW5wdXQoKSBwcm9jZXNzaW5nPWZhbHNlXHJcbiAgQElucHV0KCkgc3RhdHVzTXNnITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN0YXR1c0FsZXJ0VHlwZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBzdGF0dXNXYWl0aW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB1cGxvYWRTdGF0dXMhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXBsb2FkUHJvZ3Jlc3MhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgY3VycmVudFJlY29yZGluZzogQXVkaW9CdWZmZXJ8IG51bGx8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBlbmFibGVVcGxvYWRSZWNvcmRpbmdzITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBuYXZpZ2F0aW9uRW5hYmxlZD10cnVlO1xyXG5cclxuICBfcmVhZHk9dHJ1ZVxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgcmVhZHkocmVhZHk6Ym9vbGVhbil7XHJcbiAgICB0aGlzLl9yZWFkeT1yZWFkeVxyXG4gIH1cclxuXHJcbiAgZ2V0IHJlYWR5KCk6Ym9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLl9yZWFkeVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vY29udHJvbHBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQzVCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBdUN2QixNQUFNLE9BQU8sYUFBYTtJQWpDMUI7UUFrQ1csb0JBQWUsR0FBRyxNQUFNLENBQUM7UUFDekIsY0FBUyxHQUFHLGVBQWUsQ0FBQztRQUM1QixrQkFBYSxHQUFFLEtBQUssQ0FBQztLQUMvQjs7MkdBSlksYUFBYTsrRkFBYixhQUFhLG9LQTdCZDs7Ozs7R0FLVDs0RkF3QlUsYUFBYTtrQkFqQ3pCLFNBQVM7bUJBQUM7b0JBRVQsUUFBUSxFQUFFLHNCQUFzQjtvQkFFaEMsUUFBUSxFQUFFOzs7OztHQUtUO29CQUNELE1BQU0sRUFBRSxDQUFDOzs7O0lBSVAsRUFBRTs7Ozs7O0dBTUgsRUFBRTs7Ozs7R0FLRixFQUFFOzs7O0dBSUYsQ0FBQztpQkFFSDs4QkFHVSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSzs7QUFrQlIsTUFBTSxPQUFPLFlBQVk7SUFkekI7UUFlVSxvQkFBZSxHQUFDLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUF1QixhQUFhLENBQUM7UUFFaEQsV0FBTSxHQUFHLEdBQUcsQ0FBQTtRQUNaLGlCQUFZLEdBQWEsSUFBSSxDQUFBO1FBQzdCLGdCQUFXLEdBQVEsRUFBRSxDQUFBO0tBNEN0QjtJQTFDUyxjQUFjO1FBRXBCLElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSSxJQUFJLENBQUMs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVCxnSkFuVFUsYUFBYSx5R0ErSmIsY0FBYyxrSEExSWQsWUFBWSx5RkFvUFosbUJBQW1COzRGQW1EbkIsWUFBWTtrQkFqQ3hCLFNBQVM7bUJBQUM7b0JBRVQsUUFBUSxFQUFFLHFCQUFxQjtvQkFFL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVDtvQkFDRCxNQUFNLEVBQUUsQ0FBQzs7Ozs7O0lBTVAsQ0FBQztpQkFDSjtnR0FFNkMsYUFBYTtzQkFBeEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNHLGNBQWM7c0JBQTFELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFbEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUU8sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWN0aW9ufSBmcm9tICcuLi8uLi9hY3Rpb24vYWN0aW9uJ1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCwgVmlld0NoaWxkLCBJbnB1dFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtQcm9ncmVzc1NwaW5uZXJNb2RlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lclwiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJzdGF0dXNkaXNwbGF5JyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxwIG1hdFRvb2x0aXA9XCJTdGF0dXNcIj5cclxuICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyICpuZ0lmPVwic3RhdHVzV2FpdGluZ1wiIGNvbG9yPVwiYmxhY2tcIiAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbZGlhbWV0ZXJdPVwiMzBcIiBbc3Ryb2tlV2lkdGhdPVwiNVwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+PG1hdC1pY29uICpuZ0lmPVwic3RhdHVzQWxlcnRUeXBlPT09J2Vycm9yJ1wiIHN0eWxlPVwiY29sb3I6cmVkXCI+cmVwb3J0X3Byb2JsZW08L21hdC1pY29uPlxyXG4gICAgICB7e3N0YXR1c01zZ319XHJcbiAgICA8L3A+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgZGlzcGxheTogaW5saW5lO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcclxuICB9YCwgYFxyXG4gICAgcCB7XHJcbiAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgd2hpdGUtc3BhY2U6bm93cmFwO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgYCwgYFxyXG4gICAgbWF0LXByb2dyZXNzLXNwaW5uZXIge1xyXG4gICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICBgLCBgXHJcbiAgICBzcGFuIHtcclxuICAgICAgY29sb3I6IHJlZDtcclxuICAgIH1cclxuICBgXVxyXG5cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTdGF0dXNEaXNwbGF5IHtcclxuICBASW5wdXQoKSBzdGF0dXNBbGVydFR5cGUgPSAnaW5mbyc7XHJcbiAgQElucHV0KCkgc3RhdHVzTXNnID0gJ0luaXRpYWxpemUuLi4nO1xyXG4gIEBJbnB1dCgpIHN0YXR1c1dhaXRpbmcgPWZhbHNlO1xyXG59XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdXBsb2Fkc3RhdHVzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIFttb2RlXT1cInNwaW5uZXJNb2RlXCIgW2NvbG9yXT1cInN0YXR1c1wiIFtkaWFtZXRlcl09XCIzMFwiIFtzdHJva2VXaWR0aF09XCI1XCIgW3ZhbHVlXT1cIl92YWx1ZVwiIFttYXRUb29sdGlwXT1cInRvb2xUaXBUZXh0XCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBmbGV4OiAxO1xyXG4gIC8qIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7ICovXHJcbiAgICAvKmRpc3BsYXk6IGlubGluZTsgKi9cclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgfWAsYG1hdC1wcm9ncmVzcy1zcGlubmVye1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfWBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRTdGF0dXMge1xyXG4gIHByaXZhdGUgX2F3YWl0TmV3VXBsb2FkPWZhbHNlO1xyXG4gIHNwaW5uZXJNb2RlOlByb2dyZXNzU3Bpbm5lck1vZGUgPSAnZGV0ZXJtaW5hdGUnO1xyXG4gIF9zdGF0dXMhOnN0cmluZ1xyXG4gIF92YWx1ZSA9IDEwMFxyXG4gIGRpc3BsYXlWYWx1ZTpzdHJpbmd8bnVsbD1udWxsXHJcbiAgdG9vbFRpcFRleHQ6c3RyaW5nPScnXHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZVNwaW5uZXIoKXtcclxuXHJcbiAgICBsZXQgdXBsTXNnO1xyXG4gICAgaWYgKHRoaXMuX2F3YWl0TmV3VXBsb2FkIHx8IHRoaXMuX3ZhbHVlID09PSAwKSB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lck1vZGUgPSAnaW5kZXRlcm1pbmF0ZSdcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWU9JyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOydcclxuICAgICAgdXBsTXNnPSdQcmVwYXJpbmcgdXBsb2FkLidcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lck1vZGUgPSAnZGV0ZXJtaW5hdGUnXHJcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlPXRoaXMuX3ZhbHVlKyclJ1xyXG4gICAgICBpZih0aGlzLl92YWx1ZT09PTEwMCl7XHJcbiAgICAgICAgdXBsTXNnID0gJ1VwbG9hZCBjb21wbGV0ZSdcclxuICAgICAgfWVsc2Uge1xyXG4gICAgICAgIHVwbE1zZyA9ICdVcGxvYWQgcHJvZ3Jlc3M6ICcgKyB0aGlzLmRpc3BsYXlWYWx1ZVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnN0YXR1cz09PSd3YXJuJyl7XHJcbiAgICAgIHVwbE1zZz0nVXBsb2FkIGVycm9yIG9jY3VycmVkLiBQbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24uICcrdXBsTXNnXHJcbiAgICB9XHJcbiAgICB0aGlzLnRvb2xUaXBUZXh0PXVwbE1zZ1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3VwZGF0ZVNwaW5uZXIoKVxyXG4gIH07XHJcblxyXG4gIEBJbnB1dCgpIHNldCBhd2FpdE5ld1VwbG9hZChhd2FpdE5ld1VwbG9hZDpib29sZWFuKXtcclxuICAgIHRoaXMuX2F3YWl0TmV3VXBsb2FkPWF3YWl0TmV3VXBsb2FkXHJcbiAgICB0aGlzLl91cGRhdGVTcGlubmVyKClcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBzdGF0dXMoc3RhdHVzOnN0cmluZyl7XHJcbiAgICB0aGlzLl9zdGF0dXM9c3RhdHVzXHJcbiAgICB0aGlzLl91cGRhdGVTcGlubmVyKClcclxuICB9XHJcblxyXG4gIGdldCBzdGF0dXMoKTpzdHJpbmd7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnByb2dyZXNzZGlzcGxheScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxwPnt7cHJvZ3Jlc3NNc2d9fTwvcD5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBmbGV4OiAxO1xyXG4gIC8qIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7ICovXHJcbiAgICAvKmRpc3BsYXk6IGlubGluZTsgKi9cclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIH1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NEaXNwbGF5IHtcclxuICBwcm9ncmVzc01zZyA9ICdbaXRlbWNvZGVdJztcclxufVxyXG5cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFRyYW5zcG9ydEFjdGlvbnMge1xyXG4gIHN0YXJ0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgc3RvcEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIG5leHRBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBmd2ROZXh0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgcGF1c2VBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBmd2RBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBid2RBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnN0YXJ0QWN0aW9uID0gbmV3IEFjdGlvbignU3RhcnQnKTtcclxuICAgIHRoaXMuc3RvcEFjdGlvbiA9IG5ldyBBY3Rpb24oJ1N0b3AnKTtcclxuICAgIHRoaXMubmV4dEFjdGlvbiA9IG5ldyBBY3Rpb24oJ05leHQnKTtcclxuICAgIHRoaXMucGF1c2VBY3Rpb24gPSBuZXcgQWN0aW9uKCdQYXVzZScpO1xyXG4gICAgdGhpcy5md2ROZXh0QWN0aW9uID0gbmV3IEFjdGlvbignTmV4dCByZWNvcmRpbmcnKTtcclxuICAgIHRoaXMuZndkQWN0aW9uID0gbmV3IEFjdGlvbignRm9yd2FyZCcpO1xyXG4gICAgdGhpcy5id2RBY3Rpb24gPSBuZXcgQWN0aW9uKCdCYWNrd2FyZCcpO1xyXG5cclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJ0cmFuc3BvcnQnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGJ1dHRvbiBpZD1cImJ3ZEJ0blwiICpuZ0lmPVwibmF2aWdhdGlvbkVuYWJsZWRcIiAgKGNsaWNrKT1cImFjdGlvbnMuYndkQWN0aW9uLnBlcmZvcm0oKVwiIFtkaXNhYmxlZF09XCJid2REaXNhYmxlZCgpXCJcclxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b24+XHJcbiAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJzdGFydFN0b3BOZXh0UGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cInN0YXJ0RGlzYWJsZWQoKSAmJiBzdG9wRGlzYWJsZWQoKSAmJiBuZXh0RGlzYWJsZWQoKVwiICBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJzdGFydFN0b3BOZXh0SWNvbkNvbG9yKClcIj57e3N0YXJ0U3RvcE5leHRJY29uTmFtZSgpfX08L21hdC1pY29uPjxtYXQtaWNvbiAqbmdJZj1cIiFuZXh0RGlzYWJsZWQoKVwiIFtzdHlsZS5jb2xvcl09XCJuZXh0RGlzYWJsZWQoKSA/ICdncmV5JyA6ICdibGFjaydcIj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgPHNwYW4gZnhTaG93LnhzPVwiZmFsc2VcIj57e3N0YXJ0U3RvcE5leHROYW1lKCl9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInBhdXNpbmdFbmFibGVkXCIgKGNsaWNrKT1cImFjdGlvbnMucGF1c2VBY3Rpb24ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cInBhdXNlRGlzYWJsZWQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICA8bWF0LWljb24+cGF1c2U8L21hdC1pY29uPlxyXG4gICAgICA8c3BhbiBmeFNob3cueHM9XCJmYWxzZVwiPlBhdXNlPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiZndkTmV4dEJ0blwiICpuZ0lmPVwibmF2aWdhdGlvbkVuYWJsZWRcIiBmeEhpZGUueHMgKGNsaWNrKT1cImFjdGlvbnMuZndkTmV4dEFjdGlvbi5wZXJmb3JtKClcIiBbZGlzYWJsZWRdPVwiZndkTmV4dERpc2FibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uPnJlZG88L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiZndkQnRuXCIgKm5nSWY9XCJuYXZpZ2F0aW9uRW5hYmxlZFwiICAoY2xpY2spPVwiYWN0aW9ucy5md2RBY3Rpb24ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cImZ3ZERpc2FibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgIGZsZXg6IDIwO1xyXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBtYXJnaW46IDA7XHJcblxyXG4gIH1gLCBgXHJcbiAgICBkaXYge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICAgIGZsZXg6IDA7XHJcbiAgICB9YCxgXHJcbiAgICAgYnV0dG9uIHtcclxuICAgICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xyXG4gICAgIH1gXHJcbiAgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zcG9ydFBhbmVsIHtcclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHkhOmJvb2xlYW47XHJcbiAgQElucHV0KCkgYWN0aW9ucyE6IFRyYW5zcG9ydEFjdGlvbnM7XHJcbiAgQElucHV0KCkgbmF2aWdhdGlvbkVuYWJsZWQ9dHJ1ZTtcclxuICBASW5wdXQoKSBwYXVzaW5nRW5hYmxlZD10cnVlO1xyXG5cclxuICBzdGFydFN0b3BOZXh0QnV0dG9uTmFtZSE6c3RyaW5nO1xyXG4gIHN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZSE6c3RyaW5nO1xyXG5cclxuICBzdGFydERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLmFjdGlvbnMgfHwgdGhpcy5yZWFkb25seSB8fCB0aGlzLmFjdGlvbnMuc3RhcnRBY3Rpb24uZGlzYWJsZWRcclxuICB9XHJcblxyXG4gIHN0b3BEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5zdG9wQWN0aW9uLmRpc2FibGVkXHJcbiAgfVxyXG5cclxuICBuZXh0RGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLmFjdGlvbnMubmV4dEFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5uYXZpZ2F0aW9uRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIHBhdXNlRGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLmFjdGlvbnMucGF1c2VBY3Rpb24uZGlzYWJsZWQgfHwgIXRoaXMucGF1c2luZ0VuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBmd2REaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5md2RBY3Rpb24uZGlzYWJsZWQgfHwgIXRoaXMubmF2aWdhdGlvbkVuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBmd2ROZXh0RGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLmFjdGlvbnMuZndkTmV4dEFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5uYXZpZ2F0aW9uRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIGJ3ZERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zLmJ3ZEFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5uYXZpZ2F0aW9uRW5hYmxlZDtcclxuICB9XHJcblxyXG4gICAgc3RhcnRTdG9wTmV4dE5hbWUoKTpzdHJpbmd7XHJcbiAgICAgICAgaWYoIXRoaXMubmV4dERpc2FibGVkKCkpe1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25OYW1lPSBcIk5leHRcIlxyXG4gICAgICAgIH1lbHNlIGlmKCF0aGlzLnN0YXJ0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTdG9wTmV4dEJ1dHRvbk5hbWU9XCJTdGFydFwiXHJcbiAgICAgICAgfWVsc2UgaWYoIXRoaXMuc3RvcERpc2FibGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFN0b3BOZXh0QnV0dG9uTmFtZSA9IFwiU3RvcFwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25OYW1lO1xyXG4gICAgfVxyXG4gIHN0YXJ0U3RvcE5leHRJY29uTmFtZSgpOnN0cmluZ3tcclxuICAgICAgaWYoIXRoaXMuc3RhcnREaXNhYmxlZCgpKXtcclxuICAgICAgICAgdGhpcy5zdGFydFN0b3BOZXh0QnV0dG9uSWNvbk5hbWU9XCJmaWJlcl9tYW51YWxfcmVjb3JkXCJcclxuICAgICAgfWVsc2UgaWYoIXRoaXMuc3RvcERpc2FibGVkKCkpe1xyXG4gICAgICAgICAgdGhpcy5zdGFydFN0b3BOZXh0QnV0dG9uSWNvbk5hbWU9XCJzdG9wXCJcclxuICAgICAgfWVsc2UgaWYoIXRoaXMubmV4dERpc2FibGVkKCkpe1xyXG4gICAgICAgICAgdGhpcy5zdGFydFN0b3BOZXh0QnV0dG9uSWNvbk5hbWU9XCJzdG9wXCJcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5zdGFydFN0b3BOZXh0QnV0dG9uSWNvbk5hbWVcclxuICB9XHJcbiAgICBzdGFydFN0b3BOZXh0SWNvbkNvbG9yKCk6c3RyaW5ne1xyXG4gICAgICAgIGlmKCF0aGlzLnN0YXJ0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICAgIHJldHVybiBcInJlZFwiXHJcbiAgICAgICAgfWVsc2UgaWYoIXRoaXMuc3RvcERpc2FibGVkKCkgfHwgIXRoaXMubmV4dERpc2FibGVkKCkpe1xyXG4gICAgICAgICAgICByZXR1cm4gXCJ5ZWxsb3dcIlxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gXCJncmV5XCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICBzdGFydFN0b3BOZXh0UGVyZm9ybSgpe1xyXG4gICAgaWYoIXRoaXMuc3RhcnREaXNhYmxlZCgpKXtcclxuICAgICAgdGhpcy5hY3Rpb25zLnN0YXJ0QWN0aW9uLnBlcmZvcm0oKTtcclxuICAgIH1lbHNlIGlmKCF0aGlzLnN0b3BEaXNhYmxlZCgpKXtcclxuICAgICAgdGhpcy5hY3Rpb25zLnN0b3BBY3Rpb24ucGVyZm9ybSgpO1xyXG4gICAgfWVsc2UgaWYoIXRoaXMubmV4dERpc2FibGVkKCkpe1xyXG4gICAgICB0aGlzLmFjdGlvbnMubmV4dEFjdGlvbi5wZXJmb3JtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd2FrZWxvY2tpbmRpY2F0b3InLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWljb24gKm5nSWY9XCJfc2NyZWVuTG9ja2VkXCI+c2NyZWVuX2xvY2tfcG9ydHJhaXQ8L21hdC1pY29uPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV2FrZUxvY2tJbmRpY2F0b3Ige1xyXG4gIF9zY3JlZW5Mb2NrZWQ9ZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgQElucHV0KCkgc2V0IHNjcmVlbkxvY2tlZChzY3JlZW5Mb2NrOmJvb2xlYW4pe1xyXG4gICAgdGhpcy5fc2NyZWVuTG9ja2VkPXNjcmVlbkxvY2s7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVhZHlzdGF0ZWluZGljYXRvcicsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWljb24gW21hdFRvb2x0aXBdPVwicmVhZHlTdGF0ZVRvb2xUaXBcIj57e2hvdXJHbGFzc0ljb25OYW1lfX08L21hdC1pY29uPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVhZHlTdGF0ZUluZGljYXRvciB7XHJcbiAgX3JlYWR5PXRydWU7XHJcbiAgaG91ckdsYXNzSWNvbk5hbWU9J2hvdXJnbGFzc19lbXB0eSdcclxuICByZWFkeVN0YXRlVG9vbFRpcDpzdHJpbmc9JydcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBASW5wdXQoKSBzZXQgcmVhZHkocmVhZHk6Ym9vbGVhbil7XHJcbiAgICB0aGlzLl9yZWFkeT1yZWFkeVxyXG4gICAgdGhpcy5ob3VyR2xhc3NJY29uTmFtZT10aGlzLl9yZWFkeT8naG91cmdsYXNzX2VtcHR5JzonaG91cmdsYXNzX2Z1bGwnXHJcbiAgICB0aGlzLnJlYWR5U3RhdGVUb29sVGlwPXRoaXMuX3JlYWR5PydBdWRpbyBwcm9jZXNzaW5nIGFuZCB1cGxvYWQgZG9uZS4gWW91IGNhbiBsZWF2ZSB0aGUgcGFnZSB3aXRob3V0IGRhdGEgbG9zcy4nOidQbGVhc2Ugd2FpdCB1bnRpbCBhdWRpbyBwcm9jZXNzaW5nIGFuZCB1cGxvYWQgaGF2ZSBmaW5pc2hlZC4gUGxlYXNlIGRvIG5vdCBsZWF2ZSB0aGUgcGFnZS4nXHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZHkoKTpib29sZWFue1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhcHAtc3ByY29udHJvbHBhbmVsJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgZnhIaWRlLnhzICBmeExheW91dD1cInJvd1wiID5cclxuICAgICA8YXBwLXNwcnN0YXR1c2Rpc3BsYXkgZnhGbGV4PVwiMCAwIDBcIiBbc3RhdHVzTXNnXT1cInN0YXR1c01zZ1wiIFtzdGF0dXNBbGVydFR5cGVdPVwic3RhdHVzQWxlcnRUeXBlXCIgW3N0YXR1c1dhaXRpbmddPVwic3RhdHVzV2FpdGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW4teHNcIj48L2FwcC1zcHJzdGF0dXNkaXNwbGF5PlxyXG4gICAgICA8YXBwLXNwcnRyYW5zcG9ydCBmeEZsZXg9XCIxMCAwIDBcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbYWN0aW9uc109XCJ0cmFuc3BvcnRBY3Rpb25zXCIgW25hdmlnYXRpb25FbmFibGVkXT1cIm5hdmlnYXRpb25FbmFibGVkXCI+PC9hcHAtc3BydHJhbnNwb3J0PlxyXG4gICAgICA8YXBwLXVwbG9hZHN0YXR1cyBmeEZsZXg9XCIwIDAgMFwiICpuZ0lmPVwiZW5hYmxlVXBsb2FkUmVjb3JkaW5nc1wiIFt2YWx1ZV09XCJ1cGxvYWRQcm9ncmVzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInVwbG9hZFN0YXR1c1wiIFthd2FpdE5ld1VwbG9hZF09XCJwcm9jZXNzaW5nXCI+PC9hcHAtdXBsb2Fkc3RhdHVzPlxyXG4gICAgICA8YXBwLXJlYWR5c3RhdGVpbmRpY2F0b3IgW3JlYWR5XT1cIl9yZWFkeVwiPjwvYXBwLXJlYWR5c3RhdGVpbmRpY2F0b3I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhTaG93LnhzIGZ4SGlkZSBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhGbGV4RmlsbD5cclxuICAgICAgIDxhcHAtc3Byc3RhdHVzZGlzcGxheSBmeEZsZXg9XCIxMCAwIDBcIiBmeEZsZXhBbGlnbj1cImxlZnRcIiBbc3RhdHVzTXNnXT1cInN0YXR1c01zZ1wiIFtzdGF0dXNBbGVydFR5cGVdPVwic3RhdHVzQWxlcnRUeXBlXCIgW3N0YXR1c1dhaXRpbmddPVwic3RhdHVzV2FpdGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlbi14c1wiPjwvYXBwLXNwcnN0YXR1c2Rpc3BsYXk+XHJcbiAgICAgICA8YXBwLXVwbG9hZHN0YXR1cyBmeEZsZXg9XCIwIDAgMFwiICpuZ0lmPVwiZW5hYmxlVXBsb2FkUmVjb3JkaW5nc1wiIFt2YWx1ZV09XCJ1cGxvYWRQcm9ncmVzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwidXBsb2FkU3RhdHVzXCIgW2F3YWl0TmV3VXBsb2FkXT1cInByb2Nlc3NpbmdcIj48L2FwcC11cGxvYWRzdGF0dXM+XHJcbiAgICAgICAgPGFwcC1yZWFkeXN0YXRlaW5kaWNhdG9yIFtyZWFkeV09XCJfcmVhZHlcIj48L2FwcC1yZWFkeXN0YXRlaW5kaWNhdG9yPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFwcC1zcHJ0cmFuc3BvcnQgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2FjdGlvbnNdPVwidHJhbnNwb3J0QWN0aW9uc1wiIFtuYXZpZ2F0aW9uRW5hYmxlZF09XCJuYXZpZ2F0aW9uRW5hYmxlZFwiPjwvYXBwLXNwcnRyYW5zcG9ydD5cclxuXHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogW2BkaXYge1xyXG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICBtaW4taGVpZ2h0OiBtaW4tY29udGVudDsgLyogaW1wb3J0YW50ICovXHJcbiAgfWBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sUGFuZWwge1xyXG4gIEBWaWV3Q2hpbGQoU3RhdHVzRGlzcGxheSwgeyBzdGF0aWM6IHRydWUgfSkgc3RhdHVzRGlzcGxheSE6IFN0YXR1c0Rpc3BsYXk7XHJcbiAgQFZpZXdDaGlsZChUcmFuc3BvcnRQYW5lbCwgeyBzdGF0aWM6IHRydWUgfSkgdHJhbnNwb3J0UGFuZWwhOiBUcmFuc3BvcnRQYW5lbDtcclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHkhOmJvb2xlYW5cclxuICBASW5wdXQoKSB0cmFuc3BvcnRBY3Rpb25zITogVHJhbnNwb3J0QWN0aW9uc1xyXG4gIEBJbnB1dCgpIHByb2Nlc3Npbmc9ZmFsc2VcclxuICBASW5wdXQoKSBzdGF0dXNNc2chOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3RhdHVzQWxlcnRUeXBlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN0YXR1c1dhaXRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHVwbG9hZFN0YXR1cyE6IHN0cmluZztcclxuICBASW5wdXQoKSB1cGxvYWRQcm9ncmVzcyE6IG51bWJlcjtcclxuICBASW5wdXQoKSBjdXJyZW50UmVjb3JkaW5nOiBBdWRpb0J1ZmZlcnwgbnVsbHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVVwbG9hZFJlY29yZGluZ3MhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG5hdmlnYXRpb25FbmFibGVkPXRydWU7XHJcblxyXG4gIF9yZWFkeT10cnVlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG5cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCByZWFkeShyZWFkeTpib29sZWFuKXtcclxuICAgIHRoaXMuX3JlYWR5PXJlYWR5XHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZHkoKTpib29sZWFue1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -28,8 +28,8 @@ export class Progress {
28
28
  }
29
29
  }
30
30
  }
31
- Progress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: Progress, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
- Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: Progress, selector: "app-sprprogress", inputs: { items: "items", selectedItemIdx: "selectedItemIdx", enableDownload: "enableDownload" }, outputs: { onRowSelect: "onRowSelect", rowSelect: "rowSelect", onShowDoneAction: "onShowDoneAction", clickDone: "clickDone", onDownloadDoneAction: "onDownloadDoneAction", clickDownloadDone: "clickDownloadDone" }, ngImport: i0, template: `
31
+ Progress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Progress, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
+ Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: Progress, selector: "app-sprprogress", inputs: { items: "items", selectedItemIdx: "selectedItemIdx", enableDownload: "enableDownload" }, outputs: { onRowSelect: "onRowSelect", rowSelect: "rowSelect", onShowDoneAction: "onShowDoneAction", clickDone: "clickDone", onDownloadDoneAction: "onDownloadDoneAction", clickDownloadDone: "clickDownloadDone" }, ngImport: i0, template: `
33
33
 
34
34
  <table class="mat-typography">
35
35
  <thead>
@@ -57,7 +57,7 @@ Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
57
57
  </tbody>
58
58
  </table>
59
59
  `, isInline: true, styles: [":host{overflow-x:hidden;overflow-y:scroll;padding:10pt;flex:.1 0 content;background:white;min-height:1px}\n", "table{min-height:1px;border-collapse:collapse}table,th,td{border:1px solid lightgrey;padding:.5em}\n", ".selRow{background:lightblue}\n", ".promptDescriptor{max-width:200px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }] });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: Progress, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Progress, decorators: [{
61
61
  type: Component,
62
62
  args: [{
63
63
  selector: 'app-sprprogress',
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
150
150
  }], clickDownloadDone: [{
151
151
  type: Output
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9wcm9ncmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFBOzs7OztBQStFcEUsTUFBTSxPQUFPLFFBQVE7SUEzRXJCO1FBNEVXLFVBQUssR0FBbUIsSUFBSSxDQUFDO1FBQzdCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLG1CQUFjLEdBQVUsS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU16QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBUzlDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FRN0Q7SUF0QkMsSUFDSSxTQUFTLENBQUMsTUFBYTtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBR0QsSUFDSSxTQUFTLENBQUMsTUFBYTtRQUN6QixJQUFHLElBQUksQ0FBQyxLQUFLLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRTtZQUM3RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUdELElBQ0ksaUJBQWlCLENBQUMsTUFBYTtRQUNqQyxJQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRTtZQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7cUdBMUJVLFFBQVE7eUZBQVIsUUFBUSw4V0F2RVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVDsyRkE0Q1UsUUFBUTtrQkEzRXBCLFNBQVM7bUJBQUM7b0JBRVQsUUFBUSxFQUFFLGlCQUFpQjtvQkFFM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7b0JBQ0QsTUFBTSxFQUFFLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQWVQO3dCQUNFOzs7Ozs7Ozs7Ozs7OztLQWNELEVBQUU7Ozs7S0FJRixFQUFDOzs7Ozs7TUFNQSxDQUFDO2lCQUVOOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFSCxTQUFTO3NCQURaLE1BQU07Z0JBS0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVILFNBQVM7c0JBRFosTUFBTTtnQkFRRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUgsaUJBQWlCO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtJdGVtfSBmcm9tICcuL2l0ZW0nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJwcm9ncmVzcycsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcblxyXG4gICAgPHRhYmxlIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPiM8L3RoPjwhLS08dGg+Q29kZTwvdGg+LS0+XHJcbiAgICAgICAgPHRoPlByb21wdDwvdGg+XHJcbiAgICAgICAgPHRoPlN0YXR1czwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGhlYWQ+XHJcbiAgICAgIDx0Ym9keT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zXCI+XHJcblxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGl0SWR4PWluZGV4O1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJyb3dTZWxlY3Q9aXRJZHhcIiBbY2xhc3Muc2VsUm93XT1cIml0SWR4PT09c2VsZWN0ZWRJdGVtSWR4XCJcclxuICAgICAgICAgICAgW3Njcm9sbEludG9WaWV3VG9Cb3R0b21dPVwiaXRJZHg9PT1zZWxlY3RlZEl0ZW1JZHhcIj5cclxuICAgICAgICAgIDx0ZD57e2l0SWR4fX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwicHJvbXB0RGVzY3JpcHRvclwiPnt7aXRlbS5wcm9tcHRBc1N0cmluZ319PC90ZD5cclxuICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5yZWNzICYmIGl0ZW0ucmVjcy5sZW5ndGg+MFwiPmRvbmU8L21hdC1pY29uPlxyXG5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XHJcbiAgICBwYWRkaW5nOiAxMHB0O1xyXG4gICAgLypmbGV4OiAwLjEgMCAzMDBweDsgIFxyXG4gICAgICBtaW4td2lkdGg6IDMwMHB4OyAqL1xyXG4gICAgZmxleDogMC4xIDAgY29udGVudDtcclxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgLyogV29ya2Fyb3VuZCBmb3IgRmlyZWZveFxyXG4gICAgSWYgdGhlIHByb2dyZXNzIHRhYmxlIGdldHMgbG9uZyAoc2NyaXB0IHdpdGggbWFueSBpdGVtcykgRkYgaW5jcmVhc2VzIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJmbG93IHByb2dyZXNzQ29udGFpbmVyIGFuZFxyXG4gICAgdGhlIHdob2xlIGFwcCBkb2VzIG5vdCBmaXQgaW50byB0aGUgcGFnZSBhbnltb3JlLiBUaGUgYXBwIG92ZXJmbG93cyBhbmQgc2hvd3MgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgZm9yIHRoZSB3aG9sZSBhcHAuXHJcbiAgICBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yODYzNjgzMi9maXJlZm94LW92ZXJmbG93LXktbm90LXdvcmtpbmctd2l0aC1uZXN0ZWQtZmxleGJveFxyXG4gICAgKi9cclxuICAgIC8qIG1pbi1oZWlnaHQ6MHB4OyAqL1xyXG4gICAgbWluLWhlaWdodDogMXB4O1xyXG4gIH1gLFxyXG4gICAgICBgdGFibGUge1xyXG4gICAgICBtaW4taGVpZ2h0OiAxcHg7XHJcbiAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcbiAgICAgICAgICAvKiBUYWJsZXMgZG8gbm90IGhhdmUgYSBuYXR1cmFsIG1pbiBzaXplICovXHJcbiAgICAgICAgICAvKm1pbi13aWR0aDogMzAwcHg7ICovXHJcbiAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHRhYmxlLCB0aCwgdGQge1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCBsaWdodGdyZXk7XHJcbiAgICAgIHBhZGRpbmc6IDAuNWVtO1xyXG4gICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGAsIGBcclxuICAgICAgLnNlbFJvdyB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbGlnaHRibHVlO1xyXG4gICAgICB9XHJcbiAgICBgLGAucHJvbXB0RGVzY3JpcHRvcntcclxuICAgICAgXHJcbiAgICAgIG1heC13aWR0aDogMjAwcHg7XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3Mge1xyXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxJdGVtPnxudWxsPW51bGw7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtSWR4ID0gMDtcclxuICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KClcclxuICBzZXQgcm93U2VsZWN0KHJvd0lkeDpudW1iZXIpe1xyXG4gICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHJvd0lkeCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25TaG93RG9uZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHNldCBjbGlja0RvbmUocm93SWR4Om51bWJlcil7XHJcbiAgICBpZih0aGlzLml0ZW1zICYmdGhpcy5pdGVtc1tyb3dJZHhdICYmIHRoaXMuaXRlbXNbcm93SWR4XS5yZWNzKSB7XHJcbiAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdChyb3dJZHgpO1xyXG4gICAgICB0aGlzLm9uU2hvd0RvbmVBY3Rpb24uZW1pdChyb3dJZHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uRG93bmxvYWREb25lQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgc2V0IGNsaWNrRG93bmxvYWREb25lKHJvd0lkeDpudW1iZXIpe1xyXG4gICAgaWYodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zW3Jvd0lkeF0gJiYgdGhpcy5pdGVtc1tyb3dJZHhdLnJlY3MpIHtcclxuICAgICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHJvd0lkeCk7XHJcbiAgICAgIHRoaXMub25Eb3dubG9hZERvbmVBY3Rpb24uZW1pdChyb3dJZHgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9wcm9ncmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFBOzs7OztBQStFcEUsTUFBTSxPQUFPLFFBQVE7SUEzRXJCO1FBNEVXLFVBQUssR0FBbUIsSUFBSSxDQUFDO1FBQzdCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLG1CQUFjLEdBQVUsS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU16QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBUzlDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FRN0Q7SUF0QkMsSUFDSSxTQUFTLENBQUMsTUFBYTtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBR0QsSUFDSSxTQUFTLENBQUMsTUFBYTtRQUN6QixJQUFHLElBQUksQ0FBQyxLQUFLLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRTtZQUM3RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUdELElBQ0ksaUJBQWlCLENBQUMsTUFBYTtRQUNqQyxJQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRTtZQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7c0dBMUJVLFFBQVE7MEZBQVIsUUFBUSw4V0F2RVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVDs0RkE0Q1UsUUFBUTtrQkEzRXBCLFNBQVM7bUJBQUM7b0JBRVQsUUFBUSxFQUFFLGlCQUFpQjtvQkFFM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7b0JBQ0QsTUFBTSxFQUFFLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQWVQO3dCQUNFOzs7Ozs7Ozs7Ozs7OztLQWNELEVBQUU7Ozs7S0FJRixFQUFDOzs7Ozs7TUFNQSxDQUFDO2lCQUVOOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFSCxTQUFTO3NCQURaLE1BQU07Z0JBS0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVILFNBQVM7c0JBRFosTUFBTTtnQkFRRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUgsaUJBQWlCO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtJdGVtfSBmcm9tICcuL2l0ZW0nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJwcm9ncmVzcycsXHJcblxyXG4gIHRlbXBsYXRlOiBgXHJcblxyXG4gICAgPHRhYmxlIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPiM8L3RoPjwhLS08dGg+Q29kZTwvdGg+LS0+XHJcbiAgICAgICAgPHRoPlByb21wdDwvdGg+XHJcbiAgICAgICAgPHRoPlN0YXR1czwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGhlYWQ+XHJcbiAgICAgIDx0Ym9keT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zXCI+XHJcblxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGl0SWR4PWluZGV4O1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJyb3dTZWxlY3Q9aXRJZHhcIiBbY2xhc3Muc2VsUm93XT1cIml0SWR4PT09c2VsZWN0ZWRJdGVtSWR4XCJcclxuICAgICAgICAgICAgW3Njcm9sbEludG9WaWV3VG9Cb3R0b21dPVwiaXRJZHg9PT1zZWxlY3RlZEl0ZW1JZHhcIj5cclxuICAgICAgICAgIDx0ZD57e2l0SWR4fX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwicHJvbXB0RGVzY3JpcHRvclwiPnt7aXRlbS5wcm9tcHRBc1N0cmluZ319PC90ZD5cclxuICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5yZWNzICYmIGl0ZW0ucmVjcy5sZW5ndGg+MFwiPmRvbmU8L21hdC1pY29uPlxyXG5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XHJcbiAgICBwYWRkaW5nOiAxMHB0O1xyXG4gICAgLypmbGV4OiAwLjEgMCAzMDBweDsgIFxyXG4gICAgICBtaW4td2lkdGg6IDMwMHB4OyAqL1xyXG4gICAgZmxleDogMC4xIDAgY29udGVudDtcclxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgLyogV29ya2Fyb3VuZCBmb3IgRmlyZWZveFxyXG4gICAgSWYgdGhlIHByb2dyZXNzIHRhYmxlIGdldHMgbG9uZyAoc2NyaXB0IHdpdGggbWFueSBpdGVtcykgRkYgaW5jcmVhc2VzIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJmbG93IHByb2dyZXNzQ29udGFpbmVyIGFuZFxyXG4gICAgdGhlIHdob2xlIGFwcCBkb2VzIG5vdCBmaXQgaW50byB0aGUgcGFnZSBhbnltb3JlLiBUaGUgYXBwIG92ZXJmbG93cyBhbmQgc2hvd3MgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgZm9yIHRoZSB3aG9sZSBhcHAuXHJcbiAgICBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yODYzNjgzMi9maXJlZm94LW92ZXJmbG93LXktbm90LXdvcmtpbmctd2l0aC1uZXN0ZWQtZmxleGJveFxyXG4gICAgKi9cclxuICAgIC8qIG1pbi1oZWlnaHQ6MHB4OyAqL1xyXG4gICAgbWluLWhlaWdodDogMXB4O1xyXG4gIH1gLFxyXG4gICAgICBgdGFibGUge1xyXG4gICAgICBtaW4taGVpZ2h0OiAxcHg7XHJcbiAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcbiAgICAgICAgICAvKiBUYWJsZXMgZG8gbm90IGhhdmUgYSBuYXR1cmFsIG1pbiBzaXplICovXHJcbiAgICAgICAgICAvKm1pbi13aWR0aDogMzAwcHg7ICovXHJcbiAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHRhYmxlLCB0aCwgdGQge1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCBsaWdodGdyZXk7XHJcbiAgICAgIHBhZGRpbmc6IDAuNWVtO1xyXG4gICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGAsIGBcclxuICAgICAgLnNlbFJvdyB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbGlnaHRibHVlO1xyXG4gICAgICB9XHJcbiAgICBgLGAucHJvbXB0RGVzY3JpcHRvcntcclxuICAgICAgXHJcbiAgICAgIG1heC13aWR0aDogMjAwcHg7XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3Mge1xyXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxJdGVtPnxudWxsPW51bGw7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtSWR4ID0gMDtcclxuICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KClcclxuICBzZXQgcm93U2VsZWN0KHJvd0lkeDpudW1iZXIpe1xyXG4gICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHJvd0lkeCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25TaG93RG9uZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHNldCBjbGlja0RvbmUocm93SWR4Om51bWJlcil7XHJcbiAgICBpZih0aGlzLml0ZW1zICYmdGhpcy5pdGVtc1tyb3dJZHhdICYmIHRoaXMuaXRlbXNbcm93SWR4XS5yZWNzKSB7XHJcbiAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdChyb3dJZHgpO1xyXG4gICAgICB0aGlzLm9uU2hvd0RvbmVBY3Rpb24uZW1pdChyb3dJZHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uRG93bmxvYWREb25lQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgc2V0IGNsaWNrRG93bmxvYWREb25lKHJvd0lkeDpudW1iZXIpe1xyXG4gICAgaWYodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zW3Jvd0lkeF0gJiYgdGhpcy5pdGVtc1tyb3dJZHhdLnJlY3MpIHtcclxuICAgICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHJvd0lkeCk7XHJcbiAgICAgIHRoaXMub25Eb3dubG9hZERvbmVBY3Rpb24uZW1pdChyb3dJZHgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=