@tilde-nlp/ngx-translate 5.0.84 → 5.0.85

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.
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { ConversionHelper, FileExtensionHelper, FileExtensions, InlineMessageType } from '@tilde-nlp/ngx-common';
2
+ import { ConversionHelper, FileExtensionHelper, FileExtensions, InlineMessageType, QuotaType } from '@tilde-nlp/ngx-common';
3
3
  import { saveAs } from 'file-saver';
4
4
  import { Subject, of, throwError, timer } from 'rxjs';
5
5
  import { catchError, mergeMap, retryWhen } from 'rxjs/operators';
@@ -378,7 +378,8 @@ export class TldTranslateFileService {
378
378
  if (error.error?.error?.code == ErrorCode.E_429001) {
379
379
  this.quotaService.getQuotaUsage().subscribe((res) => {
380
380
  const msg = this.alerts.findErrorTitleAndLocalizationKey({ ...error, ErrorCode: `E_${error.error.error.code}` }, this.errorTranslationSubKeys);
381
- this.alerts.error(msg.description, msg.title, { quotaFileLimit: res.usage[0].quotaLimit, pricingUrl: this.config.supscriptionConfig.pricingUrl });
381
+ const fileQuota = res.usage.find((quota) => QuotaType.TRANSLATION_DOCUMENTS === quota.quotaType);
382
+ this.alerts.error(msg.description, msg.title, { quotaFileLimit: fileQuota.quotaLimit, pricingUrl: this.config.supscriptionConfig.pricingUrl });
382
383
  });
383
384
  return;
384
385
  }
@@ -408,4 +409,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
408
409
  providedIn: 'root'
409
410
  }]
410
411
  }], ctorParameters: function () { return [{ type: i1.FileApiService }, { type: i2.AlertService }, { type: i3.DomSanitizer }, { type: i4.TldTranslateConfigService }, { type: i4.TldTranslateSystemManagementService }, { type: i2.QuotaService }]; } });
