ets-fe-ng-sdk 18.0.19 → 18.0.21

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.
@@ -15,7 +15,7 @@ export class TranslationService {
15
15
  this.baseURL = environment.apiBaseUrl + '/rest/translation/';
16
16
  this.translationRequestMatrix = [];
17
17
  this.translationResponseMatrix = new BehaviorSubject({});
18
- this.seperator = '~~~';
18
+ this.separator = '~~~';
19
19
  this.name = 'glossary';
20
20
  this.uS = inject(UtilityService);
21
21
  this.pipeTransformer = (text) => of(text);
@@ -83,7 +83,7 @@ export class TranslationService {
83
83
  lastValueFrom(this.apiService.postString(this.baseURL +
84
84
  (this.transGlossary?.code
85
85
  ? `language?glossaryCode=${this.transGlossary?.code}&sourceLang=${this.sourceLanguage}&targetLang=${this.targetLanguage}`
86
- : `language/${this.targetLanguage}`), body.map((x) => this.tagger(x.id, x.text)).join(this.seperator)))
86
+ : `language/${this.targetLanguage}`), body.map((x) => this.tagger(x.id, x.text)).join(this.separator)))
87
87
  .then((r) => {
88
88
  this.translationResponseMatrix.next(this.detagger(r));
89
89
  })
@@ -117,7 +117,7 @@ export class TranslationService {
117
117
  }));
118
118
  }
119
119
  detagger(str) {
120
- const items = str?.split(this.seperator);
120
+ const items = str?.split(this.separator);
121
121
  const resobj = {};
122
122
  for (const str of items) {
123
123
  resobj[str?.split('"')[1]] = str?.split('>')[1]?.split('</div')[0];
@@ -130,7 +130,7 @@ export class TranslationService {
130
130
  return this.apiService
131
131
  .postString(this.baseURL + `language/${environment.targetLanguage}`, Object.keys(body)
132
132
  .map((id) => this.tagger(id, body[id]))
133
- .join(this.seperator))
133
+ .join(this.separator))
134
134
  .pipe(map((r) => {
135
135
  return this.detagger(r)[id];
136
136
  }));
@@ -144,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
144
144
  providedIn: 'root',
145
145
  }]
146
146
  }], ctorParameters: () => [{ type: i1.ApiService }, { type: i2.ETSStorageService }, { type: i3.LocalCacheService }] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFnQixRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUtuRCxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCLFlBQ1MsVUFBc0IsRUFDdEIsUUFBMkIsRUFDM0IsT0FBMEI7UUFGMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQWR6QixZQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUMvQyw2QkFBd0IsR0FBbUMsRUFBRSxDQUFDO1FBQ3ZFLDhCQUF5QixHQUNqQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBRyxVQUFVLENBQUM7UUFJVCxPQUFFLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBUXJDLG9CQUFlLEdBQXVFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDN0YsRUFBRSxDQUFDLElBQWMsQ0FBQyxDQUFDO1FBeUZyQixr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bmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGludGVydmFsLCBsYXN0VmFsdWVGcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVMYW5ndWFnZSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxDYWNoZVNlcnZpY2UgfSBmcm9tICcuL2NhY2hlL2xvY2FsLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRVRTU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbGl0eS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uU2VydmljZTxUcmFuc2xhdGlvbkdsb3NzYXJ5UmVzcG9uc2UgPSBhbnk+IHtcbiAgcHJvdGVjdGVkIGJhc2VVUkwgPSBlbnZpcm9ubWVudC5hcGlCYXNlVXJsICsgJy9yZXN0L3RyYW5zbGF0aW9uLyc7XG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvblJlcXVlc3RNYXRyaXg6IHsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1bXSA9IFtdO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeDogQmVoYXZpb3JTdWJqZWN0PHsgW3g6IG51bWJlcl06IHN0cmluZyB9PiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIHJlYWRvbmx5IHNlcGVyYXRvciA9ICd+fn4nO1xuICBuYW1lID0gJ2dsb3NzYXJ5JztcbiAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZTtcbiAgdGFyZ2V0TGFuZ3VhZ2U6IEVMYW5ndWFnZTtcbiAgdHJhbnNHbG9zc2FyeTtcbiAgcmVhZG9ubHkgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaW50ZXJ2YWxTdWI6IFN1YnNjcmlwdGlvbjtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHVibGljIHN0b3JhZ2VTOiBFVFNTdG9yYWdlU2VydmljZSxcbiAgICBwdWJsaWMgbENhY2hlUzogTG9jYWxDYWNoZVNlcnZpY2UsXG4gICkgeyBcbiAgfVxuICBwaXBlVHJhbnNmb3JtZXI6ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIsIHRyYW5zbGF0ZT86IGJvb2xlYW4pID0+IE9ic2VydmFibGU8c3RyaW5nPiA9ICh0ZXh0KSA9PlxuICAgIG9mKHRleHQgYXMgc3RyaW5nKTtcbiAgYXN5bmMgc3RhcnRJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbFN1YiAmJiAhdGhpcy5pbnRlcnZhbFN1Yi5jbG9zZWQpIHJldHVybjtcbiAgICBjb25zdCB0cmFuc0dsb3NzYXJ5ID0gdGhpcy50cmFuc0dsb3NzYXJ5IHx8IChhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0R2xvc3NhcnkoKSkpO1xuICAgIHRoaXMuaW50ZXJ2YWxTdWIgPSBpbnRlcnZhbCgxMDAwKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5sZW5ndGggPiAwKSxcblxuICAgICAgICB0YXAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5zcGxpY2UoMCk7XG5cbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICBsYXN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLnBvc3RTdHJpbmcoXG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArXG4gICAgICAgICAgICAgICAgKHRoaXMudHJhbnNHbG9zc2FyeT8uY29kZVxuICAgICAgICAgICAgICAgICAgPyBgbGFuZ3VhZ2U/Z2xvc3NhcnlDb2RlPSR7dGhpcy50cmFuc0dsb3NzYXJ5Py5jb2RlfSZzb3VyY2VMYW5nPSR7dGhpcy5zb3VyY2VMYW5ndWFnZX0mdGFyZ2V0TGFuZz0ke3RoaXMudGFyZ2V0TGFuZ3VhZ2V9YFxuICAgICAgICAgICAgICAgICAgOiBgbGFuZ3VhZ2UvJHt0aGlzLnRhcmdldExhbmd1YWdlfWApLFxuICAgICAgICAgICAgICBib2R5Lm1hcCgoeCkgPT4gdGhpcy50YWdnZXIoeC5pZCwgeC50ZXh0KSkuam9pbih0aGlzLnNlcGVyYXRvciksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeC5uZXh0KHRoaXMuZGV0YWdnZXIocikpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG4gIHN0b3BJbnRlcnZhbCgpIHtcbiAgICB0aGlzLmludGVydmFsU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIHByb3RlY3RlZCB0YWdnZXIoaWQ6IHN0cmluZywgc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYDxkaXYgaWQ9XCIke2lkfVwiPiR7c3RyfTwvZGl2PmA7XG4gIH1cbiAgZ2V0R2xvc3NhcnkoXG4gICAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZSA9IGVudmlyb25tZW50LnNvdXJjZUxhbmd1YWdlLFxuICAgIHRhcmdldExhbmd1YWdlOiBFTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZSxcbiAgKSB7XG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IHNvdXJjZUxhbmd1YWdlIHx8IHRoaXMuc291cmNlTGFuZ3VhZ2U7XG4gICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHRhcmdldExhbmd1YWdlIHx8IHRoaXMudGFyZ2V0TGFuZ3VhZ2U7XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldDxUcmFuc2xhdGlvbkdsb3NzYXJ5UmVzcG9uc2VbXT4oYCR7dGhpcy5iYXNlVVJMfWdsb3NzYXJ5L2ApLnBpcGUoXG4gICAgICBtYXAoKHI6IGFueVtdKSA9PiB7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICBjb25zdCBnbG9zc2FyeSA9IHI/LmZpbmQoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnNvdXJjZUxhbmcgPT0gdGhpcy5zb3VyY2VMYW5ndWFnZSAmJlxuICAgICAgICAgICAgeC50YXJnZXRMYW5nID09IHRoaXMudGFyZ2V0TGFuZ3VhZ2UgJiZcbiAgICAgICAgICAgIHgubmFtZSA9PSB0aGlzLm5hbWUsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBnbG9zc2FyeSA/IGdsb3NzYXJ5IDogbnVsbDtcbiAgICAgIH0pLFxuICAgICAgbWFwKChnbG9zc2FyeSkgPT4ge1xuICAgICAgICBpZiAoIWdsb3NzYXJ5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgdGhpcy50cmFuc0dsb3NzYXJ5ID0gZW52aXJvbm1lbnQudHJhbnNHbG9zc2FyeSA9IGdsb3NzYXJ5O1xuICAgICAgICB0aGlzLnN0b3JhZ2VTLnNhdmVJdGVtKGVudmlyb25tZW50LnRyYW5zR2xvc3NhcnlLZXksIHRoaXMudHJhbnNHbG9zc2FyeSk7XG4gICAgICAgIHJldHVybiBnbG9zc2FyeTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbiAgZGV0YWdnZXIoc3RyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtcyA9IHN0cj8uc3BsaXQodGhpcy5zZXBlcmF0b3IpO1xuICAgIGNvbnN0IHJlc29iaiA9IHt9O1xuICAgIGZvciAoY29uc3Qgc3RyIG9mIGl0ZW1zKSB7XG4gICAgICByZXNvYmpbc3RyPy5zcGxpdCgnXCInKVsxXV0gPSBzdHI/LnNwbGl0KCc+JylbMV0/LnNwbGl0KCc8L2RpdicpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2JqO1xuICB9XG5cbiAgdHJuYXNsYXRlT2xkKHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IGlkID0gMzIzMjMyMztcbiAgICBjb25zdCBib2R5ID0geyBbaWRdOiB0ZXh0IH07XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RTdHJpbmcoXG4gICAgICAgIHRoaXMuYmFzZVVSTCArIGBsYW5ndWFnZS8ke2Vudmlyb25tZW50LnRhcmdldExhbmd1YWdlfWAsXG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpXG4gICAgICAgICAgLm1hcCgoaWQpID0+IHRoaXMudGFnZ2VyKGlkLCBib2R5W2lkXSkpXG4gICAgICAgICAgLmpvaW4odGhpcy5zZXBlcmF0b3IpLFxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRldGFnZ2VyKHIpW2lkXSBhcyBzdHJpbmc7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZUhUTUwgPSAoXG4gICAgSFRNTFN0cmluZzogc3RyaW5nLFxuICAgIHNvdXJjZUxhbmd1YWdlID0gdGhpcy5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZSA9IHRoaXMudGFyZ2V0TGFuZ3VhZ2UsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKHJlcykgPT4ge1xuICAgICAgaWYgKGRlYnVnKSBkZWJ1Z2dlcjtcblxuICAgICAgY29uc3QgdGV4dCA9IEhUTUxTdHJpbmc/LnRyaW0oKSxcbiAgICAgICAgcm91dGUgPSB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2VgO1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSByb3V0ZSArICdfJyArIHRhcmdldExhbmd1YWdlICsgJ18nICsgdGV4dDtcbiAgICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXMubmV4dChIVE1MU3RyaW5nKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubENhY2hlUy5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICAgIHJlcy5uZXh0KHRoaXMubENhY2hlUy5nZXRJdGVtPHN0cmluZz4oY2FjaGVLZXkpKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25SZXF1ZXN0TWF0cml4LnB1c2goeyBpZCwgdGV4dCB9KTtcbiAgICAgICAgY29uc3Qgc3ViOiBTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0aW9uUmVzcG9uc2VNYXRyaXguc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocikgPT4ge1xuICAgICAgICAgICAgaWYgKGRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zVmFsID0gcltpZC50b1N0cmluZygpXTtcbiAgICAgICAgICAgIGlmICh0cmFuc1ZhbCkge1xuICAgICAgICAgICAgICByZXMubmV4dCh0cmFuc1ZhbCk7XG4gICAgICAgICAgICAgIHRoaXMubENhY2hlUy5zZXRJdGVtKGNhY2hlS2V5LCB0cmFuc1ZhbCk7XG4gICAgICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgICAgcmVzLmVycm9yKGUpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICBwbGFpblRyYW5zbGF0ZSA9IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgc291cmNlTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZSA9IGVudmlyb25tZW50LnRhcmdldExhbmd1YWdlLFxuICApID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgdGV4dCA9IHRleHQ/LnRyaW0oKTtcbiAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5iYXNlVVJMICsgYGxhbmd1YWdlYDtcblxuICAgICAgaWYgKCF0ZXh0KSByZXNvbHZlKG51bGwpO1xuICAgICAgZWxzZSBpZiAodGhpcy5sQ2FjaGVTLmhhcyhyb3V0ZSArICdfJyArIHRleHQpKVxuICAgICAgICByZXNvbHZlKHRoaXMubENhY2hlUy5nZXRJdGVtPHN0cmluZz4ocm91dGUgKyAnXycgKyB0ZXh0KSk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAgICAgICAucG9zdFN0cmluZyhyb3V0ZSwgdGV4dClcbiAgICAgICAgICAgIC5waXBlKHRhcCgocikgPT4gdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocm91dGUgKyAnXycgKyB0ZXh0LCByKSkpXG4gICAgICAgICAgICAudG9Qcm9taXNlKCksXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH07XG4gIHRyYW5zbGF0ZUhUTUxQcm9taXNlID0gKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBzb3VyY2VMYW5ndWFnZSA9IGVudmlyb25tZW50LnNvdXJjZUxhbmd1YWdlLFxuICAgIHRhcmdldExhbmd1YWdlID0gZW52aXJvbm1lbnQudGFyZ2V0TGFuZ3VhZ2UsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgKSA9PiB0aGlzLnRyYW5zbGF0ZUhUTUwodGV4dCwgc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlLCBkZWJ1Zyk/LnRvUHJvbWlzZSgpO1xufVxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFnQixRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUtuRCxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCLFlBQ1MsVUFBc0IsRUFDdEIsUUFBMkIsRUFDM0IsT0FBMEI7UUFGMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQWR6QixZQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUMvQyw2QkFBd0IsR0FBbUMsRUFBRSxDQUFDO1FBQ3ZFLDhCQUF5QixHQUNqQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBRyxVQUFVLENBQUM7UUFJVCxPQUFFLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBUXJDLG9CQUFlLEdBQXVFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDN0YsRUFBRSxDQUFDLElBQWMsQ0FBQyxDQUFDO1FBeUZyQixr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bmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGludGVydmFsLCBsYXN0VmFsdWVGcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVMYW5ndWFnZSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxDYWNoZVNlcnZpY2UgfSBmcm9tICcuL2NhY2hlL2xvY2FsLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRVRTU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbGl0eS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uU2VydmljZTxUcmFuc2xhdGlvbkdsb3NzYXJ5UmVzcG9uc2UgPSBhbnk+IHtcbiAgcHJvdGVjdGVkIGJhc2VVUkwgPSBlbnZpcm9ubWVudC5hcGlCYXNlVXJsICsgJy9yZXN0L3RyYW5zbGF0aW9uLyc7XG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvblJlcXVlc3RNYXRyaXg6IHsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1bXSA9IFtdO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeDogQmVoYXZpb3JTdWJqZWN0PHsgW3g6IG51bWJlcl06IHN0cmluZyB9PiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIHJlYWRvbmx5IHNlcGFyYXRvciA9ICd+fn4nO1xuICBuYW1lID0gJ2dsb3NzYXJ5JztcbiAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZTtcbiAgdGFyZ2V0TGFuZ3VhZ2U6IEVMYW5ndWFnZTtcbiAgdHJhbnNHbG9zc2FyeTtcbiAgcmVhZG9ubHkgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaW50ZXJ2YWxTdWI6IFN1YnNjcmlwdGlvbjtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHVibGljIHN0b3JhZ2VTOiBFVFNTdG9yYWdlU2VydmljZSxcbiAgICBwdWJsaWMgbENhY2hlUzogTG9jYWxDYWNoZVNlcnZpY2UsXG4gICkgeyBcbiAgfVxuICBwaXBlVHJhbnNmb3JtZXI6ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIsIHRyYW5zbGF0ZT86IGJvb2xlYW4pID0+IE9ic2VydmFibGU8c3RyaW5nPiA9ICh0ZXh0KSA9PlxuICAgIG9mKHRleHQgYXMgc3RyaW5nKTtcbiAgYXN5bmMgc3RhcnRJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbFN1YiAmJiAhdGhpcy5pbnRlcnZhbFN1Yi5jbG9zZWQpIHJldHVybjtcbiAgICBjb25zdCB0cmFuc0dsb3NzYXJ5ID0gdGhpcy50cmFuc0dsb3NzYXJ5IHx8IChhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0R2xvc3NhcnkoKSkpO1xuICAgIHRoaXMuaW50ZXJ2YWxTdWIgPSBpbnRlcnZhbCgxMDAwKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5sZW5ndGggPiAwKSxcblxuICAgICAgICB0YXAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdE1hdHJpeC5zcGxpY2UoMCk7XG5cbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICBsYXN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLnBvc3RTdHJpbmcoXG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArXG4gICAgICAgICAgICAgICAgKHRoaXMudHJhbnNHbG9zc2FyeT8uY29kZVxuICAgICAgICAgICAgICAgICAgPyBgbGFuZ3VhZ2U/Z2xvc3NhcnlDb2RlPSR7dGhpcy50cmFuc0dsb3NzYXJ5Py5jb2RlfSZzb3VyY2VMYW5nPSR7dGhpcy5zb3VyY2VMYW5ndWFnZX0mdGFyZ2V0TGFuZz0ke3RoaXMudGFyZ2V0TGFuZ3VhZ2V9YFxuICAgICAgICAgICAgICAgICAgOiBgbGFuZ3VhZ2UvJHt0aGlzLnRhcmdldExhbmd1YWdlfWApLFxuICAgICAgICAgICAgICBib2R5Lm1hcCgoeCkgPT4gdGhpcy50YWdnZXIoeC5pZCwgeC50ZXh0KSkuam9pbih0aGlzLnNlcGFyYXRvciksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25SZXNwb25zZU1hdHJpeC5uZXh0KHRoaXMuZGV0YWdnZXIocikpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG4gIHN0b3BJbnRlcnZhbCgpIHtcbiAgICB0aGlzLmludGVydmFsU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIHByb3RlY3RlZCB0YWdnZXIoaWQ6IHN0cmluZywgc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYDxkaXYgaWQ9XCIke2lkfVwiPiR7c3RyfTwvZGl2PmA7XG4gIH1cbiAgZ2V0R2xvc3NhcnkoXG4gICAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZSA9IGVudmlyb25tZW50LnNvdXJjZUxhbmd1YWdlLFxuICAgIHRhcmdldExhbmd1YWdlOiBFTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC50YXJnZXRMYW5ndWFnZSxcbiAgKSB7XG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IHNvdXJjZUxhbmd1YWdlIHx8IHRoaXMuc291cmNlTGFuZ3VhZ2U7XG4gICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHRhcmdldExhbmd1YWdlIHx8IHRoaXMudGFyZ2V0TGFuZ3VhZ2U7XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldDxUcmFuc2xhdGlvbkdsb3NzYXJ5UmVzcG9uc2VbXT4oYCR7dGhpcy5iYXNlVVJMfWdsb3NzYXJ5L2ApLnBpcGUoXG4gICAgICBtYXAoKHI6IGFueVtdKSA9PiB7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICBjb25zdCBnbG9zc2FyeSA9IHI/LmZpbmQoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnNvdXJjZUxhbmcgPT0gdGhpcy5zb3VyY2VMYW5ndWFnZSAmJlxuICAgICAgICAgICAgeC50YXJnZXRMYW5nID09IHRoaXMudGFyZ2V0TGFuZ3VhZ2UgJiZcbiAgICAgICAgICAgIHgubmFtZSA9PSB0aGlzLm5hbWUsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBnbG9zc2FyeSA/IGdsb3NzYXJ5IDogbnVsbDtcbiAgICAgIH0pLFxuICAgICAgbWFwKChnbG9zc2FyeSkgPT4ge1xuICAgICAgICBpZiAoIWdsb3NzYXJ5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgdGhpcy50cmFuc0dsb3NzYXJ5ID0gZW52aXJvbm1lbnQudHJhbnNHbG9zc2FyeSA9IGdsb3NzYXJ5O1xuICAgICAgICB0aGlzLnN0b3JhZ2VTLnNhdmVJdGVtKGVudmlyb25tZW50LnRyYW5zR2xvc3NhcnlLZXksIHRoaXMudHJhbnNHbG9zc2FyeSk7XG4gICAgICAgIHJldHVybiBnbG9zc2FyeTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbiAgZGV0YWdnZXIoc3RyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtcyA9IHN0cj8uc3BsaXQodGhpcy5zZXBhcmF0b3IpO1xuICAgIGNvbnN0IHJlc29iaiA9IHt9O1xuICAgIGZvciAoY29uc3Qgc3RyIG9mIGl0ZW1zKSB7XG4gICAgICByZXNvYmpbc3RyPy5zcGxpdCgnXCInKVsxXV0gPSBzdHI/LnNwbGl0KCc+JylbMV0/LnNwbGl0KCc8L2RpdicpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2JqO1xuICB9XG5cbiAgdHJuYXNsYXRlT2xkKHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IGlkID0gMzIzMjMyMztcbiAgICBjb25zdCBib2R5ID0geyBbaWRdOiB0ZXh0IH07XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RTdHJpbmcoXG4gICAgICAgIHRoaXMuYmFzZVVSTCArIGBsYW5ndWFnZS8ke2Vudmlyb25tZW50LnRhcmdldExhbmd1YWdlfWAsXG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpXG4gICAgICAgICAgLm1hcCgoaWQpID0+IHRoaXMudGFnZ2VyKGlkLCBib2R5W2lkXSkpXG4gICAgICAgICAgLmpvaW4odGhpcy5zZXBhcmF0b3IpLFxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRldGFnZ2VyKHIpW2lkXSBhcyBzdHJpbmc7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZUhUTUwgPSAoXG4gICAgSFRNTFN0cmluZzogc3RyaW5nLFxuICAgIHNvdXJjZUxhbmd1YWdlID0gdGhpcy5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZSA9IHRoaXMudGFyZ2V0TGFuZ3VhZ2UsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKHJlcykgPT4ge1xuICAgICAgaWYgKGRlYnVnKSBkZWJ1Z2dlcjtcblxuICAgICAgY29uc3QgdGV4dCA9IEhUTUxTdHJpbmc/LnRyaW0oKSxcbiAgICAgICAgcm91dGUgPSB0aGlzLmJhc2VVUkwgKyBgbGFuZ3VhZ2VgO1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSByb3V0ZSArICdfJyArIHRhcmdldExhbmd1YWdlICsgJ18nICsgdGV4dDtcbiAgICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXMubmV4dChIVE1MU3RyaW5nKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubENhY2hlUy5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICAgIHJlcy5uZXh0KHRoaXMubENhY2hlUy5nZXRJdGVtPHN0cmluZz4oY2FjaGVLZXkpKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25SZXF1ZXN0TWF0cml4LnB1c2goeyBpZCwgdGV4dCB9KTtcbiAgICAgICAgY29uc3Qgc3ViOiBTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0aW9uUmVzcG9uc2VNYXRyaXguc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocikgPT4ge1xuICAgICAgICAgICAgaWYgKGRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zVmFsID0gcltpZC50b1N0cmluZygpXTtcbiAgICAgICAgICAgIGlmICh0cmFuc1ZhbCkge1xuICAgICAgICAgICAgICByZXMubmV4dCh0cmFuc1ZhbCk7XG4gICAgICAgICAgICAgIHRoaXMubENhY2hlUy5zZXRJdGVtKGNhY2hlS2V5LCB0cmFuc1ZhbCk7XG4gICAgICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgICAgcmVzLmVycm9yKGUpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICBwbGFpblRyYW5zbGF0ZSA9IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgc291cmNlTGFuZ3VhZ2UgPSBlbnZpcm9ubWVudC5zb3VyY2VMYW5ndWFnZSxcbiAgICB0YXJnZXRMYW5ndWFnZSA9IGVudmlyb25tZW50LnRhcmdldExhbmd1YWdlLFxuICApID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgdGV4dCA9IHRleHQ/LnRyaW0oKTtcbiAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5iYXNlVVJMICsgYGxhbmd1YWdlYDtcblxuICAgICAgaWYgKCF0ZXh0KSByZXNvbHZlKG51bGwpO1xuICAgICAgZWxzZSBpZiAodGhpcy5sQ2FjaGVTLmhhcyhyb3V0ZSArICdfJyArIHRleHQpKVxuICAgICAgICByZXNvbHZlKHRoaXMubENhY2hlUy5nZXRJdGVtPHN0cmluZz4ocm91dGUgKyAnXycgKyB0ZXh0KSk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAgICAgICAucG9zdFN0cmluZyhyb3V0ZSwgdGV4dClcbiAgICAgICAgICAgIC5waXBlKHRhcCgocikgPT4gdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocm91dGUgKyAnXycgKyB0ZXh0LCByKSkpXG4gICAgICAgICAgICAudG9Qcm9taXNlKCksXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH07XG4gIHRyYW5zbGF0ZUhUTUxQcm9taXNlID0gKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBzb3VyY2VMYW5ndWFnZSA9IGVudmlyb25tZW50LnNvdXJjZUxhbmd1YWdlLFxuICAgIHRhcmdldExhbmd1YWdlID0gZW52aXJvbm1lbnQudGFyZ2V0TGFuZ3VhZ2UsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgKSA9PiB0aGlzLnRyYW5zbGF0ZUhUTUwodGV4dCwgc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlLCBkZWJ1Zyk/LnRvUHJvbWlzZSgpO1xufVxuIl19
