@alauda-fe/common 1.4.33-beta.0 → 1.4.33-beta.1

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.
@@ -83,7 +83,7 @@ export declare class ArrayFormTableComponent implements OnDestroy {
83
83
  addDisabled: boolean | '';
84
84
  actionColumnDivider: boolean | '';
85
85
  showZeroState: boolean;
86
- get formDirective(): NgForm | FormGroupDirective;
86
+ get formDirective(): FormGroupDirective | NgForm;
87
87
  /**
88
88
  * 自定义是否展示错误内容
89
89
  * 例如 control 是 FormGroup,只有在内部子 control 错误时才需要展示错误内容
@@ -21,7 +21,7 @@ export declare class BaseNestedFormControl<V, M = V> implements AfterViewInit, O
21
21
  protected asyncValidator: boolean;
22
22
  protected cdr: ChangeDetectorRef;
23
23
  protected destroy$$: Subject<void>;
24
- protected hostForm: NgForm | FormGroupDirective;
24
+ protected hostForm: FormGroupDirective | NgForm;
25
25
  constructor();
26
26
  ngAfterViewInit(): void;
27
27
  ngOnDestroy(): void;
@@ -170,6 +170,7 @@ export class TerminalComponent {
170
170
  this.coding = 'utf8';
171
171
  this.connectionStatus = ConnectionStatus.Connecting;
172
172
  this.commandHasRun = false;
173
+ this.isDestroyed = false;
173
174
  this.socket$$ = new Subject();
174
175
  this.shouldFallBackOnClose = false;
175
176
  this.initSocketListeners = (initialCommand) => {
@@ -224,6 +225,9 @@ export class TerminalComponent {
224
225
  .getApiAddress()
225
226
  .pipe(take(1))
226
227
  .subscribe(apiAddress => {
228
+ if (this.isDestroyed) {
229
+ return;
230
+ }
227
231
  const initialCommand = fallbackCommand || this.option.command || BIN_SH;
228
232
  this.initSocket(initialCommand, apiAddress);
229
233
  this.initSocketListeners(initialCommand);
@@ -239,6 +243,7 @@ export class TerminalComponent {
239
243
  }
240
244
  }
241
245
  ngOnDestroy() {
246
+ this.isDestroyed = true;
242
247
  this.killProcess();
243
248
  this.closeSocket();
244
249
  this.resizeObserver?.disconnect();
@@ -560,4 +565,4 @@ function decode(coding, data) {
560
565
  const decoder = new TextDecoder(coding);
561
566
  return decoder.decode(dataView);
562
567
  }
563
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2V4ZWMvdGVybWluYWwvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2V4ZWMvdGVybWluYWwvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFn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QUFxQixFQUFFLENBQUMsUUFBUSxDQUFDO1lBUy9DLE1BQU07a0JBREwsWUFBWTttQkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQXpDOUIsaUJBQWlCO0FBNGE5QixTQUFTLE1BQU0sQ0FBQyxNQUFjLEVBQUUsSUFBWTtJQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FDM0IsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUMxRCxDQUFDO0lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlLCBTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZW5jb2RlIH0gZnJvbSAnYWI2NCc7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUZXJtaW5hbCB9IGZyb20gJ3h0ZXJtJztcbmltcG9ydCB7IENhbnZhc0FkZG9uIH0gZnJvbSAneHRlcm0tYWRkb24tY2FudmFzJztcbmltcG9ydCB7IEZpdEFkZG9uIH0gZnJvbSAneHRlcm0tYWRkb24tZml0JztcbmltcG9ydCB7IFNlYXJjaEFkZG9uIH0gZnJvbSAneHRlcm0tYWRkb24tc2VhcmNoJztcbmltcG9ydCB7IFdlYkxpbmtzQWRkb24gfSBmcm9tICd4dGVybS1hZGRvbi13ZWItbGlua3MnO1xuaW1wb3J0IHsgV2ViZ2xBZGRvbiB9IGZyb20gJ3h0ZXJtLWFkZG9uLXdlYmdsJztcblxuaW1wb3J0IHsgQXBpR2F0ZXdheVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvblN0YXR1cyxcbiAgVEVSTUlOQUxfRk9OVF9MT0NBTF9TVE9SQUdFX0tFWSxcbiAgVEVSTUlOQUxfVEhFTUVfTE9DQUxfU1RPUkFHRV9LRVksXG4gIFhURVJNX0RBUktfVEhFTUUsXG4gIFhURVJNX0RFRkFVTFRfT1BUSU9OUyxcbiAgWFRFUk1fTElHSFRfVEhFTUUsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUZXJtaW5hbE9wdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IEJJTl9TSCA9ICcvYmluL3NoJztcblxuZXhwb3J0IGNvbnN0IEVYRUNfRkFJTEVEX01FU1NBR0VfQ09OVEFJTkVSRCA9IGBJbnRlcm5hbCBlcnJvciBvY2N1cnJlZDogZXJyb3IgZXhlY3V0aW5nIGNvbW1hbmQgaW4gY29udGFpbmVyYDtcbmV4cG9ydCBjb25zdCBFWEVDX0ZBSUxFRF9NRVNTQUdFX0RPQ0tFUiA9IGBPQ0kgcnVudGltZSBleGVjIGZhaWxlZDogZXhlYyBmYWlsZWQ6IHVuYWJsZSB0byBzdGFydCBjb250YWluZXIgcHJvY2Vzc2A7XG5leHBvcnQgY29uc3QgTk9fUEVSTUlTU0lPTl9DT0RFID0gNDBfMDAxO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdFJlbmRlcmVyQWRkb24oKSB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICBpZiAoY2FudmFzLmdldENvbnRleHQoJ3dlYmdsMicpKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJnbEFkZG9uKCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBDYW52YXNBZGRvbigpO1xufVxuXG4vKipcbiAqIEZvciBkaXNwYXRjaGluZyBrZXlib2FyZCBldmVudHMgYXV0b21hdGljYWxseSB0byB4dGVybSxcbiAqIHBsZWFzZSB2aWV3IGh0dHBzOi8vd3d3LnBoeXNpY3MudWRlbC5lZHUvfndhdHNvbi9zY2VuMTAzL2FzY2lpLmh0bWwgZm9yIHJlZmVyZW5jZS5cbiAqXG4gKiBGb3IgaW5zdGFuY2UsIGlmIHlvdSB3YW50IHRvIGRpc3BhdGNoIGBDdHJsK0NgIHRvIHh0ZXJtLCB5b3Ugc2hvdWxkIGRpc3BhdGNoIGBcXHgwM2AoYWthIGBcXHUwMDAzYCkgdG8gdGhlIHNvY2tldC5cbiAqXG4gKiBgYGB0c1xuICogc29ja2V0LnNlbmQoJzAnICsgZW5jb2RlKCdcXHUwMDAzJykpXG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXRlcm1pbmFsJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3N0eWxlLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRlcm1pbmFsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIENvbm5lY3Rpb25TdGF0dXMgPSBDb25uZWN0aW9uU3RhdHVzO1xuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbjogVGVybWluYWxPcHRpb247XG5cbiAgQElucHV0KClcbiAgaW5kZXg6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBleHRyYUJ1dHRvbjogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgZXh0cmFDb250ZW50OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgY29ubmVjdGlvblN0YXR1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29ubmVjdGlvblN0YXR1cz4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VuZERhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc29ja2V0UmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPFdlYlNvY2tldD4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgZmFsbGJhY2tTaGVsbCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2FuY2hvcicpXG4gIGFuY2hvclJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKVxuICBzZWFyY2hJbnB1dFJlZjogU2VhcmNoQ29tcG9uZW50O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbJyRldmVudCddKVxuICBiZWZvcmVVbmxvYWQoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc29ja2V0ICYmIHRoaXMuY29ubmVjdGlvblN0YXR1cyA9PT0gQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0ZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5yZXR1cm5WYWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp1bmxvYWQnLCBbJyRldmVudCddKVxuICB1bmxvYWQoX2V2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkge1xuICAgIHRoaXMua2lsbFByb2Nlc3MoKTtcbiAgfVxuXG4gIHRoZW1lOiAnbGlnaHQnIHwgJ2RhcmsnID1cbiAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShURVJNSU5BTF9USEVNRV9MT0NBTF9TVE9SQUdFX0tFWSkgPT09ICdsaWdodCdcbiAgICAgID8gJ2xpZ2h0J1xuICAgICAgOiAnZGFyayc7XG5cbiAgZm9udFNpemU6IG51bWJlciA9XG4gICAgK2xvY2FsU3RvcmFnZS5nZXRJdGVtKFRFUk1JTkFMX0ZPTlRfTE9DQUxfU1RPUkFHRV9LRVkpIHx8XG4gICAgWFRFUk1fREVGQVVMVF9PUFRJT05TLmZvbnRTaXplO1xuXG4gIHNlYXJjaGluZyA9IGZhbHNlO1xuICBzZWFyY2hLZXl3b3JkID0gJyc7XG4gIGNvZGluZyA9ICd1dGY4JztcbiAgY29ubmVjdGlvblN0YXR1czogQ29ubmVjdGlvblN0YXR1cyA9IENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGluZztcbiAgY29tbWFuZEhhc1J1biA9IGZhbHNlO1xuXG4gIHh0ZXJtOiBUZXJtaW5hbDtcbiAgcHJpdmF0ZSBzZWFyY2hBZGRvbjogU2VhcmNoQWRkb247XG4gIHByaXZhdGUgZml0QWRkb246IEZpdEFkZG9uO1xuICBwcml2YXRlIHNvY2tldDogV2ViU29ja2V0O1xuICBwcml2YXRlIHBpbmc6IG51bWJlcjtcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgc29ja2V0JCQgPSBuZXcgU3ViamVjdDxXZWJTb2NrZXQ+KCk7XG5cbiAgc2hvdWxkRmFsbEJhY2tPbkNsb3NlID0gZmFsc2U7XG5cbiAgZ2V0IHRoZW1lQ2xhc3MoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICdhY2wtdGVybWluYWxfX2Ryb3Bkb3duICcgK1xuICAgICAgKHRoaXMudGhlbWUgPT09ICdsaWdodCdcbiAgICAgICAgPyAnYWNsLXRlcm1pbmFsX19kcm9wZG93bi0tbGlnaHQnXG4gICAgICAgIDogJ2FjbC10ZXJtaW5hbF9fZHJvcGRvd24tLWRhcmsnKVxuICAgICk7XG4gIH1cblxuICBnZXQgc2hvd0xvYWRpbmcoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyA9PT0gQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nIHx8XG4gICAgICAoIXRoaXMub3B0aW9uLm5vdENsZWFyV2hlblJlY29ubmVjdCAmJlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMgPT09IENvbm5lY3Rpb25TdGF0dXMuUmVDb25uZWN0aW5nKVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwaUdhdGV3YXk6IEFwaUdhdGV3YXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdFNvY2tldENvbm5lY3Rpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgb3B0aW9uIH06IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy54dGVybSAmJiBvcHRpb24pIHtcbiAgICAgIHRoaXMucmVjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5raWxsUHJvY2VzcygpO1xuICAgIHRoaXMuY2xvc2VTb2NrZXQoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMueHRlcm0/LmRpc3Bvc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy54dGVybT8uZm9jdXMoKTtcbiAgfVxuXG4gIHJlY29ubmVjdCgpIHtcbiAgICB0aGlzLmNvbW1hbmRIYXNSdW4gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlU29ja2V0KCk7XG4gICAgdGhpcy5pbml0U29ja2V0Q29ubmVjdGlvbigpO1xuICB9XG5cbiAga2lsbFByb2Nlc3MoKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZCgnMCcgKyBlbmNvZGUoJ1xcdTAwMDNcXHJcXG4nKSk7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKCcwJyArIGVuY29kZSgnZXhpdFxcclxcbicpKTtcbiAgICB9XG4gIH1cblxuICBzd2l0Y2hUaGVtZSgpIHtcbiAgICB0aGlzLnRoZW1lID0gdGhpcy50aGVtZSA9PT0gJ2xpZ2h0JyA/ICdkYXJrJyA6ICdsaWdodCc7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oVEVSTUlOQUxfVEhFTUVfTE9DQUxfU1RPUkFHRV9LRVksIHRoaXMudGhlbWUpO1xuICAgIHRoaXMueHRlcm0ub3B0aW9ucy50aGVtZSA9XG4gICAgICB0aGlzLnRoZW1lID09PSAnbGlnaHQnID8gWFRFUk1fTElHSFRfVEhFTUUgOiBYVEVSTV9EQVJLX1RIRU1FO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZm9udFNpemVDaGFuZ2Uoc2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5mb250U2l6ZSA9IHNpemU7XG4gICAgdGhpcy54dGVybS5vcHRpb25zLmZvbnRTaXplID0gc2l6ZTtcbiAgICB0aGlzLmZpdEFkZG9uLmZpdCgpO1xuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oVEVSTUlOQUxfRk9OVF9MT0NBTF9TVE9SQUdFX0tFWSwgc2l6ZSArICcnKTtcbiAgfVxuXG4gIG9wZW5TZWFyY2hpbmcoKSB7XG4gICAgdGhpcy5zZWFyY2hpbmcgPSB0cnVlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0UmVmLmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVNlYXJjaGluZygpIHtcbiAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoS2V5d29yZCA9ICcnO1xuICAgIHRoaXMuZmluZE5leHQoKTtcbiAgICB0aGlzLnh0ZXJtPy5mb2N1cygpO1xuICB9XG5cbiAgb25TaGVsbEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkgJiYgZXZlbnQuY29kZSA9PT0gJ0tleUYnKSB7XG4gICAgICB0aGlzLm9wZW5TZWFyY2hpbmcoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaElucHV0S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZVNlYXJjaGluZygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIHRoaXMuZmluZFByZXZpb3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbmROZXh0KCk7XG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWFyY2hPcHRpb25zKCkge1xuICAgIGNvbnN0IHRoZW1lID0gdGhpcy50aGVtZSA9PT0gJ2xpZ2h0JyA/IFhURVJNX0xJR0hUX1RIRU1FIDogWFRFUk1fREFSS19USEVNRTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVjb3JhdGlvbnM6IHtcbiAgICAgICAgbWF0Y2hCYWNrZ3JvdW5kOiB0aGVtZS5zZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmQsXG4gICAgICAgIG1hdGNoT3ZlcnZpZXdSdWxlcjogdGhlbWUuc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kLFxuICAgICAgICBhY3RpdmVNYXRjaEJhY2tncm91bmQ6IHRoZW1lLnNlbGVjdGlvbkJhY2tncm91bmQsXG4gICAgICAgIGFjdGl2ZU1hdGNoQ29sb3JPdmVydmlld1J1bGVyOiB0aGVtZS5zZWxlY3Rpb25CYWNrZ3JvdW5kLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZmluZE5leHQoKSB7XG4gICAgdGhpcy5zZWFyY2hBZGRvbi5maW5kTmV4dCh0aGlzLnNlYXJjaEtleXdvcmQsIHRoaXMuZ2V0U2VhcmNoT3B0aW9ucygpKTtcbiAgfVxuXG4gIGZpbmRQcmV2aW91cygpIHtcbiAgICB0aGlzLnNlYXJjaEFkZG9uLmZpbmRQcmV2aW91cyh0aGlzLnNlYXJjaEtleXdvcmQsIHRoaXMuZ2V0U2VhcmNoT3B0aW9ucygpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFh0ZXJtKCkge1xuICAgIHRoaXMueHRlcm0gPSBuZXcgVGVybWluYWwoe1xuICAgICAgLi4uWFRFUk1fREVGQVVMVF9PUFRJT05TLFxuICAgICAgdGhlbWU6IHRoaXMudGhlbWUgPT09ICdsaWdodCcgPyBYVEVSTV9MSUdIVF9USEVNRSA6IFhURVJNX0RBUktfVEhFTUUsXG4gICAgICBmb250U2l6ZTogdGhpcy5mb250U2l6ZSxcbiAgICAgIGFsbG93UHJvcG9zZWRBcGk6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnh0ZXJtLmxvYWRBZGRvbih0aGlzLmluaXRTZWFyY2hBZGRvbigpKTtcbiAgICB0aGlzLmZpdEFkZG9uID0gdGhpcy5pbml0Rml0QWRkb24oKTtcbiAgICB0aGlzLnh0ZXJtLmxvYWRBZGRvbih0aGlzLmZpdEFkZG9uKTtcbiAgICB0aGlzLnh0ZXJtLmxvYWRBZGRvbihuZXcgV2ViTGlua3NBZGRvbigpKTtcbiAgICB0aGlzLnh0ZXJtLmxvYWRBZGRvbihpbml0UmVuZGVyZXJBZGRvbigpKTtcblxuICAgIHRoaXMueHRlcm0ub3Blbih0aGlzLmFuY2hvclJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5maXRBZGRvbi5maXQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMueHRlcm0ub25EYXRhKChkYXRhOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0dXMgPT09IENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZEhhc1J1biA9IHRydWU7XG4gICAgICAgIHRoaXMuc29ja2V0LnNlbmQoJzAnICsgZW5jb2RlKGRhdGEpKTtcbiAgICAgICAgdGhpcy5zZW5kRGF0YS5lbWl0KGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMueHRlcm0ub25TZWxlY3Rpb25DaGFuZ2UoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy54dGVybS5nZXRTZWxlY3Rpb24oKS50cmltKCk7XG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlbGVjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGaXRBZGRvbigpIHtcbiAgICBjb25zdCBmaXRBZGRvbiA9IG5ldyBGaXRBZGRvbigpO1xuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihcbiAgICAgIGRlYm91bmNlKChbZW50cnldKSA9PiB7XG4gICAgICAgIGlmIChlbnRyeS5jb250ZW50UmVjdC53aWR0aCAhPT0gMCkge1xuICAgICAgICAgIGZpdEFkZG9uLmZpdCgpO1xuICAgICAgICAgIHRoaXMucmVzaXplUmVtb3RlVGVybWluYWwoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMjAwKSxcbiAgICApO1xuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuYW5jaG9yUmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGZpdEFkZG9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U2VhcmNoQWRkb24oKSB7XG4gICAgdGhpcy5zZWFyY2hBZGRvbiA9IG5ldyBTZWFyY2hBZGRvbigpO1xuICAgIHJldHVybiB0aGlzLnNlYXJjaEFkZG9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U29ja2V0KGluaXRpYWxDb21tYW5kOiBzdHJpbmcsIGFwaUFkZHJlc3M6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldCkge1xuICAgICAgdGhpcy5zb2NrZXQuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgbmFtZXNwYWNlLFxuICAgICAgcG9kLFxuICAgICAgY29udGFpbmVyLFxuICAgICAgdXNlciA9ICdyb290JyxcbiAgICAgIGNtZCxcbiAgICAgIGFkdmFuY2VBcGksXG4gICAgfSA9IHRoaXMub3B0aW9uO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGNtZFxuICAgICAgPyBbJ3NoJywgJy1jJywgY21kXVxuICAgICAgOiB1c2VyID09PSAncm9vdCdcbiAgICAgICAgPyBpbml0aWFsQ29tbWFuZC5zcGxpdCgnICcpXG4gICAgICAgIDogWydzaCcsICctYycsIGBzdSAtcCAke3VzZXJ9IC1jIFwiJHtpbml0aWFsQ29tbWFuZH1cImBdO1xuXG4gICAgY29uc3QgYXBpID0gYWR2YW5jZUFwaVxuICAgICAgPyAnL2F1dGgvdjEvcG9kL3NoZWxsJ1xuICAgICAgOiBgL2t1YmVybmV0ZXMvJHtjbHVzdGVyfS9hcGkvdjEvbmFtZXNwYWNlcy8ke25hbWVzcGFjZX0vcG9kcy8ke3BvZH0vZXhlY2A7XG5cbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoXG4gICAgICBhcGlBZGRyZXNzLnJlcGxhY2UoL15odHRwLywgJ3dzJykgK1xuICAgICAgICBgJHthcGl9PyR7bmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgIHN0ZGluOiB0cnVlLFxuICAgICAgICAgICAgc3Rkb3V0OiB0cnVlLFxuICAgICAgICAgICAgc3RkZXJyOiB0cnVlLFxuICAgICAgICAgICAgdHR5OiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KS50b1N0cmluZygpfWAsXG4gICAgICBbJ2Jhc2U2NC5jaGFubmVsLms4cy5pbyddLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGluaXRTb2NrZXRMaXN0ZW5lcnMgPSAoaW5pdGlhbENvbW1hbmQ6IHN0cmluZykgPT4ge1xuICAgIGxldCBuZWVkQ2xlYXI6IGJvb2xlYW47XG5cbiAgICB0aGlzLnNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgKCkgPT4ge1xuICAgICAgbmVlZENsZWFyID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVzaXplUmVtb3RlVGVybWluYWwoKTtcbiAgICAgIHRoaXMuc29ja2V0UmVhZHkuZW1pdCh0aGlzLnNvY2tldCk7XG4gICAgICB0aGlzLnNvY2tldCQkLm5leHQodGhpcy5zb2NrZXQpO1xuICAgICAgdGhpcy5waW5nID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgdGhpcy5zb2NrZXQuc2VuZCgnMCcpO1xuICAgICAgfSwgNTAwMCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50OiBNZXNzYWdlRXZlbnQ8c3RyaW5nPikgPT4ge1xuICAgICAgdGhpcy51cGRhdGVDb25uZWN0aW9uU3RhdHVzKENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkKTtcbiAgICAgIGlmICghdGhpcy54dGVybSkge1xuICAgICAgICB0aGlzLmluaXRYdGVybSgpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRDbGVhcikge1xuICAgICAgICBuZWVkQ2xlYXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIXRoaXMub3B0aW9uLm5vdENsZWFyV2hlblJlY29ubmVjdCkge1xuICAgICAgICAgIHRoaXMueHRlcm0ucmVzZXQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnh0ZXJtLmJ1ZmZlci5hY3RpdmUudHlwZSA9PT0gJ2FsdGVybmF0ZScpIHtcbiAgICAgICAgICAvLyBleGl0IGFsdGVybmF0ZSBzY3JlZW4uIEFJVC00NjM5MVxuICAgICAgICAgIHRoaXMueHRlcm0ud3JpdGUoJ1xcdTAwMUJbPzEwNDlsJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy54dGVybS5mb2N1cygpO1xuICAgICAgY29uc3QgdGV4dCA9IGRlY29kZSh0aGlzLmNvZGluZywgZXZlbnQuZGF0YS5zbGljZSgxKSk7XG4gICAgICB0aGlzLnh0ZXJtLndyaXRlKHRleHQpO1xuICAgICAgaWYgKFxuICAgICAgICAodGV4dC5pbmNsdWRlcyhFWEVDX0ZBSUxFRF9NRVNTQUdFX0NPTlRBSU5FUkQpIHx8XG4gICAgICAgICAgdGV4dC5pbmNsdWRlcyhFWEVDX0ZBSUxFRF9NRVNTQUdFX0RPQ0tFUikpICYmXG4gICAgICAgICF0aGlzLmNvbW1hbmRIYXNSdW4gJiZcbiAgICAgICAgaW5pdGlhbENvbW1hbmQgIT09IEJJTl9TSFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2hvdWxkRmFsbEJhY2tPbkNsb3NlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2Nsb3NlJywgZSA9PiB7XG4gICAgICB0aGlzLmNsb3NlU29ja2V0KCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbm5lY3Rpb25TdGF0dXMoXG4gICAgICAgIGUuY29kZSA9PT0gTk9fUEVSTUlTU0lPTl9DT0RFXG4gICAgICAgICAgPyBDb25uZWN0aW9uU3RhdHVzLk5vUGVybWlzc2lvblxuICAgICAgICAgIDogQ29ubmVjdGlvblN0YXR1cy5EaXNjb25uZWN0ZWQsXG4gICAgICApO1xuICAgICAgaWYgKHRoaXMuc2hvdWxkRmFsbEJhY2tPbkNsb3NlKSB7XG4gICAgICAgIHRoaXMuZmFsbEJhY2tPbkNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbml0U29ja2V0Q29ubmVjdGlvbiA9IChmYWxsYmFja0NvbW1hbmQ/OiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLnVwZGF0ZUNvbm5lY3Rpb25TdGF0dXMoXG4gICAgICB0aGlzLnh0ZXJtID8gQ29ubmVjdGlvblN0YXR1cy5SZUNvbm5lY3RpbmcgOiBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcsXG4gICAgKTtcblxuICAgIHRoaXMuYXBpR2F0ZXdheVxuICAgICAgLmdldEFwaUFkZHJlc3MoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoYXBpQWRkcmVzcyA9PiB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxDb21tYW5kID0gZmFsbGJhY2tDb21tYW5kIHx8IHRoaXMub3B0aW9uLmNvbW1hbmQgfHwgQklOX1NIO1xuICAgICAgICB0aGlzLmluaXRTb2NrZXQoaW5pdGlhbENvbW1hbmQsIGFwaUFkZHJlc3MpO1xuICAgICAgICB0aGlzLmluaXRTb2NrZXRMaXN0ZW5lcnMoaW5pdGlhbENvbW1hbmQpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBmYWxsQmFja09uQ2xvc2UoKSB7XG4gICAgdGhpcy5zaG91bGRGYWxsQmFja09uQ2xvc2UgPSBmYWxzZTtcbiAgICB0aGlzLmZhbGxiYWNrU2hlbGwuZW1pdChCSU5fU0gpO1xuICAgIHRoaXMuaW5pdFNvY2tldENvbm5lY3Rpb24oQklOX1NIKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbi53YXJuaW5nKFxuICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KCd1bnN1cHBvcnRlZF9leGVjX2NvbW1hbmRfd2FybmluZycpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlU29ja2V0KCkge1xuICAgIGlmIChcbiAgICAgIFtDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcsIENvbm5lY3Rpb25TdGF0dXMuUmVDb25uZWN0aW5nXS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5vcHRpb24ubm90Q2xlYXJXaGVuUmVjb25uZWN0IHx8IHRoaXMueHRlcm0/LnJlc2V0KCk7XG4gICAgfVxuXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBpbmcpO1xuICAgIHRoaXMuc29ja2V0Py5jbG9zZSgpO1xuICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcbiAgICB0aGlzLnNvY2tldCQkLm5leHQodGhpcy5zb2NrZXQpO1xuICB9XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtdWkvY29udGFpbmVyLXRlcm1pbmFsL2Jsb2IvYmE1NjBkNGY3MTVmNDA1YmViMGE2NGJhYjhmYjI5YTIxYWFjMjY3MS9jb250YWluZXItdGVybWluYWwuanMjTDE1MlxuICBwcml2YXRlIHJlc2l6ZVJlbW90ZVRlcm1pbmFsKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNvY2tldD8uc2VuZChcbiAgICAgICAgYDQke2VuY29kZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IFdpZHRoOiB0aGlzLnh0ZXJtLmNvbHMsIEhlaWdodDogdGhpcy54dGVybS5yb3dzIH0pLFxuICAgICAgICApfWAsXG4gICAgICApO1xuICAgIH0gY2F0Y2gge31cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29ubmVjdGlvblN0YXR1cyhzdGF0dXM6IENvbm5lY3Rpb25TdGF0dXMpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMgPSBzdGF0dXM7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzQ2hhbmdlLmVtaXQoc3RhdHVzKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGFjdGl2YXRlVGVybWluYWwoKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0ICYmIHRoaXMuY29ubmVjdGlvblN0YXR1cyA9PT0gQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0ZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNvY2tldC5zZW5kKCcwJyArIGVuY29kZSgnICcpKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zb2NrZXQuc2VuZCgnMCcgKyBlbmNvZGUoJ1xcYicpKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlY29kZShjb2Rpbmc6IHN0cmluZywgZGF0YTogc3RyaW5nKSB7XG4gIGNvbnN0IGRhdGFWaWV3ID0gbmV3IERhdGFWaWV3KFxuICAgIFVpbnQ4QXJyYXkuZnJvbShhdG9iKGRhdGEpLCBjID0+IGMuY29kZVBvaW50QXQoMCkpLmJ1ZmZlcixcbiAgKTtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2Rlcihjb2RpbmcpO1xuICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoZGF0YVZpZXcpO1xufVxuIiwiPGF1aS1pbmxpbmUtYWxlcnRcbiAgKm5nSWY9XCJjb25uZWN0aW9uU3RhdHVzID09PSBDb25uZWN0aW9uU3RhdHVzLkRpc2Nvbm5lY3RlZFwiXG4gIHR5cGU9XCJlcnJvclwiXG4+XG4gIDxzcGFuPnt7ICdleGVjX2Rpc2Nvbm5lY3RlZF90aXAnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICA8YnV0dG9uXG4gICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgIChjbGljayk9XCJyZWNvbm5lY3QoKVwiXG4gID5cbiAgICB7eyAncmVjb25uZWN0JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYXVpLWlubGluZS1hbGVydD5cblxuPGRpdiBjbGFzcz1cImFjbC10ZXJtaW5hbF9fd3JhcHBlclwiPlxuICA8YWNsLXRlcm1pbmFsLXBsYWNlaG9sZGVyXG4gICAgY2xhc3M9XCJ0dy1iZy1uLTEwXCJcbiAgICAqbmdJZj1cImNvbm5lY3Rpb25TdGF0dXMgPT09IENvbm5lY3Rpb25TdGF0dXMuTm9QZXJtaXNzaW9uXCJcbiAgICB0eXBlPVwicGVybWlzc2lvblwiXG4gID48L2FjbC10ZXJtaW5hbC1wbGFjZWhvbGRlcj5cbiAgPGFjbC1sb2FkaW5nLW1hc2sgW2xvYWRpbmddPVwic2hvd0xvYWRpbmdcIj48L2FjbC1sb2FkaW5nLW1hc2s+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFjbC10ZXJtaW5hbCB0dy1pbnZpc2libGVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICchdHctdmlzaWJsZSc6XG4gICAgICAgICFzaG93TG9hZGluZyAmJiBjb25uZWN0aW9uU3RhdHVzICE9PSBDb25uZWN0aW9uU3RhdHVzLk5vUGVybWlzc2lvblxuICAgIH1cIlxuICAgIFtjbGFzcy5hY2wtdGVybWluYWwtLWRhcmtdPVwidGhlbWUgPT09ICdkYXJrJ1wiXG4gICAgW2NsYXNzLmFjbC10ZXJtaW5hbC0tbGlnaHRdPVwidGhlbWUgPT09ICdsaWdodCdcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInR3LXctZnVsbCB0dy1oLTAgdHctZmxleC0xIHR3LWZsZXggdHctZmxleC1jb2wgdHctcC0xMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFjbC10ZXJtaW5hbF9faGVhZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImFjbC10ZXJtaW5hbF9fYnV0dG9uXCJcbiAgICAgICAgICBbYXVpRHJvcGRvd25dPVwiY29kaW5nTWVudVwiXG4gICAgICAgICAgW2F1aURyb3Bkb3duQ2xhc3NdPVwidGhlbWVDbGFzc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgIGNvZGluZyA9PT0gJ3V0ZjgnXG4gICAgICAgICAgICAgICAgPyAnVVRGLTgnXG4gICAgICAgICAgICAgICAgOiBjb2RpbmcgPT09ICdnYjE4MDMwJ1xuICAgICAgICAgICAgICAgID8gJ0dCIDE4MDMwJ1xuICAgICAgICAgICAgICAgIDogY29kaW5nLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7eyAnZGVjb2RpbmcnIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhdWktaWNvbiBpY29uPVwiYW5nbGVfZG93blwiPjwvYXVpLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJhY2wtdGVybWluYWxfX2J1dHRvblwiXG4gICAgICAgICAgW2F1aVRvb2x0aXBdPVwiZm9udFRlbXBsYXRlXCJcbiAgICAgICAgICBhdWlUb29sdGlwVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICBhdWlUb29sdGlwVHlwZT1cImluZm9cIlxuICAgICAgICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBlbmRcIlxuICAgICAgICAgIFthdWlUb29sdGlwQ2xhc3NdPVwidGhlbWVDbGFzc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8YXVpLWljb24gaWNvbj1cImdlYXJcIj48L2F1aS1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdmb250X3NldHRpbmcnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYWNsLXRlcm1pbmFsX19idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuU2VhcmNoaW5nKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGF1aS1pY29uIGljb249XCJtYWduaWZpZXJcIj48L2F1aS1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdmaW5kJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImFjbC10ZXJtaW5hbF9fYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVGhlbWUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXVpLWljb24gW2ljb25dPVwidGhlbWUgPT09ICdsaWdodCcgPyAnc3VuJyA6ICdtb29uJ1wiPjwvYXVpLWljb24+XG4gICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICh0aGVtZSA9PT0gJ2xpZ2h0JyA/ICdsaWdodF90aGVtZScgOiAnZGFya190aGVtZScpIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHRyYUJ1dHRvbjsgY29udGV4dDogeyBpbmRleDogaW5kZXggfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFjbC10ZXJtaW5hbF9fc2hlbGxcIlxuICAgICAgICAoa2V5ZG93bik9XCJvblNoZWxsS2V5RG93bigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICNhbmNob3JcbiAgICAgICAgICBjbGFzcz1cImFjbC10ZXJtaW5hbF9fYW5jaG9yXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hpbmdcIlxuICAgICAgICAgIGNsYXNzPVwiYWNsLXRlcm1pbmFsX19maW5kaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhdWktc2VhcmNoXG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBbKGtleXdvcmQpXT1cInNlYXJjaEtleXdvcmRcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25TZWFyY2hJbnB1dEtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgPjwvYXVpLXNlYXJjaD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgICBzaXplPVwibWluaVwiXG4gICAgICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIignZmluZF9wcmV2aW91cycgfCB0cmFuc2xhdGUpICsgJyAoU2hpZnQgKyBFbnRlciknXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmaW5kUHJldmlvdXMoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgICAgIGljb249XCJhcnJvd19yaWdodFwiXG4gICAgICAgICAgICAgIHN0eWxlPVwidHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKVwiXG4gICAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgICBzaXplPVwibWluaVwiXG4gICAgICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIignZmluZF9uZXh0JyB8IHRyYW5zbGF0ZSkgKyAnIChFbnRlciknXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmaW5kTmV4dCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAgICAgaWNvbj1cImFycm93X3JpZ2h0XCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJ0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZylcIlxuICAgICAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCIoJ2Nsb3NlJyB8IHRyYW5zbGF0ZSkgKyAnIChFc2NhcGUpJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VTZWFyY2hpbmcoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJ4bWFya1wiPjwvYXVpLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgZXh0cmFDb250ZW50O1xuICAgICAgY29udGV4dDoge1xuICAgICAgICAkaW1wbGljaXQ6IG9wdGlvbixcbiAgICAgICAgc29ja2V0OiBzb2NrZXQkJCB8IGFzeW5jLFxuICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb2RpbmdNZW51XG4gID48YXVpLW1lbnUgc2l6ZT1cInNtYWxsXCJcbiAgICA+PGF1aS1tZW51LWl0ZW1cbiAgICAgIFthY3RpdmVkXT1cImNvZGluZyA9PT0gJ3V0ZjgnXCJcbiAgICAgIChjbGljayk9XCJjb2RpbmcgPSAndXRmOCdcIlxuICAgICAgPlVURi04XG4gICAgPC9hdWktbWVudS1pdGVtPlxuICAgIDxhdWktbWVudS1pdGVtXG4gICAgICBbYWN0aXZlZF09XCJjb2RpbmcgPT09ICdnYjE4MDMwJ1wiXG4gICAgICAoY2xpY2spPVwiY29kaW5nID0gJ2diMTgwMzAnXCJcbiAgICAgID5HQiAxODAzMFxuICAgIDwvYXVpLW1lbnUtaXRlbT5cbiAgPC9hdWktbWVudT48L25nLXRlbXBsYXRlXG4+XG5cbjxuZy10ZW1wbGF0ZSAjZm9udFRlbXBsYXRlPlxuICA8YXVpLW51bWJlci1pbnB1dFxuICAgIFtzdGVwXT1cIjFcIlxuICAgIFtwcmVjaXNpb25dPVwiMVwiXG4gICAgW21pbl09XCIxMlwiXG4gICAgW21heF09XCI0MFwiXG4gICAgW2NvbnRyb2xzXT1cInRydWVcIlxuICAgIFthbmdsZUNvbnRyb2xzXT1cInRydWVcIlxuICAgIFt2YWx1ZV09XCJmb250U2l6ZVwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cImZvbnRTaXplQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAgPHNwYW4gYXVpSW5wdXRBZGRvbkFmdGVyPnB4PC9zcGFuPlxuICA8L2F1aS1udW1iZXItaW5wdXQ+XG48L25nLXRlbXBsYXRlPlxuIl19
568
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2V4ZWMvdGVybWluYWwvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2V4ZWMvdGVybWluYWwvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFn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QUFNO1lBSUUsYUFBYTtrQkFEckIsTUFBTTtZQUlQLFNBQVM7a0JBRFIsU0FBUzttQkFBQyxRQUFRO1lBSW5CLGNBQWM7a0JBRGIsU0FBUzttQkFBQyxhQUFhO1lBSXhCLFlBQVk7a0JBRFgsWUFBWTttQkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQVMvQyxNQUFNO2tCQURMLFlBQVk7bUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDOztrRkF6QzlCLGlCQUFpQjtBQWliOUIsU0FBUyxNQUFNLENBQUMsTUFBYyxFQUFFLElBQVk7SUFDMUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQzNCLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDMUQsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSwgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGVuY29kZSB9IGZyb20gJ2FiNjQnO1xuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGVybWluYWwgfSBmcm9tICd4dGVybSc7XG5pbXBvcnQgeyBDYW52YXNBZGRvbiB9IGZyb20gJ3h0ZXJtLWFkZG9uLWNhbnZhcyc7XG5pbXBvcnQgeyBGaXRBZGRvbiB9IGZyb20gJ3h0ZXJtLWFkZG9uLWZpdCc7XG5pbXBvcnQgeyBTZWFyY2hBZGRvbiB9IGZyb20gJ3h0ZXJtLWFkZG9uLXNlYXJjaCc7XG5pbXBvcnQgeyBXZWJMaW5rc0FkZG9uIH0gZnJvbSAneHRlcm0tYWRkb24td2ViLWxpbmtzJztcbmltcG9ydCB7IFdlYmdsQWRkb24gfSBmcm9tICd4dGVybS1hZGRvbi13ZWJnbCc7XG5cbmltcG9ydCB7IEFwaUdhdGV3YXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3RyYW5zbGF0ZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25TdGF0dXMsXG4gIFRFUk1JTkFMX0ZPTlRfTE9DQUxfU1RPUkFHRV9LRVksXG4gIFRFUk1JTkFMX1RIRU1FX0xPQ0FMX1NUT1JBR0VfS0VZLFxuICBYVEVSTV9EQVJLX1RIRU1FLFxuICBYVEVSTV9ERUZBVUxUX09QVElPTlMsXG4gIFhURVJNX0xJR0hUX1RIRU1FLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGVybWluYWxPcHRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBCSU5fU0ggPSAnL2Jpbi9zaCc7XG5cbmV4cG9ydCBjb25zdCBFWEVDX0ZBSUxFRF9NRVNTQUdFX0NPTlRBSU5FUkQgPSBgSW50ZXJuYWwgZXJyb3Igb2NjdXJyZWQ6IGVycm9yIGV4ZWN1dGluZyBjb21tYW5kIGluIGNvbnRhaW5lcmA7XG5leHBvcnQgY29uc3QgRVhFQ19GQUlMRURfTUVTU0FHRV9ET0NLRVIgPSBgT0NJIHJ1bnRpbWUgZXhlYyBmYWlsZWQ6IGV4ZWMgZmFpbGVkOiB1bmFibGUgdG8gc3RhcnQgY29udGFpbmVyIHByb2Nlc3NgO1xuZXhwb3J0IGNvbnN0IE5PX1BFUk1JU1NJT05fQ09ERSA9IDQwXzAwMTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRSZW5kZXJlckFkZG9uKCkge1xuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgaWYgKGNhbnZhcy5nZXRDb250ZXh0KCd3ZWJnbDInKSkge1xuICAgIHJldHVybiBuZXcgV2ViZ2xBZGRvbigpO1xuICB9XG4gIHJldHVybiBuZXcgQ2FudmFzQWRkb24oKTtcbn1cblxuLyoqXG4gKiBGb3IgZGlzcGF0Y2hpbmcga2V5Ym9hcmQgZXZlbnRzIGF1dG9tYXRpY2FsbHkgdG8geHRlcm0sXG4gKiBwbGVhc2UgdmlldyBodHRwczovL3d3dy5waHlzaWNzLnVkZWwuZWR1L353YXRzb24vc2NlbjEwMy9hc2NpaS5odG1sIGZvciByZWZlcmVuY2UuXG4gKlxuICogRm9yIGluc3RhbmNlLCBpZiB5b3Ugd2FudCB0byBkaXNwYXRjaCBgQ3RybCtDYCB0byB4dGVybSwgeW91IHNob3VsZCBkaXNwYXRjaCBgXFx4MDNgKGFrYSBgXFx1MDAwM2ApIHRvIHRoZSBzb2NrZXQuXG4gKlxuICogYGBgdHNcbiAqIHNvY2tldC5zZW5kKCcwJyArIGVuY29kZSgnXFx1MDAwMycpKVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC10ZXJtaW5hbCcsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZXJtaW5hbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xuICBDb25uZWN0aW9uU3RhdHVzID0gQ29ubmVjdGlvblN0YXR1cztcblxuICBASW5wdXQoKVxuICBvcHRpb246IFRlcm1pbmFsT3B0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIGluZGV4OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgZXh0cmFCdXR0b246IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGV4dHJhQ29udGVudDogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25TdGF0dXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvbm5lY3Rpb25TdGF0dXM+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHNlbmREYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHNvY2tldFJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxXZWJTb2NrZXQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGZhbGxiYWNrU2hlbGwgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdhbmNob3InKVxuICBhbmNob3JSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JylcbiAgc2VhcmNoSW5wdXRSZWY6IFNlYXJjaENvbXBvbmVudDtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgWyckZXZlbnQnXSlcbiAgYmVmb3JlVW5sb2FkKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkge1xuICAgIGlmICh0aGlzLnNvY2tldCAmJiB0aGlzLmNvbm5lY3Rpb25TdGF0dXMgPT09IENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dW5sb2FkJywgWyckZXZlbnQnXSlcbiAgdW5sb2FkKF9ldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpIHtcbiAgICB0aGlzLmtpbGxQcm9jZXNzKCk7XG4gIH1cblxuICB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyA9XG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oVEVSTUlOQUxfVEhFTUVfTE9DQUxfU1RPUkFHRV9LRVkpID09PSAnbGlnaHQnXG4gICAgICA/ICdsaWdodCdcbiAgICAgIDogJ2RhcmsnO1xuXG4gIGZvbnRTaXplOiBudW1iZXIgPVxuICAgICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbShURVJNSU5BTF9GT05UX0xPQ0FMX1NUT1JBR0VfS0VZKSB8fFxuICAgIFhURVJNX0RFRkFVTFRfT1BUSU9OUy5mb250U2l6ZTtcblxuICBzZWFyY2hpbmcgPSBmYWxzZTtcbiAgc2VhcmNoS2V5d29yZCA9ICcnO1xuICBjb2RpbmcgPSAndXRmOCc7XG4gIGNvbm5lY3Rpb25TdGF0dXM6IENvbm5lY3Rpb25TdGF0dXMgPSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3Rpbmc7XG4gIGNvbW1hbmRIYXNSdW4gPSBmYWxzZTtcblxuICB4dGVybTogVGVybWluYWw7XG4gIHByaXZhdGUgc2VhcmNoQWRkb246IFNlYXJjaEFkZG9uO1xuICBwcml2YXRlIGZpdEFkZG9uOiBGaXRBZGRvbjtcbiAgcHJpdmF0ZSBzb2NrZXQ6IFdlYlNvY2tldDtcbiAgcHJpdmF0ZSBwaW5nOiBudW1iZXI7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIGlzRGVzdHJveWVkID0gZmFsc2U7XG5cbiAgc29ja2V0JCQgPSBuZXcgU3ViamVjdDxXZWJTb2NrZXQ+KCk7XG5cbiAgc2hvdWxkRmFsbEJhY2tPbkNsb3NlID0gZmFsc2U7XG5cbiAgZ2V0IHRoZW1lQ2xhc3MoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICdhY2wtdGVybWluYWxfX2Ryb3Bkb3duICcgK1xuICAgICAgKHRoaXMudGhlbWUgPT09ICdsaWdodCdcbiAgICAgICAgPyAnYWNsLXRlcm1pbmFsX19kcm9wZG93bi0tbGlnaHQnXG4gICAgICAgIDogJ2FjbC10ZXJtaW5hbF9fZHJvcGRvd24tLWRhcmsnKVxuICAgICk7XG4gIH1cblxuICBnZXQgc2hvd0xvYWRpbmcoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyA9PT0gQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nIHx8XG4gICAgICAoIXRoaXMub3B0aW9uLm5vdENsZWFyV2hlblJlY29ubmVjdCAmJlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMgPT09IENvbm5lY3Rpb25TdGF0dXMuUmVDb25uZWN0aW5nKVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwaUdhdGV3YXk6IEFwaUdhdGV3YXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdFNvY2tldENvbm5lY3Rpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgb3B0aW9uIH06IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy54dGVybSAmJiBvcHRpb24pIHtcbiAgICAgIHRoaXMucmVjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5raWxsUHJvY2VzcygpO1xuICAgIHRoaXMuY2xvc2VTb2NrZXQoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMueHRlcm0/LmRpc3Bvc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy54dGVybT8uZm9jdXMoKTtcbiAgfVxuXG4gIHJlY29ubmVjdCgpIHtcbiAgICB0aGlzLmNvbW1hbmRIYXNSdW4gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlU29ja2V0KCk7XG4gICAgdGhpcy5pbml0U29ja2V0Q29ubmVjdGlvbigpO1xuICB9XG5cbiAga2lsbFByb2Nlc3MoKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZCgnMCcgKyBlbmNvZGUoJ1xcdTAwMDNcXHJcXG4nKSk7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKCcwJyArIGVuY29kZSgnZXhpdFxcclxcbicpKTtcbiAgICB9XG4gIH1cblxuICBzd2l0Y2hUaGVtZSgpIHtcbiAgICB0aGlzLnRoZW1lID0gdGhpcy50aGVtZSA9PT0gJ2xpZ2h0JyA/ICdkYXJrJyA6ICdsaWdodCc7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oVEVSTUlOQUxfVEhFTUVfTE9DQUxfU1RPUkFHRV9LRVksIHRoaXMudGhlbWUpO1xuICAgIHRoaXMueHRlcm0ub3B0aW9ucy50aGVtZSA9XG4gICAgICB0aGlzLnRoZW1lID09PSAnbGlnaHQnID8gWFRFUk1fTElHSFRfVEhFTUUgOiBYVEVSTV9EQVJLX1RIRU1FO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZm9udFNpemVDaGFuZ2Uoc2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5mb250U2l6ZSA9IHNpemU7XG4gICAgdGhpcy54dGVybS5vcHRpb25zLmZvbnRTaXplID0gc2l6ZTtcbiAgICB0aGlzLmZpdEFkZG9uLmZpdCgpO1xuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oVEVSTUlOQUxfRk9OVF9MT0NBTF9TVE9SQUdFX0tFWSwgc2l6ZSArICcnKTtcbiAgfVxuXG4gIG9wZW5TZWFyY2hpbmcoKSB7XG4gICAgdGhpcy5zZWFyY2hpbmcgPSB0cnVlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0UmVmLmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVNlYXJjaGluZygpIHtcbiAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoS2V5d29yZCA9ICcnO1xuICAgIHRoaXMuZmluZE5leHQoKTtcbiAgICB0aGlzLnh0ZXJtPy5mb2N1cygpO1xuICB9XG5cbiAgb25TaGVsbEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkgJiYgZXZlbnQuY29kZSA9PT0gJ0tleUYnKSB7XG4gICAgICB0aGlzLm9wZW5TZWFyY2hpbmcoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaElucHV0S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZVNlYXJjaGluZygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIHRoaXMuZmluZFByZXZpb3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbmROZXh0KCk7XG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWFyY2hPcHRpb25zKCkge1xuICAgIGNvbnN0IHRoZW1lID0gdGhpcy50aGVtZSA9PT0gJ2xpZ2h0JyA/IFhURVJNX0xJR0hUX1RIRU1FIDogWFRFUk1fREFSS19USEVNRTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVjb3JhdGlvbnM6IHtcbiAgICAgICAgbWF0Y2hCYWNrZ3JvdW5kOiB0aGVtZS5zZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmQsXG4gICAgICAgIG1hdGNoT3ZlcnZpZXdSdWxlcjogdGhlbWUuc2VsZWN0aW9uSW5hY3RpdmVCYWNrZ3JvdW5kLFxuICAgICAgICBhY3RpdmVNYXRjaEJhY2tncm91bmQ6IHRoZW1lLnNlbGVjdGlvbkJhY2tncm91bmQsXG4gICAgICAgIGFjdGl2ZU1hdGNoQ29sb3JPdmVydmlld1J1bGVyOiB0aGVtZS5zZWxlY3Rpb25CYWNrZ3JvdW5kLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZmluZE5leHQoKSB7XG4gICAgdGhpcy5zZWFyY2hBZGRvbi5maW5kTmV4dCh0aGlzLnNlYXJjaEtleXdvcmQsIHRoaXMuZ2V0U2VhcmNoT3B0aW9ucygpKTtcbiAgfVxuXG4gIGZpbmRQcmV2aW91cygpIHtcbiAgICB0aGlzLnNlYXJjaEFkZG9uLmZpbmRQcmV2aW91cyh0aGlzLnNlYXJjaEtleXdvcmQsIHRoaXMuZ2V0U2VhcmNoT3B0aW9ucygpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFh0ZXJtKCkge1xuICAgIHRoaXMueHRlcm0gPSBuZXcgVGVybWluYWwoe1xuICAgICAgLi4uWFRFUk1fREVGQVVMVF9PUFRJT05TLFxuICAgICAgdGhlbWU6IHRoaXMudGhlbWUgPT09ICdsaWdodCcgPyBYVEVSTV9MSUdIVF9USEVNRSA6IFhURVJNX0RBUktfVEhFTUUsXG4gICAgICBmb250U2l6ZTogdGhpcy5mb250U2l6ZSxcbiAgICAgIGFsbG93UHJvcG9zZWRBcGk6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnh0ZXJtLmxvYWRBZGRvbih0aGlzLmluaXRTZWFyY2hBZGRvbigpKTtcbiAgICB0aGlzLmZpdEFkZG9uID0gdGhpcy5pbml0Rml0QWRkb24oKTtcbiAgICB0aGlzLnh0ZXJtLmxvYWRBZGRvbih0aGlzLmZpdEFkZG9uKTtcbiAgICB0aGlzLnh0ZXJtLmxvYWRBZGRvbihuZXcgV2ViTGlua3NBZGRvbigpKTtcbiAgICB0aGlzLnh0ZXJtLmxvYWRBZGRvbihpbml0UmVuZGVyZXJBZGRvbigpKTtcblxuICAgIHRoaXMueHRlcm0ub3Blbih0aGlzLmFuY2hvclJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5maXRBZGRvbi5maXQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMueHRlcm0ub25EYXRhKChkYXRhOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25TdGF0dXMgPT09IENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZEhhc1J1biA9IHRydWU7XG4gICAgICAgIHRoaXMuc29ja2V0LnNlbmQoJzAnICsgZW5jb2RlKGRhdGEpKTtcbiAgICAgICAgdGhpcy5zZW5kRGF0YS5lbWl0KGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMueHRlcm0ub25TZWxlY3Rpb25DaGFuZ2UoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy54dGVybS5nZXRTZWxlY3Rpb24oKS50cmltKCk7XG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlbGVjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGaXRBZGRvbigpIHtcbiAgICBjb25zdCBmaXRBZGRvbiA9IG5ldyBGaXRBZGRvbigpO1xuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihcbiAgICAgIGRlYm91bmNlKChbZW50cnldKSA9PiB7XG4gICAgICAgIGlmIChlbnRyeS5jb250ZW50UmVjdC53aWR0aCAhPT0gMCkge1xuICAgICAgICAgIGZpdEFkZG9uLmZpdCgpO1xuICAgICAgICAgIHRoaXMucmVzaXplUmVtb3RlVGVybWluYWwoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMjAwKSxcbiAgICApO1xuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuYW5jaG9yUmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGZpdEFkZG9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U2VhcmNoQWRkb24oKSB7XG4gICAgdGhpcy5zZWFyY2hBZGRvbiA9IG5ldyBTZWFyY2hBZGRvbigpO1xuICAgIHJldHVybiB0aGlzLnNlYXJjaEFkZG9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U29ja2V0KGluaXRpYWxDb21tYW5kOiBzdHJpbmcsIGFwaUFkZHJlc3M6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldCkge1xuICAgICAgdGhpcy5zb2NrZXQuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgbmFtZXNwYWNlLFxuICAgICAgcG9kLFxuICAgICAgY29udGFpbmVyLFxuICAgICAgdXNlciA9ICdyb290JyxcbiAgICAgIGNtZCxcbiAgICAgIGFkdmFuY2VBcGksXG4gICAgfSA9IHRoaXMub3B0aW9uO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGNtZFxuICAgICAgPyBbJ3NoJywgJy1jJywgY21kXVxuICAgICAgOiB1c2VyID09PSAncm9vdCdcbiAgICAgICAgPyBpbml0aWFsQ29tbWFuZC5zcGxpdCgnICcpXG4gICAgICAgIDogWydzaCcsICctYycsIGBzdSAtcCAke3VzZXJ9IC1jIFwiJHtpbml0aWFsQ29tbWFuZH1cImBdO1xuXG4gICAgY29uc3QgYXBpID0gYWR2YW5jZUFwaVxuICAgICAgPyAnL2F1dGgvdjEvcG9kL3NoZWxsJ1xuICAgICAgOiBgL2t1YmVybmV0ZXMvJHtjbHVzdGVyfS9hcGkvdjEvbmFtZXNwYWNlcy8ke25hbWVzcGFjZX0vcG9kcy8ke3BvZH0vZXhlY2A7XG5cbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoXG4gICAgICBhcGlBZGRyZXNzLnJlcGxhY2UoL15odHRwLywgJ3dzJykgK1xuICAgICAgICBgJHthcGl9PyR7bmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgIHN0ZGluOiB0cnVlLFxuICAgICAgICAgICAgc3Rkb3V0OiB0cnVlLFxuICAgICAgICAgICAgc3RkZXJyOiB0cnVlLFxuICAgICAgICAgICAgdHR5OiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KS50b1N0cmluZygpfWAsXG4gICAgICBbJ2Jhc2U2NC5jaGFubmVsLms4cy5pbyddLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGluaXRTb2NrZXRMaXN0ZW5lcnMgPSAoaW5pdGlhbENvbW1hbmQ6IHN0cmluZykgPT4ge1xuICAgIGxldCBuZWVkQ2xlYXI6IGJvb2xlYW47XG5cbiAgICB0aGlzLnNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgKCkgPT4ge1xuICAgICAgbmVlZENsZWFyID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVzaXplUmVtb3RlVGVybWluYWwoKTtcbiAgICAgIHRoaXMuc29ja2V0UmVhZHkuZW1pdCh0aGlzLnNvY2tldCk7XG4gICAgICB0aGlzLnNvY2tldCQkLm5leHQodGhpcy5zb2NrZXQpO1xuICAgICAgdGhpcy5waW5nID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgdGhpcy5zb2NrZXQuc2VuZCgnMCcpO1xuICAgICAgfSwgNTAwMCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50OiBNZXNzYWdlRXZlbnQ8c3RyaW5nPikgPT4ge1xuICAgICAgdGhpcy51cGRhdGVDb25uZWN0aW9uU3RhdHVzKENvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkKTtcbiAgICAgIGlmICghdGhpcy54dGVybSkge1xuICAgICAgICB0aGlzLmluaXRYdGVybSgpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRDbGVhcikge1xuICAgICAgICBuZWVkQ2xlYXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIXRoaXMub3B0aW9uLm5vdENsZWFyV2hlblJlY29ubmVjdCkge1xuICAgICAgICAgIHRoaXMueHRlcm0ucmVzZXQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnh0ZXJtLmJ1ZmZlci5hY3RpdmUudHlwZSA9PT0gJ2FsdGVybmF0ZScpIHtcbiAgICAgICAgICAvLyBleGl0IGFsdGVybmF0ZSBzY3JlZW4uIEFJVC00NjM5MVxuICAgICAgICAgIHRoaXMueHRlcm0ud3JpdGUoJ1xcdTAwMUJbPzEwNDlsJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy54dGVybS5mb2N1cygpO1xuICAgICAgY29uc3QgdGV4dCA9IGRlY29kZSh0aGlzLmNvZGluZywgZXZlbnQuZGF0YS5zbGljZSgxKSk7XG4gICAgICB0aGlzLnh0ZXJtLndyaXRlKHRleHQpO1xuICAgICAgaWYgKFxuICAgICAgICAodGV4dC5pbmNsdWRlcyhFWEVDX0ZBSUxFRF9NRVNTQUdFX0NPTlRBSU5FUkQpIHx8XG4gICAgICAgICAgdGV4dC5pbmNsdWRlcyhFWEVDX0ZBSUxFRF9NRVNTQUdFX0RPQ0tFUikpICYmXG4gICAgICAgICF0aGlzLmNvbW1hbmRIYXNSdW4gJiZcbiAgICAgICAgaW5pdGlhbENvbW1hbmQgIT09IEJJTl9TSFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2hvdWxkRmFsbEJhY2tPbkNsb3NlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2Nsb3NlJywgZSA9PiB7XG4gICAgICB0aGlzLmNsb3NlU29ja2V0KCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbm5lY3Rpb25TdGF0dXMoXG4gICAgICAgIGUuY29kZSA9PT0gTk9fUEVSTUlTU0lPTl9DT0RFXG4gICAgICAgICAgPyBDb25uZWN0aW9uU3RhdHVzLk5vUGVybWlzc2lvblxuICAgICAgICAgIDogQ29ubmVjdGlvblN0YXR1cy5EaXNjb25uZWN0ZWQsXG4gICAgICApO1xuICAgICAgaWYgKHRoaXMuc2hvdWxkRmFsbEJhY2tPbkNsb3NlKSB7XG4gICAgICAgIHRoaXMuZmFsbEJhY2tPbkNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbml0U29ja2V0Q29ubmVjdGlvbiA9IChmYWxsYmFja0NvbW1hbmQ/OiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLnVwZGF0ZUNvbm5lY3Rpb25TdGF0dXMoXG4gICAgICB0aGlzLnh0ZXJtID8gQ29ubmVjdGlvblN0YXR1cy5SZUNvbm5lY3RpbmcgOiBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcsXG4gICAgKTtcblxuICAgIHRoaXMuYXBpR2F0ZXdheVxuICAgICAgLmdldEFwaUFkZHJlc3MoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoYXBpQWRkcmVzcyA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluaXRpYWxDb21tYW5kID0gZmFsbGJhY2tDb21tYW5kIHx8IHRoaXMub3B0aW9uLmNvbW1hbmQgfHwgQklOX1NIO1xuICAgICAgICB0aGlzLmluaXRTb2NrZXQoaW5pdGlhbENvbW1hbmQsIGFwaUFkZHJlc3MpO1xuICAgICAgICB0aGlzLmluaXRTb2NrZXRMaXN0ZW5lcnMoaW5pdGlhbENvbW1hbmQpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBmYWxsQmFja09uQ2xvc2UoKSB7XG4gICAgdGhpcy5zaG91bGRGYWxsQmFja09uQ2xvc2UgPSBmYWxzZTtcbiAgICB0aGlzLmZhbGxiYWNrU2hlbGwuZW1pdChCSU5fU0gpO1xuICAgIHRoaXMuaW5pdFNvY2tldENvbm5lY3Rpb24oQklOX1NIKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbi53YXJuaW5nKFxuICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KCd1bnN1cHBvcnRlZF9leGVjX2NvbW1hbmRfd2FybmluZycpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlU29ja2V0KCkge1xuICAgIGlmIChcbiAgICAgIFtDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcsIENvbm5lY3Rpb25TdGF0dXMuUmVDb25uZWN0aW5nXS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5vcHRpb24ubm90Q2xlYXJXaGVuUmVjb25uZWN0IHx8IHRoaXMueHRlcm0/LnJlc2V0KCk7XG4gICAgfVxuXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBpbmcpO1xuICAgIHRoaXMuc29ja2V0Py5jbG9zZSgpO1xuICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcbiAgICB0aGlzLnNvY2tldCQkLm5leHQodGhpcy5zb2NrZXQpO1xuICB9XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtdWkvY29udGFpbmVyLXRlcm1pbmFsL2Jsb2IvYmE1NjBkNGY3MTVmNDA1YmViMGE2NGJhYjhmYjI5YTIxYWFjMjY3MS9jb250YWluZXItdGVybWluYWwuanMjTDE1MlxuICBwcml2YXRlIHJlc2l6ZVJlbW90ZVRlcm1pbmFsKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNvY2tldD8uc2VuZChcbiAgICAgICAgYDQke2VuY29kZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IFdpZHRoOiB0aGlzLnh0ZXJtLmNvbHMsIEhlaWdodDogdGhpcy54dGVybS5yb3dzIH0pLFxuICAgICAgICApfWAsXG4gICAgICApO1xuICAgIH0gY2F0Y2gge31cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29ubmVjdGlvblN0YXR1cyhzdGF0dXM6IENvbm5lY3Rpb25TdGF0dXMpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMgPSBzdGF0dXM7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzQ2hhbmdlLmVtaXQoc3RhdHVzKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGFjdGl2YXRlVGVybWluYWwoKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0ICYmIHRoaXMuY29ubmVjdGlvblN0YXR1cyA9PT0gQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0ZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNvY2tldC5zZW5kKCcwJyArIGVuY29kZSgnICcpKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zb2NrZXQuc2VuZCgnMCcgKyBlbmNvZGUoJ1xcYicpKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlY29kZShjb2Rpbmc6IHN0cmluZywgZGF0YTogc3RyaW5nKSB7XG4gIGNvbnN0IGRhdGFWaWV3ID0gbmV3IERhdGFWaWV3KFxuICAgIFVpbnQ4QXJyYXkuZnJvbShhdG9iKGRhdGEpLCBjID0+IGMuY29kZVBvaW50QXQoMCkpLmJ1ZmZlcixcbiAgKTtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2Rlcihjb2RpbmcpO1xuICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoZGF0YVZpZXcpO1xufVxuIiwiPGF1aS1pbmxpbmUtYWxlcnRcbiAgKm5nSWY9XCJjb25uZWN0aW9uU3RhdHVzID09PSBDb25uZWN0aW9uU3RhdHVzLkRpc2Nvbm5lY3RlZFwiXG4gIHR5cGU9XCJlcnJvclwiXG4+XG4gIDxzcGFuPnt7ICdleGVjX2Rpc2Nvbm5lY3RlZF90aXAnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICA8YnV0dG9uXG4gICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgIChjbGljayk9XCJyZWNvbm5lY3QoKVwiXG4gID5cbiAgICB7eyAncmVjb25uZWN0JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYXVpLWlubGluZS1hbGVydD5cblxuPGRpdiBjbGFzcz1cImFjbC10ZXJtaW5hbF9fd3JhcHBlclwiPlxuICA8YWNsLXRlcm1pbmFsLXBsYWNlaG9sZGVyXG4gICAgY2xhc3M9XCJ0dy1iZy1uLTEwXCJcbiAgICAqbmdJZj1cImNvbm5lY3Rpb25TdGF0dXMgPT09IENvbm5lY3Rpb25TdGF0dXMuTm9QZXJtaXNzaW9uXCJcbiAgICB0eXBlPVwicGVybWlzc2lvblwiXG4gID48L2FjbC10ZXJtaW5hbC1wbGFjZWhvbGRlcj5cbiAgPGFjbC1sb2FkaW5nLW1hc2sgW2xvYWRpbmddPVwic2hvd0xvYWRpbmdcIj48L2FjbC1sb2FkaW5nLW1hc2s+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFjbC10ZXJtaW5hbCB0dy1pbnZpc2libGVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICchdHctdmlzaWJsZSc6XG4gICAgICAgICFzaG93TG9hZGluZyAmJiBjb25uZWN0aW9uU3RhdHVzICE9PSBDb25uZWN0aW9uU3RhdHVzLk5vUGVybWlzc2lvblxuICAgIH1cIlxuICAgIFtjbGFzcy5hY2wtdGVybWluYWwtLWRhcmtdPVwidGhlbWUgPT09ICdkYXJrJ1wiXG4gICAgW2NsYXNzLmFjbC10ZXJtaW5hbC0tbGlnaHRdPVwidGhlbWUgPT09ICdsaWdodCdcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInR3LXctZnVsbCB0dy1oLTAgdHctZmxleC0xIHR3LWZsZXggdHctZmxleC1jb2wgdHctcC0xMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFjbC10ZXJtaW5hbF9faGVhZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImFjbC10ZXJtaW5hbF9fYnV0dG9uXCJcbiAgICAgICAgICBbYXVpRHJvcGRvd25dPVwiY29kaW5nTWVudVwiXG4gICAgICAgICAgW2F1aURyb3Bkb3duQ2xhc3NdPVwidGhlbWVDbGFzc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgIGNvZGluZyA9PT0gJ3V0ZjgnXG4gICAgICAgICAgICAgICAgPyAnVVRGLTgnXG4gICAgICAgICAgICAgICAgOiBjb2RpbmcgPT09ICdnYjE4MDMwJ1xuICAgICAgICAgICAgICAgID8gJ0dCIDE4MDMwJ1xuICAgICAgICAgICAgICAgIDogY29kaW5nLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7eyAnZGVjb2RpbmcnIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhdWktaWNvbiBpY29uPVwiYW5nbGVfZG93blwiPjwvYXVpLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJhY2wtdGVybWluYWxfX2J1dHRvblwiXG4gICAgICAgICAgW2F1aVRvb2x0aXBdPVwiZm9udFRlbXBsYXRlXCJcbiAgICAgICAgICBhdWlUb29sdGlwVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICBhdWlUb29sdGlwVHlwZT1cImluZm9cIlxuICAgICAgICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBlbmRcIlxuICAgICAgICAgIFthdWlUb29sdGlwQ2xhc3NdPVwidGhlbWVDbGFzc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8YXVpLWljb24gaWNvbj1cImdlYXJcIj48L2F1aS1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdmb250X3NldHRpbmcnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYWNsLXRlcm1pbmFsX19idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuU2VhcmNoaW5nKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGF1aS1pY29uIGljb249XCJtYWduaWZpZXJcIj48L2F1aS1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdmaW5kJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImFjbC10ZXJtaW5hbF9fYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVGhlbWUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXVpLWljb24gW2ljb25dPVwidGhlbWUgPT09ICdsaWdodCcgPyAnc3VuJyA6ICdtb29uJ1wiPjwvYXVpLWljb24+XG4gICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICh0aGVtZSA9PT0gJ2xpZ2h0JyA/ICdsaWdodF90aGVtZScgOiAnZGFya190aGVtZScpIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHRyYUJ1dHRvbjsgY29udGV4dDogeyBpbmRleDogaW5kZXggfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFjbC10ZXJtaW5hbF9fc2hlbGxcIlxuICAgICAgICAoa2V5ZG93bik9XCJvblNoZWxsS2V5RG93bigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICNhbmNob3JcbiAgICAgICAgICBjbGFzcz1cImFjbC10ZXJtaW5hbF9fYW5jaG9yXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hpbmdcIlxuICAgICAgICAgIGNsYXNzPVwiYWNsLXRlcm1pbmFsX19maW5kaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhdWktc2VhcmNoXG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBbKGtleXdvcmQpXT1cInNlYXJjaEtleXdvcmRcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25TZWFyY2hJbnB1dEtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgPjwvYXVpLXNlYXJjaD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgICBzaXplPVwibWluaVwiXG4gICAgICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIignZmluZF9wcmV2aW91cycgfCB0cmFuc2xhdGUpICsgJyAoU2hpZnQgKyBFbnRlciknXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmaW5kUHJldmlvdXMoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgICAgIGljb249XCJhcnJvd19yaWdodFwiXG4gICAgICAgICAgICAgIHN0eWxlPVwidHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKVwiXG4gICAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgICBzaXplPVwibWluaVwiXG4gICAgICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIignZmluZF9uZXh0JyB8IHRyYW5zbGF0ZSkgKyAnIChFbnRlciknXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmaW5kTmV4dCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAgICAgaWNvbj1cImFycm93X3JpZ2h0XCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJ0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZylcIlxuICAgICAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCIoJ2Nsb3NlJyB8IHRyYW5zbGF0ZSkgKyAnIChFc2NhcGUpJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VTZWFyY2hpbmcoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJ4bWFya1wiPjwvYXVpLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgZXh0cmFDb250ZW50O1xuICAgICAgY29udGV4dDoge1xuICAgICAgICAkaW1wbGljaXQ6IG9wdGlvbixcbiAgICAgICAgc29ja2V0OiBzb2NrZXQkJCB8IGFzeW5jLFxuICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb2RpbmdNZW51XG4gID48YXVpLW1lbnUgc2l6ZT1cInNtYWxsXCJcbiAgICA+PGF1aS1tZW51LWl0ZW1cbiAgICAgIFthY3RpdmVkXT1cImNvZGluZyA9PT0gJ3V0ZjgnXCJcbiAgICAgIChjbGljayk9XCJjb2RpbmcgPSAndXRmOCdcIlxuICAgICAgPlVURi04XG4gICAgPC9hdWktbWVudS1pdGVtPlxuICAgIDxhdWktbWVudS1pdGVtXG4gICAgICBbYWN0aXZlZF09XCJjb2RpbmcgPT09ICdnYjE4MDMwJ1wiXG4gICAgICAoY2xpY2spPVwiY29kaW5nID0gJ2diMTgwMzAnXCJcbiAgICAgID5HQiAxODAzMFxuICAgIDwvYXVpLW1lbnUtaXRlbT5cbiAgPC9hdWktbWVudT48L25nLXRlbXBsYXRlXG4+XG5cbjxuZy10ZW1wbGF0ZSAjZm9udFRlbXBsYXRlPlxuICA8YXVpLW51bWJlci1pbnB1dFxuICAgIFtzdGVwXT1cIjFcIlxuICAgIFtwcmVjaXNpb25dPVwiMVwiXG4gICAgW21pbl09XCIxMlwiXG4gICAgW21heF09XCI0MFwiXG4gICAgW2NvbnRyb2xzXT1cInRydWVcIlxuICAgIFthbmdsZUNvbnRyb2xzXT1cInRydWVcIlxuICAgIFt2YWx1ZV09XCJmb250U2l6ZVwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cImZvbnRTaXplQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAgPHNwYW4gYXVpSW5wdXRBZGRvbkFmdGVyPnB4PC9zcGFuPlxuICA8L2F1aS1udW1iZXItaW5wdXQ+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -55,6 +55,7 @@ export declare class TerminalComponent implements OnChanges, OnDestroy, OnInit {
55
55
  private socket;
56
56
  private ping;
57
57
  private resizeObserver;
58
+ private isDestroyed;
58
59
  socket$$: Subject<WebSocket>;
59
60
  shouldFallBackOnClose: boolean;
60
61
  get themeClass(): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alauda-fe/common",
3
- "version": "1.4.33-beta.0",
3
+ "version": "1.4.33-beta.1",
4
4
  "description": "Alauda frontend team common codes.",
5
5
  "author": "Alauda Frontend",
6
6
  "license": "MIT",
@@ -33,12 +33,12 @@
33
33
  "ng-resource-form-util": "^6.1.0",
34
34
  "ramda": "^0.29.0",
35
35
  "rxjs": "^7.8.1",
36
- "xterm": "^5.2.1",
37
- "xterm-addon-canvas": "^0.4.0",
38
- "xterm-addon-fit": "^0.7.0",
39
- "xterm-addon-search": "^0.12.0",
40
- "xterm-addon-web-links": "^0.8.0",
41
- "xterm-addon-webgl": "^0.15.0",
36
+ "xterm": "5.2.1",
37
+ "xterm-addon-canvas": "0.4.0",
38
+ "xterm-addon-fit": "0.7.0",
39
+ "xterm-addon-search": "0.12.0",
40
+ "xterm-addon-web-links": "0.8.0",
41
+ "xterm-addon-webgl": "0.15.0",
42
42
  "zone.js": "^0.14.8"
43
43
  },
44
44
  "dependencies": {