411
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtZG9jdW1lbnQvc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBa0MsaUJBQWlCLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDak0sT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQWMsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUU1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQU81RSxNQUFNLE9BQU8sdUJBQXVCO0lBdUNmO0lBQ0E7SUFDVDtJQUNBO0lBQ1M7SUFDQTtJQTFDbkIsa0JBQWtCLENBQVU7SUFDNUIsK0dBQStHO0lBQy9HLElBQUksZUFBZSxLQUFjLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDMUUsZ0JBQWdCLEdBQXVCLEVBQUUsQ0FBQztJQUMxQyxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLFVBQVUsQ0FBUztJQUNuQixn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bnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBDb252ZXJzaW9uSGVscGVyLCBGaWxlRXh0ZW5zaW9uSGVscGVyLCBGaWxlRXh0ZW5zaW9ucywgRmlsZVVwbG9hZEVycm9yLCBJbmxpbmVNZXNzYWdlLCBJbmxpbmVNZXNzYWdlVHlwZSwgUXVvdGFTZXJ2aWNlLCBTeXN0ZW0gfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1lcmdlTWFwLCByZXRyeVdoZW4gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElEb3dubG9hZEZpbGVQYXJhbXMsIElGaWxlTWV0YSwgSUdldEZpbGVTdGF0dXNQYXJhbXMsIElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSwgSVJlbW92ZUZpbGVQYXJhbXMsIElTb3VyY2VGaWxlUHJldmlld1Jlc3BvbnNlLCBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMsIElUbGRFcnJvciwgSVRyYW5zbGF0ZWREb2N1bWVudFByZXZpZXdQYXJhbXMgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzL2Vycm9ycy9lcnJvci1jb2Rlcy5lbnVtJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TdGF0dXNzIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmlsZUNvbnZlcnNpb25UeXBlcyB9IGZyb20gJy4uL21vZGVscy9maWxlLWNvbnZlcnNpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRpb25GaWxlIH0gZnJvbSAnLi4vbW9kZWxzL3RyYW5zbGF0ZS1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZUFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS9maWxlLWFwaS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZUZpbGVTZXJ2aWNlIHtcclxuXHJcbiAgdHJhbnNsYXRpb25TdGFydGVkOiBib29sZWFuO1xyXG4gIC8qKiBWYWx1ZSB0byBiZSBzZXQgdG8gdHJ1ZSB3aGlsZSBsb2FkaW5nIHNvdXJjZSBwcmV2aWV3LiBBdCB0aGF0IHRpbWUsIHRyYW5zbGF0ZSBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkLiAqL1xyXG4gIGdldCBpc1VwbG9hZGluZ0ZpbGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmZpbGVzVXBsb2FkaW5nLmxlbmd0aCA+IDA7IH07XHJcbiAgdHJhbnNsYXRpb25GaWxlczogSVRyYW5zbGF0aW9uRmlsZVtdID0gW107XHJcbiAgZmlsZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzQWRkZWQ6IG51bWJlcjtcclxuICBhbnlQZGZGaWxlTG9hZGVkOiBib29sZWFuO1xyXG4gIGFueUltYWdlRmlsZUxvYWRlZDogYm9vbGVhbjtcclxuICAvL2ZvciBtdWx0aXBsZSBmaWxlIGNvbXBvbmVudFxyXG4gIHRyYW5zbGF0ZWRDb3VudDogbnVtYmVyID0gMDtcclxuICBtdWx0aXBsZUZpbGVVcGxvYWRBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGRpc2FibGVUcmFuc2xhdGVCdXR0b24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgfHwgdGhpcy5pc1VwbG9hZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkZpbGVzVXBsb2FkZWQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHJpdmF0ZSBhY3RpdmVTeXN0ZW06IFN5c3RlbTtcclxuICAvLyBUT0RPLiBDb25maWd1cmFibGU/XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFN0YXR1c0NoZWNrVGltZW91dCA9IDEwMDA7XHJcbiAgLy8gMCBpcyBuZXR3b3JrIGVycm9yLCBzaG91bGQgdHJ5IGFnYWluXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcmV0cnlFcnJvckNvZGVzID0gWzBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtFcnJvck1heFJldHJpZXMgPSAyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1c1RpbWVvdXRzID0ge307XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25DbGVhciA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbWFnZUV4dGVuc2lvbnMgPSBbXCJwbmdcIiwgXCJqcGdcIiwgXCJqcGVnXCIsIFwiYm1wXCJdO1xyXG4gIHByaXZhdGUgZmlsZXNVcGxvYWRpbmc6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBub3RGb3VuZEVycm9yQ29kZSA9IFwiRV80MDRcIjtcclxuICBwcml2YXRlIG5vdEZvdW5kUmVtb3ZlRXJyb3JDb2RlID0gXCJFXzQwNF9SRU1PVkVcIjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvclRyYW5zbGF0aW9uU3ViS2V5cyA9IFtcclxuICAgICdGSUxFX1RSQU5TTEFUSU9OX1NVQlNUQVRVUycsXHJcbiAgICAnRklMRV9VUExPQUQnLFxyXG4gICAgJ0ZJTEVfVFJBTlNMQVRJT05fTElNSVRTJ1xyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlQXBpOiBGaWxlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFN5c3RlbTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuRVhUUkFDVElOR10gPSAxMDAwO1xyXG4gICAgdGhpcy5fc3RhdHVzVGltZW91dHNbVHJhbnNsYXRpb25TdGF0dXNzLkVYVFJBQ1RJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5JTklUSUFMSVpJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5RVUVVSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuU0FWSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuVFJBTlNMQVRJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5XQUlUSU5HXSA9IDEwMDAwO1xyXG4gIH1cclxuXHJcbiAgLy8gY2xlYXJzIGFsbCBsb2FkZWQgZGF0YVxyXG4gIGNsZWFyKCkge1xyXG4gICAgY29uc3QgZmlsZUFyciA9IHRoaXMudHJhbnNsYXRpb25GaWxlcztcclxuICAgIGZpbGVBcnIuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICBmaWxlLnRyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVtb3ZlKGZpbGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jbGVhclBhcmFtcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQ2xlYXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9vbkZpbGVzVXBsb2FkZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoZmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgLy8gZmlsZS50cmFuc2xhdGluZyBuZWVkcyB0byBiZSBzZXQsIHNvIG5vIG90aGVyIGdldCBzdGF0dXMgcmVxdWVzdHMgYXJlIHNlbnQgdG8gc2VydmVyLlxyXG4gICAgZmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaXggPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmIChpeCA8IDApIHtcclxuICAgICAgdGhyb3cgXCJDYW4ndCByZW1vdmUgZmlsZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtczogSVJlbW92ZUZpbGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IGZpbGVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5maWxlQXBpLnJlbW92ZShwYXJhbXMpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogdGhpcy5ub3RGb3VuZFJlbW92ZUVycm9yQ29kZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5zcGxpY2UoaXgsIDEpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMuc3BsaWNlKGl4LCAxKTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmhhc0FueUltYWdlT3JQZGYoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgZG93bmxvYWQodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBmaWxlTWV0YTogSUZpbGVNZXRhKSB7XHJcbiAgICBpZiAodHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zbGF0aW9uRmlsZS5pc0Rvd25sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRvd25sb2FkUGFyYW1zOiBJRG93bmxvYWRGaWxlUGFyYW1zID0ge1xyXG4gICAgICBpZDogdHJhbnNsYXRpb25GaWxlLmlkLFxyXG4gICAgICBmaWxlTWV0YTogZmlsZU1ldGFcclxuICAgIH07XHJcbiAgICB0aGlzLmZpbGVBcGkuZG93bmxvYWQoZG93bmxvYWRQYXJhbXMpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgc2F2ZUFzKHJlc3BvbnNlLCBmaWxlTWV0YSA/IGZpbGVNZXRhLmZpbGVOYW1lIDogdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMub25FcnJvcihlcnJvciwgdHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVQcmV2aWV3KGZpbGU6IEZpbGUpOiBJVHJhbnNsYXRpb25GaWxlIHtcclxuICAgIGNvbnN0IGZpbGVzQWxsb3dlZCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA+PSBmaWxlc0FsbG93ZWQpIHtcclxuICAgICAgY29uc3QgZXJyb3JDb2RlID0gXCJFUlJPUlMuXCIgKyAoZmlsZXNBbGxvd2VkID4gMSA/IFwiTUFYX05VTUJFUl9PRl9GSUxFU1wiIDogXCJJTkNSRUFTRV9NQVhfTlVNQkVSX09GX0ZJTEVTXCIpO1xyXG4gICAgICB0aGlzLmFsZXJ0cy5lcnJvcihlcnJvckNvZGUsIG51bGwsIHsgbGluazogdGhpcy5jb25maWcuY29yZUNvbmZpZy5yZWdpc3RlckxpbmssIGxpbWl0OiBmaWxlc0FsbG93ZWQgfSk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpbGVOYW1lcy5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgICAgdGhpcy5hbGVydHMuZXJyb3IoXCJFUlJPUlMuRklMRV9BTFJFQURZX0FEREVEXCIsIG51bGwsIHsgZmlsZU5hbWU6IGZpbGUubmFtZSB9KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlc1VwbG9hZGluZy5wdXNoKGZpbGVOYW1lKTtcclxuICAgIGNvbnN0IHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSA9IHtcclxuICAgICAgb3JpZ2luYWxGaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIC8vIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICBvcmlnaW5hbEV4dGVuc2lvbjogRmlsZUV4dGVuc2lvbkhlbHBlci5nZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lKSxcclxuICAgICAgdHJhbnNsYXRpb25TdGF0dXNzOiBUcmFuc2xhdGlvblN0YXR1c3MuVVBMT0FESU5HLFxyXG4gICAgICBmaWxlLFxyXG4gICAgICBtZXNzYWdlczogW11cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmlsZXMucHVzaCh0cmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMucHVzaChmaWxlTmFtZSk7XHJcbiAgICBjb25zdCBpc0ltYWdlID0gdGhpcy5fc3VwcG9ydGVkSW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKEZpbGVFeHRlbnNpb25IZWxwZXIuZ2V0RmlsZUV4dGVuc2lvbih0cmFuc2xhdGlvbkZpbGUub3JpZ2luYWxGaWxlTmFtZSkpO1xyXG4gICAgaWYgKGlzSW1hZ2UpIHtcclxuICAgICAgdGhpcy5hbnlJbWFnZUZpbGVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVR5cGUgPSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNQZGYgPSBcInBkZlwiID09PSBGaWxlRXh0ZW5zaW9uSGVscGVyLmdldEZpbGVFeHRlbnNpb24odHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgaWYgKGlzUGRmKSB7XHJcbiAgICAgIHRoaXMuYW55UGRmRmlsZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5maWxlVHlwZSA9IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlQXBpLnNvdXJjZUZpbGVQcmV2aWV3KHRyYW5zbGF0aW9uRmlsZSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLmlzRmlsZVByZXZpZXdMb2FkZWQpIHtcclxuICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gVHJhbnNsYXRpb25TdGF0dXNzLlVQTE9BREVEO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZGVkKGZpbGVOYW1lKTtcclxuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3QWxlcnRzKGlzUGRmKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uRmlsZVByZXZpZXdMb2FkKHJlc3AsIHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgdGhpcy5hbGVydHMudW5oYW5kZWxlZEVycm9yKGVycm9yKTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGU7XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVCdXR0b25DbGljayhhY3RpdmU6IEFjdGl2ZURhdGEpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TdGFydGVkID0gdHJ1ZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhcnRGaWxlVHJhbnNsYXRpb24oYWN0aXZlLCBmaWxlKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGFydEZpbGVUcmFuc2xhdGlvbihhY3RpdmVTeXN0ZW06IEFjdGl2ZURhdGEsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgaWYgKCF0aGlzLmNhblN0YXJ0VHJhbnNsYXRpb24odHJhbnNsYXRpb25GaWxlKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IHN0YXJ0IGZpbGUgdHJhbnNsYXRpb24hXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZVN5c3RlbU9iaigpO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhcnRlZCA9IHRydWU7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpbmcgPSB0cnVlO1xyXG4gICAgLy8gcXVpdGUgd2VpcmQuIFJlc3BvbnNlIGNhbiBiZSBzdHJ1Y3R1cmUgd2l0aCBzdWNjZXNzIGFuZCBlcnJvciBwYXJhbXMgYW5kIGl0IGNhbiBhbHNvIGJlIHBsYWluIHN0cmluZyBpbiBzdWNjZXNzLlxyXG4gICAgY29uc3QgcGFyYW1zOiBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IHRyYW5zbGF0aW9uRmlsZSxcclxuICAgICAgc3lzdGVtOiBhY3RpdmVTeXN0ZW0uc3lzdGVtXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWxlQXBpLnN0YXJ0VHJhbnNsYXRpb24ocGFyYW1zKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUFwaUVycm9yKHRyYW5zbGF0aW9uRmlsZSwgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAvLyB0aHJvdyBlcnJvcjtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIC8vIHNvbWV0aGluZyBnb25lIHdyb25nXHJcbiAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5pZCA9IHJlc3BvbnNlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGFydGVkT25TZXJ2ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5jaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbGVVcGxvYWRFcnJvcihlcnJvcjogRmlsZVVwbG9hZEVycm9yKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGZpbGVOYW1lOiBlcnJvci5maWxlTmFtZSxcclxuICAgICAgbWF4U2l6ZU1COiBDb252ZXJzaW9uSGVscGVyLmJ5dGVzVG9NYih0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm1heFNpemUpLFxyXG4gICAgICBmb3JtYXRzOiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmFsbG93ZWRGaWxlVHlwZXMuam9pbihcIiwgXCIpLFxyXG4gICAgICByZWdpc3Rlckxpbms6IHRoaXMuY29uZmlnLmNvcmVDb25maWcucmVnaXN0ZXJMaW5rXHJcbiAgICB9XHJcbiAgICB0aGlzLmFsZXJ0cy5lcnJvcihgRVJST1JTLkZJTEVfVVBMT0FELiR7ZXJyb3IuY29kZX1gLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfVxyXG5cclxuICAvLyBjaGVja3MgYWxsIG5lY2Vzc2FyeSBwYXJhbXMgdGhhdCBhcmUgcmVzcG9uc2libGUgd2hldGVyIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgbmV3IHRyYW5zbGF0aW9uLlxyXG4gIHByaXZhdGUgY2FuU3RhcnRUcmFuc2xhdGlvbih0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSAmJiAhdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICBjb25zdCBmaW5pc2hlZFN0YXR1cyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5DT01QTEVURUQ7XHJcbiAgICBjb25zdCBwYXJhbXM6IElHZXRGaWxlU3RhdHVzUGFyYW1zID0ge1xyXG4gICAgICBmaWxlOiB0cmFuc2xhdGlvbkZpbGUsXHJcbiAgICAgIHNyY0xhbmc6IHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICB0cmdMYW5nOiB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS5nZXRTdGF0dXMocGFyYW1zKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICAvLyBJZiBuZXR3b3JrIGVycm9yLCBjaGVjayBhZ2FpbiBiZWNhdXNlIGZpbGUgaGFzIG5vdCBmYWlsZWQuXHJcbiAgICAgICAgLy8gdGhpcyBjb2RlIG5lZWRzIHRvIGJlIHRlc3RlZCwgYmVjYXVzZSBjYW50IHJlcGVhdCBpdFxyXG4gICAgICAgIHJldHJ5V2hlbigob2JzZXJ2YWJsZXMpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlcy5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcCgoZXJyb3IsIGkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaSA8IHRoaXMuX25ldHdvcmtFcnJvck1heFJldHJpZXMgJiYgdGhpcy5fcmV0cnlFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLnN0YXR1cykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aW1lcih0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN5c3RlbUlkICYmIHJlc3BvbnNlLnN5c3RlbUlkICE9PSB0aGlzLmFjdGl2ZVN5c3RlbS5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRsZFN5c3RlbS5jaGFuZ2VTeXN0ZW0ocmVzcG9uc2Uuc3lzdGVtSWQsIGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSB0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gcmVzcG9uc2UudHJhbnNsYXRpb25TdGF0dXNzO1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnNvdXJjZURvd25sb2FkQXZhaWxhYmxlID0gcmVzcG9uc2Uuc291cmNlRG93bmxvYWRBdmFpbGFibGU7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUucHJvZ3Jlc3MgPSByZXNwb25zZS5wcm9ncmVzcztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5hdmFpbGFibGVFeHRlbnNpb25zID0gcmVzcG9uc2UuZXh0ZW5zaW9ucztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VGaWxlTmFtZSA9IHJlc3BvbnNlLnNvdXJjZUZpbGVOYW1lO1xyXG4gICAgICAgICAgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT0gVHJhbnNsYXRpb25TdGF0dXNzLkVSUk9SKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yOiBJVGxkRXJyb3IgPSB7XHJcbiAgICAgICAgICAgICAgRXJyb3JDb2RlOlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3Vic3RhdHVzID8/IEVycm9yQ29kZS5FX0ZBSUxFRF9JTl9UUkFOU0xBVElPTixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5maWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlLCBlcnJvcik7XHJcbiAgICAgICAgICAgIC8vdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT09IGZpbmlzaGVkU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZENvdW50ICs9IDE7XHJcbiAgICAgICAgICAgIC8vdHJhbnNsYXRpb25GaWxlLm5hbWUgPSByZXNwb25zZS5uYW1lO1xyXG4gICAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUuZG93bmxvYWRBdmFpbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlRmlsZVVwbG9hZEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZERvY1ByZXZpZXcodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSB0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZmlsZUNvbmZpZy5maWxlRG93bmxvYWRUaW1lb3V0cyAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmZpbGVEb3dubG9hZFRpbWVvdXRzW3RyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3NdKSB7XHJcbiAgICAgICAgICAgICAgdGltZW91dCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcuZmlsZURvd25sb2FkVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhdHVzVGltZW91dHMgJiYgdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc10pIHtcclxuICAgICAgICAgICAgICB0aW1lb3V0ID0gdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUcmFuc2xhdGlvblByb2dyZXNzKHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgICAgICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25GaWxlUHJldmlld0xvYWQoZGF0YTogSVNvdXJjZUZpbGVQcmV2aWV3UmVzcG9uc2UsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLmlzRmlsZVByZXZpZXdMb2FkZWQgPSBkYXRhLmlzRmlsZVByZXZpZXdMb2FkZWQ7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSA9IGRhdGEudG1wTmFtZTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VQcmV2aWV3SGFzSHRtbCA9IGRhdGEuc291cmNlUHJldmlld0hhc0h0bWw7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuc291cmNlUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRhdGEuc291cmNlUHJldmlldyk7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVByZXZpZXdQcm9ncmVzcyA9IGRhdGEucGVyY2VudERvbmU7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVkRG9jUHJldmlldyh0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIC8vIHNob3cgcHJldmlldyBmb3Igb3JpZ2luYWwgZXh0ZW5zaW9uIGlmIGV4aXN0cywgaWYgbm90LCB0aGVuIHByZXZpZXcgZm9yIGRvY3gsIGlmIG5vdCB0aGVuIHRyeSB3aXRoIG9yaWdpbmFsIGZpbGVuYW1lLlxyXG4gICAgY29uc3QgZmlsZU5hbWUgPSB0cmFuc2xhdGlvbkZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucy5maW5kKGV4dCA9PiBleHQuZXh0ZW5zaW9uID09PSBGaWxlRXh0ZW5zaW9ucy5ET0NYKT8uZmlsZU5hbWVcclxuICAgICAgPz8gdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWU7XHJcbiAgICBjb25zdCBwYXJhbXM6IElUcmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3UGFyYW1zID0ge1xyXG4gICAgICBmaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIHRyYW5zbGF0aW9uRG9jSWQ6IHRyYW5zbGF0aW9uRmlsZS5pZFxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS50cmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3KHBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IHsgc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBzdHJpbmcsIHN0YXR1czogc3RyaW5nLCBwcmV2aWV3OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0cy51bmhhbmRlbGVkRXJyb3IocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByZXZpZXcpIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHJlc3BvbnNlLnByZXZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBlcnJvcjogYW55KSB7XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsZVByZXZpZXdBbGVydHMoaXNQZGY6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGFsZXJ0UGFyYW1zID0ge1xyXG4gICAgICBhcHBOYW1lOiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcE5hbWUsXHJcbiAgICAgIHByaWNpbmdVcmw6IHRoaXMuY29uZmlnLnN1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmZpbGVDb25maWcuc2hvd1RyYW5zbGF0aW9uTGltaXRzKSB7XHJcbiAgICAgIGlmIChpc1BkZiAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm9jclBhZ2VMaW1pdCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoXCJUTERfVFJBTlNMQVRFLlBERl9QQUdFX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnNob3dXb3JkTGltaXRXYXJuaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydHMud2FybmluZyhcIlRMRF9UUkFOU0xBVEUuRE9DX1dPUkRfQ05UX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25FcnJvcihlcnJvcjogYW55LCB0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIGlmICh0cmFuc2xhdGlvbkZpbGUpIHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvckZvck1lc3NhZ2UgPSBlcnJvci5zdGF0dXMgPT09IDQwNCA/IHsgRXJyb3JDb2RlOiB0aGlzLm5vdEZvdW5kRXJyb3JDb2RlIH0gOiBlcnJvcjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yRm9yTWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGVVcGxvYWRlZChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlSXggPSB0aGlzLmZpbGVzVXBsb2FkaW5nLmluZGV4T2YoZmlsZU5hbWUpO1xyXG4gICAgaWYgKGZpbGVJeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcuc3BsaWNlKGZpbGVJeCwgMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWxlc1VwbG9hZGluZy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5fb25GaWxlc1VwbG9hZGVkLm5leHQobnVsbClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQW55SW1hZ2VPclBkZigpIHtcclxuICAgIGxldCBhbnlJbWFnZSA9IGZhbHNlO1xyXG4gICAgbGV0IGFueVBkZiA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyYW5zbGF0aW9uRmlsZXMubGVuZ3RoICYmICEoYW55UGRmICYmIGFueUltYWdlKTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXNbaV07XHJcbiAgICAgIGlmIChmaWxlLmZpbGVUeXBlID09PSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFKSB7XHJcbiAgICAgICAgYW55SW1hZ2UgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGZpbGUuZmlsZVR5cGUgPT09IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGKSB7XHJcbiAgICAgICAgYW55UGRmID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYW55SW1hZ2VGaWxlTG9hZGVkID0gYW55SW1hZ2U7XHJcbiAgICB0aGlzLmFueVBkZkZpbGVMb2FkZWQgPSBhbnlQZGY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyUGFyYW1zKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5hbnlQZGZGaWxlTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmFueUltYWdlRmlsZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZXMgPSBbXTtcclxuICAgIHRoaXMudHJhbnNsYXRlZENvdW50ID0gMDtcclxuICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcgPSBbXTtcclxuICAgIHRoaXMuX29uQ2xlYXIubmV4dChudWxsKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblRyYW5zbGF0aW9uRmlsZUVycm9yKHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSwgZXJyb3I6IGFueSkge1xyXG4gICAgaWYgKGVycm9yLmVycm9yPy5lcnJvcj8uY29kZSA9PSBFcnJvckNvZGUuRV80MjkwMDEpIHtcclxuICAgICAgdGhpcy5xdW90YVNlcnZpY2UuZ2V0UXVvdGFVc2FnZSgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbXNnID0gdGhpcy5hbGVydHMuZmluZEVycm9yVGl0bGVBbmRMb2NhbGl6YXRpb25LZXkoeyAuLi5lcnJvciwgRXJyb3JDb2RlOiBgRV8ke2Vycm9yLmVycm9yLmVycm9yLmNvZGV9YCB9LCB0aGlzLmVycm9yVHJhbnNsYXRpb25TdWJLZXlzKTtcclxuICAgICAgICB0aGlzLmFsZXJ0cy5lcnJvcihtc2cuZGVzY3JpcHRpb24sIG1zZy50aXRsZSwgeyBxdW90YUZpbGVMaW1pdDogcmVzLnVzYWdlWzBdLnF1b3RhTGltaXQsIHByaWNpbmdVcmw6IHRoaXMuY29uZmlnLnN1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9IFxyXG5cclxuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmFsZXJ0cy5maW5kRXJyb3JUaXRsZUFuZExvY2FsaXphdGlvbktleShlcnJvciwgdGhpcy5lcnJvclRyYW5zbGF0aW9uU3ViS2V5cyk7XHJcbiAgICBjb25zdCBvcmlnaW5hbEZpbGVOYW1lID0gdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWU7XHJcbiAgICBjb25zdCBpbmxpbmVNZXNzYWdlOiBJbmxpbmVNZXNzYWdlID0ge1xyXG4gICAgICB0aXRsZTogbWVzc2FnZS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IG1lc3NhZ2UuZGVzY3JpcHRpb24sXHJcbiAgICAgIHR5cGU6IElubGluZU1lc3NhZ2VUeXBlLkVSUk9SLFxyXG4gICAgICBsb2NhbGl6YXRpb25QYXJhbXM6IHsgZmlsZU5hbWU6IG9yaWdpbmFsRmlsZU5hbWUsIC4uLnRoaXMuYWxlcnRzLmRlZmF1bHRQYXJhbXMgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGVGaWxlVXBsb2FkQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRzLmVycm9yKG1lc3NhZ2UuZGVzY3JpcHRpb24sIG1lc3NhZ2UudGl0bGUsIHsgZmlsZU5hbWU6IG9yaWdpbmFsRmlsZU5hbWUgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtZXNzYWdlU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoaW5saW5lTWVzc2FnZSk7XHJcbiAgICBpZiAoIXRyYW5zbGF0aW9uRmlsZS5tZXNzYWdlcy5zb21lKG1zZyA9PiBKU09OLnN0cmluZ2lmeShtc2cpID09PSBtZXNzYWdlU3RyaW5nKSkge1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUubWVzc2FnZXMucHVzaChpbmxpbmVNZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtZG9jdW1lbnQvc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBa0MsaUJBQWlCLEVBQWdCLFNBQVMsRUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBQzVNLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7QUFPNUUsTUFBTSxPQUFPLHVCQUF1QjtJQXVDZjtJQUNBO0lBQ1Q7SUFDQTtJQUNTO0lBQ0E7SUExQ25CLGtCQUFrQixDQUFVO0lBQzVCLCtHQUErRztJQUMvRyxJQUFJLGVBQWUsS0FBYyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQzFFLGdCQUFnQixHQUF1QixFQUFFLENBQUM7SUFDMUMsU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUN6QixVQUFVLENB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YlUsdUJBQXVCOzRHQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEFjdGl2ZURhdGEsIEFsZXJ0U2VydmljZSwgQ29udmVyc2lvbkhlbHBlciwgRmlsZUV4dGVuc2lvbkhlbHBlciwgRmlsZUV4dGVuc2lvbnMsIEZpbGVVcGxvYWRFcnJvciwgSW5saW5lTWVzc2FnZSwgSW5saW5lTWVzc2FnZVR5cGUsIFF1b3RhU2VydmljZSwgUXVvdGFUeXBlLCBTeXN0ZW0gfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1lcmdlTWFwLCByZXRyeVdoZW4gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElEb3dubG9hZEZpbGVQYXJhbXMsIElGaWxlTWV0YSwgSUdldEZpbGVTdGF0dXNQYXJhbXMsIElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSwgSVJlbW92ZUZpbGVQYXJhbXMsIElTb3VyY2VGaWxlUHJldmlld1Jlc3BvbnNlLCBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMsIElUbGRFcnJvciwgSVRyYW5zbGF0ZWREb2N1bWVudFByZXZpZXdQYXJhbXMgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzL2Vycm9ycy9lcnJvci1jb2Rlcy5lbnVtJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TdGF0dXNzIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmlsZUNvbnZlcnNpb25UeXBlcyB9IGZyb20gJy4uL21vZGVscy9maWxlLWNvbnZlcnNpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRpb25GaWxlIH0gZnJvbSAnLi4vbW9kZWxzL3RyYW5zbGF0ZS1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZUFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS9maWxlLWFwaS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZUZpbGVTZXJ2aWNlIHtcclxuXHJcbiAgdHJhbnNsYXRpb25TdGFydGVkOiBib29sZWFuO1xyXG4gIC8qKiBWYWx1ZSB0byBiZSBzZXQgdG8gdHJ1ZSB3aGlsZSBsb2FkaW5nIHNvdXJjZSBwcmV2aWV3LiBBdCB0aGF0IHRpbWUsIHRyYW5zbGF0ZSBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkLiAqL1xyXG4gIGdldCBpc1VwbG9hZGluZ0ZpbGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmZpbGVzVXBsb2FkaW5nLmxlbmd0aCA+IDA7IH07XHJcbiAgdHJhbnNsYXRpb25GaWxlczogSVRyYW5zbGF0aW9uRmlsZVtdID0gW107XHJcbiAgZmlsZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzQWRkZWQ6IG51bWJlcjtcclxuICBhbnlQZGZGaWxlTG9hZGVkOiBib29sZWFuO1xyXG4gIGFueUltYWdlRmlsZUxvYWRlZDogYm9vbGVhbjtcclxuICAvL2ZvciBtdWx0aXBsZSBmaWxlIGNvbXBvbmVudFxyXG4gIHRyYW5zbGF0ZWRDb3VudDogbnVtYmVyID0gMDtcclxuICBtdWx0aXBsZUZpbGVVcGxvYWRBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGRpc2FibGVUcmFuc2xhdGVCdXR0b24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgfHwgdGhpcy5pc1VwbG9hZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkZpbGVzVXBsb2FkZWQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHJpdmF0ZSBhY3RpdmVTeXN0ZW06IFN5c3RlbTtcclxuICAvLyBUT0RPLiBDb25maWd1cmFibGU/XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFN0YXR1c0NoZWNrVGltZW91dCA9IDEwMDA7XHJcbiAgLy8gMCBpcyBuZXR3b3JrIGVycm9yLCBzaG91bGQgdHJ5IGFnYWluXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcmV0cnlFcnJvckNvZGVzID0gWzBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtFcnJvck1heFJldHJpZXMgPSAyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1c1RpbWVvdXRzID0ge307XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25DbGVhciA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbWFnZUV4dGVuc2lvbnMgPSBbXCJwbmdcIiwgXCJqcGdcIiwgXCJqcGVnXCIsIFwiYm1wXCJdO1xyXG4gIHByaXZhdGUgZmlsZXNVcGxvYWRpbmc6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBub3RGb3VuZEVycm9yQ29kZSA9IFwiRV80MDRcIjtcclxuICBwcml2YXRlIG5vdEZvdW5kUmVtb3ZlRXJyb3JDb2RlID0gXCJFXzQwNF9SRU1PVkVcIjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvclRyYW5zbGF0aW9uU3ViS2V5cyA9IFtcclxuICAgICdGSUxFX1RSQU5TTEFUSU9OX1NVQlNUQVRVUycsXHJcbiAgICAnRklMRV9VUExPQUQnLFxyXG4gICAgJ0ZJTEVfVFJBTlNMQVRJT05fTElNSVRTJ1xyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlQXBpOiBGaWxlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFN5c3RlbTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuRVhUUkFDVElOR10gPSAxMDAwO1xyXG4gICAgdGhpcy5fc3RhdHVzVGltZW91dHNbVHJhbnNsYXRpb25TdGF0dXNzLkVYVFJBQ1RJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5JTklUSUFMSVpJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5RVUVVSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuU0FWSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuVFJBTlNMQVRJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5XQUlUSU5HXSA9IDEwMDAwO1xyXG4gIH1cclxuXHJcbiAgLy8gY2xlYXJzIGFsbCBsb2FkZWQgZGF0YVxyXG4gIGNsZWFyKCkge1xyXG4gICAgY29uc3QgZmlsZUFyciA9IHRoaXMudHJhbnNsYXRpb25GaWxlcztcclxuICAgIGZpbGVBcnIuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICBmaWxlLnRyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVtb3ZlKGZpbGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jbGVhclBhcmFtcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQ2xlYXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9vbkZpbGVzVXBsb2FkZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoZmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgLy8gZmlsZS50cmFuc2xhdGluZyBuZWVkcyB0byBiZSBzZXQsIHNvIG5vIG90aGVyIGdldCBzdGF0dXMgcmVxdWVzdHMgYXJlIHNlbnQgdG8gc2VydmVyLlxyXG4gICAgZmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaXggPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmIChpeCA8IDApIHtcclxuICAgICAgdGhyb3cgXCJDYW4ndCByZW1vdmUgZmlsZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtczogSVJlbW92ZUZpbGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IGZpbGVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5maWxlQXBpLnJlbW92ZShwYXJhbXMpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogdGhpcy5ub3RGb3VuZFJlbW92ZUVycm9yQ29kZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5zcGxpY2UoaXgsIDEpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMuc3BsaWNlKGl4LCAxKTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmhhc0FueUltYWdlT3JQZGYoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgZG93bmxvYWQodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBmaWxlTWV0YTogSUZpbGVNZXRhKSB7XHJcbiAgICBpZiAodHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zbGF0aW9uRmlsZS5pc0Rvd25sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRvd25sb2FkUGFyYW1zOiBJRG93bmxvYWRGaWxlUGFyYW1zID0ge1xyXG4gICAgICBpZDogdHJhbnNsYXRpb25GaWxlLmlkLFxyXG4gICAgICBmaWxlTWV0YTogZmlsZU1ldGFcclxuICAgIH07XHJcbiAgICB0aGlzLmZpbGVBcGkuZG93bmxvYWQoZG93bmxvYWRQYXJhbXMpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgc2F2ZUFzKHJlc3BvbnNlLCBmaWxlTWV0YSA/IGZpbGVNZXRhLmZpbGVOYW1lIDogdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMub25FcnJvcihlcnJvciwgdHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVQcmV2aWV3KGZpbGU6IEZpbGUpOiBJVHJhbnNsYXRpb25GaWxlIHtcclxuICAgIGNvbnN0IGZpbGVzQWxsb3dlZCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA+PSBmaWxlc0FsbG93ZWQpIHtcclxuICAgICAgY29uc3QgZXJyb3JDb2RlID0gXCJFUlJPUlMuXCIgKyAoZmlsZXNBbGxvd2VkID4gMSA/IFwiTUFYX05VTUJFUl9PRl9GSUxFU1wiIDogXCJJTkNSRUFTRV9NQVhfTlVNQkVSX09GX0ZJTEVTXCIpO1xyXG4gICAgICB0aGlzLmFsZXJ0cy5lcnJvcihlcnJvckNvZGUsIG51bGwsIHsgbGluazogdGhpcy5jb25maWcuY29yZUNvbmZpZy5yZWdpc3RlckxpbmssIGxpbWl0OiBmaWxlc0FsbG93ZWQgfSk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpbGVOYW1lcy5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgICAgdGhpcy5hbGVydHMuZXJyb3IoXCJFUlJPUlMuRklMRV9BTFJFQURZX0FEREVEXCIsIG51bGwsIHsgZmlsZU5hbWU6IGZpbGUubmFtZSB9KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlc1VwbG9hZGluZy5wdXNoKGZpbGVOYW1lKTtcclxuICAgIGNvbnN0IHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSA9IHtcclxuICAgICAgb3JpZ2luYWxGaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIC8vIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICBvcmlnaW5hbEV4dGVuc2lvbjogRmlsZUV4dGVuc2lvbkhlbHBlci5nZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lKSxcclxuICAgICAgdHJhbnNsYXRpb25TdGF0dXNzOiBUcmFuc2xhdGlvblN0YXR1c3MuVVBMT0FESU5HLFxyXG4gICAgICBmaWxlLFxyXG4gICAgICBtZXNzYWdlczogW11cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmlsZXMucHVzaCh0cmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMucHVzaChmaWxlTmFtZSk7XHJcbiAgICBjb25zdCBpc0ltYWdlID0gdGhpcy5fc3VwcG9ydGVkSW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKEZpbGVFeHRlbnNpb25IZWxwZXIuZ2V0RmlsZUV4dGVuc2lvbih0cmFuc2xhdGlvbkZpbGUub3JpZ2luYWxGaWxlTmFtZSkpO1xyXG4gICAgaWYgKGlzSW1hZ2UpIHtcclxuICAgICAgdGhpcy5hbnlJbWFnZUZpbGVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVR5cGUgPSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNQZGYgPSBcInBkZlwiID09PSBGaWxlRXh0ZW5zaW9uSGVscGVyLmdldEZpbGVFeHRlbnNpb24odHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgaWYgKGlzUGRmKSB7XHJcbiAgICAgIHRoaXMuYW55UGRmRmlsZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5maWxlVHlwZSA9IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlQXBpLnNvdXJjZUZpbGVQcmV2aWV3KHRyYW5zbGF0aW9uRmlsZSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLmlzRmlsZVByZXZpZXdMb2FkZWQpIHtcclxuICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gVHJhbnNsYXRpb25TdGF0dXNzLlVQTE9BREVEO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZGVkKGZpbGVOYW1lKTtcclxuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3QWxlcnRzKGlzUGRmKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uRmlsZVByZXZpZXdMb2FkKHJlc3AsIHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgdGhpcy5hbGVydHMudW5oYW5kZWxlZEVycm9yKGVycm9yKTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGU7XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVCdXR0b25DbGljayhhY3RpdmU6IEFjdGl2ZURhdGEpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TdGFydGVkID0gdHJ1ZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhcnRGaWxlVHJhbnNsYXRpb24oYWN0aXZlLCBmaWxlKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGFydEZpbGVUcmFuc2xhdGlvbihhY3RpdmVTeXN0ZW06IEFjdGl2ZURhdGEsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgaWYgKCF0aGlzLmNhblN0YXJ0VHJhbnNsYXRpb24odHJhbnNsYXRpb25GaWxlKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IHN0YXJ0IGZpbGUgdHJhbnNsYXRpb24hXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZVN5c3RlbU9iaigpO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhcnRlZCA9IHRydWU7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpbmcgPSB0cnVlO1xyXG4gICAgLy8gcXVpdGUgd2VpcmQuIFJlc3BvbnNlIGNhbiBiZSBzdHJ1Y3R1cmUgd2l0aCBzdWNjZXNzIGFuZCBlcnJvciBwYXJhbXMgYW5kIGl0IGNhbiBhbHNvIGJlIHBsYWluIHN0cmluZyBpbiBzdWNjZXNzLlxyXG4gICAgY29uc3QgcGFyYW1zOiBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IHRyYW5zbGF0aW9uRmlsZSxcclxuICAgICAgc3lzdGVtOiBhY3RpdmVTeXN0ZW0uc3lzdGVtXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWxlQXBpLnN0YXJ0VHJhbnNsYXRpb24ocGFyYW1zKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUFwaUVycm9yKHRyYW5zbGF0aW9uRmlsZSwgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAvLyB0aHJvdyBlcnJvcjtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIC8vIHNvbWV0aGluZyBnb25lIHdyb25nXHJcbiAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5pZCA9IHJlc3BvbnNlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGFydGVkT25TZXJ2ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5jaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbGVVcGxvYWRFcnJvcihlcnJvcjogRmlsZVVwbG9hZEVycm9yKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGZpbGVOYW1lOiBlcnJvci5maWxlTmFtZSxcclxuICAgICAgbWF4U2l6ZU1COiBDb252ZXJzaW9uSGVscGVyLmJ5dGVzVG9NYih0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm1heFNpemUpLFxyXG4gICAgICBmb3JtYXRzOiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmFsbG93ZWRGaWxlVHlwZXMuam9pbihcIiwgXCIpLFxyXG4gICAgICByZWdpc3Rlckxpbms6IHRoaXMuY29uZmlnLmNvcmVDb25maWcucmVnaXN0ZXJMaW5rXHJcbiAgICB9XHJcbiAgICB0aGlzLmFsZXJ0cy5lcnJvcihgRVJST1JTLkZJTEVfVVBMT0FELiR7ZXJyb3IuY29kZX1gLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfVxyXG5cclxuICAvLyBjaGVja3MgYWxsIG5lY2Vzc2FyeSBwYXJhbXMgdGhhdCBhcmUgcmVzcG9uc2libGUgd2hldGVyIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgbmV3IHRyYW5zbGF0aW9uLlxyXG4gIHByaXZhdGUgY2FuU3RhcnRUcmFuc2xhdGlvbih0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSAmJiAhdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICBjb25zdCBmaW5pc2hlZFN0YXR1cyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5DT01QTEVURUQ7XHJcbiAgICBjb25zdCBwYXJhbXM6IElHZXRGaWxlU3RhdHVzUGFyYW1zID0ge1xyXG4gICAgICBmaWxlOiB0cmFuc2xhdGlvbkZpbGUsXHJcbiAgICAgIHNyY0xhbmc6IHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICB0cmdMYW5nOiB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS5nZXRTdGF0dXMocGFyYW1zKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICAvLyBJZiBuZXR3b3JrIGVycm9yLCBjaGVjayBhZ2FpbiBiZWNhdXNlIGZpbGUgaGFzIG5vdCBmYWlsZWQuXHJcbiAgICAgICAgLy8gdGhpcyBjb2RlIG5lZWRzIHRvIGJlIHRlc3RlZCwgYmVjYXVzZSBjYW50IHJlcGVhdCBpdFxyXG4gICAgICAgIHJldHJ5V2hlbigob2JzZXJ2YWJsZXMpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlcy5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcCgoZXJyb3IsIGkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaSA8IHRoaXMuX25ldHdvcmtFcnJvck1heFJldHJpZXMgJiYgdGhpcy5fcmV0cnlFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLnN0YXR1cykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aW1lcih0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN5c3RlbUlkICYmIHJlc3BvbnNlLnN5c3RlbUlkICE9PSB0aGlzLmFjdGl2ZVN5c3RlbS5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRsZFN5c3RlbS5jaGFuZ2VTeXN0ZW0ocmVzcG9uc2Uuc3lzdGVtSWQsIGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSB0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gcmVzcG9uc2UudHJhbnNsYXRpb25TdGF0dXNzO1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnNvdXJjZURvd25sb2FkQXZhaWxhYmxlID0gcmVzcG9uc2Uuc291cmNlRG93bmxvYWRBdmFpbGFibGU7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUucHJvZ3Jlc3MgPSByZXNwb25zZS5wcm9ncmVzcztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5hdmFpbGFibGVFeHRlbnNpb25zID0gcmVzcG9uc2UuZXh0ZW5zaW9ucztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VGaWxlTmFtZSA9IHJlc3BvbnNlLnNvdXJjZUZpbGVOYW1lO1xyXG4gICAgICAgICAgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT0gVHJhbnNsYXRpb25TdGF0dXNzLkVSUk9SKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yOiBJVGxkRXJyb3IgPSB7XHJcbiAgICAgICAgICAgICAgRXJyb3JDb2RlOlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3Vic3RhdHVzID8/IEVycm9yQ29kZS5FX0ZBSUxFRF9JTl9UUkFOU0xBVElPTixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5maWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlLCBlcnJvcik7XHJcbiAgICAgICAgICAgIC8vdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT09IGZpbmlzaGVkU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZENvdW50ICs9IDE7XHJcbiAgICAgICAgICAgIC8vdHJhbnNsYXRpb25GaWxlLm5hbWUgPSByZXNwb25zZS5uYW1lO1xyXG4gICAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUuZG93bmxvYWRBdmFpbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlRmlsZVVwbG9hZEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZERvY1ByZXZpZXcodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSB0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZmlsZUNvbmZpZy5maWxlRG93bmxvYWRUaW1lb3V0cyAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmZpbGVEb3dubG9hZFRpbWVvdXRzW3RyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3NdKSB7XHJcbiAgICAgICAgICAgICAgdGltZW91dCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcuZmlsZURvd25sb2FkVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhdHVzVGltZW91dHMgJiYgdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc10pIHtcclxuICAgICAgICAgICAgICB0aW1lb3V0ID0gdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUcmFuc2xhdGlvblByb2dyZXNzKHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgICAgICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25GaWxlUHJldmlld0xvYWQoZGF0YTogSVNvdXJjZUZpbGVQcmV2aWV3UmVzcG9uc2UsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLmlzRmlsZVByZXZpZXdMb2FkZWQgPSBkYXRhLmlzRmlsZVByZXZpZXdMb2FkZWQ7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSA9IGRhdGEudG1wTmFtZTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VQcmV2aWV3SGFzSHRtbCA9IGRhdGEuc291cmNlUHJldmlld0hhc0h0bWw7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuc291cmNlUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRhdGEuc291cmNlUHJldmlldyk7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVByZXZpZXdQcm9ncmVzcyA9IGRhdGEucGVyY2VudERvbmU7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVkRG9jUHJldmlldyh0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIC8vIHNob3cgcHJldmlldyBmb3Igb3JpZ2luYWwgZXh0ZW5zaW9uIGlmIGV4aXN0cywgaWYgbm90LCB0aGVuIHByZXZpZXcgZm9yIGRvY3gsIGlmIG5vdCB0aGVuIHRyeSB3aXRoIG9yaWdpbmFsIGZpbGVuYW1lLlxyXG4gICAgY29uc3QgZmlsZU5hbWUgPSB0cmFuc2xhdGlvbkZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucy5maW5kKGV4dCA9PiBleHQuZXh0ZW5zaW9uID09PSBGaWxlRXh0ZW5zaW9ucy5ET0NYKT8uZmlsZU5hbWVcclxuICAgICAgPz8gdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWU7XHJcbiAgICBjb25zdCBwYXJhbXM6IElUcmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3UGFyYW1zID0ge1xyXG4gICAgICBmaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIHRyYW5zbGF0aW9uRG9jSWQ6IHRyYW5zbGF0aW9uRmlsZS5pZFxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS50cmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3KHBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IHsgc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBzdHJpbmcsIHN0YXR1czogc3RyaW5nLCBwcmV2aWV3OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0cy51bmhhbmRlbGVkRXJyb3IocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByZXZpZXcpIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHJlc3BvbnNlLnByZXZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBlcnJvcjogYW55KSB7XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsZVByZXZpZXdBbGVydHMoaXNQZGY6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGFsZXJ0UGFyYW1zID0ge1xyXG4gICAgICBhcHBOYW1lOiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcE5hbWUsXHJcbiAgICAgIHByaWNpbmdVcmw6IHRoaXMuY29uZmlnLnN1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmZpbGVDb25maWcuc2hvd1RyYW5zbGF0aW9uTGltaXRzKSB7XHJcbiAgICAgIGlmIChpc1BkZiAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm9jclBhZ2VMaW1pdCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoXCJUTERfVFJBTlNMQVRFLlBERl9QQUdFX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnNob3dXb3JkTGltaXRXYXJuaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydHMud2FybmluZyhcIlRMRF9UUkFOU0xBVEUuRE9DX1dPUkRfQ05UX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25FcnJvcihlcnJvcjogYW55LCB0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIGlmICh0cmFuc2xhdGlvbkZpbGUpIHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvckZvck1lc3NhZ2UgPSBlcnJvci5zdGF0dXMgPT09IDQwNCA/IHsgRXJyb3JDb2RlOiB0aGlzLm5vdEZvdW5kRXJyb3JDb2RlIH0gOiBlcnJvcjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yRm9yTWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGVVcGxvYWRlZChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlSXggPSB0aGlzLmZpbGVzVXBsb2FkaW5nLmluZGV4T2YoZmlsZU5hbWUpO1xyXG4gICAgaWYgKGZpbGVJeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcuc3BsaWNlKGZpbGVJeCwgMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWxlc1VwbG9hZGluZy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5fb25GaWxlc1VwbG9hZGVkLm5leHQobnVsbClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQW55SW1hZ2VPclBkZigpIHtcclxuICAgIGxldCBhbnlJbWFnZSA9IGZhbHNlO1xyXG4gICAgbGV0IGFueVBkZiA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyYW5zbGF0aW9uRmlsZXMubGVuZ3RoICYmICEoYW55UGRmICYmIGFueUltYWdlKTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXNbaV07XHJcbiAgICAgIGlmIChmaWxlLmZpbGVUeXBlID09PSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFKSB7XHJcbiAgICAgICAgYW55SW1hZ2UgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGZpbGUuZmlsZVR5cGUgPT09IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGKSB7XHJcbiAgICAgICAgYW55UGRmID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYW55SW1hZ2VGaWxlTG9hZGVkID0gYW55SW1hZ2U7XHJcbiAgICB0aGlzLmFueVBkZkZpbGVMb2FkZWQgPSBhbnlQZGY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyUGFyYW1zKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5hbnlQZGZGaWxlTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmFueUltYWdlRmlsZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZXMgPSBbXTtcclxuICAgIHRoaXMudHJhbnNsYXRlZENvdW50ID0gMDtcclxuICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcgPSBbXTtcclxuICAgIHRoaXMuX29uQ2xlYXIubmV4dChudWxsKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblRyYW5zbGF0aW9uRmlsZUVycm9yKHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSwgZXJyb3I6IGFueSkge1xyXG4gICAgaWYgKGVycm9yLmVycm9yPy5lcnJvcj8uY29kZSA9PSBFcnJvckNvZGUuRV80MjkwMDEpIHtcclxuICAgICAgdGhpcy5xdW90YVNlcnZpY2UuZ2V0UXVvdGFVc2FnZSgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbXNnID0gdGhpcy5hbGVydHMuZmluZEVycm9yVGl0bGVBbmRMb2NhbGl6YXRpb25LZXkoeyAuLi5lcnJvciwgRXJyb3JDb2RlOiBgRV8ke2Vycm9yLmVycm9yLmVycm9yLmNvZGV9YCB9LCB0aGlzLmVycm9yVHJhbnNsYXRpb25TdWJLZXlzKTtcclxuICAgICAgICBjb25zdCBmaWxlUXVvdGEgPSByZXMudXNhZ2UuZmluZCgocXVvdGEpID0+IFF1b3RhVHlwZS5UUkFOU0xBVElPTl9ET0NVTUVOVFMgPT09IHF1b3RhLnF1b3RhVHlwZSk7XHJcbiAgICAgICAgdGhpcy5hbGVydHMuZXJyb3IobXNnLmRlc2NyaXB0aW9uLCBtc2cudGl0bGUsIHsgcXVvdGFGaWxlTGltaXQ6IGZpbGVRdW90YS5xdW90YUxpbWl0LCBwcmljaW5nVXJsOiB0aGlzLmNvbmZpZy5zdXBzY3JpcHRpb25Db25maWcucHJpY2luZ1VybCB9KTtcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBcclxuXHJcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5hbGVydHMuZmluZEVycm9yVGl0bGVBbmRMb2NhbGl6YXRpb25LZXkoZXJyb3IsIHRoaXMuZXJyb3JUcmFuc2xhdGlvblN1YktleXMpO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxGaWxlTmFtZSA9IHRyYW5zbGF0aW9uRmlsZS5vcmlnaW5hbEZpbGVOYW1lO1xyXG4gICAgY29uc3QgaW5saW5lTWVzc2FnZTogSW5saW5lTWVzc2FnZSA9IHtcclxuICAgICAgdGl0bGU6IG1lc3NhZ2UudGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBtZXNzYWdlLmRlc2NyaXB0aW9uLFxyXG4gICAgICB0eXBlOiBJbmxpbmVNZXNzYWdlVHlwZS5FUlJPUixcclxuICAgICAgbG9jYWxpemF0aW9uUGFyYW1zOiB7IGZpbGVOYW1lOiBvcmlnaW5hbEZpbGVOYW1lLCAuLi50aGlzLmFsZXJ0cy5kZWZhdWx0UGFyYW1zIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlRmlsZVVwbG9hZEFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmFsZXJ0cy5lcnJvcihtZXNzYWdlLmRlc2NyaXB0aW9uLCBtZXNzYWdlLnRpdGxlLCB7IGZpbGVOYW1lOiBvcmlnaW5hbEZpbGVOYW1lIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWVzc2FnZVN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGlubGluZU1lc3NhZ2UpO1xyXG4gICAgaWYgKCF0cmFuc2xhdGlvbkZpbGUubWVzc2FnZXMuc29tZShtc2cgPT4gSlNPTi5zdHJpbmdpZnkobXNnKSA9PT0gbWVzc2FnZVN0cmluZykpIHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLm1lc3NhZ2VzLnB1c2goaW5saW5lTWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -26,9 +26,8 @@ export class TldTranslateTextApiService {
26
26
  srcLang: params.system.detectedLanguage ?? params.system.sourceLanguage,
27
27
  domain: params.system.domain
28
28
  };