@@ -160,7 +160,7 @@ export class DateInputComponent {
160
160
  }
161
161
  }
162
162
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.InputService }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: DateInputComponent, isStandalone: true, selector: "date-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, inpCl: { classPropertyName: "inpCl", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, cls: { classPropertyName: "cls", publicName: "cls", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: false, isRequired: false, transformFunction: null }, _max: { classPropertyName: "_max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, _min: { classPropertyName: "_min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, showValidation: { classPropertyName: "showValidation", publicName: "showValidation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, viewQueries: [{ propertyName: "matCalendar", first: true, predicate: MatCalendar, descendants: true }], ngImport: i0, template: "<div class=\"customdate ps-2 {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100 align-items-center\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formattedValue()\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::-webkit-input-placeholder{text-transform:none;color:var(--phFC)}:host :-ms-input-placeholder{text-transform:none;color:var(--phFC)}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
163
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: DateInputComponent, isStandalone: true, selector: "date-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, inpCl: { classPropertyName: "inpCl", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, cls: { classPropertyName: "cls", publicName: "cls", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: false, isRequired: false, transformFunction: null }, _max: { classPropertyName: "_max", publicName: "max", isSignal: false, isRequired: false, transformFunction: null }, _min: { classPropertyName: "_min", publicName: "min", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, showValidation: { classPropertyName: "showValidation", publicName: "showValidation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, viewQueries: [{ propertyName: "matCalendar", first: true, predicate: MatCalendar, descendants: true }], ngImport: i0, template: "<div class=\"customdate ps-2 {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100 align-items-center\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.separator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formattedValue()\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::-webkit-input-placeholder{text-transform:none;color:var(--phFC)}:host :-ms-input-placeholder{text-transform:none;color:var(--phFC)}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
164
164
  }
