vcomply-workflow-engine 7.4.6 → 7.4.8

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.
@@ -2,6 +2,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import * as XLSX from 'xlsx';
3
3
  import { ASSETS } from '../constants/assets.constants';
4
4
  import { RESPONSIBILITY } from '../constants/xlsx.constant';
5
+ import { FILE_VALIDATION_MESSAGES } from '../constants/responsibility';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../workflow-services/add-risk.service";
7
8
  import * as i2 from "../workflow-services/auth.service";
@@ -121,6 +122,24 @@ export class AddMultipleResponsibilityContainerComponent {
121
122
  isCorrectFile =
122
123
  this.bulkUploadService.checkCorrectFile(excelData1, 2) ||
123
124
  this.bulkUploadService.checkCorrectFile(excelData2, 2);
125
+ const frequencyHeaders = this.bulkUploadService.getHeaderRows(excelData1);
126
+ const ongoingHeaders = this.bulkUploadService.getHeaderRows(excelData2);
127
+ const columnError = this.bulkUploadService.validateResponsibilityHeaders([
128
+ { ...frequencyHeaders, sheet: 'frequency' },
129
+ { ...ongoingHeaders, sheet: 'ongoing' },
130
+ ]);
131
+ if (columnError === 'missing') {
132
+ this.errorMessage = FILE_VALIDATION_MESSAGES.HEADERS_MISSING;
133
+ this.isWrongFormat = true;
134
+ this.fileValue = '';
135
+ return;
136
+ }
137
+ if (columnError === 'extra') {
138
+ this.errorMessage = FILE_VALIDATION_MESSAGES.EXTRA_COLUMNS;
139
+ this.isWrongFormat = true;
140
+ this.fileValue = '';
141
+ return;
142
+ }
124
143
  templateInfo.memberId = tempList[0][RESPONSIBILITY.userIndex.currentUser];
125
144
  }