29
- const systemLastCollectionsLocalStorageKey = 'systemLastCollections';
30
29
  const selected = this.terminologyService.engines[this.systemManagementService.getActiveSystemObj().id]?.selected;
31
- const latestSystemCollection = JSON.parse(localStorage.getItem(systemLastCollectionsLocalStorageKey))[this.systemManagementService.getActiveSystemObj().id] ?? '';
30
+ const latestSystemCollection = JSON.parse(localStorage.getItem(this.terminologyService.LOCAL_STORAGE_KEY))[this.systemManagementService.getActiveSystemObj().id] ?? '';
32
31
  if (!selected && latestSystemCollection) {
33
32
  requestParams.termCollections = [latestSystemCollection];
34
33
  }
@@ -138,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
138
137
  providedIn: 'root'
139
138
  }]
140
139
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TldTranslateConfigService }, { type: i3.TerminologyService }, { type: i2.TldTranslateSystemManagementService }]; } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS10ZXh0LWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRleHQvc2VydmljZXMvYXBpL3RsZC10cmFuc2xhdGUtdGV4dC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQXNCLE1BQU0sdUJBQXVCLENBQUM7QUFDMUYsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBUzNFLE1BQU0sT0FBTywwQkFBMEI7SUFDUjtJQUNWO0lBQ0E7SUFDQTtJQUhuQixZQUE2QixJQUFnQixFQUMxQixNQUFpQyxFQUNqQyxrQkFBc0MsRUFDdEMsdUJBQTREO1FBSGxELFNBQUksR0FBSixJQUFJLENBQVk7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7UUFDakMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXFDO0lBQzNFLENBQUM7SUFFTCxrQkFBa0IsQ0FBQyxNQUF3QztRQUN6RCxNQUFNLGFBQWEsR0FBOEI7WUFDL0MsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjO1lBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUMs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Q0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzt5QkFDMUQ7d0JBQ0QsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7d0JBQzdCLElBQUksRUFBRSxJQUFJO3dCQUNWLFlBQVk7cUJBQ2IsQ0FBQTtvQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFDekIsTUFBTSxHQUFHLFNBQVMsQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQjt3QkFDRSxJQUFJLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQzt3QkFDL0MsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7d0JBQzdCLElBQUksRUFBRSxJQUFJO3dCQUNWLFlBQVk7cUJBQ2IsQ0FBQyxDQUFBO2lCQUNMO2dCQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7YUFDckI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBaElVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLGNBRnpCLE1BQU07OzRGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhIZWFkZXJzSGVscGVyLCBIdG1sSGVscGVyLCBUZXJtaW5vbG9neVNlcnZpY2UgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXF1ZXN0UGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWNvbW1vbi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLCBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3RsZC1jb21tb24vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBJQ2hlY2tHcmFtbWFyUmVzcG9uc2VWMiB9IGZyb20gJy4uLy4uL21vZGVscy9jaGVjay1ncmFtbWFyLXJlc3BvbnNlLXYyLm1vZGVsJztcclxuaW1wb3J0IHsgSGlnaGxpZ2h0UGFyYW1zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2hpZ2hsaWdodC1wYXJhbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBIaWdobGlnaHRUcmVlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9oaWdobGlnaHQtdHJlZS10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgSUhpZ2hsaWdodFRyZWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaGlnaGxpZ2h0LXRyZWUubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRlUGFyYWdyYXBoUGFyYW1zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyYW5zbGF0ZS1wYXJhZ3JhcGgtcGFyYW1zLm1vZGVsJztcclxuaW1wb3J0IHsgSVRyYW5zbGF0ZVBhcmFncmFwaFJlc3BvbnNlVjIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJhbnNsYXRlLXBhcmFncmFwaC1yZXNwb25zZS12Mi5tb2RlbCc7XHJcbmltcG9ydCB7IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy90cmFuc2xhdGUtcGFyYWdyYXBoLXJlc3BvbnNlLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZVRleHRBcGlTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVybWlub2xvZ3lTZXJ2aWNlOiBUZXJtaW5vbG9neVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlOiBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIHRyYW5zbGF0ZVBhcmFncmFwaChwYXJhbXM6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXF1ZXN0UGFyYW1zKTogT2JzZXJ2YWJsZTxJVHJhbnNsYXRlUGFyYWdyYXBoUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IHJlcXVlc3RQYXJhbXM6IElUcmFuc2xhdGVQYXJhZ3JhcGhQYXJhbXMgPSB7XHJcbiAgICAgIHRleHQ6IFtwYXJhbXMudGV4dF0sXHJcbiAgICAgIHRyZ0xhbmc6IHBhcmFtcy5zeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UsXHJcbiAgICAgIHNyY0xhbmc6IHBhcmFtcy5zeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA/PyBwYXJhbXMuc3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICBkb21haW46IHBhcmFtcy5zeXN0ZW0uZG9tYWluXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHN5c3RlbUxhc3RDb2xsZWN0aW9uc0xvY2FsU3RvcmFnZUtleSA9ICdzeXN0ZW1MYXN0Q29sbGVjdGlvbnMnO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy50ZXJtaW5vbG9neVNlcnZpY2UuZW5naW5lc1t0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmdldEFjdGl2ZVN5c3RlbU9iaigpLmlkXT8uc2VsZWN0ZWQ7XHJcbiAgICBjb25zdCBsYXRlc3RTeXN0ZW1Db2xsZWN0aW9uOiBzdHJpbmcgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHN5c3RlbUxhc3RDb2xsZWN0aW9uc0xvY2FsU3RvcmFnZUtleSkpW3RoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2UuZ2V0QWN0aXZlU3lzdGVtT2JqKCkuaWRdID8/ICcnO1xyXG5cclxuICAgIGlmICghc2VsZWN0ZWQgJiYgbGF0ZXN0U3lzdGVtQ29sbGVjdGlvbikge1xyXG4gICAgICByZXF1ZXN0UGFyYW1zLnRlcm1Db2xsZWN0aW9ucyA9IFtsYXRlc3RTeXN0ZW1Db2xsZWN0aW9uXTtcclxuICAgIH0gXHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIHJlcXVlc3RQYXJhbXMudGVybUNvbGxlY3Rpb25zID0gc2VsZWN0ZWQubXRDb2xsZWN0aW9uPy5pZCA/IFtzZWxlY3RlZC5tdENvbGxlY3Rpb24/LmlkXSA6IFtzZWxlY3RlZC50ZXJtSWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNvdXJjZVRleHQgPSBwYXJhbXMudGV4dDtcclxuICAgIGNvbnN0IHNvdXJjZVRyZWU6IElIaWdobGlnaHRUcmVlID0ge1xyXG4gICAgICB0ZXh0OiBIdG1sSGVscGVyLmVzY2FwZUh0bWxTdHJpbmcoc291cmNlVGV4dCksXHJcbiAgICAgIHBhcmFncmFwaEl4OiBwYXJhbXMucGFyYWdyYXBoSXgsXHJcbiAgICAgIHR5cGU6IEhpZ2hsaWdodFRyZWVUeXBlLlBBUkFHUkFQSCxcclxuICAgICAgcm9vdDogbnVsbCxcclxuICAgICAgb3JpZ2luYWxUZXh0OiBzb3VyY2VUZXh0XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGVhZGVycyA9IEF1dGhIZWFkZXJzSGVscGVyLmdldEFwaVYyQXV0aEhlYWRlcnModGhpcy5jb25maWcuY29yZUNvbmZpZy54QXBpS2V5LCB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcElkKTtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcudGV4dENvbmZpZy5jaGVja1NvdXJjZUdyYW1tYXIgJiYgdGhpcy5jb25maWcudGV4dENvbmZpZy5ncmFtbWFyQ2hlY2tMYW5ndWFnZXMuaW5jbHVkZXMocGFyYW1zLnN5c3RlbS5zb3VyY2VMYW5ndWFnZSkpIHtcclxuICAgICAgdGhpcy5jaGVja0FuZEF0dGFjaEdyYW1tYXJUb1RyZWUocGFyYW1zLnRleHQsIHBhcmFtcy5zeXN0ZW0uc291cmNlTGFuZ3VhZ2UsIHNvdXJjZVRyZWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxJVHJhbnNsYXRlUGFyYWdyYXBoUmVzcG9uc2VWMj4odGhpcy5jb25maWcudGV4dENvbmZpZy50cmFuc2xhdGlvblVybCwgcmVxdWVzdFBhcmFtcywgeyBoZWFkZXJzIH0pLnBpcGUoXHJcbiAgICAgIG1hcCgodHJhbnNsYXRpb25SZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN5c3RlbUlkID0gYCR7cmVxdWVzdFBhcmFtcy5zcmNMYW5nfS0ke3JlcXVlc3RQYXJhbXMudHJnTGFuZ30tJHt0cmFuc2xhdGlvblJlc3BvbnNlLmRvbWFpbn1gO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvblJlc3BvbnNlLnRyYW5zbGF0aW9uc1swXS50cmFuc2xhdGlvbjtcclxuICAgICAgICBjb25zdCB0YXJnZXRUcmVlOiBJSGlnaGxpZ2h0VHJlZSA9IHtcclxuICAgICAgICAgIHRleHQ6IEh0bWxIZWxwZXIuZXNjYXBlSHRtbFN0cmluZyhvcmlnaW5hbFRyYW5zbGF0aW9uKSxcclxuICAgICAgICAgIHBhcmFncmFwaEl4OiBwYXJhbXMucGFyYWdyYXBoSXgsXHJcbiAgICAgICAgICB0eXBlOiBIaWdobGlnaHRUcmVlVHlwZS5QQVJBR1JBUEgsXHJcbiAgICAgICAgICByb290OiBudWxsLFxyXG4gICAgICAgICAgb3JpZ2luYWxUZXh0OiBvcmlnaW5hbFRyYW5zbGF0aW9uXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgc291cmNlVHJlZSxcclxuICAgICAgICAgIHRhcmdldFRyZWUsXHJcbiAgICAgICAgICBzeXN0ZW1JZFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tHcmFtbWFyKHRleHQ6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8SUNoZWNrR3JhbW1hclJlc3BvbnNlVjI+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxJQ2hlY2tHcmFtbWFyUmVzcG9uc2VWMj4odGhpcy5jb25maWcudGV4dENvbmZpZy5ncmFtbWFyQ2hlY2tVcmwsIHsgdGV4dCwgbGFuZ3VhZ2UgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBUaGlzIG1ldGhvZCB3YXMgaW1wbGVtZW50ZWQgaW4gb2xkIEFQSS4gQnV0IGl0IGlzIGxlZnQgaGVyZSwgc2luY2UgdGhlcmUgaXMgcGxhbnMgdG8gaW1wbGVtZW50IGFsb3NvIGluIGN1cnJlbnQgQVBJLlxyXG4gIHVwZGF0ZVRyYW5zbGF0aW9uKG9wdGlvbnM6IHN0cmluZywgc3lzdGVtSUQ6IHN0cmluZywgdGV4dDogc3RyaW5nLCB0cmFuc2xhdGlvbjogc3RyaW5nKSB7XHJcbiAgICBvcHRpb25zOyBzeXN0ZW1JRDsgdGV4dDsgdHJhbnNsYXRpb247XHJcbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXCJtZXRob2Qgbm90IGltcGxlbWVudGVkIVwiKSk7XHJcbiAgfVxyXG5cclxuICAvLyBUaGlzIG1ldGhvZCB3YXMgaW1wbGVtZW50ZWQgaW4gb2xkIEFQSS4gQnV0IGl0IGlzIGxlZnQgaGVyZSwgc2luY2UgdGhlcmUgaXMgcGxhbnMgdG8gaW1wbGVtZW50IGFsb3NvIGluIGN1cnJlbnQgQVBJLlxyXG4gIGRpY3Rpb25hcnlUcmFuc2xhdGlvbih0ZXh0OiBzdHJpbmcsIHNyY0NvZGU6IHN0cmluZywgdHJnQ29kZTogc3RyaW5nKSB7XHJcbiAgICB0ZXh0OyBzcmNDb2RlOyB0cmdDb2RlO1xyXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKFwibWV0aG9kIG5vdCBpbXBsZW1lbnRlZCFcIikpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0FuZEF0dGFjaEdyYW1tYXJUb1RyZWUodGV4dDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nLCB0cmVlOiBJSGlnaGxpZ2h0VHJlZSkge1xyXG4gICAgdGhpcy5jaGVja0dyYW1tYXIodGV4dCwgbGFuZ3VhZ2UpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZ3JhbW1hckNoZWNrUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZ3JhbW1hckNoZWNrUmVzcG9uc2U/LmNvcnJlY3Rpb25zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0cmVlLmNoaWxkcmVuID0gW107XHJcbiAgICAgICAgICBsZXQgbGFzdEl4ID0gMDtcclxuICAgICAgICAgIGdyYW1tYXJDaGVja1Jlc3BvbnNlLmNvcnJlY3Rpb25zLmZvckVhY2goKGNvcnJlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgd29yZFN0YXJ0SXggPSBjb3JyZWN0aW9uLnNwYW4uc3RhcnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHdvcmRFbmRJeCA9IGNvcnJlY3Rpb24uc3Bhbi5lbmQ7XHJcbiAgICAgICAgICAgIGlmIChsYXN0SXggPCB3b3JkU3RhcnRJeCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGV4dCA9IHRleHQuc2xpY2UobGFzdEl4LCB3b3JkU3RhcnRJeCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZXNjYXBlZCA9IEh0bWxIZWxwZXIuZXNjYXBlSHRtbFN0cmluZyhvcmlnaW5hbFRleHQpO1xyXG4gICAgICAgICAgICAgIHRyZWUuY2hpbGRyZW4ucHVzaCh7IHRleHQ6IGVzY2FwZWQsIG9yaWdpbmFsVGV4dCwgdHlwZTogSGlnaGxpZ2h0VHJlZVR5cGUuT1RIRVIsIHJvb3Q6IHRyZWUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGV4dCA9IHRleHQuc2xpY2Uod29yZFN0YXJ0SXgsIHdvcmRFbmRJeCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkOiBJSGlnaGxpZ2h0VHJlZSA9IHtcclxuICAgICAgICAgICAgICB0ZXh0OiBIdG1sSGVscGVyLmVzY2FwZUh0bWxTdHJpbmcodGV4dC5zbGljZSh3b3JkU3RhcnRJeCwgd29yZEVuZEl4KSksXHJcbiAgICAgICAgICAgICAgY2xhc3M6IGAke0hpZ2hsaWdodFBhcmFtcy5pbnZhbGlkUGhyYXNlQ2xhc3N9YCxcclxuICAgICAgICAgICAgICBncmFtbWFyTWV0YToge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRJeDogd29yZFN0YXJ0SXgsXHJcbiAgICAgICAgICAgICAgICBlbmRJeDogd29yZEVuZEl4LFxyXG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzOiBjb3JyZWN0aW9uLnJlcGxhY2VtZW50cy5tYXAoZWwgPT4gZWwudmFsdWUpXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0eXBlOiBIaWdobGlnaHRUcmVlVHlwZS5PVEhFUixcclxuICAgICAgICAgICAgICByb290OiB0cmVlLFxyXG4gICAgICAgICAgICAgIG9yaWdpbmFsVGV4dFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRyZWUuY2hpbGRyZW4ucHVzaChjaGlsZClcclxuICAgICAgICAgICAgbGFzdEl4ID0gd29yZEVuZEl4O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAobGFzdEl4ICE9IHRleHQubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbFRleHQgPSB0ZXh0LnNsaWNlKGxhc3RJeCwgdGV4dC5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgdHJlZS5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRleHQ6IEh0bWxIZWxwZXIuZXNjYXBlSHRtbFN0cmluZyhvcmlnaW5hbFRleHQpLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogSGlnaGxpZ2h0VHJlZVR5cGUuT1RIRVIsXHJcbiAgICAgICAgICAgICAgICByb290OiB0cmVlLFxyXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxUZXh0XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyZWUuY2hpbGRyZW4ucHVzaCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS10ZXh0LWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRleHQvc2VydmljZXMvYXBpL3RsZC10cmFuc2xhdGUtdGV4dC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQXNCLE1BQU0sdUJBQXVCLENBQUM7QUFDMUYsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBUzNFLE1BQU0sT0FBTywwQkFBMEI7SUFDUjtJQUNWO0lBQ0E7SUFDQTtJQUhuQixZQUE2QixJQUFnQixFQUMxQixNQUFpQyxFQUNqQyxrQkFBc0MsRUFDdEMsdUJBQTREO1FBSGxELFNBQUksR0FBSixJQUFJLENBQVk7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7UUFDakMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXFDO0lBQzNFLENBQUM7SUFFTCxrQkFBa0IsQ0FBQyxNQUF3QztRQUN6RCxNQUFNLGFBQWEsR0FBOEI7WUFDL0MsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjO1lBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUMs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QyxFQUFFLENBQUMsS0FBSyxDQUFDO3lCQUMxRDt3QkFDRCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsS0FBSzt3QkFDN0IsSUFBSSxFQUFFLElBQUk7d0JBQ1YsWUFBWTtxQkFDYixDQUFBO29CQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUN6QixNQUFNLEdBQUcsU0FBUyxDQUFDO2dCQUNyQixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCO3dCQUNFLElBQUksRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO3dCQUMvQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsS0FBSzt3QkFDN0IsSUFBSSxFQUFFLElBQUk7d0JBQ1YsWUFBWTtxQkFDYixDQUFDLENBQUE7aUJBQ0w7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTthQUNyQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0E5SFUsMEJBQTBCOzRHQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXV0aEhlYWRlcnNIZWxwZXIsIEh0bWxIZWxwZXIsIFRlcm1pbm9sb2d5U2VydmljZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSVRyYW5zbGF0ZVBhcmFncmFwaFJlcXVlc3RQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsIFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElDaGVja0dyYW1tYXJSZXNwb25zZVYyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoZWNrLWdyYW1tYXItcmVzcG9uc2UtdjIubW9kZWwnO1xyXG5pbXBvcnQgeyBIaWdobGlnaHRQYXJhbXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvaGlnaGxpZ2h0LXBhcmFtcy5tb2RlbCc7XHJcbmltcG9ydCB7IEhpZ2hsaWdodFRyZWVUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2hpZ2hsaWdodC10cmVlLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBJSGlnaGxpZ2h0VHJlZSB9IGZyb20gJy4uLy4uL21vZGVscy9oaWdobGlnaHQtdHJlZS5tb2RlbCc7XHJcbmltcG9ydCB7IElUcmFuc2xhdGVQYXJhZ3JhcGhQYXJhbXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJhbnNsYXRlLXBhcmFncmFwaC1wYXJhbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRlUGFyYWdyYXBoUmVzcG9uc2VWMiB9IGZyb20gJy4uLy4uL21vZGVscy90cmFuc2xhdGUtcGFyYWdyYXBoLXJlc3BvbnNlLXYyLm1vZGVsJztcclxuaW1wb3J0IHsgSVRyYW5zbGF0ZVBhcmFncmFwaFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyYW5zbGF0ZS1wYXJhZ3JhcGgtcmVzcG9uc2UubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVHJhbnNsYXRlVGV4dEFwaVNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXJtaW5vbG9neVNlcnZpY2U6IFRlcm1pbm9sb2d5U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtTWFuYWdlbWVudFNlcnZpY2U6IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgdHJhbnNsYXRlUGFyYWdyYXBoKHBhcmFtczogSVRyYW5zbGF0ZVBhcmFncmFwaFJlcXVlc3RQYXJhbXMpOiBPYnNlcnZhYmxlPElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgcmVxdWVzdFBhcmFtczogSVRyYW5zbGF0ZVBhcmFncmFwaFBhcmFtcyA9IHtcclxuICAgICAgdGV4dDogW3BhcmFtcy50ZXh0XSxcclxuICAgICAgdHJnTGFuZzogcGFyYW1zLnN5c3RlbS50YXJnZXRMYW5ndWFnZSxcclxuICAgICAgc3JjTGFuZzogcGFyYW1zLnN5c3RlbS5kZXRlY3RlZExhbmd1YWdlID8/IHBhcmFtcy5zeXN0ZW0uc291cmNlTGFuZ3VhZ2UsXHJcbiAgICAgIGRvbWFpbjogcGFyYW1zLnN5c3RlbS5kb21haW5cclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnRlcm1pbm9sb2d5U2VydmljZS5lbmdpbmVzW3RoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2UuZ2V0QWN0aXZlU3lzdGVtT2JqKCkuaWRdPy5zZWxlY3RlZDtcclxuICAgIGNvbnN0IGxhdGVzdFN5c3RlbUNvbGxlY3Rpb246IHN0cmluZyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy50ZXJtaW5vbG9neVNlcnZpY2UuTE9DQUxfU1RPUkFHRV9LRVkpKVt0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmdldEFjdGl2ZVN5c3RlbU9iaigpLmlkXSA/PyAnJztcclxuXHJcbiAgICBpZiAoIXNlbGVjdGVkICYmIGxhdGVzdFN5c3RlbUNvbGxlY3Rpb24pIHtcclxuICAgICAgcmVxdWVzdFBhcmFtcy50ZXJtQ29sbGVjdGlvbnMgPSBbbGF0ZXN0U3lzdGVtQ29sbGVjdGlvbl07XHJcbiAgICB9IFxyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICByZXF1ZXN0UGFyYW1zLnRlcm1Db2xsZWN0aW9ucyA9IHNlbGVjdGVkLm10Q29sbGVjdGlvbj8uaWQgPyBbc2VsZWN0ZWQubXRDb2xsZWN0aW9uPy5pZF0gOiBbc2VsZWN0ZWQudGVybUlkXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzb3VyY2VUZXh0ID0gcGFyYW1zLnRleHQ7XHJcbiAgICBjb25zdCBzb3VyY2VUcmVlOiBJSGlnaGxpZ2h0VHJlZSA9IHtcclxuICAgICAgdGV4dDogSHRtbEhlbHBlci5lc2NhcGVIdG1sU3RyaW5nKHNvdXJjZVRleHQpLFxyXG4gICAgICBwYXJhZ3JhcGhJeDogcGFyYW1zLnBhcmFncmFwaEl4LFxyXG4gICAgICB0eXBlOiBIaWdobGlnaHRUcmVlVHlwZS5QQVJBR1JBUEgsXHJcbiAgICAgIHJvb3Q6IG51bGwsXHJcbiAgICAgIG9yaWdpbmFsVGV4dDogc291cmNlVGV4dFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBBdXRoSGVhZGVyc0hlbHBlci5nZXRBcGlWMkF1dGhIZWFkZXJzKHRoaXMuY29uZmlnLmNvcmVDb25maWcueEFwaUtleSwgdGhpcy5jb25maWcuY29yZUNvbmZpZy5hcHBJZCk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnRleHRDb25maWcuY2hlY2tTb3VyY2VHcmFtbWFyICYmIHRoaXMuY29uZmlnLnRleHRDb25maWcuZ3JhbW1hckNoZWNrTGFuZ3VhZ2VzLmluY2x1ZGVzKHBhcmFtcy5zeXN0ZW0uc291cmNlTGFuZ3VhZ2UpKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tBbmRBdHRhY2hHcmFtbWFyVG9UcmVlKHBhcmFtcy50ZXh0LCBwYXJhbXMuc3lzdGVtLnNvdXJjZUxhbmd1YWdlLCBzb3VyY2VUcmVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SVRyYW5zbGF0ZVBhcmFncmFwaFJlc3BvbnNlVjI+KHRoaXMuY29uZmlnLnRleHRDb25maWcudHJhbnNsYXRpb25VcmwsIHJlcXVlc3RQYXJhbXMsIHsgaGVhZGVycyB9KS5waXBlKFxyXG4gICAgICBtYXAoKHRyYW5zbGF0aW9uUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zdCBzeXN0ZW1JZCA9IGAke3JlcXVlc3RQYXJhbXMuc3JjTGFuZ30tJHtyZXF1ZXN0UGFyYW1zLnRyZ0xhbmd9LSR7dHJhbnNsYXRpb25SZXNwb25zZS5kb21haW59YDtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25SZXNwb25zZS50cmFuc2xhdGlvbnNbMF0udHJhbnNsYXRpb247XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0VHJlZTogSUhpZ2hsaWdodFRyZWUgPSB7XHJcbiAgICAgICAgICB0ZXh0OiBIdG1sSGVscGVyLmVzY2FwZUh0bWxTdHJpbmcob3JpZ2luYWxUcmFuc2xhdGlvbiksXHJcbiAgICAgICAgICBwYXJhZ3JhcGhJeDogcGFyYW1zLnBhcmFncmFwaEl4LFxyXG4gICAgICAgICAgdHlwZTogSGlnaGxpZ2h0VHJlZVR5cGUuUEFSQUdSQVBILFxyXG4gICAgICAgICAgcm9vdDogbnVsbCxcclxuICAgICAgICAgIG9yaWdpbmFsVGV4dDogb3JpZ2luYWxUcmFuc2xhdGlvblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHNvdXJjZVRyZWUsXHJcbiAgICAgICAgICB0YXJnZXRUcmVlLFxyXG4gICAgICAgICAgc3lzdGVtSWRcclxuICAgICAgICB9O1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNoZWNrR3JhbW1hcih0ZXh0OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElDaGVja0dyYW1tYXJSZXNwb25zZVYyPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SUNoZWNrR3JhbW1hclJlc3BvbnNlVjI+KHRoaXMuY29uZmlnLnRleHRDb25maWcuZ3JhbW1hckNoZWNrVXJsLCB7IHRleHQsIGxhbmd1YWdlIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gVGhpcyBtZXRob2Qgd2FzIGltcGxlbWVudGVkIGluIG9sZCBBUEkuIEJ1dCBpdCBpcyBsZWZ0IGhlcmUsIHNpbmNlIHRoZXJlIGlzIHBsYW5zIHRvIGltcGxlbWVudCBhbG9zbyBpbiBjdXJyZW50IEFQSS5cclxuICB1cGRhdGVUcmFuc2xhdGlvbihvcHRpb25zOiBzdHJpbmcsIHN5c3RlbUlEOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgdHJhbnNsYXRpb246IHN0cmluZykge1xyXG4gICAgb3B0aW9uczsgc3lzdGVtSUQ7IHRleHQ7IHRyYW5zbGF0aW9uO1xyXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKFwibWV0aG9kIG5vdCBpbXBsZW1lbnRlZCFcIikpO1xyXG4gIH1cclxuXHJcbiAgLy8gVGhpcyBtZXRob2Qgd2FzIGltcGxlbWVudGVkIGluIG9sZCBBUEkuIEJ1dCBpdCBpcyBsZWZ0IGhlcmUsIHNpbmNlIHRoZXJlIGlzIHBsYW5zIHRvIGltcGxlbWVudCBhbG9zbyBpbiBjdXJyZW50IEFQSS5cclxuICBkaWN0aW9uYXJ5VHJhbnNsYXRpb24odGV4dDogc3RyaW5nLCBzcmNDb2RlOiBzdHJpbmcsIHRyZ0NvZGU6IHN0cmluZykge1xyXG4gICAgdGV4dDsgc3JjQ29kZTsgdHJnQ29kZTtcclxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIm1ldGhvZCBub3QgaW1wbGVtZW50ZWQhXCIpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tBbmRBdHRhY2hHcmFtbWFyVG9UcmVlKHRleHQ6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZywgdHJlZTogSUhpZ2hsaWdodFRyZWUpIHtcclxuICAgIHRoaXMuY2hlY2tHcmFtbWFyKHRleHQsIGxhbmd1YWdlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbClcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGdyYW1tYXJDaGVja1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGdyYW1tYXJDaGVja1Jlc3BvbnNlPy5jb3JyZWN0aW9ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdHJlZS5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgICAgbGV0IGxhc3RJeCA9IDA7XHJcbiAgICAgICAgICBncmFtbWFyQ2hlY2tSZXNwb25zZS5jb3JyZWN0aW9ucy5mb3JFYWNoKChjb3JyZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdvcmRTdGFydEl4ID0gY29ycmVjdGlvbi5zcGFuLnN0YXJ0O1xyXG4gICAgICAgICAgICBjb25zdCB3b3JkRW5kSXggPSBjb3JyZWN0aW9uLnNwYW4uZW5kO1xyXG4gICAgICAgICAgICBpZiAobGFzdEl4IDwgd29yZFN0YXJ0SXgpIHtcclxuICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFRleHQgPSB0ZXh0LnNsaWNlKGxhc3RJeCwgd29yZFN0YXJ0SXgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGVzY2FwZWQgPSBIdG1sSGVscGVyLmVzY2FwZUh0bWxTdHJpbmcob3JpZ2luYWxUZXh0KTtcclxuICAgICAgICAgICAgICB0cmVlLmNoaWxkcmVuLnB1c2goeyB0ZXh0OiBlc2NhcGVkLCBvcmlnaW5hbFRleHQsIHR5cGU6IEhpZ2hsaWdodFRyZWVUeXBlLk9USEVSLCByb290OiB0cmVlIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbFRleHQgPSB0ZXh0LnNsaWNlKHdvcmRTdGFydEl4LCB3b3JkRW5kSXgpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZDogSUhpZ2hsaWdodFRyZWUgPSB7XHJcbiAgICAgICAgICAgICAgdGV4dDogSHRtbEhlbHBlci5lc2NhcGVIdG1sU3RyaW5nKHRleHQuc2xpY2Uod29yZFN0YXJ0SXgsIHdvcmRFbmRJeCkpLFxyXG4gICAgICAgICAgICAgIGNsYXNzOiBgJHtIaWdobGlnaHRQYXJhbXMuaW52YWxpZFBocmFzZUNsYXNzfWAsXHJcbiAgICAgICAgICAgICAgZ3JhbW1hck1ldGE6IHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0SXg6IHdvcmRTdGFydEl4LFxyXG4gICAgICAgICAgICAgICAgZW5kSXg6IHdvcmRFbmRJeCxcclxuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50czogY29ycmVjdGlvbi5yZXBsYWNlbWVudHMubWFwKGVsID0+IGVsLnZhbHVlKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgdHlwZTogSGlnaGxpZ2h0VHJlZVR5cGUuT1RIRVIsXHJcbiAgICAgICAgICAgICAgcm9vdDogdHJlZSxcclxuICAgICAgICAgICAgICBvcmlnaW5hbFRleHRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0cmVlLmNoaWxkcmVuLnB1c2goY2hpbGQpXHJcbiAgICAgICAgICAgIGxhc3RJeCA9IHdvcmRFbmRJeDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGxhc3RJeCAhPSB0ZXh0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxUZXh0ID0gdGV4dC5zbGljZShsYXN0SXgsIHRleHQubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAgIHRyZWUuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBIdG1sSGVscGVyLmVzY2FwZUh0bWxTdHJpbmcob3JpZ2luYWxUZXh0KSxcclxuICAgICAgICAgICAgICAgIHR5cGU6IEhpZ2hsaWdodFRyZWVUeXBlLk9USEVSLFxyXG4gICAgICAgICAgICAgICAgcm9vdDogdHJlZSxcclxuICAgICAgICAgICAgICAgIG9yaWdpbmFsVGV4dFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cmVlLmNoaWxkcmVuLnB1c2goKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Optional, Inject, Pipe, Component, EventEmitter, ViewChild, Input, Output, NgModule, HostListener } from '@angular/core';
3
3
  import * as i5 from '@tilde-nlp/ngx-common';