165
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DateInputComponent, decorators: [{
166
166
  type: Component,
@@ -187,7 +187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
187
187
  NgSwitchDefault,
188
188
  ReactiveFormsModule,
189
189
  MatMenuModule,
190
- ], template: "<div class=\"customdate ps-2 {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100 align-items-center\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.seperator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formattedValue()\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::-webkit-input-placeholder{text-transform:none;color:var(--phFC)}:host :-ms-input-placeholder{text-transform:none;color:var(--phFC)}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"] }]
190
+ ], template: "<div class=\"customdate ps-2 {{ cls() }} {{ inputClass() }}\" [ngClass]=\"{ disabled: readonly() || disabled() }\">\n <div class=\"row g-1 w-100 align-items-center\">\n <!-- <div class=\"col overflow-auto hide-scroll-x\" [formGroup]=\"form2\">\n <div class=\"d-flex w-100 align-items-center\" [formGroup]=\"form2\">\n <ng-container *ngFor=\"let item of iS.dateInputChunks;let ci=index\">\n <div [style.width]=\"'auto'||item.width\" class=\" d-flex align-items-center\" *ngIf=\"ci<chunksLength\">\n <span>{{item.separator}}</span>\n <input noformat class=\"d-i-f\" id=\"{{this.id}}_di_{{item.formControlName}}\" [type]=\"item.type\"\n [formControlName]=\"item.formControlName\" [matTooltipShowDelay]=\"2000\"\n [matTooltip]=\"item.label\" [style.width.ch]=\"item?.length\" [placeholder]=\"item.placeholder\">\n </div>\n </ng-container>\n\n\n </div>\n </div> -->\n <div class=\"col\">\n <input\n class=\"w-100 border-0\"\n [value]=\"formattedValue()\"\n (change)=\"iS.formatUserInput($event, form(), showTime(), id())\"\n placeholder=\"dd/mm/yyyy{{ showTime() ? ' hh:mm:ss:aa' : '' }}\"\n [readOnly]=\"disabled()\" />\n <!-- <input class=\"w-100 border-0\" [value]=\"form.controls.formattedValue.value\" (change)=\"formatUserInput()\"\n [readOnly]=\"control?.disabled\" [mat-menu-trigger-for]=\"control?.disabled||readonly?null:picker\"> -->\n </div>\n @if (!disabled() && !readonly()) {\n <div class=\"col-auto\">\n <mat-datepicker-toggle\n matIconSuffix\n [mat-menu-trigger-for]=\"picker\"\n (click)=\"formValue()?.date ? matCalRef._goToDateInView(formValue()?.date, 'month') : null\"></mat-datepicker-toggle>\n </div>\n }\n </div>\n</div>\n\n<mat-menu class=\"full-width\" #picker=\"matMenu\" xPosition=\"after\">\n <div class=\"customdate-picker\" [ngClass]=\"{ 'pe-3': showTime() }\" (click)=\"$event.stopPropagation()\">\n <div class=\"row justify-content-center m-0 gy-2\">\n <div class=\"col-lg-auto\">\n <div class=\"calendar-cont\" #calendarCont>\n <mat-calendar\n #matCalRef\n [selected]=\"formValue()?.date\"\n [maxDate]=\"max()\"\n [minDate]=\"min()\"\n (selectedChange)=\"form().controls.date.patchValue($event)\"></mat-calendar>\n </div>\n </div>\n @if (showTime()) {\n <div class=\"col-lg-auto\">\n <div class=\"time-cont text-center\">\n <div class=\"d-flex align-items-center\">\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'HR' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.hours\">\n @for (item of iS.timeHours(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'MIN' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.minutes\">\n @for (item of iS.timeMinutes(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\" [style.height.px]=\"calendarCont.offsetHeight\">\n <div class=\"sticky-top bg-white rounded-10 text-primary\">\n {{ 'S' | appTranslate | async }}\n </div>\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.seconds\">\n @for (item of iS.timeSeconds(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item\">\n {{ item }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <div class=\"border rounded-10 overflow-hidden mx-1\">\n <div class=\"time-options-cont hide-scroll\">\n <mat-button-toggle-group class=\"hide-scroll\" [formControl]=\"form().controls.meridiem\">\n @for (item of iS.timeMeridiem(); track item) {\n <mat-button-toggle mat-icon-button class=\"rounded-10\" [value]=\"item.incrementor\">\n {{ item.label | uppercase }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n</mat-menu>\n", styles: ["input:focus-visible{outline:none}input{background-color:transparent!important}.d-i-f{border:none;width:auto;min-width:0;padding:0;text-align:center}:host{--phFC: #484848 !important}:host ::-webkit-input-placeholder{text-transform:none;color:var(--phFC)}:host :-ms-input-placeholder{text-transform:none;color:var(--phFC)}:host ::placeholder{text-transform:none;color:var(--phFC)}\n"] }]
191
191
  }], ctorParameters: () => [{ type: i1.InputService }, { type: i2.DatePipe }], propDecorators: { valueChanged: [{
192
192
  type: Output
193
193
  }], value: [{
@@ -211,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
211
211
  type: ViewChild,
212
212
  args: [MatCalendar]
213
213
  }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEksT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFB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QixjQUFjLDhCQUNkLGdCQUFnQiw4QkFDaEIsbUJBQW1CLCtCQUNuQixPQUFPLCtFQUlQLGdCQUFnQixvREFFaEIsZUFBZSw4QkFDZixlQUFlLDhCQUNmLHFCQUFxQix3bEJBRXJCLG1CQUFtQixpTkFDbkIsYUFBYTs7MkZBS0osa0JBQWtCO2tCQTlCOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsUUFBUTt3QkFDUixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxLQUFLO3dCQUNMLElBQUk7d0JBQ0osUUFBUTt3QkFDUixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGFBQWE7cUJBQ2Q7d0dBeUJTLFlBQVk7c0JBQXJCLE1BQU07Z0JBS00sS0FBSztzQkFBakIsS0FBSztnQkFpQ0csS0FBSztzQkFBYixLQUFLO2dCQUdGLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxLQUFLO2dCQU1SLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxLQUFLO2dCQUtILE9BQU87c0JBQWYsS0FBSztnQkFJYSxLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBS0osY0FBYztzQkFBdEIsS0FBSztnQkFDa0IsV0FBVztzQkFBbEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBEYXRlUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgVXBwZXJDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSwgTWF0UmlwcGxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDYWxlbmRhciwgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IElucHV0Q2xhc3NQaXBlIH0gZnJvbSAnLi4vaW5wdXRzLXBpcGVzLnBpcGUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0ZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgVXBwZXJDYXNlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJbnB1dENsYXNzUGlwZSxcbiAgICBEYXRlUGlwZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBOZ0ZvcixcbiAgICBOZ0lmLFxuICAgIE5nU3dpdGNoLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIGNodW5rc0xlbmd0aDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZm9ybSA9IHNpZ25hbChcbiAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGRhdGU6IG5ldyBGb3JtQ29udHJvbDxEYXRlPihudWxsKSxcbiAgICAgIGhvdXJzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICAgIG1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgc2Vjb25kczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgICBtZXJpZGllbTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gICAgICByYXdWYWx1ZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgfSksXG4gICk7XG5cbiAgZm9ybWF0dGVkVmFsdWUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb250cm9sVmFsdWUoKSwgYE1NTS4gZGQsIHl5eXkke3RoaXMuc2hvd1RpbWUoKSA/ICcuIGhoOm1tOnNzIGEnIDogJyd9YCk7XG4gIH0pO1xuXG4gIC8vIGZvcm1WYWx1ZSA9IHNpZ25hbCh0aGlzLmZvcm0oKS5nZXRSYXdWYWx1ZSgpKTtcbiAgZm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5mb3JtKCkudmFsdWVDaGFuZ2VzKTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBzaG93VGltZSA9IHNpZ25hbDxib29sZWFuPihudWxsKTtcbiAgc2tpcFBhdGNoRnJvbUNvbnRyb2w6IGJvb2xlYW47XG4gIHNraXBQYXRjaENvbnRyb2w6IGJvb2xlYW47XG4gIGNvbnRyb2xWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCAmJiB2ID09IHRoaXMuY29udHJvbFZhbHVlKCkpIHtcbiAgICAgIHRoaXMuc2tpcFBhdGNoRnJvbUNvbnRyb2wgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHYpIHtcbiAgICAgIHRoaXMuY29udHJvbFZhbHVlLnNldCh2KTtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5za2lwUGF0Y2hDb250cm9sID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybSgpLmNvbnRyb2xzLmRhdGUucGF0Y2hWYWx1ZShuZXcgRGF0ZSh2KSwgeyBlbWl0RXZlbnQ6ICF0aGlzLnNob3dUaW1lKCkgfSk7XG4gICAgICBpZiAoIXRoaXMuc2hvd1RpbWUoKSkgcmV0dXJuO1xuICAgICAgY29uc3QgdGltZUNvbXAgPSB2LnNwbGl0KCdUJyk/LlsxXTtcbiAgICAgIC8vIGlmICghdGltZUNvbXApIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGltZUNvbXAgPyB0aW1lQ29tcC5zcGxpdCgnOicpIDogWycxMicsICcwMCcsICcwMCddO1xuICAgICAgdGhpcy5mb3JtKCkucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGhvdXJzOiAoJzAnICsgKCtob3VycyAlIDEyKSkuc2xpY2UoLTIpLFxuICAgICAgICBtaW51dGVzLFxuICAgICAgICBzZWNvbmRzOiBzZWNvbmRzPy5zbGljZSgwLCAyKSxcbiAgICAgICAgbWVyaWRpZW06ICtob3VycyA+IDEyID8gMTIgOiAwLFxuICAgICAgfSk7XG4gICAgICAvLyB0aGlzLm1hdENhbGVuZGFyPy51cGRhdGVUb2RheXNEYXRlKCk7XG4gICAgICAvLyB0aGlzLm1hdENhbGVuZGFyPy5fZ29Ub0RhdGVJblZpZXcodGhpcy5mb3JtLmNvbnRyb2xzLmRhdGUudmFsdWUsJ21vbnRoJylcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybWF0dGVkVmFsdWUoKSkge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAvLyB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtKCkucmVzZXQoKTtcbiAgICB9XG4gICAgY29uc3QgZm9ybVZhbCA9IHRoaXMuZm9ybVZhbHVlKCk7XG4gIH1cbiAgaW5wQ2wgPSBpbnB1dDxzdHJpbmc+KCdjb250cm9sLWJnLWdyYXknKTtcbiAgY2xzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBASW5wdXQoKSB2YWxpZDogYm9vbGVhbjtcbiAgbWF4ID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWF4JylcbiAgc2V0IF9tYXgodjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4LnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgbWluID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWluJylcbiAgc2V0IF9taW4odjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWluLnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZGVidWcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLnNob3dUaW1lLnNldCh2ID09ICdkYXRldGltZS1sb2NhbCcpO1xuICAgIHRoaXMudHlwZSA9IHY7XG4gICAgdGhpcy5jaHVua3NMZW5ndGggPSB0aGlzLnNob3dUaW1lKCkgPyB0aGlzLmlTLmRhdGVJbnB1dENodW5rcy5sZW5ndGggOiB0aGlzLmlTLmRhdGVJbnB1dENodW5rcy5maW5kSW5kZXgoKHgpID0+IHguaXNUaW1lKTtcbiAgfVxuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgQFZpZXdDaGlsZChNYXRDYWxlbmRhcikgbWF0Q2FsZW5kYXI6IE1hdENhbGVuZGFyPGFueT47XG4gIHN1YnM6IHsgW3g6IHN0cmluZ106IFN1YnNjcmlwdGlvbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlTOiBJbnB1dFNlcnZpY2UsXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgKSB7XG4gICAgdGhpcy5mb3JtYXR0ZXJGdW5jdGlvbigpO1xuICB9XG4gIGZvcm1hdHRlckZ1bmN0aW9uID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybSgpXG4gICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgICAgICBpZiAoIU9iamVjdC52YWx1ZXMoY2hhbmdlKS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdChudWxsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtZXJpZGllbSB9ID0gY2hhbmdlO1xuICAgICAgICBpZiAoIWRhdGUpIHJldHVybjtcbiAgICAgICAgY29uc3QgW2RheVN0ciwgc2hvcnRNb250aCwgZGF5LCB5ZWFyXSA9IGRhdGUudG9EYXRlU3RyaW5nKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgY29uc3QgZGF0ZUlTT1N0cmluZyA9IGAke3llYXJ9LSR7Q29uZmlnLk1vbnRoc1tkYXRlPy5nZXRNb250aCgpXT8uaXNvU3RyfS0ke2RheX1gO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgdGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnNraXBQYXRjaENvbnRyb2wpIHtcbiAgICAgICAgICB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAvLyAgIGRhdGUsXG4gICAgICAgICAgLy8gICBob3VycyxcbiAgICAgICAgICAvLyAgIG1pbnV0ZXMsXG4gICAgICAgICAgLy8gICBzZWNvbmRzLFxuICAgICAgICAgIC8vICAgbWVyaWRpZW0sXG4gICAgICAgICAgLy8gICB0aGlzLnNob3dUaW1lLFxuICAgICAgICAgIC8vICAgZGF0ZUlTT1N0cmluZyArXG4gICAgICAgICAgLy8gICAgIGBUJHsoJzAnICsgKCgraG91cnMgJSAxMikgKyBtZXJpZGllbSkpLnNsaWNlKC0yKSB8fCAnMDAnfToke21pbnV0ZXMgfHwgJzAwJ306JHtcbiAgICAgICAgICAvLyAgICAgICBzZWNvbmRzIHx8ICcwMCdcbiAgICAgICAgICAvLyAgICAgfWBcbiAgICAgICAgICAvLyApO1xuICAgICAgICAgIGlmICh0aGlzLnNob3dUaW1lKCkpXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KGRhdGVJU09TdHJpbmcgKyBgVCR7KCcwJyArICgoK2hvdXJzICUgMTIpICsgbWVyaWRpZW0pKS5zbGljZSgtMikgfHwgJzAwJ306JHttaW51dGVzIHx8ICcwMCd9OiR7c2Vjb25kcyB8fCAnMDAnfWApO1xuICAgICAgICAgIGVsc2UgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdChkYXRlSVNPU3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH07XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy9DYWxsZWQgb25jZSwgYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgT25EZXN0cm95JyB0byB0aGUgY2xhc3MuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zdWJzIHx8IHt9KSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuc3Vicywga2V5KSkge1xuICAgICAgICB0aGlzLnN1YnM/LltrZXldPy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmZvcm1WYWx1ZSgpPy5kYXRlKSB7XG4gICAgICB0aGlzLm1hdENhbGVuZGFyLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvcm1WYWx1ZSgpLmRhdGUpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbWRhdGUgcHMtMiB7eyBjbHMoKSB9fSB7eyBpbnB1dENsYXNzKCkgfX1cIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiByZWFkb25seSgpIHx8IGRpc2FibGVkKCkgfVwiPlxuICA8ZGl2IGNsYXNzPVwicm93IGctMSB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wgb3ZlcmZsb3ctYXV0byBoaWRlLXNjcm9sbC14XCIgW2Zvcm1Hcm91cF09XCJmb3JtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZvcm0yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpUy5kYXRlSW5wdXRDaHVua3M7bGV0IGNpPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIidhdXRvJ3x8aXRlbS53aWR0aFwiIGNsYXNzPVwiICBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKm5nSWY9XCJjaTxjaHVua3NMZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5zZXBlcmF0b3J9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBub2Zvcm1hdCBjbGFzcz1cImQtaS1mXCIgaWQ9XCJ7e3RoaXMuaWR9fV9kaV97e2l0ZW0uZm9ybUNvbnRyb2xOYW1lfX1cIiBbdHlwZV09XCJpdGVtLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5mb3JtQ29udHJvbE5hbWVcIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIyMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpdGVtLmxhYmVsXCIgW3N0eWxlLndpZHRoLmNoXT1cIml0ZW0/Lmxlbmd0aFwiIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwidy0xMDAgYm9yZGVyLTBcIlxuICAgICAgICBbdmFsdWVdPVwiZm9ybWF0dGVkVmFsdWUoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaVMuZm9ybWF0VXNlcklucHV0KCRldmVudCwgZm9ybSgpLCBzaG93VGltZSgpLCBpZCgpKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eXt7IHNob3dUaW1lKCkgPyAnIGhoOm1tOnNzOmFhJyA6ICcnIH19XCJcbiAgICAgICAgW3JlYWRPbmx5XT1cImRpc2FibGVkKClcIiAvPlxuICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJ3LTEwMCBib3JkZXItMFwiIFt2YWx1ZV09XCJmb3JtLmNvbnRyb2xzLmZvcm1hdHRlZFZhbHVlLnZhbHVlXCIgKGNoYW5nZSk9XCJmb3JtYXRVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImNvbnRyb2w/LmRpc2FibGVkXCIgW21hdC1tZW51LXRyaWdnZXItZm9yXT1cImNvbnRyb2w/LmRpc2FibGVkfHxyZWFkb25seT9udWxsOnBpY2tlclwiPiAtLT5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFkaXNhYmxlZCgpICYmICFyZWFkb25seSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxuICAgICAgICAgIG1hdEljb25TdWZmaXhcbiAgICAgICAgICBbbWF0LW1lbnUtdHJpZ2dlci1mb3JdPVwicGlja2VyXCJcbiAgICAgICAgICAoY2xpY2spPVwiZm9ybVZhbHVlKCk/LmRhdGUgPyBtYXRDYWxSZWYuX2dvVG9EYXRlSW5WaWV3KGZvcm1WYWx1ZSgpPy5kYXRlLCAnbW9udGgnKSA6IG51bGxcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG1hdC1tZW51IGNsYXNzPVwiZnVsbC13aWR0aFwiICNwaWNrZXI9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYWZ0ZXJcIj5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbWRhdGUtcGlja2VyXCIgW25nQ2xhc3NdPVwieyAncGUtMyc6IHNob3dUaW1lKCkgfVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbS0wIGd5LTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctYXV0b1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udFwiICNjYWxlbmRhckNvbnQ+XG4gICAgICAgICAgPG1hdC1jYWxlbmRhclxuICAgICAgICAgICAgI21hdENhbFJlZlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImZvcm1WYWx1ZSgpPy5kYXRlXCJcbiAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heCgpXCJcbiAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbigpXCJcbiAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJmb3JtKCkuY29udHJvbHMuZGF0ZS5wYXRjaFZhbHVlKCRldmVudClcIj48L21hdC1jYWxlbmRhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoc2hvd1RpbWUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMTAgb3ZlcmZsb3ctaGlkZGVuIG14LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1vcHRpb25zLWNvbnQgaGlkZS1zY3JvbGxcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImNhbGVuZGFyQ29udC5vZmZzZXRIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja3ktdG9wIGJnLXdoaXRlIHJvdW5kZWQtMTAgdGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdIUicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMuaG91cnNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpUy50aW1lSG91cnMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLTEwXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnTUlOJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz1cImhpZGUtc2Nyb2xsXCIgW2Zvcm1Db250cm9sXT1cImZvcm0oKS5jb250cm9scy5taW51dGVzXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZU1pbnV0ZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLTEwXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnUycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMuc2Vjb25kc1wiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGlTLnRpbWVTZWNvbmRzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBvdmVyZmxvdy1oaWRkZW4gbXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLW9wdGlvbnMtY29udCBoaWRlLXNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiaGlkZS1zY3JvbGxcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybSgpLmNvbnRyb2xzLm1lcmlkaWVtXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZU1lcmlkaWVtKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtLmluY3JlbWVudG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEksT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQWdDdEQsTUFBTSxPQUFPLGtCQUFrQjtJQTBCN0IsSUFBYSxLQUFLLENBQUMsQ0FBUztRQUMxQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFBRSxRQUFRLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsQ0FBQzthQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixZQUFZO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUFFLE9BQU87WUFDN0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLHlCQUF5QjtZQUV6QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQUUsUUFBUSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JCLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxPQUFPO2dCQUNQLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdCLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQixDQUFDLENBQUM7WUFDSCx3Q0FBd0M7WUFDeEMsMkVBQTJFO1FBQzdFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLFlBQVk7WUFDWixnQ0FBZ0M7WUFDaEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQU1ELElBQ0ksSUFBSSxDQUFDLENBQWtCO1FBQ3pCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQ0ksSUFBSSxDQUFDLENBQWtCO1FBQ3pCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQU1ELElBQW1CLEtBQUssQ0FBQyxDQUFZO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUtELFlBQ1MsRUFBZ0IsRUFDaEIsUUFBa0I7UUFEbEIsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBbkZqQixTQUFJLEdBQUcsTUFBTSxDQUNyQixJQUFJLFNBQVMsQ0FBQztZQUNaLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBTyxJQUFJLENBQUM7WUFDakMsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFTLElBQUksQ0FBQztZQUNwQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQVMsSUFBSSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBUyxJQUFJLENBQUM7WUFDdEMsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFTLElBQUksQ0FBQztZQUN2QyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQVMsSUFBSSxDQUFDO1NBQ3hDLENBQUMsQ0FDSCxDQUFDO1FBRUYsbUJBQWMsR0FBRyxRQUFRLENBQVMsR0FBRyxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFBRSxRQUFRLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLENBQUMsQ0FBQyxDQUFDO1FBRUgsaURBQWlEO1FBQ2pELGNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwRCxhQUFRLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBR2pDLGlCQUFZLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBK0J6QyxVQUFLLEdBQUcsS0FBSyxDQUFTLGlCQUFpQixDQUFDLENBQUM7UUFDekMsUUFBRyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUU3QixRQUFHLEdBQUcsTUFBTSxDQUFPLFNBQVMsQ0FBQyxDQUFDO1FBSzlCLFFBQUcsR0FBRyxNQUFNLENBQU8sU0FBUyxDQUFDLENBQUM7UUFLOUIsT0FBRSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRXJCLGFBQVEsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUM1QixVQUFLLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDekIsYUFBUSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBUTVCLFNBQUksR0FBa0MsRUFBRSxDQUFDO1FBUXpDLHNCQUFpQixHQUFHLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxFQUFFO2lCQUNSLFlBQVksQ0FBQyxJQUFJLEVBQUU7aUJBQ25CLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQUUsUUFBUSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztnQkFDM0QsSUFBSSxDQUFDLElBQUk7b0JBQUUsT0FBTztnQkFDbEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0sYUFBYSxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNsRixZQUFZO2dCQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7Z0JBQ2pDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQ2hDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixlQUFlO29CQUNmLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCxhQUFhO29CQUNiLGFBQWE7b0JBQ2IsY0FBYztvQkFDZCxtQkFBbUI7b0JBQ25CLG9CQUFvQjtvQkFDcEIsc0ZBQXNGO29CQUN0Rix3QkFBd0I7b0JBQ3hCLFNBQVM7b0JBQ1QsS0FBSztvQkFDTCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7d0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDOzt3QkFDdEksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzdDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztRQXRDQSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBdUNELFdBQVc7UUFDVCxnREFBZ0Q7UUFDaEQsMENBQTBDO1FBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsNkdBQTZHO1FBQzdHLDhDQUE4QztRQUM5QyxZQUFZO1FBQ1osSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDOzhHQWpKVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiwyMkRBaUZsQixXQUFXLGdEQ2xJeEIsdXdMQWtIQSxpYkQzRkksU0FBUyx5Q0FDVCxhQUFhLGlEQUNiLFdBQVcsc0lBR1gsbUJBQW1CLDZuQkFDbkIsa0JBQWtCLCtKQUNsQixjQUFjLDhCQUNkLGdCQUFnQiw4QkFDaEIsbUJBQW1CLCtCQUNuQixPQUFPLCtFQUlQLGdCQUFnQixvREFFaEIsZUFBZSw4QkFDZixlQUFlLDhCQUNmLHFCQUFxQix3bEJBRXJCLG1CQUFtQixpTkFDbkIsYUFBYTs7MkZBS0osa0JBQWtCO2tCQTlCOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsUUFBUTt3QkFDUixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxLQUFLO3dCQUNMLElBQUk7d0JBQ0osUUFBUTt3QkFDUixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGFBQWE7cUJBQ2Q7d0dBeUJTLFlBQVk7c0JBQXJCLE1BQU07Z0JBS00sS0FBSztzQkFBakIsS0FBSztnQkFpQ0csS0FBSztzQkFBYixLQUFLO2dCQUdGLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxLQUFLO2dCQU1SLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxLQUFLO2dCQUtILE9BQU87c0JBQWYsS0FBSztnQkFJYSxLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBS0osY0FBYztzQkFBdEIsS0FBSztnQkFDa0IsV0FBVztzQkFBbEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBEYXRlUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgVXBwZXJDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSwgTWF0UmlwcGxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDYWxlbmRhciwgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IElucHV0Q2xhc3NQaXBlIH0gZnJvbSAnLi4vaW5wdXRzLXBpcGVzLnBpcGUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0ZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgVXBwZXJDYXNlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJbnB1dENsYXNzUGlwZSxcbiAgICBEYXRlUGlwZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBOZ0ZvcixcbiAgICBOZ0lmLFxuICAgIE5nU3dpdGNoLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIGNodW5rc0xlbmd0aDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZm9ybSA9IHNpZ25hbChcbiAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGRhdGU6IG5ldyBGb3JtQ29udHJvbDxEYXRlPihudWxsKSxcbiAgICAgIGhvdXJzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICAgIG1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgc2Vjb25kczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgICBtZXJpZGllbTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gICAgICByYXdWYWx1ZTogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgfSksXG4gICk7XG5cbiAgZm9ybWF0dGVkVmFsdWUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb250cm9sVmFsdWUoKSwgYE1NTS4gZGQsIHl5eXkke3RoaXMuc2hvd1RpbWUoKSA/ICcuIGhoOm1tOnNzIGEnIDogJyd9YCk7XG4gIH0pO1xuXG4gIC8vIGZvcm1WYWx1ZSA9IHNpZ25hbCh0aGlzLmZvcm0oKS5nZXRSYXdWYWx1ZSgpKTtcbiAgZm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5mb3JtKCkudmFsdWVDaGFuZ2VzKTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBzaG93VGltZSA9IHNpZ25hbDxib29sZWFuPihudWxsKTtcbiAgc2tpcFBhdGNoRnJvbUNvbnRyb2w6IGJvb2xlYW47XG4gIHNraXBQYXRjaENvbnRyb2w6IGJvb2xlYW47XG4gIGNvbnRyb2xWYWx1ZSA9IHNpZ25hbDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCAmJiB2ID09IHRoaXMuY29udHJvbFZhbHVlKCkpIHtcbiAgICAgIHRoaXMuc2tpcFBhdGNoRnJvbUNvbnRyb2wgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHYpIHtcbiAgICAgIHRoaXMuY29udHJvbFZhbHVlLnNldCh2KTtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5za2lwUGF0Y2hDb250cm9sID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybSgpLmNvbnRyb2xzLmRhdGUucGF0Y2hWYWx1ZShuZXcgRGF0ZSh2KSwgeyBlbWl0RXZlbnQ6ICF0aGlzLnNob3dUaW1lKCkgfSk7XG4gICAgICBpZiAoIXRoaXMuc2hvd1RpbWUoKSkgcmV0dXJuO1xuICAgICAgY29uc3QgdGltZUNvbXAgPSB2LnNwbGl0KCdUJyk/LlsxXTtcbiAgICAgIC8vIGlmICghdGltZUNvbXApIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGltZUNvbXAgPyB0aW1lQ29tcC5zcGxpdCgnOicpIDogWycxMicsICcwMCcsICcwMCddO1xuICAgICAgdGhpcy5mb3JtKCkucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGhvdXJzOiAoJzAnICsgKCtob3VycyAlIDEyKSkuc2xpY2UoLTIpLFxuICAgICAgICBtaW51dGVzLFxuICAgICAgICBzZWNvbmRzOiBzZWNvbmRzPy5zbGljZSgwLCAyKSxcbiAgICAgICAgbWVyaWRpZW06ICtob3VycyA+IDEyID8gMTIgOiAwLFxuICAgICAgfSk7XG4gICAgICAvLyB0aGlzLm1hdENhbGVuZGFyPy51cGRhdGVUb2RheXNEYXRlKCk7XG4gICAgICAvLyB0aGlzLm1hdENhbGVuZGFyPy5fZ29Ub0RhdGVJblZpZXcodGhpcy5mb3JtLmNvbnRyb2xzLmRhdGUudmFsdWUsJ21vbnRoJylcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybWF0dGVkVmFsdWUoKSkge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAvLyB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtKCkucmVzZXQoKTtcbiAgICB9XG4gICAgY29uc3QgZm9ybVZhbCA9IHRoaXMuZm9ybVZhbHVlKCk7XG4gIH1cbiAgaW5wQ2wgPSBpbnB1dDxzdHJpbmc+KCdjb250cm9sLWJnLWdyYXknKTtcbiAgY2xzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICBASW5wdXQoKSB2YWxpZDogYm9vbGVhbjtcbiAgbWF4ID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWF4JylcbiAgc2V0IF9tYXgodjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4LnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgbWluID0gc2lnbmFsPERhdGU+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgnbWluJylcbiAgc2V0IF9taW4odjogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHYpIHRoaXMubWluLnNldChuZXcgRGF0ZSh2KSk7XG4gIH1cbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZGVidWcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgICB0aGlzLnNob3dUaW1lLnNldCh2ID09ICdkYXRldGltZS1sb2NhbCcpO1xuICAgIHRoaXMudHlwZSA9IHY7XG4gICAgdGhpcy5jaHVua3NMZW5ndGggPSB0aGlzLnNob3dUaW1lKCkgPyB0aGlzLmlTLmRhdGVJbnB1dENodW5rcy5sZW5ndGggOiB0aGlzLmlTLmRhdGVJbnB1dENodW5rcy5maW5kSW5kZXgoKHgpID0+IHguaXNUaW1lKTtcbiAgfVxuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgQFZpZXdDaGlsZChNYXRDYWxlbmRhcikgbWF0Q2FsZW5kYXI6IE1hdENhbGVuZGFyPGFueT47XG4gIHN1YnM6IHsgW3g6IHN0cmluZ106IFN1YnNjcmlwdGlvbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlTOiBJbnB1dFNlcnZpY2UsXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgKSB7XG4gICAgdGhpcy5mb3JtYXR0ZXJGdW5jdGlvbigpO1xuICB9XG4gIGZvcm1hdHRlckZ1bmN0aW9uID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybSgpXG4gICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgICAgICBpZiAoIU9iamVjdC52YWx1ZXMoY2hhbmdlKS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdChudWxsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtZXJpZGllbSB9ID0gY2hhbmdlO1xuICAgICAgICBpZiAoIWRhdGUpIHJldHVybjtcbiAgICAgICAgY29uc3QgW2RheVN0ciwgc2hvcnRNb250aCwgZGF5LCB5ZWFyXSA9IGRhdGUudG9EYXRlU3RyaW5nKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgY29uc3QgZGF0ZUlTT1N0cmluZyA9IGAke3llYXJ9LSR7Q29uZmlnLk1vbnRoc1tkYXRlPy5nZXRNb250aCgpXT8uaXNvU3RyfS0ke2RheX1gO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgdGhpcy5za2lwUGF0Y2hGcm9tQ29udHJvbCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnNraXBQYXRjaENvbnRyb2wpIHtcbiAgICAgICAgICB0aGlzLnNraXBQYXRjaENvbnRyb2wgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAvLyAgIGRhdGUsXG4gICAgICAgICAgLy8gICBob3VycyxcbiAgICAgICAgICAvLyAgIG1pbnV0ZXMsXG4gICAgICAgICAgLy8gICBzZWNvbmRzLFxuICAgICAgICAgIC8vICAgbWVyaWRpZW0sXG4gICAgICAgICAgLy8gICB0aGlzLnNob3dUaW1lLFxuICAgICAgICAgIC8vICAgZGF0ZUlTT1N0cmluZyArXG4gICAgICAgICAgLy8gICAgIGBUJHsoJzAnICsgKCgraG91cnMgJSAxMikgKyBtZXJpZGllbSkpLnNsaWNlKC0yKSB8fCAnMDAnfToke21pbnV0ZXMgfHwgJzAwJ306JHtcbiAgICAgICAgICAvLyAgICAgICBzZWNvbmRzIHx8ICcwMCdcbiAgICAgICAgICAvLyAgICAgfWBcbiAgICAgICAgICAvLyApO1xuICAgICAgICAgIGlmICh0aGlzLnNob3dUaW1lKCkpXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KGRhdGVJU09TdHJpbmcgKyBgVCR7KCcwJyArICgoK2hvdXJzICUgMTIpICsgbWVyaWRpZW0pKS5zbGljZSgtMikgfHwgJzAwJ306JHttaW51dGVzIHx8ICcwMCd9OiR7c2Vjb25kcyB8fCAnMDAnfWApO1xuICAgICAgICAgIGVsc2UgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdChkYXRlSVNPU3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH07XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy9DYWxsZWQgb25jZSwgYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgT25EZXN0cm95JyB0byB0aGUgY2xhc3MuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zdWJzIHx8IHt9KSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuc3Vicywga2V5KSkge1xuICAgICAgICB0aGlzLnN1YnM/LltrZXldPy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmZvcm1WYWx1ZSgpPy5kYXRlKSB7XG4gICAgICB0aGlzLm1hdENhbGVuZGFyLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvcm1WYWx1ZSgpLmRhdGUpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbWRhdGUgcHMtMiB7eyBjbHMoKSB9fSB7eyBpbnB1dENsYXNzKCkgfX1cIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiByZWFkb25seSgpIHx8IGRpc2FibGVkKCkgfVwiPlxuICA8ZGl2IGNsYXNzPVwicm93IGctMSB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wgb3ZlcmZsb3ctYXV0byBoaWRlLXNjcm9sbC14XCIgW2Zvcm1Hcm91cF09XCJmb3JtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZvcm0yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpUy5kYXRlSW5wdXRDaHVua3M7bGV0IGNpPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIidhdXRvJ3x8aXRlbS53aWR0aFwiIGNsYXNzPVwiICBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKm5nSWY9XCJjaTxjaHVua3NMZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5zZXBhcmF0b3J9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBub2Zvcm1hdCBjbGFzcz1cImQtaS1mXCIgaWQ9XCJ7e3RoaXMuaWR9fV9kaV97e2l0ZW0uZm9ybUNvbnRyb2xOYW1lfX1cIiBbdHlwZV09XCJpdGVtLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5mb3JtQ29udHJvbE5hbWVcIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIyMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpdGVtLmxhYmVsXCIgW3N0eWxlLndpZHRoLmNoXT1cIml0ZW0/Lmxlbmd0aFwiIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwidy0xMDAgYm9yZGVyLTBcIlxuICAgICAgICBbdmFsdWVdPVwiZm9ybWF0dGVkVmFsdWUoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaVMuZm9ybWF0VXNlcklucHV0KCRldmVudCwgZm9ybSgpLCBzaG93VGltZSgpLCBpZCgpKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eXt7IHNob3dUaW1lKCkgPyAnIGhoOm1tOnNzOmFhJyA6ICcnIH19XCJcbiAgICAgICAgW3JlYWRPbmx5XT1cImRpc2FibGVkKClcIiAvPlxuICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJ3LTEwMCBib3JkZXItMFwiIFt2YWx1ZV09XCJmb3JtLmNvbnRyb2xzLmZvcm1hdHRlZFZhbHVlLnZhbHVlXCIgKGNoYW5nZSk9XCJmb3JtYXRVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImNvbnRyb2w/LmRpc2FibGVkXCIgW21hdC1tZW51LXRyaWdnZXItZm9yXT1cImNvbnRyb2w/LmRpc2FibGVkfHxyZWFkb25seT9udWxsOnBpY2tlclwiPiAtLT5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFkaXNhYmxlZCgpICYmICFyZWFkb25seSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxuICAgICAgICAgIG1hdEljb25TdWZmaXhcbiAgICAgICAgICBbbWF0LW1lbnUtdHJpZ2dlci1mb3JdPVwicGlja2VyXCJcbiAgICAgICAgICAoY2xpY2spPVwiZm9ybVZhbHVlKCk/LmRhdGUgPyBtYXRDYWxSZWYuX2dvVG9EYXRlSW5WaWV3KGZvcm1WYWx1ZSgpPy5kYXRlLCAnbW9udGgnKSA6IG51bGxcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG1hdC1tZW51IGNsYXNzPVwiZnVsbC13aWR0aFwiICNwaWNrZXI9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYWZ0ZXJcIj5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbWRhdGUtcGlja2VyXCIgW25nQ2xhc3NdPVwieyAncGUtMyc6IHNob3dUaW1lKCkgfVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbS0wIGd5LTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctYXV0b1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udFwiICNjYWxlbmRhckNvbnQ+XG4gICAgICAgICAgPG1hdC1jYWxlbmRhclxuICAgICAgICAgICAgI21hdENhbFJlZlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImZvcm1WYWx1ZSgpPy5kYXRlXCJcbiAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heCgpXCJcbiAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbigpXCJcbiAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJmb3JtKCkuY29udHJvbHMuZGF0ZS5wYXRjaFZhbHVlKCRldmVudClcIj48L21hdC1jYWxlbmRhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoc2hvd1RpbWUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMTAgb3ZlcmZsb3ctaGlkZGVuIG14LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1vcHRpb25zLWNvbnQgaGlkZS1zY3JvbGxcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImNhbGVuZGFyQ29udC5vZmZzZXRIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja3ktdG9wIGJnLXdoaXRlIHJvdW5kZWQtMTAgdGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdIUicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMuaG91cnNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpUy50aW1lSG91cnMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLTEwXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnTUlOJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz1cImhpZGUtc2Nyb2xsXCIgW2Zvcm1Db250cm9sXT1cImZvcm0oKS5jb250cm9scy5taW51dGVzXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZU1pbnV0ZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyb3VuZGVkLTEwXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIG92ZXJmbG93LWhpZGRlbiBteC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtb3B0aW9ucy1jb250IGhpZGUtc2Nyb2xsXCIgW3N0eWxlLmhlaWdodC5weF09XCJjYWxlbmRhckNvbnQub2Zmc2V0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXRvcCBiZy13aGl0ZSByb3VuZGVkLTEwIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnUycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJoaWRlLXNjcm9sbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtKCkuY29udHJvbHMuc2Vjb25kc1wiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGlTLnRpbWVTZWNvbmRzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBvdmVyZmxvdy1oaWRkZW4gbXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLW9wdGlvbnMtY29udCBoaWRlLXNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiaGlkZS1zY3JvbGxcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybSgpLmNvbnRyb2xzLm1lcmlkaWVtXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaVMudGltZU1lcmlkaWVtKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0xMFwiIFt2YWx1ZV09XCJpdGVtLmluY3JlbWVudG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cbiJdfQ==
@@ -43,7 +43,7 @@ export class InputService {
43
43
  length: 2,
44
44
  class: 'col-2',
45
45
  width: '32px',
46
- // seperator: '/',
46
+ // separator: '/',
47
47
  },
48
48
  {
49
49
  label: 'month',
@@ -52,7 +52,7 @@ export class InputService {
52
52
  length: 3,
53
53
  class: 'col-2',
54
54
  width: '55px',
55
- seperator: '/',
55
+ separator: '/',
56
56
  },
57
57
  {
58
58
  label: 'year',
@@ -61,7 +61,7 @@ export class InputService {
61
61
  length: 4,
62
62
  class: 'col-3',
63
63
  width: '45px',
64
- seperator: '/',
64
+ separator: '/',
65
65
  },
66
66
  {
67
67
  label: 'hour',
@@ -71,7 +71,7 @@ export class InputService {
71
71
  class: 'col-auto',
72
72
  width: '25px',
73
73
  isTime: true,
74
- seperator: ',',
74
+ separator: ',',
75
75
  },
76
76
  {
77
77
  label: 'minute',
@@ -81,7 +81,7 @@ export class InputService {
81
81
  class: 'col-auto',
82
82
  width: '25px',
83
83
  isTime: true,
84
- seperator: ':',
84
+ separator: ':',
85
85
  },
86
86
  {
87
87
  label: 'second',
@@ -91,7 +91,7 @@ export class InputService {
91
91
  class: 'col-auto',
92
92
  width: '25px',
93
93
  isTime: true,
94
- seperator: ':',
94
+ separator: ':',
95
95
  },
96
96
  {
97
97
  label: 'meridiem',
@@ -101,7 +101,7 @@ export class InputService {
101
101
  class: 'col-auto',
102
102
  width: '25px',
103
103
  isTime: true,
104
- seperator: ':',
104
+ separator: ':',
105
105
  },
106
106
  ];
107
107
  this.labeller = EVFunctions.strConcatenator;
@@ -301,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
301
301
  providedIn: 'root',
302
302
  }]
303
303
  }], ctorParameters: () => [{ type: i1.DebouncerService }, { type: i2.UtilityService }] });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNdEMsTUFBTSxPQUFPLFlBQVk7SUFxR3ZCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDbkIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFPLElBQUksQ0FBQztZQUNqQyxLQUFLLEVBQUUsSUFBSSxXQUFXLENBQVMsSUFBSSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBUyxJQUFJLENBQUM7WUFDdEMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFTLElBQUksQ0FBQztZQUN0QyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQVMsSUFBSSxDQUFDO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBUyxJQUFJLENBQUM7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQ1MsU0FBMkIsRUFDM0IsRUFBa0I7UUFEbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsT0FBRSxHQUFGLEVBQUUsQ0FBZ0I7UUE5R2xCLGNBQVMsR0FBRyxNQUFNLENBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztR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RUFBRSxDQUFDLE1BQWtCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDakUsRUFBRSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQzlELEVBQUUsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQztZQUNqRSxFQUFFLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUM7WUFDckUsRUFBRSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDO1lBQzlELEVBQUUsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztZQUMzRCxHQUFHLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLFNBQVMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDMUYsRUFBRSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQ3hELEVBQUUsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztZQUN4RCxFQUFFLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUs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RyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzFFO3lDQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDYjtvQ0FDRCxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztvQ0FDcEIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0NBQ3RCLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO29DQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxXQUFXO2lDQUMxRSxDQUFDLENBQUM7NEJBQ0wsQ0FBQzs7Z0NBQ0MsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQ0FDZCxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUNBQ3pELENBQUMsQ0FBQzt3QkFDUCxDQUFDO3dCQUNELHVCQUF1QjtvQkFDekIsQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3ZCLENBQUM7WUFDTCxDQUFDO1lBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0I7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1VFUsWUFBWTtrSEFBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQ29kZVRpdGxlLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRVZGdW5jdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL2Jhc2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvaW5kZXguY29uZmlnJztcbmltcG9ydCB7IERlYm91bmNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy9kZWJvdW5jZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGVudENoYW5nZSB9IGZyb20gJ25neC1xdWlsbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFNlcnZpY2Uge1xuICByZWFkb25seSBvcHRpb25MYWJlbGxlckZ1bmN0aW9uczoge1xuICAgIFt4OiBzdHJpbmddOiAob3B0aW9uKSA9PiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfTtcbiAgfTtcbiAgcmVhZG9ubHkgdGltZUhvdXJzID0gc2lnbmFsPChzdHJpbmcgfCBudW1iZXIpW10+KFsnMTInXSk7XG4gIHJlYWRvbmx5IHRpbWVNaW51dGVzID0gc2lnbmFsPChzdHJpbmcgfCBudW1iZXIpW10+KFtdKTtcbiAgcmVhZG9ubHkgdGltZVNlY29uZHMgPSBzaWduYWw8KHN0cmluZyB8IG51bWJlcilbXT4oW10pO1xuICByZWFkb25seSB0aW1lTWVyaWRpZW0gPSBzaWduYWw8eyBsYWJlbDogJ2FtJyB8ICdwbSc7IGluY3JlbWVudG9yOiAwIHwgMTIgfVtdPihbXG4gICAgeyBsYWJlbDogJ2FtJywgaW5jcmVtZW50b3I6IDAgfSxcbiAgICB7IGxhYmVsOiAncG0nLCBpbmNyZW1lbnRvcjogMTIgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IHRpbWVNZXJpZGllbU1hcCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50aW1lTWVyaWRpZW0oKVxuICAgICAgLm1hcCgoeCkgPT4gKHsgLi4ueCwgX2xhYmVsOiB4LmxhYmVsLnRvTG93ZXJDYXNlKCkgfSkpXG4gICAgICAudG9NYXAoJ19sYWJlbCcpLFxuICApO1xuICByZWFkb25seSBkYXRlTGVuZ3RoSW5kZXggPSB7XG4gICAgMDogNCxcbiAgICAxOiAyLFxuICAgIDI6IDIsXG4gIH07XG4gIHJlYWRvbmx5IGRhdGVJbnB1dENodW5rczoge1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY2xhc3M6IHN0cmluZztcbiAgICB3aWR0aDogc3RyaW5nO1xuICAgIHNlcGVyYXRvcj86IHN0cmluZztcbiAgICBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBJbnB1dFR5cGU7XG4gICAgbGVuZ3RoOiBudW1iZXI7XG4gICAgaXNUaW1lPzogYm9vbGVhbjtcbiAgfVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnZGF5JyxcbiAgICAgIGZvcm1Db250cm9sTmFtZTogJ2RheScsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBsZW5ndGg6IDIsXG4gICAgICBjbGFzczogJ2NvbC0yJyxcbiAgICAgIHdpZHRoOiAnMzJweCcsXG4gICAgICAvLyBzZXBlcmF0b3I6ICcvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnbW9udGgnLFxuICAgICAgZm9ybUNvbnRyb2xOYW1lOiAnbW9udGgnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgbGVuZ3RoOiAzLFxuICAgICAgY2xhc3M6ICdjb2wtMicsXG4gICAgICB3aWR0aDogJzU1cHgnLFxuICAgICAgc2VwZXJhdG9yOiAnLycsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ3llYXInLFxuICAgICAgZm9ybUNvbnRyb2xOYW1lOiAneWVhcicsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBsZW5ndGg6IDQsXG4gICAgICBjbGFzczogJ2NvbC0zJyxcbiAgICAgIHdpZHRoOiAnNDVweCcsXG4gICAgICBzZXBlcmF0b3I6ICcvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnaG91cicsXG4gICAgICBmb3JtQ29udHJvbE5hbWU6ICdob3VycycsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBsZW5ndGg6IDIsXG4gICAgICBjbGFzczogJ2NvbC1hdXRvJyxcbiAgICAgIHdpZHRoOiAnMjVweCcsXG4gICAgICBpc1RpbWU6IHRydWUsXG4gICAgICBzZXBlcmF0b3I6ICcsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnbWludXRlJyxcbiAgICAgIGZvcm1Db250cm9sTmFtZTogJ21pbnV0ZXMnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgbGVuZ3RoOiAyLFxuICAgICAgY2xhc3M6ICdjb2wtYXV0bycsXG4gICAgICB3aWR0aDogJzI1cHgnLFxuICAgICAgaXNUaW1lOiB0cnVlLFxuICAgICAgc2VwZXJhdG9yOiAnOicsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ3NlY29uZCcsXG4gICAgICBmb3JtQ29udHJvbE5hbWU6ICdzZWNvbmRzJyxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGxlbmd0aDogMixcbiAgICAgIGNsYXNzOiAnY29sLWF1dG8nLFxuICAgICAgd2lkdGg6ICcyNXB4JyxcbiAgICAgIGlzVGltZTogdHJ1ZSxcbiAgICAgIHNlcGVyYXRvcjogJzonLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdtZXJpZGllbScsXG4gICAgICBmb3JtQ29udHJvbE5hbWU6ICdtZXJpZGllbScsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBsZW5ndGg6IDIsXG4gICAgICBjbGFzczogJ2NvbC1hdXRvJyxcbiAgICAgIHdpZHRoOiAnMjVweCcsXG4gICAgICBpc1RpbWU6IHRydWUsXG4gICAgICBzZXBlcmF0b3I6ICc6JyxcbiAgICB9LFxuICBdO1xuXG4gIGdldCBkYXRlRlMoKSB7XG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZGF0ZTogbmV3IEZvcm1Db250cm9sPERhdGU+KG51bGwpLFxuICAgICAgaG91cnM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgbWludXRlczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgICBzZWNvbmRzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICAgIG1lcmlkaWVtOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihudWxsKSxcbiAgICAgIHJhd1ZhbHVlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkZWJvdW5jZXI6IERlYm91bmNlclNlcnZpY2UsXG4gICAgcHVibGljIHVTOiBVdGlsaXR5U2VydmljZSxcbiAgKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0ZUlucHV0Q2h1bmtzKSB7XG4gICAgICBpdGVtLnBsYWNlaG9sZGVyID0gJy0nLnJlcGVhdChpdGVtLmxlbmd0aCk7XG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPD0gMTE7IGluZGV4KyspIHtcbiAgICAgIHRoaXMudGltZUhvdXJzLnVwZGF0ZSgodGltZUhvdXJzKSA9PiB0aW1lSG91cnMuY29uY2F0KFtpbmRleF0pKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEwOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLnRpbWVNaW51dGVzLnVwZGF0ZSgodGltZU1pbnV0ZXMpID0+IHRpbWVNaW51dGVzLmNvbmNhdChbJzAnICsgaW5kZXhdKSk7XG4gICAgICB0aGlzLnRpbWVTZWNvbmRzLnVwZGF0ZSgodGltZVNlY29uZHMpID0+IHRpbWVTZWNvbmRzLmNvbmNhdChbJzAnICsgaW5kZXhdKSk7XG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMTA7IGluZGV4IDw9IDEyOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLnRpbWVNaW51dGVzLnVwZGF0ZSgodGltZU1pbnV0ZXMpID0+IHRpbWVNaW51dGVzLmNvbmNhdChbaW5kZXhdKSk7XG4gICAgICB0aGlzLnRpbWVTZWNvbmRzLnVwZGF0ZSgodGltZVNlY29uZHMpID0+IHRpbWVTZWNvbmRzLmNvbmNhdChbaW5kZXhdKSk7XG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMTM7IGluZGV4IDw9IDU5OyBpbmRleCsrKVxuICAgICAgdGhpcy50aW1lU2Vjb25kcy51cGRhdGUoKHRpbWVTZWNvbmRzKSA9PiB0aW1lU2Vjb25kcy5jb25jYXQoW2luZGV4XSkpO1xuICAgIGNvbnN0IGxhYmVsbGVyID0gdGhpcy5sYWJlbGxlcjtcbiAgICB0aGlzLm9wdGlvbkxhYmVsbGVyRnVuY3Rpb25zID0ge1xuICAgICAgYWNkOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uYWNjb3VudE5vLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIGJuazogKG9wdGlvbjogYW55KSA9PlxuICAgICAgICBsYWJlbGxlcihcbiAgICAgICAgICBvcHRpb24/LmFjY291bnROYW1lICtcbiAgICAgICAgICAgICcgIHwgICcgK1xuICAgICAgICAgICAgb3B0aW9uPy5hY2NvdW50Tm8gK1xuICAgICAgICAgICAgJyAgfCAgJyArXG4gICAgICAgICAgICBvcHRpb24/LmJhbmtOYW1lICtcbiAgICAgICAgICAgICcgIHwgICcgK1xuICAgICAgICAgICAgb3B0aW9uPy5ubyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICApLFxuICAgICAgY2NkOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uY29tcGFueUNvZGUsIG9wdGlvbj8uZGVzY3JpcHRpb24pLFxuICAgICAgY2Q6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5jb2RlLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIGNkdDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmNvZGUsIG9wdGlvbj8uZGVzY3JpcHRpb24gfHwgb3B0aW9uPy50aXRsZSksXG4gICAgICBjZjogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmNvZGUsIG9wdGlvbj8uZnVsbE5hbWUpLFxuICAgICAgY2c6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5jb2RlR3JvdXAsIG9wdGlvbj8uY29kZSksXG4gICAgICBjbDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmNvZGUsIG9wdGlvbj8ubGFiZWwpLFxuICAgICAgY21kOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uY29tcGFueSwgb3B0aW9uPy5kZXNjcmlwdGlvbiksXG4gICAgICBjbjogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmNvZGUsIG9wdGlvbj8ubmFtZSksXG4gICAgICBjdDogKG9wdGlvbjogSUNvZGVUaXRsZSkgPT4gbGFiZWxsZXIob3B0aW9uPy5jb2RlLCBvcHRpb24/LnRpdGxlKSxcbiAgICAgIGN1OiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uY3VyckNvZGUsIG9wdGlvbj8udGl0bGUpLFxuICAgICAgZ2Q6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5ncm91cCwgb3B0aW9uPy5kZXNjcmlwdGlvbiksXG4gICAgICBoYTogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmhpZXJBZ2VudE5vLCBvcHRpb24/LmFnZW50TmFtZSksXG4gICAgICBpZDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmlkLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIGlmOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uaWQsIG9wdGlvbj8uZnVsbE5hbWUpLFxuICAgICAgaWZsOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8udXNlcklkLCBgJHtvcHRpb24/LmZpcnN0TmFtZX0gJHtvcHRpb24/Lmxhc3ROYW1lfWApLFxuICAgICAgaWw6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5pZCwgb3B0aW9uPy5sYWJlbCksXG4gICAgICBpdDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmlkLCBvcHRpb24/LnRpdGxlKSxcbiAgICAgIG1kOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8ubWt0RXZlbnRDb2RlLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIG5hOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8ubm8sIG9wdGlvbj8uYW1vdW50KSxcbiAgICAgIHBkOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8ucGF5b3V0TWV0aG9kLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIHBlcDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LnBlcmlsQ29kZSwgb3B0aW9uPy5wZXJpbENvZGVEZXNjcmlwdGlvbiksXG4gICAgICBwYW06IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5wb2xpY3lOb1N1ZmZpeCwgb3B0aW9uPy5tZW1iZXJOYW1lKSxcbiAgICAgIG5mOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8ubm8sIG9wdGlvbj8uZnVsbE5hbWUpLFxuICAgICAgdGQ6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy50eXBlLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIHVkOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8udXNlck1lbnUsIG9wdGlvbj8uZGVzY3JpcHRpb24pLFxuICAgICAgdWY6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy51c2VyTmFtZSwgb3B0aW9uPy5mdWxsTmFtZSksXG4gICAgICB2bDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihudWxsLCBvcHRpb24/LmxhYmVsKSxcbiAgICAgIHZ2OiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8udmVyc2lvbk5vLCBvcHRpb24/LnZlcnNpb25EYXRlKSxcbiAgICB9O1xuICB9XG4gIGxhYmVsbGVyID0gRVZGdW5jdGlvbnMuc3RyQ29uY2F0ZW5hdG9yO1xuXG4gIG9wdGlvbnNGb3JtYXR0ZXI8VFJvdyA9IGFueT4oXG4gICAgb3B0aW9uczogVFJvd1tdLFxuICAgIGNvbmZpZzoge1xuICAgICAgdmFsdWVGaWVsZD86IGtleW9mIFRSb3c7XG4gICAgICBmb3JtYXR0ZXI/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gICAgICBsYWJlbFR5cGU/OiBPcHRpb25MYWJlbFR5cGU7XG4gICAgICBsYWJlbEZpZWxkPzoga2V5b2YgVFJvdyB8IChrZXlvZiBUUm93KVtdO1xuICAgICAgYXV0b1BpY2tWYWx1ZUZpZWxkPzogYm9vbGVhbjtcbiAgICAgIC8vIG9yaWdpbmFsUm93RmllbGQ/OiBrZXlvZiBUUm93O1xuICAgIH0sXG4gICk6IElPcHRpb248VFJvdz5bXSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgY29uc3QgdmFsdWVGaWVsZCA9IGNvbmZpZy52YWx1ZUZpZWxkLFxuICAgICAgZm9ybWF0dGVyID0gY29uZmlnLmZvcm1hdHRlcixcbiAgICAgIGxhYmVsVHlwZSA9IGNvbmZpZy5sYWJlbFR5cGUsXG4gICAgICBsYWJlbEZpZWxkcyA9IGNvbmZpZy5sYWJlbEZpZWxkXG4gICAgICAgID8gQXJyYXkuaXNBcnJheShjb25maWcubGFiZWxGaWVsZClcbiAgICAgICAgICA/IGNvbmZpZy5sYWJlbEZpZWxkXG4gICAgICAgICAgOiBbY29uZmlnLmxhYmVsRmllbGRdXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGF1dG9QaWNrVmFsdWVGaWVsZCA9IGNvbmZpZy5hdXRvUGlja1ZhbHVlRmllbGQ7XG4gICAgLy8gb3JpZ2luYWxSb3dGaWVsZCA9IGNvbmZpZy5vcmlnaW5hbFJvd0ZpZWxkO1xuICAgIGlmICghb3B0aW9ucz8ubGVuZ3RoKSByZXR1cm4gW107XG4gICAgaWYgKGZvcm1hdHRlcilcbiAgICAgIHJldHVybiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoe1xuICAgICAgICB2YWx1ZTogdmFsdWVGaWVsZCAmJiBvcHRpb24gPyBvcHRpb24/Llt2YWx1ZUZpZWxkXSA6IG9wdGlvbixcbiAgICAgICAgbGFiZWw6IGZvcm1hdHRlcihvcHRpb24pLFxuICAgICAgICBvcmlnaW5hbFJvdzogb3B0aW9uLFxuICAgICAgICBfaWQ6IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCksXG4gICAgICB9KSk7XG4gICAgaWYgKGxhYmVsVHlwZSlcbiAgICAgIHJldHVybiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZE9wdGlvbiA9IHRoaXMub3B0aW9uTGFiZWxsZXJGdW5jdGlvbnNbbGFiZWxUeXBlXShvcHRpb24pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlRmllbGRcbiAgICAgICAgICAgID8gb3B0aW9uPy5bdmFsdWVGaWVsZF1cbiAgICAgICAgICAgIDogYXV0b1BpY2tWYWx1ZUZpZWxkXG4gICAgICAgICAgICAgID8gZm9ybWF0dGVkT3B0aW9uLnZhbHVlXG4gICAgICAgICAgICAgIDogb3B0aW9uLFxuICAgICAgICAgIGxhYmVsOiBmb3JtYXR0ZWRPcHRpb24ubGFiZWwsXG4gICAgICAgICAgb3JpZ2luYWxSb3c6IG9wdGlvbixcbiAgICAgICAgICBfaWQ6IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICBpZiAobGFiZWxGaWVsZHMpXG4gICAgICByZXR1cm4gb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlRmllbGQgPyBvcHRpb24/Llt2YWx1ZUZpZWxkXSA6IG9wdGlvbixcbiAgICAgICAgbGFiZWw6IEVWRnVuY3Rpb25zLnN0ckNvbmNhdGVuYXRvcjIoXG4gICAgICAgICAgbGFiZWxGaWVsZHMubWFwKChsYWJlbEZpZWxkKSA9PiBvcHRpb24/LltsYWJlbEZpZWxkXSBhcyBzdHJpbmcpLFxuICAgICAgICAgICcgLSAnLFxuICAgICAgICApLFxuICAgICAgICBvcmlnaW5hbFJvdzogb3B0aW9uLFxuICAgICAgICBfaWQ6IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCksXG4gICAgICB9KSk7XG4gICAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb24pID0+ICh7XG4gICAgICB2YWx1ZTogb3B0aW9uLFxuICAgICAgbGFiZWw6IG9wdGlvbiBhcyBzdHJpbmcsXG4gICAgICBvcmlnaW5hbFJvdzogb3B0aW9uLFxuICAgICAgX2lkOiB0aGlzLnVTLmdlbmVyYXRlVVVJRCgpLFxuICAgIH0pKTtcbiAgfVxuXG4gIGxvZyhmb3JtKSB7XG4gICAgLy8gaWYgKCFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKVxuICAgIGNvbnNvbGUubG9nKGZvcm0pO1xuICB9XG5cbiAgZm9ybWF0VXNlcklucHV0KGU6IEV2ZW50LCBmb3JtOiB0eXBlb2YgdGhpcy5kYXRlRlMsIHNob3dUaW1lOiBib29sZWFuLCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5kZWJvdW5jZXIuZGVib3VuY2VyKHtcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmc6IHN0cmluZyA9IGUudGFyZ2V0Wyd2YWx1ZSddO1xuICAgICAgICAvLyBBdWcuIDEwLCAyMDIzLiAwMzowMjowMyBQTVxuICAgICAgICBpZiAoIWRhdGVTdHJpbmc/LnRyaW0oKSlcbiAgICAgICAgICBmb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgZGF0ZTogbnVsbCxcbiAgICAgICAgICAgIGhvdXJzOiBudWxsLFxuICAgICAgICAgICAgbWludXRlczogbnVsbCxcbiAgICAgICAgICAgIHNlY29uZHM6IG51bGwsXG4gICAgICAgICAgICBtZXJpZGllbTogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZGF0ZVN0cmluZy5pbmNsdWRlcygnLiAnKSkge1xuICAgICAgICAgICAgICBjb25zdCBbbW9udGhDaHVuaywgZGF5WWVhckNodW5rLCB0aW1lQ2h1bmtdID0gZGF0ZVN0cmluZy5zcGxpdCgnLiAnKTtcbiAgICAgICAgICAgICAgY29uc3QgbW9udGggPSBDb25maWcuU2hvcnRNb250aHNNYXBbbW9udGhDaHVuay50b0xvd2VyQ2FzZSgpXT8uaXNvU3RyO1xuICAgICAgICAgICAgICBjb25zdCBbZGF5LCB5ZWFyXSA9IGRheVllYXJDaHVuaz8uc3BsaXQoJywgJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gKTtcbiAgICAgICAgICAgICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2htcywgbWVyaWRpZW1dID0gdGltZUNodW5rPy5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSBobXM/LnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgICBzZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgbWVyaWRpZW06IHRoaXMudGltZU1lcmlkaWVtTWFwW21lcmlkaWVtPy50b0xvd2VyQ2FzZSgpXT8uaW5jcmVtZW50b3IsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgIGZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgY2h1bmtzID0gZGF0ZVN0cmluZy5zcGxpdCgnICcpLmZpbHRlcigoeCkgPT4geCAhPSAnJyk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNodW5rcyk7XG4gICAgICAgICAgICAgIC8vIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaHVua3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgIC8vICAgY2h1bmtzW2luZGV4XSA9IGNodW5rc1tpbmRleF0uc3BsaXQoJy4nKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAvLyBjb25zdCBkYXRlQ2h1bmsgPSBjaHVua3NbMF0uc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZUNodW5rcyA9IGNodW5rc1sxXS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgIGZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZCwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgnMCcucmVwZWF0KHRoaXMuZGF0ZUxlbmd0aEluZGV4W2ldKSArIGQpLnNsaWNlKC10aGlzLmRhdGVMZW5ndGhJbmRleFtpXSksXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCctJyksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgaG91cnM6IHRpbWVDaHVua3NbMF0sXG4gICAgICAgICAgICAgICAgICBtaW51dGVzOiB0aW1lQ2h1bmtzWzFdLFxuICAgICAgICAgICAgICAgICAgc2Vjb25kczogdGltZUNodW5rc1syXSxcbiAgICAgICAgICAgICAgICAgIG1lcmlkaWVtOiB0aGlzLnRpbWVNZXJpZGllbU1hcFt0aW1lQ2h1bmtzWzNdPy50b0xvd2VyQ2FzZSgpXT8uaW5jcmVtZW50b3IsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgIGZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShjaHVua3NbMF0uc3BsaXQoJy8nKS5yZXZlcnNlKCkuam9pbignLScpKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNodW5rcyk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1bmlxdWVLZXk6IGAke2lkfV9kYXRlRm9ybWF0dGVyYCxcbiAgICB9KTtcbiAgfVxuXG4gIHNlYXJjaFVzZXJzID0gKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgdXNlck5hbWU/OiBzdHJpbmc7IGZ1bGxOYW1lPzogc3RyaW5nIH1bXT4gPT4gb2YoW10pO1xuXG4gIG9uQ29udGVudENoYW5nZWQgPSA8VEYgZXh0ZW5kcyB7IFt4IGluIGtleW9mIFRGXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9PihcbiAgICAkZXZlbnQ6IENvbnRlbnRDaGFuZ2UsXG4gICAgZm9ybTogRm9ybUdyb3VwPFRGPixcbiAgICBmaWVsZDoga2V5b2YgVEYsXG4gICkgPT4ge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfTtcblxuICBpbnB1dENsYXNzID0gKFxuICAgIGlucENsOiBzdHJpbmcsXG4gICAgZGlydHk/OiBib29sZWFuLFxuICAgIHZhbGlkPzogYm9vbGVhbixcbiAgICBpbnZhbGlkPzogYm9vbGVhbixcbiAgICBzaG93VmFsaWRhdGlvbj86IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIGxldCBjbHMgPSBpbnBDbCArICcgZm9ybS1jb250cm9sJztcbiAgICBpZiAoc2hvd1ZhbGlkYXRpb24gJiYgZGlydHkpIHtcbiAgICAgIGNscyArPSB2YWxpZCA/ICcgYm9yZGVyY2hlY2snIDogaW52YWxpZCA/ICcgYm9yZGVydW5jaGVjaycgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGNscztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJT3B0aW9uPFRSb3cgPSBhbnk+IHtcbiAgdmFsdWU6IGFueTtcbiAgb3JpZ2luYWxSb3c6IFRSb3c7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIF9pZDogc3RyaW5nO1xufVxuIl19
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNdEMsTUFBTSxPQUFPLFlBQVk7SUFxR3ZCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDbkIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFPLElBQUksQ0FBQztZQUNqQyxLQUFLLEVBQUUsSUFBSSxXQUFXLENBQVMsSUFBSSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBUyxJQUFJLENBQUM7WUFDdEMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFTLElBQUksQ0FBQztZQUN0QyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQVMsSUFBSSxDQUFDO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBUyxJQUFJLENBQUM7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQ1MsU0FBMkIsRUFDM0IsRUFBa0I7UUFEbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsT0FBRSxHQUFGLEVBQUUsQ0FBZ0I7UUE5R2xCLGNBQVMsR0FBRyxNQUFNLENBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztR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RUFBRSxDQUFDLE1BQWtCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDakUsRUFBRSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQzlELEVBQUUsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQztZQUNqRSxFQUFFLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUM7WUFDckUsRUFBRSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDO1lBQzlELEVBQUUsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztZQUMzRCxHQUFHLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLFNBQVMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDMUYsRUFBRSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQ3hELEVBQUUsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztZQUN4RCxFQUFFLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUs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RyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzFFO3lDQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDYjtvQ0FDRCxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztvQ0FDcEIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0NBQ3RCLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO29DQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxXQUFXO2lDQUMxRSxDQUFDLENBQUM7NEJBQ0wsQ0FBQzs7Z0NBQ0MsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQ0FDZCxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUNBQ3pELENBQUMsQ0FBQzt3QkFDUCxDQUFDO3dCQUNELHVCQUF1QjtvQkFDekIsQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3ZCLENBQUM7WUFDTCxDQUFDO1lBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0I7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1VFUsWUFBWTtrSEFBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQ29kZVRpdGxlLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRVZGdW5jdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL2Jhc2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvaW5kZXguY29uZmlnJztcbmltcG9ydCB7IERlYm91bmNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy9kZWJvdW5jZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGVudENoYW5nZSB9IGZyb20gJ25neC1xdWlsbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFNlcnZpY2Uge1xuICByZWFkb25seSBvcHRpb25MYWJlbGxlckZ1bmN0aW9uczoge1xuICAgIFt4OiBzdHJpbmddOiAob3B0aW9uKSA9PiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfTtcbiAgfTtcbiAgcmVhZG9ubHkgdGltZUhvdXJzID0gc2lnbmFsPChzdHJpbmcgfCBudW1iZXIpW10+KFsnMTInXSk7XG4gIHJlYWRvbmx5IHRpbWVNaW51dGVzID0gc2lnbmFsPChzdHJpbmcgfCBudW1iZXIpW10+KFtdKTtcbiAgcmVhZG9ubHkgdGltZVNlY29uZHMgPSBzaWduYWw8KHN0cmluZyB8IG51bWJlcilbXT4oW10pO1xuICByZWFkb25seSB0aW1lTWVyaWRpZW0gPSBzaWduYWw8eyBsYWJlbDogJ2FtJyB8ICdwbSc7IGluY3JlbWVudG9yOiAwIHwgMTIgfVtdPihbXG4gICAgeyBsYWJlbDogJ2FtJywgaW5jcmVtZW50b3I6IDAgfSxcbiAgICB7IGxhYmVsOiAncG0nLCBpbmNyZW1lbnRvcjogMTIgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IHRpbWVNZXJpZGllbU1hcCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50aW1lTWVyaWRpZW0oKVxuICAgICAgLm1hcCgoeCkgPT4gKHsgLi4ueCwgX2xhYmVsOiB4LmxhYmVsLnRvTG93ZXJDYXNlKCkgfSkpXG4gICAgICAudG9NYXAoJ19sYWJlbCcpLFxuICApO1xuICByZWFkb25seSBkYXRlTGVuZ3RoSW5kZXggPSB7XG4gICAgMDogNCxcbiAgICAxOiAyLFxuICAgIDI6IDIsXG4gIH07XG4gIHJlYWRvbmx5IGRhdGVJbnB1dENodW5rczoge1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY2xhc3M6IHN0cmluZztcbiAgICB3aWR0aDogc3RyaW5nO1xuICAgIHNlcGFyYXRvcj86IHN0cmluZztcbiAgICBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBJbnB1dFR5cGU7XG4gICAgbGVuZ3RoOiBudW1iZXI7XG4gICAgaXNUaW1lPzogYm9vbGVhbjtcbiAgfVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnZGF5JyxcbiAgICAgIGZvcm1Db250cm9sTmFtZTogJ2RheScsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBsZW5ndGg6IDIsXG4gICAgICBjbGFzczogJ2NvbC0yJyxcbiAgICAgIHdpZHRoOiAnMzJweCcsXG4gICAgICAvLyBzZXBhcmF0b3I6ICcvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnbW9udGgnLFxuICAgICAgZm9ybUNvbnRyb2xOYW1lOiAnbW9udGgnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgbGVuZ3RoOiAzLFxuICAgICAgY2xhc3M6ICdjb2wtMicsXG4gICAgICB3aWR0aDogJzU1cHgnLFxuICAgICAgc2VwYXJhdG9yOiAnLycsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ3llYXInLFxuICAgICAgZm9ybUNvbnRyb2xOYW1lOiAneWVhcicsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBsZW5ndGg6IDQsXG4gICAgICBjbGFzczogJ2NvbC0zJyxcbiAgICAgIHdpZHRoOiAnNDVweCcsXG4gICAgICBzZXBhcmF0b3I6ICcvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnaG91cicsXG4gICAgICBmb3JtQ29udHJvbE5hbWU6ICdob3VycycsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBsZW5ndGg6IDIsXG4gICAgICBjbGFzczogJ2NvbC1hdXRvJyxcbiAgICAgIHdpZHRoOiAnMjVweCcsXG4gICAgICBpc1RpbWU6IHRydWUsXG4gICAgICBzZXBhcmF0b3I6ICcsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnbWludXRlJyxcbiAgICAgIGZvcm1Db250cm9sTmFtZTogJ21pbnV0ZXMnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgbGVuZ3RoOiAyLFxuICAgICAgY2xhc3M6ICdjb2wtYXV0bycsXG4gICAgICB3aWR0aDogJzI1cHgnLFxuICAgICAgaXNUaW1lOiB0cnVlLFxuICAgICAgc2VwYXJhdG9yOiAnOicsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ3NlY29uZCcsXG4gICAgICBmb3JtQ29udHJvbE5hbWU6ICdzZWNvbmRzJyxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGxlbmd0aDogMixcbiAgICAgIGNsYXNzOiAnY29sLWF1dG8nLFxuICAgICAgd2lkdGg6ICcyNXB4JyxcbiAgICAgIGlzVGltZTogdHJ1ZSxcbiAgICAgIHNlcGFyYXRvcjogJzonLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdtZXJpZGllbScsXG4gICAgICBmb3JtQ29udHJvbE5hbWU6ICdtZXJpZGllbScsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBsZW5ndGg6IDIsXG4gICAgICBjbGFzczogJ2NvbC1hdXRvJyxcbiAgICAgIHdpZHRoOiAnMjVweCcsXG4gICAgICBpc1RpbWU6IHRydWUsXG4gICAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICB9LFxuICBdO1xuXG4gIGdldCBkYXRlRlMoKSB7XG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZGF0ZTogbmV3IEZvcm1Db250cm9sPERhdGU+KG51bGwpLFxuICAgICAgaG91cnM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KG51bGwpLFxuICAgICAgbWludXRlczogbmV3IEZvcm1Db250cm9sPHN0cmluZz4obnVsbCksXG4gICAgICBzZWNvbmRzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICAgIG1lcmlkaWVtOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPihudWxsKSxcbiAgICAgIHJhd1ZhbHVlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPihudWxsKSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkZWJvdW5jZXI6IERlYm91bmNlclNlcnZpY2UsXG4gICAgcHVibGljIHVTOiBVdGlsaXR5U2VydmljZSxcbiAgKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0ZUlucHV0Q2h1bmtzKSB7XG4gICAgICBpdGVtLnBsYWNlaG9sZGVyID0gJy0nLnJlcGVhdChpdGVtLmxlbmd0aCk7XG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPD0gMTE7IGluZGV4KyspIHtcbiAgICAgIHRoaXMudGltZUhvdXJzLnVwZGF0ZSgodGltZUhvdXJzKSA9PiB0aW1lSG91cnMuY29uY2F0KFtpbmRleF0pKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEwOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLnRpbWVNaW51dGVzLnVwZGF0ZSgodGltZU1pbnV0ZXMpID0+IHRpbWVNaW51dGVzLmNvbmNhdChbJzAnICsgaW5kZXhdKSk7XG4gICAgICB0aGlzLnRpbWVTZWNvbmRzLnVwZGF0ZSgodGltZVNlY29uZHMpID0+IHRpbWVTZWNvbmRzLmNvbmNhdChbJzAnICsgaW5kZXhdKSk7XG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMTA7IGluZGV4IDw9IDEyOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLnRpbWVNaW51dGVzLnVwZGF0ZSgodGltZU1pbnV0ZXMpID0+IHRpbWVNaW51dGVzLmNvbmNhdChbaW5kZXhdKSk7XG4gICAgICB0aGlzLnRpbWVTZWNvbmRzLnVwZGF0ZSgodGltZVNlY29uZHMpID0+IHRpbWVTZWNvbmRzLmNvbmNhdChbaW5kZXhdKSk7XG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMTM7IGluZGV4IDw9IDU5OyBpbmRleCsrKVxuICAgICAgdGhpcy50aW1lU2Vjb25kcy51cGRhdGUoKHRpbWVTZWNvbmRzKSA9PiB0aW1lU2Vjb25kcy5jb25jYXQoW2luZGV4XSkpO1xuICAgIGNvbnN0IGxhYmVsbGVyID0gdGhpcy5sYWJlbGxlcjtcbiAgICB0aGlzLm9wdGlvbkxhYmVsbGVyRnVuY3Rpb25zID0ge1xuICAgICAgYWNkOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uYWNjb3VudE5vLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIGJuazogKG9wdGlvbjogYW55KSA9PlxuICAgICAgICBsYWJlbGxlcihcbiAgICAgICAgICBvcHRpb24/LmFjY291bnROYW1lICtcbiAgICAgICAgICAgICcgIHwgICcgK1xuICAgICAgICAgICAgb3B0aW9uPy5hY2NvdW50Tm8gK1xuICAgICAgICAgICAgJyAgfCAgJyArXG4gICAgICAgICAgICBvcHRpb24/LmJhbmtOYW1lICtcbiAgICAgICAgICAgICcgIHwgICcgK1xuICAgICAgICAgICAgb3B0aW9uPy5ubyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICApLFxuICAgICAgY2NkOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uY29tcGFueUNvZGUsIG9wdGlvbj8uZGVzY3JpcHRpb24pLFxuICAgICAgY2Q6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5jb2RlLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIGNkdDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmNvZGUsIG9wdGlvbj8uZGVzY3JpcHRpb24gfHwgb3B0aW9uPy50aXRsZSksXG4gICAgICBjZjogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmNvZGUsIG9wdGlvbj8uZnVsbE5hbWUpLFxuICAgICAgY2c6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5jb2RlR3JvdXAsIG9wdGlvbj8uY29kZSksXG4gICAgICBjbDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmNvZGUsIG9wdGlvbj8ubGFiZWwpLFxuICAgICAgY21kOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uY29tcGFueSwgb3B0aW9uPy5kZXNjcmlwdGlvbiksXG4gICAgICBjbjogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmNvZGUsIG9wdGlvbj8ubmFtZSksXG4gICAgICBjdDogKG9wdGlvbjogSUNvZGVUaXRsZSkgPT4gbGFiZWxsZXIob3B0aW9uPy5jb2RlLCBvcHRpb24/LnRpdGxlKSxcbiAgICAgIGN1OiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uY3VyckNvZGUsIG9wdGlvbj8udGl0bGUpLFxuICAgICAgZ2Q6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5ncm91cCwgb3B0aW9uPy5kZXNjcmlwdGlvbiksXG4gICAgICBoYTogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmhpZXJBZ2VudE5vLCBvcHRpb24/LmFnZW50TmFtZSksXG4gICAgICBpZDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmlkLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIGlmOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8uaWQsIG9wdGlvbj8uZnVsbE5hbWUpLFxuICAgICAgaWZsOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8udXNlcklkLCBgJHtvcHRpb24/LmZpcnN0TmFtZX0gJHtvcHRpb24/Lmxhc3ROYW1lfWApLFxuICAgICAgaWw6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5pZCwgb3B0aW9uPy5sYWJlbCksXG4gICAgICBpdDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LmlkLCBvcHRpb24/LnRpdGxlKSxcbiAgICAgIG1kOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8ubWt0RXZlbnRDb2RlLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIG5hOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8ubm8sIG9wdGlvbj8uYW1vdW50KSxcbiAgICAgIHBkOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8ucGF5b3V0TWV0aG9kLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIHBlcDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihvcHRpb24/LnBlcmlsQ29kZSwgb3B0aW9uPy5wZXJpbENvZGVEZXNjcmlwdGlvbiksXG4gICAgICBwYW06IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy5wb2xpY3lOb1N1ZmZpeCwgb3B0aW9uPy5tZW1iZXJOYW1lKSxcbiAgICAgIG5mOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8ubm8sIG9wdGlvbj8uZnVsbE5hbWUpLFxuICAgICAgdGQ6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy50eXBlLCBvcHRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIHVkOiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8udXNlck1lbnUsIG9wdGlvbj8uZGVzY3JpcHRpb24pLFxuICAgICAgdWY6IChvcHRpb246IGFueSkgPT4gbGFiZWxsZXIob3B0aW9uPy51c2VyTmFtZSwgb3B0aW9uPy5mdWxsTmFtZSksXG4gICAgICB2bDogKG9wdGlvbjogYW55KSA9PiBsYWJlbGxlcihudWxsLCBvcHRpb24/LmxhYmVsKSxcbiAgICAgIHZ2OiAob3B0aW9uOiBhbnkpID0+IGxhYmVsbGVyKG9wdGlvbj8udmVyc2lvbk5vLCBvcHRpb24/LnZlcnNpb25EYXRlKSxcbiAgICB9O1xuICB9XG4gIGxhYmVsbGVyID0gRVZGdW5jdGlvbnMuc3RyQ29uY2F0ZW5hdG9yO1xuXG4gIG9wdGlvbnNGb3JtYXR0ZXI8VFJvdyA9IGFueT4oXG4gICAgb3B0aW9uczogVFJvd1tdLFxuICAgIGNvbmZpZzoge1xuICAgICAgdmFsdWVGaWVsZD86IGtleW9mIFRSb3c7XG4gICAgICBmb3JtYXR0ZXI/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gICAgICBsYWJlbFR5cGU/OiBPcHRpb25MYWJlbFR5cGU7XG4gICAgICBsYWJlbEZpZWxkPzoga2V5b2YgVFJvdyB8IChrZXlvZiBUUm93KVtdO1xuICAgICAgYXV0b1BpY2tWYWx1ZUZpZWxkPzogYm9vbGVhbjtcbiAgICAgIC8vIG9yaWdpbmFsUm93RmllbGQ/OiBrZXlvZiBUUm93O1xuICAgIH0sXG4gICk6IElPcHRpb248VFJvdz5bXSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgY29uc3QgdmFsdWVGaWVsZCA9IGNvbmZpZy52YWx1ZUZpZWxkLFxuICAgICAgZm9ybWF0dGVyID0gY29uZmlnLmZvcm1hdHRlcixcbiAgICAgIGxhYmVsVHlwZSA9IGNvbmZpZy5sYWJlbFR5cGUsXG4gICAgICBsYWJlbEZpZWxkcyA9IGNvbmZpZy5sYWJlbEZpZWxkXG4gICAgICAgID8gQXJyYXkuaXNBcnJheShjb25maWcubGFiZWxGaWVsZClcbiAgICAgICAgICA/IGNvbmZpZy5sYWJlbEZpZWxkXG4gICAgICAgICAgOiBbY29uZmlnLmxhYmVsRmllbGRdXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGF1dG9QaWNrVmFsdWVGaWVsZCA9IGNvbmZpZy5hdXRvUGlja1ZhbHVlRmllbGQ7XG4gICAgLy8gb3JpZ2luYWxSb3dGaWVsZCA9IGNvbmZpZy5vcmlnaW5hbFJvd0ZpZWxkO1xuICAgIGlmICghb3B0aW9ucz8ubGVuZ3RoKSByZXR1cm4gW107XG4gICAgaWYgKGZvcm1hdHRlcilcbiAgICAgIHJldHVybiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoe1xuICAgICAgICB2YWx1ZTogdmFsdWVGaWVsZCAmJiBvcHRpb24gPyBvcHRpb24/Llt2YWx1ZUZpZWxkXSA6IG9wdGlvbixcbiAgICAgICAgbGFiZWw6IGZvcm1hdHRlcihvcHRpb24pLFxuICAgICAgICBvcmlnaW5hbFJvdzogb3B0aW9uLFxuICAgICAgICBfaWQ6IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCksXG4gICAgICB9KSk7XG4gICAgaWYgKGxhYmVsVHlwZSlcbiAgICAgIHJldHVybiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZE9wdGlvbiA9IHRoaXMub3B0aW9uTGFiZWxsZXJGdW5jdGlvbnNbbGFiZWxUeXBlXShvcHRpb24pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlRmllbGRcbiAgICAgICAgICAgID8gb3B0aW9uPy5bdmFsdWVGaWVsZF1cbiAgICAgICAgICAgIDogYXV0b1BpY2tWYWx1ZUZpZWxkXG4gICAgICAgICAgICAgID8gZm9ybWF0dGVkT3B0aW9uLnZhbHVlXG4gICAgICAgICAgICAgIDogb3B0aW9uLFxuICAgICAgICAgIGxhYmVsOiBmb3JtYXR0ZWRPcHRpb24ubGFiZWwsXG4gICAgICAgICAgb3JpZ2luYWxSb3c6IG9wdGlvbixcbiAgICAgICAgICBfaWQ6IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICBpZiAobGFiZWxGaWVsZHMpXG4gICAgICByZXR1cm4gb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlRmllbGQgPyBvcHRpb24/Llt2YWx1ZUZpZWxkXSA6IG9wdGlvbixcbiAgICAgICAgbGFiZWw6IEVWRnVuY3Rpb25zLnN0ckNvbmNhdGVuYXRvcjIoXG4gICAgICAgICAgbGFiZWxGaWVsZHMubWFwKChsYWJlbEZpZWxkKSA9PiBvcHRpb24/LltsYWJlbEZpZWxkXSBhcyBzdHJpbmcpLFxuICAgICAgICAgICcgLSAnLFxuICAgICAgICApLFxuICAgICAgICBvcmlnaW5hbFJvdzogb3B0aW9uLFxuICAgICAgICBfaWQ6IHRoaXMudVMuZ2VuZXJhdGVVVUlEKCksXG4gICAgICB9KSk7XG4gICAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb24pID0+ICh7XG4gICAgICB2YWx1ZTogb3B0aW9uLFxuICAgICAgbGFiZWw6IG9wdGlvbiBhcyBzdHJpbmcsXG4gICAgICBvcmlnaW5hbFJvdzogb3B0aW9uLFxuICAgICAgX2lkOiB0aGlzLnVTLmdlbmVyYXRlVVVJRCgpLFxuICAgIH0pKTtcbiAgfVxuXG4gIGxvZyhmb3JtKSB7XG4gICAgLy8gaWYgKCFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKVxuICAgIGNvbnNvbGUubG9nKGZvcm0pO1xuICB9XG5cbiAgZm9ybWF0VXNlcklucHV0KGU6IEV2ZW50LCBmb3JtOiB0eXBlb2YgdGhpcy5kYXRlRlMsIHNob3dUaW1lOiBib29sZWFuLCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5kZWJvdW5jZXIuZGVib3VuY2VyKHtcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmc6IHN0cmluZyA9IGUudGFyZ2V0Wyd2YWx1ZSddO1xuICAgICAgICAvLyBBdWcuIDEwLCAyMDIzLiAwMzowMjowMyBQTVxuICAgICAgICBpZiAoIWRhdGVTdHJpbmc/LnRyaW0oKSlcbiAgICAgICAgICBmb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgZGF0ZTogbnVsbCxcbiAgICAgICAgICAgIGhvdXJzOiBudWxsLFxuICAgICAgICAgICAgbWludXRlczogbnVsbCxcbiAgICAgICAgICAgIHNlY29uZHM6IG51bGwsXG4gICAgICAgICAgICBtZXJpZGllbTogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZGF0ZVN0cmluZy5pbmNsdWRlcygnLiAnKSkge1xuICAgICAgICAgICAgICBjb25zdCBbbW9udGhDaHVuaywgZGF5WWVhckNodW5rLCB0aW1lQ2h1bmtdID0gZGF0ZVN0cmluZy5zcGxpdCgnLiAnKTtcbiAgICAgICAgICAgICAgY29uc3QgbW9udGggPSBDb25maWcuU2hvcnRNb250aHNNYXBbbW9udGhDaHVuay50b0xvd2VyQ2FzZSgpXT8uaXNvU3RyO1xuICAgICAgICAgICAgICBjb25zdCBbZGF5LCB5ZWFyXSA9IGRheVllYXJDaHVuaz8uc3BsaXQoJywgJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gKTtcbiAgICAgICAgICAgICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2htcywgbWVyaWRpZW1dID0gdGltZUNodW5rPy5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSBobXM/LnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgICBzZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgbWVyaWRpZW06IHRoaXMudGltZU1lcmlkaWVtTWFwW21lcmlkaWVtPy50b0xvd2VyQ2FzZSgpXT8uaW5jcmVtZW50b3IsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgIGZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgY2h1bmtzID0gZGF0ZVN0cmluZy5zcGxpdCgnICcpLmZpbHRlcigoeCkgPT4geCAhPSAnJyk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNodW5rcyk7XG4gICAgICAgICAgICAgIC8vIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaHVua3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgIC8vICAgY2h1bmtzW2luZGV4XSA9IGNodW5rc1tpbmRleF0uc3BsaXQoJy4nKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAvLyBjb25zdCBkYXRlQ2h1bmsgPSBjaHVua3NbMF0uc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZUNodW5rcyA9IGNodW5rc1sxXS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgIGZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZCwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgnMCcucmVwZWF0KHRoaXMuZGF0ZUxlbmd0aEluZGV4W2ldKSArIGQpLnNsaWNlKC10aGlzLmRhdGVMZW5ndGhJbmRleFtpXSksXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCctJyksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgaG91cnM6IHRpbWVDaHVua3NbMF0sXG4gICAgICAgICAgICAgICAgICBtaW51dGVzOiB0aW1lQ2h1bmtzWzFdLFxuICAgICAgICAgICAgICAgICAgc2Vjb25kczogdGltZUNodW5rc1syXSxcbiAgICAgICAgICAgICAgICAgIG1lcmlkaWVtOiB0aGlzLnRpbWVNZXJpZGllbU1hcFt0aW1lQ2h1bmtzWzNdPy50b0xvd2VyQ2FzZSgpXT8uaW5jcmVtZW50b3IsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgIGZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShjaHVua3NbMF0uc3BsaXQoJy8nKS5yZXZlcnNlKCkuam9pbignLScpKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNodW5rcyk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1bmlxdWVLZXk6IGAke2lkfV9kYXRlRm9ybWF0dGVyYCxcbiAgICB9KTtcbiAgfVxuXG4gIHNlYXJjaFVzZXJzID0gKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgdXNlck5hbWU/OiBzdHJpbmc7IGZ1bGxOYW1lPzogc3RyaW5nIH1bXT4gPT4gb2YoW10pO1xuXG4gIG9uQ29udGVudENoYW5nZWQgPSA8VEYgZXh0ZW5kcyB7IFt4IGluIGtleW9mIFRGXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9PihcbiAgICAkZXZlbnQ6IENvbnRlbnRDaGFuZ2UsXG4gICAgZm9ybTogRm9ybUdyb3VwPFRGPixcbiAgICBmaWVsZDoga2V5b2YgVEYsXG4gICkgPT4ge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfTtcblxuICBpbnB1dENsYXNzID0gKFxuICAgIGlucENsOiBzdHJpbmcsXG4gICAgZGlydHk/OiBib29sZWFuLFxuICAgIHZhbGlkPzogYm9vbGVhbixcbiAgICBpbnZhbGlkPzogYm9vbGVhbixcbiAgICBzaG93VmFsaWRhdGlvbj86IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIGxldCBjbHMgPSBpbnBDbCArICcgZm9ybS1jb250cm9sJztcbiAgICBpZiAoc2hvd1ZhbGlkYXRpb24gJiYgZGlydHkpIHtcbiAgICAgIGNscyArPSB2YWxpZCA/ICcgYm9yZGVyY2hlY2snIDogaW52YWxpZCA/ICcgYm9yZGVydW5jaGVjaycgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGNscztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJT3B0aW9uPFRSb3cgPSBhbnk+IHtcbiAgdmFsdWU6IGFueTtcbiAgb3JpZ2luYWxSb3c6IFRSb3c7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIF9pZDogc3RyaW5nO1xufVxuIl19