126
145
  else {
@@ -209,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
209
228
  }], orgDetails: [{
210
229
  type: Input
211
230
  }] } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFJN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7QUFXNUQsTUFBTSxPQUFPLDJDQUEyQztJQTBCdEQsWUFDVSxXQUEyQixFQUMzQixXQUF3QixFQUN4QixpQkFBb0M7UUFGcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUE1QjlDLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDaEIsbUJBQWMsR0FBVyxpQkFBaUIsQ0FBQztRQUMzQyxxQkFBZ0IsR0FBVyxpQkFBaUIsQ0FBQztRQUM3QyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUVwQixlQUFVLEdBQUcsS0FBSyxD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a0JBUnZELFNBQVM7K0JBQ0UsMkNBQTJDOytKQTRCM0MsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWRkUmlza1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hZGQtcmlzay5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCdWxrVXBsb2FkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2J1bGstdXBsb2FkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJFU1BPTlNJQklMSVRZIH0gZnJvbSAnLi4vY29uc3RhbnRzL3hsc3guY29uc3RhbnQnO1xyXG50eXBlIEFPQSA9IGFueVtdW107XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyLmNvbXBvbmVudC5sZXNzJyxcclxuICAgICcuLi9mb3Jtcy5sZXNzJyxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQVNTRVRTID0gQVNTRVRTO1xyXG4gIGRvd25sb2FkU3RhdHVzOiBzdHJpbmcgPSAnTk9UX0RPV05MT0FESU5HJztcclxuICBkb3dubG9hZFN0YXR1c1YyOiBzdHJpbmcgPSAnTk9UX0RPV05MT0FESU5HJztcclxuICBkb3dubG9hZFBlcmNlbnQgPSAwO1xyXG4gIGZpbGVWYWx1ZTogYW55O1xyXG4gIHNob3dTbWlsZXkgPSBmYWxzZTtcclxuICByZXNwb25zaWJpbGl0eURhdGEhOiBhbnk7XHJcbiAgZmlsZU5hbWUgPSAnJztcclxuICBzaW5nbGVUYWJSZXNwb25zaWJpbGl0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG11bHRpVGFiUmVzcG9uc2liaWxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gIGVycm9yTWVzc2FnZSA9ICcgaW52YWxpZCBmaWxlIGVycm9yJztcclxuICBtZW1iZXJfb2JqX2lkID0gJyc7XHJcbiAgYnVsa1VwbG9hZEZsYWchOiBib29sZWFuO1xyXG4gIGRlcGxveWVkRGF0ZTogbnVtYmVyID0gMTY3NzE1MDg3NTtcclxuICBtZW1iZXJJZDogYW55ID0gJyc7XHJcbiAgUkVTUE9OU0lCSUxJVFkgPSBSRVNQT05TSUJJTElUWTtcclxuXHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgZmVhdHVyZSE6IGFueTtcclxuICBASW5wdXQoKSBvcmdEZXRhaWxzITogYW55O1xyXG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByaXNrU2VydmljZTogQWRkUmlza1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgYnVsa1VwbG9hZFNlcnZpY2U6IEJ1bGtVcGxvYWRTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkudXNlcj8udWlkO1xyXG4gICAgdGhpcy5idWxrVXBsb2FkRmxhZyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxyXG4gICAgICAnZmZfYnVsa19yZXNwb25zaWJpbGl0eSdcclxuICAgICk7XHJcbiAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXHJcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9zaW1wbGlmaWNhdGlvbidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlKHZlcnNpb24/OiBhbnkpIHtcclxuICAgIHZlcnNpb24gIT09ICd2MidcclxuICAgICAgPyAodGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORycpXHJcbiAgICAgIDogKHRoaXMuZG93bmxvYWRTdGF0dXNWMiA9ICdET1dOTE9BRElORycpO1xyXG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xyXG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKS5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSBgRW50cnVzdCBSZXNwb25zaWJpbGl0aWVzLSR7ZG93bmxvYWREYXRlWzJdfS0ke2Rvd25sb2FkRGF0ZVsxXX0tJHtkb3dubG9hZERhdGVbM119Lnhsc3hgO1xyXG5cclxuICAgIHRoaXMucmlza1NlcnZpY2UuZG93bmxvYWRSZXNwb25zaWJpbGl0eVRlbXBsYXRlKHZlcnNpb24pLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxvYWRlZCkge1xyXG4gICAgICAgICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAxMDAgKiAoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRhdGEuYm9keSkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvd25sb2FkU3RhdHVzID0gdGhpcy5yaXNrU2VydmljZS5kb3duTG9hZEZpbGUoXHJcbiAgICAgICAgICAgICAgZGF0YS5ib2R5LFxyXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94bHN4JyxcclxuICAgICAgICAgICAgICBmaWxlTmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB2ZXJzaW9uICE9PSAndjInXHJcbiAgICAgICAgICAgICAgPyAodGhpcy5kb3dubG9hZFN0YXR1cyA9IGRvd25sb2FkU3RhdHVzKVxyXG4gICAgICAgICAgICAgIDogKHRoaXMuZG93bmxvYWRTdGF0dXNWMiA9IGRvd25sb2FkU3RhdHVzKTtcclxuICAgICAgICAgIH0sIDE1MDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgdmVyc2lvbiAhPT0gJ3YyJ1xyXG4gICAgICAgICAgPyAodGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJylcclxuICAgICAgICAgIDogKHRoaXMuZG93bmxvYWRTdGF0dXNWMiA9ICdET1dOTE9BREVEJyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRlZEZpbGVEYXRhITogYW55O1xyXG5cclxuICB1cGxvYWRlZEZpbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBsZXQgaXNDb3JyZWN0RmlsZSA9IHRydWU7XHJcbiAgICAgIGxldCByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB7XHJcbiAgICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgICByZXBvcnRzOiBbXSxcclxuICAgICAgfTtcclxuICAgICAgbGV0IHRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgICAgIHJjTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICAgICAgbWVtYmVySWQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmZpbGVOYW1lID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLm5hbWU7XHJcbiAgICAgIC8vIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGV2ZW50LnRhcmdldC5maWxlcyk7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlRGF0YSA9IGV2ZW50O1xyXG4gICAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IGV2ZW50LnRhcmdldCBhcyBEYXRhVHJhbnNmZXI7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY3VybHlcclxuICAgICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggIT09IDEpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIG11bHRpcGxlIGZpbGVzJyk7XHJcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnN0cjogc3RyaW5nID0gZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgICAgbGV0IHNoZWV0RGF0YSA9ICcnO1xyXG4gICAgICAgIGxldCBtZW1iZXJBcnJheTogYW55W10gPSBbXTtcclxuICAgICAgICBpZiAod2I/LlNoZWV0TmFtZXM/Lmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIGNvbnN0IHNoZWV0RGF0YSA9IHdiLlNoZWV0TmFtZXNbUkVTUE9OU0lCSUxJVFkuc2hlZXRJbmRleC5kYXRhXTsgLy8gZ2V0IGhpZGRlbiBEYXRhIHNoZWV0XHJcbiAgICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbc2hlZXREYXRhXTtcclxuICAgICAgICAgIGNvbnN0IHREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHRlbXBEYXRhLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcjogMSxcclxuICAgICAgICAgIH0pIGFzIEFPQTtcclxuICAgICAgICAgIGNvbnN0IHRlbXBMaXN0ID0gdERhdGEuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKCF0ZW1wTGlzdFtpXVszXSkge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG1lbWJlckFycmF5LnB1c2godGVtcExpc3RbaV1bM10pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGV4Y2VsU2hlZXROYW1lMSA9IHdiLlNoZWV0TmFtZXNbUkVTUE9OU0lCSUxJVFkuc2hlZXRJbmRleC5mcmVxdWVuY3lSZXNwb25zaWJpbGl0eV07XHJcbiAgICAgICAgICBjb25zdCBleGNlbERhdGExOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1tleGNlbFNoZWV0TmFtZTFdO1xyXG4gICAgICAgICAgY29uc3QgZXhjZWxTaGVldE5hbWUyID0gd2IuU2hlZXROYW1lc1tSRVNQT05TSUJJTElUWS5zaGVldEluZGV4Lm9uR29pbmdSZXNwb25zaWJpbGl0eV07XHJcbiAgICAgICAgICBjb25zdCBleGNlbERhdGEyOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1tleGNlbFNoZWV0TmFtZTJdO1xyXG4gICAgICAgICAgaXNFbXB0eSA9XHJcbiAgICAgICAgICAgIHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuaGFzRGF0YUluTGlzdChleGNlbERhdGExLCA3KSAmJlxyXG4gICAgICAgICAgICB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmhhc0RhdGFJbkxpc3QoZXhjZWxEYXRhMiwgNykgXHJcbiAgICAgICAgICBpc0NvcnJlY3RGaWxlID1cclxuICAgICAgICAgICAgdGhpcy5idWxrVXBsb2FkU2VydmljZS5jaGVja0NvcnJlY3RGaWxlKGV4Y2VsRGF0YTEsIDIpIHx8XHJcbiAgICAgICAgICAgIHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuY2hlY2tDb3JyZWN0RmlsZShleGNlbERhdGEyLCAyKSBcclxuICAgICAgICAgIHRlbXBsYXRlSW5mby5tZW1iZXJJZCA9IHRlbXBMaXN0WzBdW1JFU1BPTlNJQklMSVRZLnVzZXJJbmRleC5jdXJyZW50VXNlcl07XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBzaGVldERhdGEgPSB3Yi5TaGVldE5hbWVzWzFdO1xyXG4gICAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3NoZWV0RGF0YV07XHJcbiAgICAgICAgICBjb25zdCB0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih0ZW1wRGF0YSwge1xyXG4gICAgICAgICAgICBoZWFkZXI6IDEsXHJcbiAgICAgICAgICB9KSBhcyBBT0E7XHJcbiAgICAgICAgICBjb25zdCB0ZW1wTGlzdCA9IHREYXRhLmZpbHRlcihcclxuICAgICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgY29uc3QgZXhjZWxTaGVldE5hbWUgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICAgICAgY29uc3QgZXhjZWxEYXRhOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1tleGNlbFNoZWV0TmFtZV07XHJcbiAgICAgICAgICBpc0VtcHR5ID0gdGhpcy5idWxrVXBsb2FkU2VydmljZS5oYXNEYXRhSW5MaXN0KGV4Y2VsRGF0YSwgMik7XHJcbiAgICAgICAgICBpc0NvcnJlY3RGaWxlID0gdGhpcy5idWxrVXBsb2FkU2VydmljZS5jaGVja0NvcnJlY3RGaWxlKGV4Y2VsRGF0YSwgMCk7XHJcbiAgICAgICAgICB0ZW1wbGF0ZUluZm8ubWVtYmVySWQgPSB0ZW1wTGlzdFswXVsyNV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5maWxlTmFtZS5zdWJzdHIoLTUpICE9PSAnLnhsc3gnKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAgICAgJyBSRVRSWSc7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5tZW1iZXJfb2JqX2lkICE9IHRlbXBsYXRlSW5mby5tZW1iZXJJZCB8fFxyXG4gICAgICAgICAgIW1lbWJlckFycmF5LmluY2x1ZGVzKHRoaXMubWVtYmVyX29ial9pZClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICAgICAnIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1lvdSBoYXZlIHVwbG9hZGVkIGEgYmxhbmsgdGVtcGxhdGUuIFBsZWFzZSBhZGQgZGV0YWlscyBmb3IgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZpbGVWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzQ29ycmVjdEZpbGUpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICAgICAnIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh3Yj8uU2hlZXROYW1lcz8ubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgdGhpcy5tdWx0aVRhYlJlc3BvbnNpYmlsaXR5ID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaW5nbGVUYWJSZXNwb25zaWJpbGl0eSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJCcm93c2VGaWxlKCkge1xyXG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcclxuICAgIGlmIChnZXRGaWxlKSB7XHJcbiAgICAgIGdldEZpbGUuY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNpbmdsZVRhYlJlc3BvbnNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICB0aGlzLm11bHRpVGFiUmVzcG9uc2liaWxpdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVZhbHVlID0gJyc7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCI+XHJcbiAgPCEtLSBtYWluIGNvbnRhaW5lciBzdGFydHMgaGVyZSAtLT5cclxuICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stYm9keVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnNwcmVhZHNoZWV0X211bHRpcGxlX2NhdGVnb3J5XCIgYWx0PVwiXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxoND5Zb3UgY2FuIGVudHJ1c3QgbXVsdGlwbGUgcmVzcG9uc2liaWxpdGllcyBpbiBqdXN0IHR3byBlYXN5IHN0ZXBzOjwvaDQ+XHJcbiAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuICAgICAgICA8bGk+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGFuZCBmaWxsIGluIHRoZSBkZXRhaWxzLjwvbGk+XHJcbiAgICAgICAgPGxpPlVwbG9hZCB0aGUgLnhsc3ggZmlsZSBhbmQgeW914oCZcmUgZ29vZCB0byBnbyE8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgICAgPCEtLSBib3RoIG9sZCBhbmQgbmV3IHRlbXBsYXRlIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQtYnRuXCIgKm5nSWY9XCJcclxuICAgICAgICAgIGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JykgJiZcclxuICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2J1bGtfcmVzcG9uc2liaWxpdHknKSAmJlxyXG4gICAgICAgICAgb3JnRGV0YWlscz8uZG9jX3V0YyA8IGRlcGxveWVkRGF0ZVxyXG4gICAgICAgIFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJkb3dubG9hZFwiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdOT1RfRE9XTkxPQURJTkcnXCIgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIEV4aXN0aW5nIFRlbXBsYXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcclxuICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ0RPV05MT0FERUQnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzcyBjb21wbGV0ZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZSAtJm5ic3A7PGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj48L2Rpdj4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvckRpdlwiPk9SPC9kaXY+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJkb3dubG9hZFwiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ05PVF9ET1dOTE9BRElORydcIiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIE5ldyBUZW1wbGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURJTkcnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcclxuICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURFRCdcIiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzIGNvbXBsZXRlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlIC0mbmJzcDs8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj48L2Rpdj4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzVjIgPT09ICdET1dOTE9BREVEJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cclxuICAgICAgICAgICAgSXMgdGhlIGZpbGUgbm90IGRvd25sb2FkZWQ/XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoJ3YyJylcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBvbmx5IGZvciBuZXcgdGVtcGxhdGUgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1idG5cIiAqbmdJZj1cIlxyXG4gICAgICAgICAgKGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYnVsa19yZXNwb25zaWJpbGl0eScpICYmXHJcbiAgICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2JvdGhfYnVsa19yZXNwb25zaWJpbGl0eScpKSB8fFxyXG4gICAgICAgICAgKGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYnVsa19yZXNwb25zaWJpbGl0eScpICYmXHJcbiAgICAgICAgICAgIGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JykpIHx8XHJcbiAgICAgICAgICBvcmdEZXRhaWxzPy5kb2NfdXRjID4gZGVwbG95ZWREYXRlXHJcbiAgICAgICAgXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRvd25sb2FkXCIgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnTk9UX0RPV05MT0FESU5HJ1wiIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFiOzwvaT4gRG93bmxvYWQgVGVtcGxhdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FESU5HJ1wiIGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIj5cclxuICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXHJcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FERUQnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzcyBjb21wbGV0ZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZSAtJm5ic3A7PGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+PC9kaXY+IC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gb25seSBmb3Igb2xkIHRlbXBsYXRlIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQtYnRuXCIgKm5nSWY9XCJcclxuICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2J1bGtfcmVzcG9uc2liaWxpdHknKSAmJlxyXG4gICAgICAgICAgIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JylcclxuICAgICAgICBcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZG93bmxvYWRcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWI7PC9pPiBEb3dubG9hZCBUZW1wbGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cclxuICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXHJcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXQgfHwgaXNGaWxlRW1wdHlcIj5cclxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48aW5wdXQgdHlwZT1cImZpbGVcIiBbKG5nTW9kZWwpXT1cImZpbGVWYWx1ZVwiIGlkPVwiZmlsZUlucHV0XCIgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiBhY2NlcHQ9XCIueGxzeFwiXHJcbiAgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiIG11bHRpcGxlIC8+XHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmUgKm5nSWY9XCJzaG93U21pbGV5XCIgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxyXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIiAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG5cclxuPGFwcC1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkgKm5nSWY9XCJzaW5nbGVUYWJSZXNwb25zaWJpbGl0eVwiIFt1cGxvYWRlZEZpbGVdPVwidXBsb2FkZWRGaWxlRGF0YVwiXHJcbiAgKGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eSk9XCJjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkoJGV2ZW50KVwiIFtmZWF0dXJlZmxhZ109XCJpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZFwiXHJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvYXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eT5cclxuXHJcbjxsaWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiICpuZ0lmPVwibXVsdGlUYWJSZXNwb25zaWJpbGl0eVwiIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxyXG4gIFt1cGxvYWRlZEZpbGVdPVwidXBsb2FkZWRGaWxlRGF0YVwiIChjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkpPVwiY2xvc2VBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5KCRldmVudClcIlxyXG4gIFtmZWF0dXJlZmxhZ109XCJpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZFwiIFtmZWF0dXJlXT1cImZlYXR1cmVcIj48L2xpYi1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktd2l0aC10YWI+Il19
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFJN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFXdkUsTUFBTSxPQUFPLDJDQUEyQztJQTBCdEQsWUFDVSxXQUEyQixFQUMzQixXQUF3QixFQUN4QixpQkFBb0M7UUFGcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUE1QjlDLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDaEIsbUJBQWMsR0FBVyxpQkFBaUIsQ0FBQztRQUMzQyxxQkFBZ0IsR0FBVyxpQkFBaUIsQ0FBQztRQUM3QyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUVwQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFDekMsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcscUJBQXFCLENBQUM7UUFDckMsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsaUJBQVksR0FBVyxVQUFVLENBQUM7UUFDbEMsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUV0QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHN0MsK0JBQTBCLEdBQVksS0FBSyxDQUFDO0lBTXhDLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUNqRCx3QkFBd0IsQ0FDekIsQ0FBQztRQUNGLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUM3RCxrQ0FBa0MsQ0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFhO1FBQzVCLE9BQU8sS0FBSyxJQUFJO1lBQ2QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLDRCQUE0QixZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRTFHLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUNoRSxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekQ7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FDbEQsSUFBSSxDQUFDLElBQUksRUFDVCxrQkFBa0IsRUFDbEIsUUFBUSxDQUNULENBQUM7b0JBQ0YsT0FBTyxLQUFLLElBQUk7d0JBQ2QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7d0JBQ3hDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ1Y7UUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxLQUFLLElBQUk7Z0JBQ2QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFJRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJO1lBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLHdCQUF3QixHQUFHO2dCQUM3QixNQUFNLEVBQUUsRUFBRTtnQkFDVixPQUFPLEVBQUUsRUFBRTthQUNaLENBQUM7WUFDRixJQUFJLFlBQVksR0FBRztnQkFDakIsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLE1BQU0sRUFBRSxFQUFFO2dCQUNWLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixhQUFhLEVBQUUsRUFBRTtnQkFDakIsUUFBUSxFQUFFLEVBQUU7YUFDYixDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDM0MsK0NBQStDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDOUIsTUFBTSxNQUFNLEdBQWlCLEtBQUssQ0FBQyxNQUFzQixDQUFDO1lBQzFELGtDQUFrQztZQUNsQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUMvQyxNQUFNLE1BQU0sR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDekIsTUFBTSxJQUFJLEdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxHQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7Z0JBQ25CLElBQUksV0FBVyxHQUFVLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQzlCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtvQkFDekYsTUFBTSxRQUFRLEdBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRTt3QkFDL0MsTUFBTSxFQUFFLENBQUM7cUJBQ1YsQ0FBUSxDQUFDO29CQUNWLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQzNCLENBQUMsV0FBZ0IsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQzdDLENBQUM7b0JBQ0YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7NEJBQ25CLE1BQU07eUJBQ1A7d0JBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbEM7b0JBRUQsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLENBQUM7b0JBQ3pGLE1BQU0sVUFBVSxHQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM5RCxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztvQkFDdkYsTUFBTSxVQUFVLEdBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzlELE9BQU87d0JBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDOzRCQUNuRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFDckQsYUFBYTt3QkFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDekQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN4RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsNkJBQTZCLENBQUM7d0JBQ3ZFLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO3dCQUMzQyxFQUFFLEdBQUcsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7d0JBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsd0JBQXdCLENBQUMsZUFBZSxDQUFDO3dCQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7d0JBQ3BCLE9BQU87cUJBQ1I7b0JBQ0QsSUFBSSxXQUFXLEtBQUssT0FBTyxFQUFFO3dCQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLHdCQUF3QixDQUFDLGFBQWEsQ0FBQzt3QkFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7d0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO3dCQUNwQixPQUFPO3FCQUNSO29CQUNELFlBQVksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBRTNFO3FCQUFNO29CQUNMLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLE1BQU0sUUFBUSxHQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUU7d0JBQy9DLE1BQU0sRUFBRSxDQUFDO3FCQUNWLENBQVEsQ0FBQztvQkFDVixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUMzQixDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUM3QyxDQUFDO29CQUVGLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3hDLE1BQU0sU0FBUyxHQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUM1RCxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzdELGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN0RSxZQUFZLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDekM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sRUFBRTtvQkFDeEMsSUFBSSxDQUFDLFlBQVk7d0JBQ2Ysa0dBQWtHOzRCQUNsRyxRQUFRLENBQUM7b0JBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLE9BQU87aUJBQ1I7Z0JBQ0QsSUFDRSxJQUFJLENBQUMsYUFBYSxJQUFJLFlBQVksQ0FBQyxRQUFRO29CQUMzQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUN6QztvQkFDQSxJQUFJLENBQUMsWUFBWTt3QkFDZixrR0FBa0c7NEJBQ2xHLFFBQVEsQ0FBQztvQkFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDeEIsT0FBTztpQkFDUjtnQkFFRCxJQUFJLE9BQU8sRUFBRTtvQkFDWCxJQUFJLENBQUMsWUFBWTt3QkFDZix3RkFBd0YsQ0FBQztvQkFDM0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLFlBQVk7d0JBQ2Ysa0dBQWtHOzRCQUNsRyxRQUFRLENBQUM7b0JBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUMxQixPQUFPO2lCQUNSO2dCQUNELElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM5QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2lCQUNwQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO2lCQUNyQztZQUNILENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUM7UUFBQyxPQUFPLENBQU0sRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELDhCQUE4QixDQUFDLEtBQVU7UUFDdkMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7K0dBNU9VLDJDQUEyQzttR0FBM0MsMkNBQTJDLHdMQ25CeEQsdzFOQWdJNEc7OzRGRDdHL0YsMkNBQTJDO2tCQVJ2RCxTQUFTOytCQUNFLDJDQUEyQzsrSkE0QjNDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFkZFJpc2tTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYWRkLXJpc2suc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnVsa1VwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9idWxrLXVwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBSRVNQT05TSUJJTElUWSB9IGZyb20gJy4uL2NvbnN0YW50cy94bHN4LmNvbnN0YW50JztcclxuaW1wb3J0IHsgRklMRV9WQUxJREFUSU9OX01FU1NBR0VTIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Jlc3BvbnNpYmlsaXR5JztcclxudHlwZSBBT0EgPSBhbnlbXVtdO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci5jb21wb25lbnQubGVzcycsXHJcbiAgICAnLi4vZm9ybXMubGVzcycsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHlDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEFTU0VUUyA9IEFTU0VUUztcclxuICBkb3dubG9hZFN0YXR1czogc3RyaW5nID0gJ05PVF9ET1dOTE9BRElORyc7XHJcbiAgZG93bmxvYWRTdGF0dXNWMjogc3RyaW5nID0gJ05PVF9ET1dOTE9BRElORyc7XHJcbiAgZG93bmxvYWRQZXJjZW50ID0gMDtcclxuICBmaWxlVmFsdWU6IGFueTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgcmVzcG9uc2liaWxpdHlEYXRhITogYW55O1xyXG4gIGZpbGVOYW1lID0gJyc7XHJcbiAgc2luZ2xlVGFiUmVzcG9uc2liaWxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtdWx0aVRhYlJlc3BvbnNpYmlsaXR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICBlcnJvck1lc3NhZ2UgPSAnIGludmFsaWQgZmlsZSBlcnJvcic7XHJcbiAgbWVtYmVyX29ial9pZCA9ICcnO1xyXG4gIGJ1bGtVcGxvYWRGbGFnITogYm9vbGVhbjtcclxuICBkZXBsb3llZERhdGU6IG51bWJlciA9IDE2NzcxNTA4NzU7XHJcbiAgbWVtYmVySWQ6IGFueSA9ICcnO1xyXG4gIFJFU1BPTlNJQklMSVRZID0gUkVTUE9OU0lCSUxJVFk7XHJcblxyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGZlYXR1cmUhOiBhbnk7XHJcbiAgQElucHV0KCkgb3JnRGV0YWlscyE6IGFueTtcclxuICBpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmlza1NlcnZpY2U6IEFkZFJpc2tTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJ1bGtVcGxvYWRTZXJ2aWNlOiBCdWxrVXBsb2FkU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW1iZXJfb2JqX2lkID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI/LnVpZDtcclxuICAgIHRoaXMuYnVsa1VwbG9hZEZsYWcgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX2J1bGtfcmVzcG9uc2liaWxpdHknXHJcbiAgICApO1xyXG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZCA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxyXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfc2ltcGxpZmljYXRpb24nXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRUZW1wbGF0ZSh2ZXJzaW9uPzogYW55KSB7XHJcbiAgICB2ZXJzaW9uICE9PSAndjInXHJcbiAgICAgID8gKHRoaXMuZG93bmxvYWRTdGF0dXMgPSAnRE9XTkxPQURJTkcnKVxyXG4gICAgICA6ICh0aGlzLmRvd25sb2FkU3RhdHVzVjIgPSAnRE9XTkxPQURJTkcnKTtcclxuICAgIHRoaXMuZG93bmxvYWRQZXJjZW50ID0gMDtcclxuICAgIGNvbnN0IGRvd25sb2FkRGF0ZSA9IG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkuc3BsaXQoJyAnKTtcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gYEVudHJ1c3QgUmVzcG9uc2liaWxpdGllcy0ke2Rvd25sb2FkRGF0ZVsyXX0tJHtkb3dubG9hZERhdGVbMV19LSR7ZG93bmxvYWREYXRlWzNdfS54bHN4YDtcclxuXHJcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmRvd25sb2FkUmVzcG9uc2liaWxpdHlUZW1wbGF0ZSh2ZXJzaW9uKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5sb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuZG93bmxvYWRQZXJjZW50ID0gMTAwICogKGRhdGEubG9hZGVkIC8gZGF0YS50b3RhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRhLmJvZHkpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKFxyXG4gICAgICAgICAgICAgIGRhdGEuYm9keSxcclxuICAgICAgICAgICAgICAnYXBwbGljYXRpb24veGxzeCcsXHJcbiAgICAgICAgICAgICAgZmlsZU5hbWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdmVyc2lvbiAhPT0gJ3YyJ1xyXG4gICAgICAgICAgICAgID8gKHRoaXMuZG93bmxvYWRTdGF0dXMgPSBkb3dubG9hZFN0YXR1cylcclxuICAgICAgICAgICAgICA6ICh0aGlzLmRvd25sb2FkU3RhdHVzVjIgPSBkb3dubG9hZFN0YXR1cyk7XHJcbiAgICAgICAgICB9LCAxNTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIHZlcnNpb24gIT09ICd2MidcclxuICAgICAgICAgID8gKHRoaXMuZG93bmxvYWRTdGF0dXMgPSAnRE9XTkxPQURFRCcpXHJcbiAgICAgICAgICA6ICh0aGlzLmRvd25sb2FkU3RhdHVzVjIgPSAnRE9XTkxPQURFRCcpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkZWRGaWxlRGF0YSE6IGFueTtcclxuXHJcbiAgdXBsb2FkZWRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgbGV0IGlzRW1wdHkgPSBmYWxzZTtcclxuICAgICAgbGV0IGlzQ29ycmVjdEZpbGUgPSB0cnVlO1xyXG4gICAgICBsZXQgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0ge1xyXG4gICAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIH07XHJcbiAgICAgIGxldCB0ZW1wbGF0ZUluZm8gPSB7XHJcbiAgICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgICAgICByY0xpc3Q6IFtdLFxyXG4gICAgICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxyXG4gICAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxyXG4gICAgICAgIG1lbWJlcklkOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5maWxlTmFtZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXS5uYW1lO1xyXG4gICAgICAvLyB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChldmVudC50YXJnZXQuZmlsZXMpO1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZURhdGEgPSBldmVudDtcclxuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGN1cmx5XHJcbiAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBtdWx0aXBsZSBmaWxlcycpO1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogWExTWC5Xb3JrQm9vayA9IFhMU1gucmVhZChic3RyLCB7IHR5cGU6ICdiaW5hcnknIH0pO1xyXG4gICAgICAgIGxldCBzaGVldERhdGEgPSAnJztcclxuICAgICAgICBsZXQgbWVtYmVyQXJyYXk6IGFueVtdID0gW107XHJcbiAgICAgICAgaWYgKHdiPy5TaGVldE5hbWVzPy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICBjb25zdCBzaGVldERhdGEgPSB3Yi5TaGVldE5hbWVzW1JFU1BPTlNJQklMSVRZLnNoZWV0SW5kZXguZGF0YV07IC8vIGdldCBoaWRkZW4gRGF0YSBzaGVldFxyXG4gICAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3NoZWV0RGF0YV07XHJcbiAgICAgICAgICBjb25zdCB0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih0ZW1wRGF0YSwge1xyXG4gICAgICAgICAgICBoZWFkZXI6IDEsXHJcbiAgICAgICAgICB9KSBhcyBBT0E7XHJcbiAgICAgICAgICBjb25zdCB0ZW1wTGlzdCA9IHREYXRhLmZpbHRlcihcclxuICAgICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlbXBMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICghdGVtcExpc3RbaV1bM10pIHtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtZW1iZXJBcnJheS5wdXNoKHRlbXBMaXN0W2ldWzNdKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBleGNlbFNoZWV0TmFtZTEgPSB3Yi5TaGVldE5hbWVzW1JFU1BPTlNJQklMSVRZLnNoZWV0SW5kZXguZnJlcXVlbmN5UmVzcG9uc2liaWxpdHldO1xyXG4gICAgICAgICAgY29uc3QgZXhjZWxEYXRhMTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbZXhjZWxTaGVldE5hbWUxXTtcclxuICAgICAgICAgIGNvbnN0IGV4Y2VsU2hlZXROYW1lMiA9IHdiLlNoZWV0TmFtZXNbUkVTUE9OU0lCSUxJVFkuc2hlZXRJbmRleC5vbkdvaW5nUmVzcG9uc2liaWxpdHldO1xyXG4gICAgICAgICAgY29uc3QgZXhjZWxEYXRhMjogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbZXhjZWxTaGVldE5hbWUyXTtcclxuICAgICAgICAgIGlzRW1wdHkgPVxyXG4gICAgICAgICAgICB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmhhc0RhdGFJbkxpc3QoZXhjZWxEYXRhMSwgNykgJiZcclxuICAgICAgICAgICAgdGhpcy5idWxrVXBsb2FkU2VydmljZS5oYXNEYXRhSW5MaXN0KGV4Y2VsRGF0YTIsIDcpIFxyXG4gICAgICAgICAgaXNDb3JyZWN0RmlsZSA9XHJcbiAgICAgICAgICAgIHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuY2hlY2tDb3JyZWN0RmlsZShleGNlbERhdGExLCAyKSB8fFxyXG4gICAgICAgICAgICB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmNoZWNrQ29ycmVjdEZpbGUoZXhjZWxEYXRhMiwgMik7XHJcbiAgICAgICAgICBjb25zdCBmcmVxdWVuY3lIZWFkZXJzID0gdGhpcy5idWxrVXBsb2FkU2VydmljZS5nZXRIZWFkZXJSb3dzKGV4Y2VsRGF0YTEpO1xyXG4gICAgICAgICAgY29uc3Qgb25nb2luZ0hlYWRlcnMgPSB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmdldEhlYWRlclJvd3MoZXhjZWxEYXRhMik7XHJcbiAgICAgICAgICBjb25zdCBjb2x1bW5FcnJvciA9IHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UudmFsaWRhdGVSZXNwb25zaWJpbGl0eUhlYWRlcnMoW1xyXG4gICAgICAgICAgICB7IC4uLmZyZXF1ZW5jeUhlYWRlcnMsIHNoZWV0OiAnZnJlcXVlbmN5JyB9LFxyXG4gICAgICAgICAgICB7IC4uLm9uZ29pbmdIZWFkZXJzLCBzaGVldDogJ29uZ29pbmcnIH0sXHJcbiAgICAgICAgICBdKTtcclxuICAgICAgICAgIGlmIChjb2x1bW5FcnJvciA9PT0gJ21pc3NpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gRklMRV9WQUxJREFUSU9OX01FU1NBR0VTLkhFQURFUlNfTUlTU0lORztcclxuICAgICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5maWxlVmFsdWUgPSAnJztcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbkVycm9yID09PSAnZXh0cmEnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gRklMRV9WQUxJREFUSU9OX01FU1NBR0VTLkVYVFJBX0NPTFVNTlM7XHJcbiAgICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRlbXBsYXRlSW5mby5tZW1iZXJJZCA9IHRlbXBMaXN0WzBdW1JFU1BPTlNJQklMSVRZLnVzZXJJbmRleC5jdXJyZW50VXNlcl07XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBzaGVldERhdGEgPSB3Yi5TaGVldE5hbWVzWzFdO1xyXG4gICAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3NoZWV0RGF0YV07XHJcbiAgICAgICAgICBjb25zdCB0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih0ZW1wRGF0YSwge1xyXG4gICAgICAgICAgICBoZWFkZXI6IDEsXHJcbiAgICAgICAgICB9KSBhcyBBT0E7XHJcbiAgICAgICAgICBjb25zdCB0ZW1wTGlzdCA9IHREYXRhLmZpbHRlcihcclxuICAgICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgY29uc3QgZXhjZWxTaGVldE5hbWUgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICAgICAgY29uc3QgZXhjZWxEYXRhOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1tleGNlbFNoZWV0TmFtZV07XHJcbiAgICAgICAgICBpc0VtcHR5ID0gdGhpcy5idWxrVXBsb2FkU2VydmljZS5oYXNEYXRhSW5MaXN0KGV4Y2VsRGF0YSwgMik7XHJcbiAgICAgICAgICBpc0NvcnJlY3RGaWxlID0gdGhpcy5idWxrVXBsb2FkU2VydmljZS5jaGVja0NvcnJlY3RGaWxlKGV4Y2VsRGF0YSwgMCk7XHJcbiAgICAgICAgICB0ZW1wbGF0ZUluZm8ubWVtYmVySWQgPSB0ZW1wTGlzdFswXVsyNV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5maWxlTmFtZS5zdWJzdHIoLTUpICE9PSAnLnhsc3gnKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAgICAgJyBSRVRSWSc7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5tZW1iZXJfb2JqX2lkICE9IHRlbXBsYXRlSW5mby5tZW1iZXJJZCB8fFxyXG4gICAgICAgICAgIW1lbWJlckFycmF5LmluY2x1ZGVzKHRoaXMubWVtYmVyX29ial9pZClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICAgICAnIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1lvdSBoYXZlIHVwbG9hZGVkIGEgYmxhbmsgdGVtcGxhdGUuIFBsZWFzZSBhZGQgZGV0YWlscyBmb3IgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZpbGVWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzQ29ycmVjdEZpbGUpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICAgICAnIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh3Yj8uU2hlZXROYW1lcz8ubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgdGhpcy5tdWx0aVRhYlJlc3BvbnNpYmlsaXR5ID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaW5nbGVUYWJSZXNwb25zaWJpbGl0eSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJCcm93c2VGaWxlKCkge1xyXG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcclxuICAgIGlmIChnZXRGaWxlKSB7XHJcbiAgICAgIGdldEZpbGUuY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNpbmdsZVRhYlJlc3BvbnNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICB0aGlzLm11bHRpVGFiUmVzcG9uc2liaWxpdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVZhbHVlID0gJyc7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCI+XHJcbiAgPCEtLSBtYWluIGNvbnRhaW5lciBzdGFydHMgaGVyZSAtLT5cclxuICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stYm9keVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnNwcmVhZHNoZWV0X211bHRpcGxlX2NhdGVnb3J5XCIgYWx0PVwiXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxoND5Zb3UgY2FuIGVudHJ1c3QgbXVsdGlwbGUgcmVzcG9uc2liaWxpdGllcyBpbiBqdXN0IHR3byBlYXN5IHN0ZXBzOjwvaDQ+XHJcbiAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuICAgICAgICA8bGk+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGFuZCBmaWxsIGluIHRoZSBkZXRhaWxzLjwvbGk+XHJcbiAgICAgICAgPGxpPlVwbG9hZCB0aGUgLnhsc3ggZmlsZSBhbmQgeW914oCZcmUgZ29vZCB0byBnbyE8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgICAgPCEtLSBib3RoIG9sZCBhbmQgbmV3IHRlbXBsYXRlIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQtYnRuXCIgKm5nSWY9XCJcclxuICAgICAgICAgIGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JykgJiZcclxuICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2J1bGtfcmVzcG9uc2liaWxpdHknKSAmJlxyXG4gICAgICAgICAgb3JnRGV0YWlscz8uZG9jX3V0YyA8IGRlcGxveWVkRGF0ZVxyXG4gICAgICAgIFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJkb3dubG9hZFwiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdOT1RfRE9XTkxPQURJTkcnXCIgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIEV4aXN0aW5nIFRlbXBsYXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcclxuICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ0RPV05MT0FERUQnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzcyBjb21wbGV0ZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZSAtJm5ic3A7PGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj48L2Rpdj4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvckRpdlwiPk9SPC9kaXY+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJkb3dubG9hZFwiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ05PVF9ET1dOTE9BRElORydcIiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIE5ldyBUZW1wbGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURJTkcnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcclxuICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURFRCdcIiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzIGNvbXBsZXRlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlIC0mbmJzcDs8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj48L2Rpdj4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzVjIgPT09ICdET1dOTE9BREVEJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cclxuICAgICAgICAgICAgSXMgdGhlIGZpbGUgbm90IGRvd25sb2FkZWQ/XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoJ3YyJylcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBvbmx5IGZvciBuZXcgdGVtcGxhdGUgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC1idG5cIiAqbmdJZj1cIlxyXG4gICAgICAgICAgKGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYnVsa19yZXNwb25zaWJpbGl0eScpICYmXHJcbiAgICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2JvdGhfYnVsa19yZXNwb25zaWJpbGl0eScpKSB8fFxyXG4gICAgICAgICAgKGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYnVsa19yZXNwb25zaWJpbGl0eScpICYmXHJcbiAgICAgICAgICAgIGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JykpIHx8XHJcbiAgICAgICAgICBvcmdEZXRhaWxzPy5kb2NfdXRjID4gZGVwbG95ZWREYXRlXHJcbiAgICAgICAgXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRvd25sb2FkXCIgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnTk9UX0RPV05MT0FESU5HJ1wiIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFiOzwvaT4gRG93bmxvYWQgVGVtcGxhdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FESU5HJ1wiIGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIj5cclxuICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXHJcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FERUQnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzcyBjb21wbGV0ZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZSAtJm5ic3A7PGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+PC9kaXY+IC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gb25seSBmb3Igb2xkIHRlbXBsYXRlIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQtYnRuXCIgKm5nSWY9XCJcclxuICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2J1bGtfcmVzcG9uc2liaWxpdHknKSAmJlxyXG4gICAgICAgICAgIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JylcclxuICAgICAgICBcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZG93bmxvYWRcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWI7PC9pPiBEb3dubG9hZCBUZW1wbGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cclxuICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXHJcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXQgfHwgaXNGaWxlRW1wdHlcIj5cclxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48aW5wdXQgdHlwZT1cImZpbGVcIiBbKG5nTW9kZWwpXT1cImZpbGVWYWx1ZVwiIGlkPVwiZmlsZUlucHV0XCIgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiBhY2NlcHQ9XCIueGxzeFwiXHJcbiAgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiIG11bHRpcGxlIC8+XHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmUgKm5nSWY9XCJzaG93U21pbGV5XCIgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxyXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIiAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxyXG5cclxuPGFwcC1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkgKm5nSWY9XCJzaW5nbGVUYWJSZXNwb25zaWJpbGl0eVwiIFt1cGxvYWRlZEZpbGVdPVwidXBsb2FkZWRGaWxlRGF0YVwiXHJcbiAgKGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eSk9XCJjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkoJGV2ZW50KVwiIFtmZWF0dXJlZmxhZ109XCJpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZFwiXHJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvYXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eT5cclxuXHJcbjxsaWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiICpuZ0lmPVwibXVsdGlUYWJSZXNwb25zaWJpbGl0eVwiIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxyXG4gIFt1cGxvYWRlZEZpbGVdPVwidXBsb2FkZWRGaWxlRGF0YVwiIChjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkpPVwiY2xvc2VBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5KCRldmVudClcIlxyXG4gIFtmZWF0dXJlZmxhZ109XCJpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZFwiIFtmZWF0dXJlXT1cImZlYXR1cmVcIj48L2xpYi1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktd2l0aC10YWI+Il19