4
- import { LAST_USED_SYSTEM_LOCAL_STORAGE_KEY, SortHelper, OpenCloseButtonComponent, CloseButtonModule, SortTranslationsModule, OpenCloseButtonModule, LanguageTranslateModule, InlineMessageType, InlineMessageIconPosition, InlineMessageModule, AuthHeadersHelper, ConversionHelper, FileExtensionHelper, FileExtensions, NotificationMessageType, FileUploadModule, HtmlHelper, ExtensionDialogModule, FilterWithHighlightPipe, FilterWithHighlightModule, ClickOutsideModule, TerminologyModule, LLMModule, NotificationMessageModule, CompanyProductModule, StatusDisplayModule, ALERT_CONFIGURATION_TOKEN, QUOTA_SERVICE_CONFIGURATION_TOKEN, LLM_CONFIGURATION_TOKEN } from '@tilde-nlp/ngx-common';
4
+ import { LAST_USED_SYSTEM_LOCAL_STORAGE_KEY, SortHelper, OpenCloseButtonComponent, CloseButtonModule, SortTranslationsModule, OpenCloseButtonModule, LanguageTranslateModule, InlineMessageType, InlineMessageIconPosition, InlineMessageModule, AuthHeadersHelper, ConversionHelper, FileExtensionHelper, FileExtensions, QuotaType, NotificationMessageType, FileUploadModule, HtmlHelper, ExtensionDialogModule, FilterWithHighlightPipe, FilterWithHighlightModule, ClickOutsideModule, TerminologyModule, LLMModule, NotificationMessageModule, CompanyProductModule, StatusDisplayModule, ALERT_CONFIGURATION_TOKEN, QUOTA_SERVICE_CONFIGURATION_TOKEN, LLM_CONFIGURATION_TOKEN } from '@tilde-nlp/ngx-common';
5
5
  import { ReplaySubject, Subject, BehaviorSubject, of, timer, throwError } from 'rxjs';
6
6
  import * as i1 from '@ngx-translate/core';
7
7
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
@@ -5764,7 +5764,8 @@ class TldTranslateFileService {
5764
5764
  if (error.error?.error?.code == ErrorCode.E_429001) {
5765
5765
  this.quotaService.getQuotaUsage().subscribe((res) => {
5766
5766
  const msg = this.alerts.findErrorTitleAndLocalizationKey({ ...error, ErrorCode: `E_${error.error.error.code}` }, this.errorTranslationSubKeys);
5767
- this.alerts.error(msg.description, msg.title, { quotaFileLimit: res.usage[0].quotaLimit, pricingUrl: this.config.supscriptionConfig.pricingUrl });
5767
+ const fileQuota = res.usage.find((quota) => QuotaType.TRANSLATION_DOCUMENTS === quota.quotaType);
5768
+ this.alerts.error(msg.description, msg.title, { quotaFileLimit: fileQuota.quotaLimit, pricingUrl: this.config.supscriptionConfig.pricingUrl });
5768
5769
  });
5769
5770
  return;
5770
5771
  }
@@ -6894,9 +6895,8 @@ class TldTranslateTextApiService {
6894
6895
  srcLang: params.system.detectedLanguage ?? params.system.sourceLanguage,
6895
6896
  domain: params.system.domain
6896
6897
  };
6897
- const systemLastCollectionsLocalStorageKey = 'systemLastCollections';
6898
6898
  const selected = this.terminologyService.engines[this.systemManagementService.getActiveSystemObj().id]?.selected;
6899
- const latestSystemCollection = JSON.parse(localStorage.getItem(systemLastCollectionsLocalStorageKey))[this.systemManagementService.getActiveSystemObj().id] ?? '';
6899
+ const latestSystemCollection = JSON.parse(localStorage.getItem(this.terminologyService.LOCAL_STORAGE_KEY))[this.systemManagementService.getActiveSystemObj().id] ?? '';
6900
6900
  if (!selected && latestSystemCollection) {
6901
6901
  requestParams.termCollections = [latestSystemCollection];
6902
6902
  }