gamma-app-controller 1.1.11 → 1.1.14
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.
- package/esm2020/lib/application-controller/application-dataset-call.service.mjs +19 -4
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +19 -4
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +8 -1
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.mjs +21 -11
- package/esm2020/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.mjs +6 -5
- package/esm2020/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.mjs +5 -5
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +36 -21
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +25 -6
- package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +21 -1
- package/esm2020/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +2 -8
- package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +9 -21
- package/fesm2015/gamma-app-controller.mjs +162 -75
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +159 -75
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-filter/application-filter.component.d.ts +3 -1
- package/lib/application-controller/page-controller/page-config/page-config.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -101,7 +101,12 @@ export class ApplicationDatssetsCall {
|
|
|
101
101
|
value: mapping.defaultValue
|
|
102
102
|
};
|
|
103
103
|
if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {
|
|
104
|
-
|
|
104
|
+
if (mapping.formatter && mapping.formatter !== "") {
|
|
105
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(mapping.formatter);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(this.environment.dataFormat);
|
|
109
|
+
}
|
|
105
110
|
}
|
|
106
111
|
const filter = filterdata.find(f => f.hasOwnProperty(mapping.localColumn));
|
|
107
112
|
if (filter) {
|
|
@@ -115,7 +120,12 @@ export class ApplicationDatssetsCall {
|
|
|
115
120
|
resultObj.value = value;
|
|
116
121
|
}
|
|
117
122
|
if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {
|
|
118
|
-
|
|
123
|
+
if (mapping.formatter && mapping.formatter !== "") {
|
|
124
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(mapping.formatter);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(this.environment.dataFormat);
|
|
128
|
+
}
|
|
119
129
|
}
|
|
120
130
|
}
|
|
121
131
|
}
|
|
@@ -257,7 +267,12 @@ export class ApplicationDatssetsCall {
|
|
|
257
267
|
aliasColumnName: mapping.localColumn,
|
|
258
268
|
};
|
|
259
269
|
if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {
|
|
260
|
-
|
|
270
|
+
if (mapping.formatter && mapping.formatter !== "") {
|
|
271
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(mapping.formatter);
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(this.environment.dataFormat);
|
|
275
|
+
}
|
|
261
276
|
}
|
|
262
277
|
const filter = filterdata.find(f => f.hasOwnProperty(mapping.localColumn));
|
|
263
278
|
if (filter) {
|
|
@@ -321,4 +336,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
321
336
|
type: Inject,
|
|
322
337
|
args: [APP_ENVIRONMENT]
|
|
323
338
|
}] }]; } });
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tZGF0YXNldC1jYWxsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jYWxsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUloRCxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDLFlBQW9CLE9BQWtDLEVBQzFDLFVBQTRCLEVBQ0gsV0FBZ0I7UUFGakMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDMUMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDSCxnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUpyRCx3QkFBbUIsR0FBRyxFQUFFLENBQUM7SUFPekIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTztRQUMxQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN0RDthQUFNLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxjQUFjLEVBQUU7WUFDOUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNoRTthQUFNLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxXQUFXLEVBQUU7WUFDM0MsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FB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QUFVLEVBQUUsU0FBUztvQkFDckIsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFFBQVEsRUFBRSxJQUFJO29CQUNkLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDO2lCQUMzQixDQUFDO2dCQUVGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRTtvQkFDbEMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7b0JBQzFCLFNBQVMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDakQ7cUJBQU07b0JBQ0gsU0FBUyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3ZDO2dCQUdELElBQUksU0FBUyxJQUFJLGNBQWMsRUFBRTtvQkFDN0IsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQzdCO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUlILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFHRCxzQkFBc0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDcEMsQ0FBQzs7b0hBM1ZRLHVCQUF1QiwyRkFNcEIsZUFBZTt3SEFObEIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7OzBCQU9GLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbi8vIGltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IGtwaWNvbW1vblNlcnZpY2UgfSBmcm9tICcuL2twaS1jb21vbi1zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkRhdHNzZXRzQ2FsbCB7XG5cbiAgICB1bmlxdWVEYXRhU2V0T2JqZWN0ID0ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUga3BpU2VydmljZToga3BpY29tbW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChBUFBfRU5WSVJPTk1FTlQpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxuICAgICkge1xuXG4gICAgfVxuXG4gICAgZ2V0RGF0YUZyb21EYXRhU2V0KGRhdGFzZXQsIGRhdGFzZXRJZCwgZmlsdGVycykge1xuICAgICAgICBpZiAoZGF0YXNldC5kYXRhc2V0VHlwZSA9PSBcIm1vbmdvXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGFTZXRGb3JNb25nbyhkYXRhc2V0LCBkYXRhc2V0SWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuZGF0YXNldFR5cGUgPT0gXCJxdWVyeWJ1aWxkZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YXNldEZvckltcGFsYShkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcnMpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuZGF0YXNldFR5cGUgPT0gXCJzaW1wbGVBcGlcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YXNldEZvclNpbXBsZUFwaUltcGFsYShkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcnMpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuZGF0YXNldFR5cGUgPT0gXCJwbGFpbmpzb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YXNldEZvclBsYWluSnNvbihkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcnMpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuZGF0YXNldFR5cGUgPT0gXCJzcWxRdWVyeVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhc2V0Rm9yU3FsVGVtcGxhdGUoZGF0YXNldCwgZGF0YXNldElkLCBmaWx0ZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZ2V0RGF0YVNldEZvck1vbmdvKGRhdGFzZXQsIGRhdGFzZXRJZCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgbGV0IGFwaUpzb25PYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdElkOiBkYXRhc2V0LmNvbmZpZy5zZXJ2aWNlSWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGRhdGFzZXQuY29uZmlnLmZpeE9wZXJhdGlvbkxldmxlcyAmJiBkYXRhc2V0LmNvbmZpZy5maXhPcGVyYXRpb25MZXZsZXMubGVuZ3RoICE9IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YXNldC5jb25maWcuZml4T3BlcmF0aW9uTGV2bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXBpSnNvbk9iamVjdCwgaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbW9uX2NvbmZpZyA9IHRoaXMua3BpU2VydmljZS5nZXRBbGxTZXZpY2VBcGlKc29uKGFwaUpzb25PYmplY3QpO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERhdGEobW9uX2NvbmZpZywgZGF0YXNldC5jb25maWcuYXBpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRhdGFbXCJQYXlsb2FkXCJdIHx8IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZC5zbGljZSgwLCAyMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF0YXNldEZvckltcGFsYShkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCByZXF1ZXN0ID0gZGF0YXNldC5jb25maWcucXVlcnlDb25maWc7XG4gICAgICAgICAgICBsZXQgdHJhbnNmb3JtZWRPYmplY3Q6IGFueSA9IHt9O1xuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiByZXF1ZXN0LnJlcUZpZWxkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGl0ZW0pWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0LnZhbHVlcyhpdGVtKVswXTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnc3RhcnREYXRlJykge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZE9iamVjdC5yZWNvcmREYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRPYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBjb25zdCBvcGVyYXRvciA9IChmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoICE9PSAwKSA/IE9iamVjdC5rZXlzKGZpbHRlcnMub3BlcmF0aW9uRmlsdGVyKS5tYXAoa2V5ID0+ICh7IFtrZXldOiBmaWx0ZXJzLm9wZXJhdGlvbkZpbHRlcltrZXldIH0pKSA6IFtdO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZE9iamVjdFsnbWVhc3VyZXMnXSA9IHJlcXVlc3QubWVhc3VyZXM7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZmlsdGVycyddID0gdGhpcy50cmFuc2Zvcm1EYXRhRm9yTUZpbHRlcihvcGVyYXRvciwgcmVxdWVzdC5tYXBlZEZpbHRlcnMpO1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRPYmplY3RbJ3NvcnRlcnMnXSA9IHJlcXVlc3Quc29ydGVycztcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0W1wicGFnaW5hdGlvblJlcXVpcmVkXCJdID0gZmFsc2U7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZGltZW5zaW9ucyddID0gcmVxdWVzdC5kaW1lbnNpb25zO1xuICAgICAgICAgICAgaWYgKHJlcXVlc3QuaGF2aW5ncyAmJiByZXF1ZXN0LmhhdmluZ3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRPYmplY3RbJ2hhdmluZ3MnXSA9IHJlcXVlc3QuaGF2aW5ncztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERhdGEodHJhbnNmb3JtZWRPYmplY3QsIGRhdGFzZXQuY29uZmlnLmFwaSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhWydkYXRhc2V0J107XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZC5zbGljZSgwLCAzMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtRGF0YUZvck1GaWx0ZXIoZmlsdGVyZGF0YSwgbWFwRGF0YSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIG1hcERhdGEuZm9yRWFjaChtYXBwaW5nID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHRPYmogPSB7XG4gICAgICAgICAgICAgICAgY29sdW1uTmFtZTogbWFwcGluZy5zZXJ2ZXJDb2x1bW4sXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IG1hcHBpbmcuZGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG1hcHBpbmcub3BlcmF0b3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBtYXBwaW5nLmRlZmF1bHRWYWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChtYXBwaW5nLnNlcnZlckNvbHVtbi5pbmNsdWRlcygnZGF0ZScpICYmIHR5cGVvZiByZXN1bHRPYmoudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gbW9tZW50KHJlc3VsdE9iai52YWx1ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdCh0aGlzLmVudmlyb25tZW50LmRhdGFGb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gZmlsdGVyZGF0YS5maW5kKGYgPT4gZi5oYXNPd25Qcm9wZXJ0eShtYXBwaW5nLmxvY2FsQ29sdW1uKSk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hcHBpbmcuZGVmYXVsdFZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyW21hcHBpbmcubG9jYWxDb2x1bW5dO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLm9wZXJhdG9yID0gXCJpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gdmFsdWUuam9pbihcIixcIik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobWFwcGluZy5zZXJ2ZXJDb2x1bW4uaW5jbHVkZXMoJ2RhdGUnKSAmJiB0eXBlb2YgcmVzdWx0T2JqLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gbW9tZW50KHJlc3VsdE9iai52YWx1ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdCh0aGlzLmVudmlyb25tZW50LmRhdGFGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChtYXBwaW5nLmRlZmF1bHRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHJlc3VsdE9iaik7XG4gICAgICAgIH0pO1xuICAgICAgICBmaWx0ZXJkYXRhID0gZmlsdGVyZGF0YS5maWx0ZXIob2JqID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG9iailbMF07XG4gICAgICAgICAgICByZXR1cm4ga2V5ICE9PSAnc3RhcnREYXRlJyAmJiBrZXkgIT09ICdlbmREYXRlJztcbiAgICAgICAgfSk7XG4gICAgICAgIGZpbHRlcmRhdGEuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyS2V5ID0gT2JqZWN0LmtleXMoZmlsdGVyKVswXTtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nTWFwcGluZyA9IG1hcERhdGEuZmluZChtYXBwaW5nID0+IG1hcHBpbmcubG9jYWxDb2x1bW4gPT09IGZpbHRlcktleSk7XG5cbiAgICAgICAgICAgIGlmICghZXhpc3RpbmdNYXBwaW5nKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdE9iaiA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZTogZmlsdGVyS2V5LFxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXFcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlcltmaWx0ZXJLZXldXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpbHRlcltmaWx0ZXJLZXldKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoub3BlcmF0b3IgPSBcImluXCI7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IGZpbHRlcltmaWx0ZXJLZXldLmpvaW4oXCIsXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IGZpbHRlcltmaWx0ZXJLZXldO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGZvciBtY2l0IG9ubHlcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyS2V5ID09ICdvcGVyYXRvcl9rZXknKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai5vcGVyYXRvciA9IFwiZXFcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVzdWx0T2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cblxuICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKG9iaiA9PiBvYmoudmFsdWUgIT09IG51bGwgJiYgb2JqLnZhbHVlICE9PSBcIlwiKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG5cbiAgICBnZXREYXRhc2V0Rm9yU2ltcGxlQXBpSW1wYWxhKGRhdGFzZXQ6IGFueSwgZGF0YXNldElkOiBzdHJpbmcsIGZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgICAgICAgZGF0YXNldC5jb25maWcucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVycy5vcGVyYXRpb25GaWx0ZXIuaGFzT3duUHJvcGVydHkoZmlsdGVyLmxvY2FsQ29sdW1uKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZGVmYXVsdFZhbHVlID0gZmlsdGVycy5vcGVyYXRpb25GaWx0ZXJbZmlsdGVyLmxvY2FsQ29sdW1uXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChkYXRhc2V0LmNvbmZpZy5hcGlUeXBlID09PSBcInBvc3RcIikge1xuXG4gICAgICAgICAgICAgICAgbGV0IHNlcnZpY2VKc29uOiBhbnkgPSB7fTtcbiAgICAgICAgICAgICAgICBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVjb2x1bW4gPSBmaWx0ZXIuc2VydmVyQ29sdW1uLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlY29sdW1uLmluY2x1ZGVzKCdkYXRlJykgJiYgdHlwZW9mIGZpbHRlci5kYXRhVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VKc29uW2ZpbHRlci5zZXJ2ZXJDb2x1bW5dID0gbW9tZW50KGZpbHRlci5kZWZhdWx0VmFsdWUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQodGhpcy5lbnZpcm9ubWVudC5kYXRhRm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VKc29uW2ZpbHRlci5zZXJ2ZXJDb2x1bW5dID0gZmlsdGVyLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5nZXRTaW1wbGVBcGlQb3N0UmVxdWVzdChkYXRhc2V0LmNvbmZpZy5hcGksIHNlcnZpY2VKc29uKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YVtcIlBheWxvYWRcIl0gfHwgZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuY29uZmlnLmFwaVR5cGUgPT09IFwiZ2V0XCIpIHtcblxuICAgICAgICAgICAgICAgIGxldCByZXF1ZXN0VXJsID0gZGF0YXNldC5jb25maWcuYXBpICsgXCI/XCI7XG4gICAgICAgICAgICAgICAgZGF0YXNldC5jb25maWcucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmZvckVhY2goKGZpbHRlcjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RVcmwgKz0gYCR7ZmlsdGVyLnNlcnZlckNvbHVtbn09JHtmaWx0ZXIuZGVmYXVsdFZhbHVlfWA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0VXJsICs9IFwiJlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0U2ltcGxlQXBpR2V0UmVxdWVzdChyZXF1ZXN0VXJsKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YVtcIlBheWxvYWRcIl0gfHwgZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgZ2V0RGF0YXNldEZvclBsYWluSnNvbihkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICAgICAgICBsZXQgcmVxdWVzdGFwaSA9IGRhdGFzZXQuY29uZmlnLmFwaSArICc/ZGF0YXNldElkPScgKyBkYXRhc2V0LmRhdGFzZXRJZDtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5nZXRKc29uRGF0YXNldFBheWxvYWQocmVxdWVzdGFwaSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhW1wiUGF5bG9hZFwiXSB8fCBkYXRhO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaXF1ZURhdGFTZXRPYmplY3RbZGF0YXNldElkXSA9IHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICBnZXREYXRhc2V0Rm9yU3FsVGVtcGxhdGUoZGF0YXNldCwgZGF0YXNldElkLCBmaWx0ZXJzKSB7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG5cbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yID0gKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggIT09IDApID8gT2JqZWN0LmtleXMoZmlsdGVycy5vcGVyYXRpb25GaWx0ZXIpLm1hcChrZXkgPT4gKHsgW2tleV06IGZpbHRlcnMub3BlcmF0aW9uRmlsdGVyW2tleV0gfSkpIDogW107XG5cbiAgICAgICAgICAgIGxldCByZXF1ZXN0QXAgPSBkYXRhc2V0LmNvbmZpZy5hcGk7XG4gICAgICAgICAgICBsZXQgcmVxdWVzdF9wYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgJ2RiQ29uZmlnJzogZGF0YXNldC5jb25maWcucXVlcnlDb25maWcuZGJDb25maWcsXG4gICAgICAgICAgICAgICAgJ2RhdGFiYXNlTmFtZSc6IGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgICAgICAgICAnZmlsdGVycyc6IHRoaXMudHJhbnNmb3JtRGF0YUZvck1GaWx0ZXJGb3JTUWwob3BlcmF0b3IsIGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycyksXG4gICAgICAgICAgICAgICAgJ3RlbXBsYXRlUXVlcnknOiBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy50ZW1wbGF0ZVF1ZXJ5LFxuICAgICAgICAgICAgICAgICdlbnJpY2htZW50cyc6IGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLmVucmljaG1lbnRzLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmdlbmVyaWNTcWxRdWVyeVJlc3BvbnNlKHJlcXVlc3RBcCwgcmVxdWVzdF9wYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YVtcIlBheWxvYWRcIl0gfHwgZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bmlxdWVEYXRhU2V0T2JqZWN0W2RhdGFzZXRJZF0gPSBwYXlsb2FkO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybURhdGFGb3JNRmlsdGVyRm9yU1FsKGZpbHRlcmRhdGEsIG1hcERhdGEpIHtcblxuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIG1hcERhdGEuZm9yRWFjaChtYXBwaW5nID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHRPYmogPSB7XG4gICAgICAgICAgICAgICAgY29sdW1uTmFtZTogbWFwcGluZy5zZXJ2ZXJDb2x1bW4sXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IG1hcHBpbmcuZGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG1hcHBpbmcub3BlcmF0b3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBtYXBwaW5nLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICAgICAgICBhbGlhc0NvbHVtbk5hbWU6IG1hcHBpbmcubG9jYWxDb2x1bW4sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKG1hcHBpbmcuc2VydmVyQ29sdW1uLmluY2x1ZGVzKCdkYXRlJykgJiYgdHlwZW9mIHJlc3VsdE9iai52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJkYXRhLmZpbmQoZiA9PiBmLmhhc093blByb3BlcnR5KG1hcHBpbmcubG9jYWxDb2x1bW4pKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWFwcGluZy5kZWZhdWx0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJbbWFwcGluZy5sb2NhbENvbHVtbl07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoub3BlcmF0b3IgPSBcImluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSB2YWx1ZS5qb2luKFwiLFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXBwaW5nLnNlcnZlckNvbHVtbi5pbmNsdWRlcygnZGF0ZScpICYmIHR5cGVvZiByZXN1bHRPYmoudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1hcHBpbmcuZGVmYXVsdFZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVzdWx0T2JqKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZpbHRlcmRhdGEgPSBmaWx0ZXJkYXRhLmZpbHRlcihvYmogPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMob2JqKVswXTtcbiAgICAgICAgICAgIHJldHVybiBrZXkgIT09ICdzdGFydERhdGUnICYmIGtleSAhPT0gJ2VuZERhdGUnO1xuICAgICAgICB9KTsgZmlsdGVyZGF0YS5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJLZXkgPSBPYmplY3Qua2V5cyhmaWx0ZXIpWzBdO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdNYXBwaW5nID0gbWFwRGF0YS5maW5kKG1hcHBpbmcgPT4gbWFwcGluZy5sb2NhbENvbHVtbiA9PT0gZmlsdGVyS2V5KTtcblxuICAgICAgICAgICAgaWYgKCFleGlzdGluZ01hcHBpbmcpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0T2JqID0ge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBmaWx0ZXJLZXksXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyW2ZpbHRlcktleV1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyW2ZpbHRlcktleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai5vcGVyYXRvciA9IFwiaW5cIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gZmlsdGVyW2ZpbHRlcktleV0uam9pbihcIixcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gZmlsdGVyW2ZpbHRlcktleV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gZm9yIG1jaXQgb25seVxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJLZXkgPT0gJ29wZXJhdG9yX2tleScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLm9wZXJhdG9yID0gXCJlcVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChyZXN1bHRPYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuXG4gICAgICAgIC8vIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIob2JqID0+IG9iai52YWx1ZSAhPT0gbnVsbCAmJiBvYmoudmFsdWUgIT09IFwiXCIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG4gICAgZ2V0VW5pcXVlRGF0YVNldE9iamVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdDtcbiAgICB9XG5cblxufVxuIl19
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tZGF0YXNldC1jYWxsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jYWxsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUloRCxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDLFlBQW9CLE9BQWtDLEVBQzFDLFVBQTRCLEVBQ0gsV0FBZ0I7UUFGakMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDMUMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDSCxnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUpyRCx3QkFBbUIsR0FBRyxFQUFFLENBQUM7SUFPekIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTztRQUMxQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN0RDthQUFNLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxjQUFjLEVBQUU7WUFDOUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNoRTthQUFNLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxXQUFXLEVBQUU7WUFDM0MsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FB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LENBQUM7aUJBQ3ZDO2dCQUdELElBQUksU0FBUyxJQUFJLGNBQWMsRUFBRTtvQkFDN0IsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQzdCO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUlILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFHRCxzQkFBc0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDcEMsQ0FBQzs7b0hBMVdRLHVCQUF1QiwyRkFNcEIsZUFBZTt3SEFObEIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7OzBCQU9GLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbi8vIGltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IGtwaWNvbW1vblNlcnZpY2UgfSBmcm9tICcuL2twaS1jb21vbi1zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkRhdHNzZXRzQ2FsbCB7XG5cbiAgICB1bmlxdWVEYXRhU2V0T2JqZWN0ID0ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUga3BpU2VydmljZToga3BpY29tbW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChBUFBfRU5WSVJPTk1FTlQpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxuICAgICkge1xuXG4gICAgfVxuXG4gICAgZ2V0RGF0YUZyb21EYXRhU2V0KGRhdGFzZXQsIGRhdGFzZXRJZCwgZmlsdGVycykge1xuICAgICAgICBpZiAoZGF0YXNldC5kYXRhc2V0VHlwZSA9PSBcIm1vbmdvXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGFTZXRGb3JNb25nbyhkYXRhc2V0LCBkYXRhc2V0SWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuZGF0YXNldFR5cGUgPT0gXCJxdWVyeWJ1aWxkZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YXNldEZvckltcGFsYShkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcnMpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuZGF0YXNldFR5cGUgPT0gXCJzaW1wbGVBcGlcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YXNldEZvclNpbXBsZUFwaUltcGFsYShkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcnMpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuZGF0YXNldFR5cGUgPT0gXCJwbGFpbmpzb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YXNldEZvclBsYWluSnNvbihkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcnMpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFzZXQuZGF0YXNldFR5cGUgPT0gXCJzcWxRdWVyeVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhc2V0Rm9yU3FsVGVtcGxhdGUoZGF0YXNldCwgZGF0YXNldElkLCBmaWx0ZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZ2V0RGF0YVNldEZvck1vbmdvKGRhdGFzZXQsIGRhdGFzZXRJZCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgbGV0IGFwaUpzb25PYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdElkOiBkYXRhc2V0LmNvbmZpZy5zZXJ2aWNlSWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGRhdGFzZXQuY29uZmlnLmZpeE9wZXJhdGlvbkxldmxlcyAmJiBkYXRhc2V0LmNvbmZpZy5maXhPcGVyYXRpb25MZXZsZXMubGVuZ3RoICE9IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YXNldC5jb25maWcuZml4T3BlcmF0aW9uTGV2bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXBpSnNvbk9iamVjdCwgaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbW9uX2NvbmZpZyA9IHRoaXMua3BpU2VydmljZS5nZXRBbGxTZXZpY2VBcGlKc29uKGFwaUpzb25PYmplY3QpO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERhdGEobW9uX2NvbmZpZywgZGF0YXNldC5jb25maWcuYXBpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRhdGFbXCJQYXlsb2FkXCJdIHx8IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZC5zbGljZSgwLCAyMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF0YXNldEZvckltcGFsYShkYXRhc2V0LCBkYXRhc2V0SWQsIGZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCByZXF1ZXN0ID0gZGF0YXNldC5jb25maWcucXVlcnlDb25maWc7XG4gICAgICAgICAgICBsZXQgdHJhbnNmb3JtZWRPYmplY3Q6IGFueSA9IHt9O1xuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiByZXF1ZXN0LnJlcUZpZWxkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGl0ZW0pWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0LnZhbHVlcyhpdGVtKVswXTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnc3RhcnREYXRlJykge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZE9iamVjdC5yZWNvcmREYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRPYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBjb25zdCBvcGVyYXRvciA9IChmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoICE9PSAwKSA/IE9iamVjdC5rZXlzKGZpbHRlcnMub3BlcmF0aW9uRmlsdGVyKS5tYXAoa2V5ID0+ICh7IFtrZXldOiBmaWx0ZXJzLm9wZXJhdGlvbkZpbHRlcltrZXldIH0pKSA6IFtdO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZE9iamVjdFsnbWVhc3VyZXMnXSA9IHJlcXVlc3QubWVhc3VyZXM7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZmlsdGVycyddID0gdGhpcy50cmFuc2Zvcm1EYXRhRm9yTUZpbHRlcihvcGVyYXRvciwgcmVxdWVzdC5tYXBlZEZpbHRlcnMpO1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRPYmplY3RbJ3NvcnRlcnMnXSA9IHJlcXVlc3Quc29ydGVycztcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0W1wicGFnaW5hdGlvblJlcXVpcmVkXCJdID0gZmFsc2U7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZGltZW5zaW9ucyddID0gcmVxdWVzdC5kaW1lbnNpb25zO1xuICAgICAgICAgICAgaWYgKHJlcXVlc3QuaGF2aW5ncyAmJiByZXF1ZXN0LmhhdmluZ3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRPYmplY3RbJ2hhdmluZ3MnXSA9IHJlcXVlc3QuaGF2aW5ncztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERhdGEodHJhbnNmb3JtZWRPYmplY3QsIGRhdGFzZXQuY29uZmlnLmFwaSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhWydkYXRhc2V0J107XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZC5zbGljZSgwLCAzMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdFtkYXRhc2V0SWRdID0gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtRGF0YUZvck1GaWx0ZXIoZmlsdGVyZGF0YSwgbWFwRGF0YSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIG1hcERhdGEuZm9yRWFjaChtYXBwaW5nID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHRPYmogPSB7XG4gICAgICAgICAgICAgICAgY29sdW1uTmFtZTogbWFwcGluZy5zZXJ2ZXJDb2x1bW4sXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IG1hcHBpbmcuZGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IG1hcHBpbmcub3BlcmF0b3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBtYXBwaW5nLmRlZmF1bHRWYWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChtYXBwaW5nLnNlcnZlckNvbHVtbi5pbmNsdWRlcygnZGF0ZScpICYmIHR5cGVvZiByZXN1bHRPYmoudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hcHBpbmcuZm9ybWF0dGVyICYmIG1hcHBpbmcuZm9ybWF0dGVyICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IG1vbWVudChyZXN1bHRPYmoudmFsdWUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQobWFwcGluZy5mb3JtYXR0ZXIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IG1vbWVudChyZXN1bHRPYmoudmFsdWUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQodGhpcy5lbnZpcm9ubWVudC5kYXRhRm9ybWF0KTtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcmRhdGEuZmluZChmID0+IGYuaGFzT3duUHJvcGVydHkobWFwcGluZy5sb2NhbENvbHVtbikpO1xuICAgICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgICAgIGlmIChtYXBwaW5nLmRlZmF1bHRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlclttYXBwaW5nLmxvY2FsQ29sdW1uXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai5vcGVyYXRvciA9IFwiaW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IHZhbHVlLmpvaW4oXCIsXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hcHBpbmcuc2VydmVyQ29sdW1uLmluY2x1ZGVzKCdkYXRlJykgJiYgdHlwZW9mIHJlc3VsdE9iai52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBwaW5nLmZvcm1hdHRlciAmJiBtYXBwaW5nLmZvcm1hdHRlciAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IG1vbWVudChyZXN1bHRPYmoudmFsdWUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQobWFwcGluZy5mb3JtYXR0ZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWFwcGluZy5kZWZhdWx0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChyZXN1bHRPYmopO1xuICAgICAgICB9KTtcbiAgICAgICAgZmlsdGVyZGF0YSA9IGZpbHRlcmRhdGEuZmlsdGVyKG9iaiA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhvYmopWzBdO1xuICAgICAgICAgICAgcmV0dXJuIGtleSAhPT0gJ3N0YXJ0RGF0ZScgJiYga2V5ICE9PSAnZW5kRGF0ZSc7XG4gICAgICAgIH0pO1xuICAgICAgICBmaWx0ZXJkYXRhLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcktleSA9IE9iamVjdC5rZXlzKGZpbHRlcilbMF07XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ01hcHBpbmcgPSBtYXBEYXRhLmZpbmQobWFwcGluZyA9PiBtYXBwaW5nLmxvY2FsQ29sdW1uID09PSBmaWx0ZXJLZXkpO1xuXG4gICAgICAgICAgICBpZiAoIWV4aXN0aW5nTWFwcGluZykge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHRPYmogPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6IGZpbHRlcktleSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXJbZmlsdGVyS2V5XVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJbZmlsdGVyS2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLm9wZXJhdG9yID0gXCJpblwiO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBmaWx0ZXJbZmlsdGVyS2V5XS5qb2luKFwiLFwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBmaWx0ZXJbZmlsdGVyS2V5XTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBmb3IgbWNpdCBvbmx5XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcktleSA9PSAnb3BlcmF0b3Jfa2V5Jykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoub3BlcmF0b3IgPSBcImVxXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHJlc3VsdE9iaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG5cbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihvYmogPT4gb2JqLnZhbHVlICE9PSBudWxsICYmIG9iai52YWx1ZSAhPT0gXCJcIik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuXG4gICAgZ2V0RGF0YXNldEZvclNpbXBsZUFwaUltcGFsYShkYXRhc2V0OiBhbnksIGRhdGFzZXRJZDogc3RyaW5nLCBmaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgICAgICAgIGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcnMub3BlcmF0aW9uRmlsdGVyLmhhc093blByb3BlcnR5KGZpbHRlci5sb2NhbENvbHVtbikpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmRlZmF1bHRWYWx1ZSA9IGZpbHRlcnMub3BlcmF0aW9uRmlsdGVyW2ZpbHRlci5sb2NhbENvbHVtbl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZGF0YXNldC5jb25maWcuYXBpVHlwZSA9PT0gXCJwb3N0XCIpIHtcblxuICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlSnNvbjogYW55ID0ge307XG4gICAgICAgICAgICAgICAgZGF0YXNldC5jb25maWcucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmZvckVhY2goKGZpbHRlcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRlY29sdW1uID0gZmlsdGVyLnNlcnZlckNvbHVtbi50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZWNvbHVtbi5pbmNsdWRlcygnZGF0ZScpICYmIHR5cGVvZiBmaWx0ZXIuZGF0YVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSnNvbltmaWx0ZXIuc2VydmVyQ29sdW1uXSA9IG1vbWVudChmaWx0ZXIuZGVmYXVsdFZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSnNvbltmaWx0ZXIuc2VydmVyQ29sdW1uXSA9IGZpbHRlci5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0U2ltcGxlQXBpUG9zdFJlcXVlc3QoZGF0YXNldC5jb25maWcuYXBpLCBzZXJ2aWNlSnNvbikuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRhdGFbXCJQYXlsb2FkXCJdIHx8IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaXF1ZURhdGFTZXRPYmplY3RbZGF0YXNldElkXSA9IHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhc2V0LmNvbmZpZy5hcGlUeXBlID09PSBcImdldFwiKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdFVybCA9IGRhdGFzZXQuY29uZmlnLmFwaSArIFwiP1wiO1xuICAgICAgICAgICAgICAgIGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5mb3JFYWNoKChmaWx0ZXI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0VXJsICs9IGAke2ZpbHRlci5zZXJ2ZXJDb2x1bW59PSR7ZmlsdGVyLmRlZmF1bHRWYWx1ZX1gO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFVybCArPSBcIiZcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFNpbXBsZUFwaUdldFJlcXVlc3QocmVxdWVzdFVybCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRhdGFbXCJQYXlsb2FkXCJdIHx8IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaXF1ZURhdGFTZXRPYmplY3RbZGF0YXNldElkXSA9IHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIGdldERhdGFzZXRGb3JQbGFpbkpzb24oZGF0YXNldCwgZGF0YXNldElkLCBmaWx0ZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgICAgICAgbGV0IHJlcXVlc3RhcGkgPSBkYXRhc2V0LmNvbmZpZy5hcGkgKyAnP2RhdGFzZXRJZD0nICsgZGF0YXNldC5kYXRhc2V0SWQ7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0SnNvbkRhdGFzZXRQYXlsb2FkKHJlcXVlc3RhcGkpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YVtcIlBheWxvYWRcIl0gfHwgZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bmlxdWVEYXRhU2V0T2JqZWN0W2RhdGFzZXRJZF0gPSBwYXlsb2FkO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgZ2V0RGF0YXNldEZvclNxbFRlbXBsYXRlKGRhdGFzZXQsIGRhdGFzZXRJZCwgZmlsdGVycykge1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cblxuICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSAoZmlsdGVycyAmJiBmaWx0ZXJzLmxlbmd0aCAhPT0gMCkgPyBPYmplY3Qua2V5cyhmaWx0ZXJzLm9wZXJhdGlvbkZpbHRlcikubWFwKGtleSA9PiAoeyBba2V5XTogZmlsdGVycy5vcGVyYXRpb25GaWx0ZXJba2V5XSB9KSkgOiBbXTtcblxuICAgICAgICAgICAgbGV0IHJlcXVlc3RBcCA9IGRhdGFzZXQuY29uZmlnLmFwaTtcbiAgICAgICAgICAgIGxldCByZXF1ZXN0X3BhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAnZGJDb25maWcnOiBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy5kYkNvbmZpZyxcbiAgICAgICAgICAgICAgICAnZGF0YWJhc2VOYW1lJzogZGF0YXNldC5jb25maWcucXVlcnlDb25maWcuZGF0YWJhc2VOYW1lLFxuICAgICAgICAgICAgICAgICdmaWx0ZXJzJzogdGhpcy50cmFuc2Zvcm1EYXRhRm9yTUZpbHRlckZvclNRbChvcGVyYXRvciwgZGF0YXNldC5jb25maWcucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzKSxcbiAgICAgICAgICAgICAgICAndGVtcGxhdGVRdWVyeSc6IGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLnRlbXBsYXRlUXVlcnksXG4gICAgICAgICAgICAgICAgJ2VucmljaG1lbnRzJzogZGF0YXNldC5jb25maWcucXVlcnlDb25maWcuZW5yaWNobWVudHMsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuZ2VuZXJpY1NxbFF1ZXJ5UmVzcG9uc2UocmVxdWVzdEFwLCByZXF1ZXN0X3BhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhW1wiUGF5bG9hZFwiXSB8fCBkYXRhO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaXF1ZURhdGFTZXRPYmplY3RbZGF0YXNldElkXSA9IHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtRGF0YUZvck1GaWx0ZXJGb3JTUWwoZmlsdGVyZGF0YSwgbWFwRGF0YSkge1xuXG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgbWFwRGF0YS5mb3JFYWNoKG1hcHBpbmcgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdE9iaiA9IHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBtYXBwaW5nLnNlcnZlckNvbHVtbixcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogbWFwcGluZy5kYXRhVHlwZSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogbWFwcGluZy5vcGVyYXRvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG1hcHBpbmcuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgICAgICAgIGFsaWFzQ29sdW1uTmFtZTogbWFwcGluZy5sb2NhbENvbHVtbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAobWFwcGluZy5zZXJ2ZXJDb2x1bW4uaW5jbHVkZXMoJ2RhdGUnKSAmJiB0eXBlb2YgcmVzdWx0T2JqLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmIChtYXBwaW5nLmZvcm1hdHRlciAmJiBtYXBwaW5nLmZvcm1hdHRlciAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KG1hcHBpbmcuZm9ybWF0dGVyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJkYXRhLmZpbmQoZiA9PiBmLmhhc093blByb3BlcnR5KG1hcHBpbmcubG9jYWxDb2x1bW4pKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWFwcGluZy5kZWZhdWx0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJbbWFwcGluZy5sb2NhbENvbHVtbl07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoub3BlcmF0b3IgPSBcImluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSB2YWx1ZS5qb2luKFwiLFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXBwaW5nLnNlcnZlckNvbHVtbi5pbmNsdWRlcygnZGF0ZScpICYmIHR5cGVvZiByZXN1bHRPYmoudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1hcHBpbmcuZGVmYXVsdFZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVzdWx0T2JqKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZpbHRlcmRhdGEgPSBmaWx0ZXJkYXRhLmZpbHRlcihvYmogPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMob2JqKVswXTtcbiAgICAgICAgICAgIHJldHVybiBrZXkgIT09ICdzdGFydERhdGUnICYmIGtleSAhPT0gJ2VuZERhdGUnO1xuICAgICAgICB9KTsgZmlsdGVyZGF0YS5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJLZXkgPSBPYmplY3Qua2V5cyhmaWx0ZXIpWzBdO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdNYXBwaW5nID0gbWFwRGF0YS5maW5kKG1hcHBpbmcgPT4gbWFwcGluZy5sb2NhbENvbHVtbiA9PT0gZmlsdGVyS2V5KTtcblxuICAgICAgICAgICAgaWYgKCFleGlzdGluZ01hcHBpbmcpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0T2JqID0ge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBmaWx0ZXJLZXksXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyW2ZpbHRlcktleV1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyW2ZpbHRlcktleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE9iai5vcGVyYXRvciA9IFwiaW5cIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gZmlsdGVyW2ZpbHRlcktleV0uam9pbihcIixcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gZmlsdGVyW2ZpbHRlcktleV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gZm9yIG1jaXQgb25seVxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJLZXkgPT0gJ29wZXJhdG9yX2tleScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0T2JqLm9wZXJhdG9yID0gXCJlcVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChyZXN1bHRPYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuXG4gICAgICAgIC8vIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIob2JqID0+IG9iai52YWx1ZSAhPT0gbnVsbCAmJiBvYmoudmFsdWUgIT09IFwiXCIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG4gICAgZ2V0VW5pcXVlRGF0YVNldE9iamVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pcXVlRGF0YVNldE9iamVjdDtcbiAgICB9XG5cblxufVxuIl19
|
|
@@ -259,7 +259,12 @@ export class ApplicationDatasetComponent {
|
|
|
259
259
|
value: mapping.defaultValue
|
|
260
260
|
};
|
|
261
261
|
if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {
|
|
262
|
-
|
|
262
|
+
if (mapping.formatter && mapping.formatter !== "") {
|
|
263
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(mapping.formatter);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(this.environment.dataFormat);
|
|
267
|
+
}
|
|
263
268
|
}
|
|
264
269
|
const filter = filterdata.find(f => f.hasOwnProperty(mapping.localColumn));
|
|
265
270
|
if (filter) {
|
|
@@ -273,7 +278,12 @@ export class ApplicationDatasetComponent {
|
|
|
273
278
|
resultObj.value = value;
|
|
274
279
|
}
|
|
275
280
|
if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {
|
|
276
|
-
|
|
281
|
+
if (mapping.formatter && mapping.formatter !== "") {
|
|
282
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(mapping.formatter);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(this.environment.dataFormat);
|
|
286
|
+
}
|
|
277
287
|
}
|
|
278
288
|
}
|
|
279
289
|
}
|
|
@@ -373,7 +383,12 @@ export class ApplicationDatasetComponent {
|
|
|
373
383
|
value: mapping.defaultValue
|
|
374
384
|
};
|
|
375
385
|
if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {
|
|
376
|
-
|
|
386
|
+
if (mapping.formatter && mapping.formatter !== "") {
|
|
387
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(mapping.formatter);
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
resultObj.value = moment(resultObj.value, "YYYY-MM-DD").format(this.environment.dataFormat);
|
|
391
|
+
}
|
|
377
392
|
}
|
|
378
393
|
result.push(resultObj);
|
|
379
394
|
});
|
|
@@ -392,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
392
407
|
type: ViewChild,
|
|
393
408
|
args: ['scrollToElement']
|
|
394
409
|
}] } });
|
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tZGF0YXNldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jb21wb25lbnQvYXBwbGljYXRpb24tZGF0YXNldC9hcHBsaWNhdGlvbi1kYXRhc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9hcHBsaWNhdGlvbi1kYXRhc2V0L2FwcGxpY2F0aW9uLWRhdGFzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJL0MsT0FBTyxNQUFNLE1BQU0sdUJBQXVCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTcEQsTUFBTSxPQUFPLDJCQUEyQjtJQW9CdEMsWUFDVSxPQUFrQyxFQUNuQyxhQUE0QixFQUMzQixNQUFxQixFQUNyQixjQUE4QixFQUM5QixNQUFjLEVBQ2QsS0FBWSxFQUNaLFVBQTRCLEVBQ0gsV0FBZ0I7UUFQekMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVB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O2dCQUM5QixlQUFlLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ3BDLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWTthQUM1QixDQUFDO1lBQ0YsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLFNBQVMsQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUNoRixTQUFTLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzdGO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O3dIQWhhVSwyQkFBMkIsOE5BNEI1QixlQUFlOzRHQTVCZCwyQkFBMkIsbUxDbEJ4QyxxMkpBZ0dXOzJGRDlFRSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UseUJBQXlCOzswQkFnQ2hDLE1BQU07MkJBQUMsZUFBZTs0Q0FuQkssZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBjb25maXJtIH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9kaWFsb2cnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi8uLi8uLi9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsga3BpY29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2twaS1zZXJ2aWNlJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hcHBsaWNhdGlvbi1kYXRhc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcGxpY2F0aW9uLWRhdGFzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHBsaWNhdGlvbi1kYXRhc2V0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25EYXRhc2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGF0YVNldHRhYmxlRGF0YVNvdXJjZTogYW55O1xuICBpc0xvYWRlcjogYm9vbGVhbjtcbiAgaXNEdXBsaWRhdGVWaWV3OiBib29sZWFuO1xuICBpc05ld0RhdGFTZXRDcmVhdGVWaWV3OiBib29sZWFuO1xuXG4gIHBhZ2VWaWV3SWQ6IGJvb2xlYW47XG4gIHBhZ2VDb25maWdJZDogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxUb0VsZW1lbnQnKSBzY3JvbGxUb0VsZW1lbnQhOiBFbGVtZW50UmVmO1xuICBkZWZhdWx0U3RhcnREYXRlOiBhbnk7XG4gIGRlZmF1bHRFbmREYXRlOiBhbnk7XG4gIGlzRGF0YXNldFByZXZpZXc6IGJvb2xlYW47XG4gIGlzRmlsdGVySW5wdXRzOiBib29sZWFuO1xuICBpc0RhdGFzZXRsb2FkZXI6IGJvb2xlYW47XG4gIGRhdGFTb3VyY2VNb2RhbDogYW55ID0ge307XG4gIHNlbGVjdGVkRGF0YVNldDogYW55O1xuXG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHRpdGxlOiBUaXRsZSxcbiAgICBwcml2YXRlIGtwaVNlcnZpY2U6IGtwaWNvbW1vblNlcnZpY2UsXG4gICAgQEluamVjdChBUFBfRU5WSVJPTk1FTlQpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLnRpdGxlLnNldFRpdGxlKCdBcHBsaWNhdGlvbiBEYXRhc2V0cycpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgbGV0IGNvbnRlbnRWaWV3SWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWyd2aWV3SWQnXTtcbiAgICBpZiAoY29udGVudFZpZXdJZCkge1xuICAgICAgdGhpcy5wYWdlVmlld0lkID0gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IGNvbnRlbnRQYWdlSWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydwYWdlSWQnXTtcbiAgICBpZiAoY29udGVudFBhZ2VJZCkge1xuICAgICAgdGhpcy5wYWdlQ29uZmlnSWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmdldERhdGFTZXQoKTtcbiAgfVxuXG4gIGdldERhdGFTZXQoKSB7XG4gICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcERhdGFzZXRDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhU2V0dGFibGVEYXRhU291cmNlID0gZGF0YTtcbiAgICAgICAgbGV0IGNvbnRlbnREYXRhc2V0ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snZGF0YXNldElkJ107XG4gICAgICAgIGlmIChjb250ZW50RGF0YXNldCkge1xuICAgICAgICAgIGNvbnN0IGZvdW5kT2JqZWN0ID0gdGhpcy5kYXRhU2V0dGFibGVEYXRhU291cmNlLmZpbmQodmlldyA9PiB2aWV3LmRhdGFzZXRJZCA9PT0gY29udGVudERhdGFzZXQpO1xuICAgICAgICAgIHRoaXMuZWRpdERhdGFzZXQoZm91bmRPYmplY3QpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0RhdGFzZXQgQ3JlYXRpb24nKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldENyZWF0ZU5ld0RhdGFzZXQoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXRhc2V0L2RhdGFzZXRFZGl0b3InXSlcblxuICB9XG5cblxuICBkdXBsaWNhdGVEYXRhc2V0KGRhdGEpIHtcbiAgICAvLyB0aGlzLnNlcnZpY2Uuc2V0Q3VycmVudERhdGFzZXRWYWx1ZShkYXRhKVxuICAgIGxldCBuYXZpZ2F0aW9uRXh0cmE6IE5hdmlnYXRpb25FeHRyYXMgPSB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBkYXRhc2V0SWQ6IGRhdGEuZGF0YXNldElkLFxuICAgICAgICBjb250ZW50VHlwZTogXCJjbG9uZVwiXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRGF0YXNldC9kYXRhc2V0RWRpdG9yJ10sIG5hdmlnYXRpb25FeHRyYSlcbiAgfVxuXG5cblxuICBlZGl0RGF0YXNldChkYXRhKSB7XG5cbiAgICB0aGlzLnNlcnZpY2Uuc2V0Q3VycmVudERhdGFzZXRWYWx1ZShkYXRhKVxuICAgIGxldCBuYXZpZ2F0aW9uRXh0cmE6IE5hdmlnYXRpb25FeHRyYXMgPSB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBkYXRhc2V0SWQ6IGRhdGEuZGF0YXNldElkLFxuICAgICAgICBjb250ZW50VHlwZTogXCJlZGl0XCJcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXRhc2V0L2RhdGFzZXRFZGl0b3InXSwgbmF2aWdhdGlvbkV4dHJhKVxuXG4gIH1cblxuICBkZWxldGVEYXRhc2V0KGRhdGEpIHtcbiAgICBsZXQgcmVzdWx0ID0gY29uZmlybShcIjxpPkFyZSBZb3UgU3VyZT88L2k+XCIsIFwiRGVsZXRlIERhdGFzZXRcIik7XG4gICAgcmVzdWx0LnRoZW4oKGRpYWxvZ1Jlc3VsdCkgPT4ge1xuICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZUFwcERhdGFzZXRDb25maWcoZGF0YS5kYXRhc2V0SWQpLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmdldERhdGFTZXQoKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRGF0YXNldCBEZWxldGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1J1bGUgTW9kdWxlJyk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGJhY2tUb1ZpZXcoKSB7XG4gICAgbGV0IGNvbnRlbnRWaWV3SWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWyd2aWV3SWQnXTtcbiAgICBsZXQgY29udGVudFBhZ2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGlmIChjb250ZW50Vmlld0lkICYmIGNvbnRlbnRQYWdlSWQpIHtcbiAgICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICd2aWV3SWQnOiBjb250ZW50Vmlld0lkLFxuICAgICAgICAgICdwYWdlSWQnOiBjb250ZW50UGFnZUlkXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uVmlld3MnXSwgbmF2aWdhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICd2aWV3SWQnOiBjb250ZW50Vmlld0lkLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvblZpZXdzJ10sIG5hdmlnYXRpb24pO1xuICAgIH1cblxuICB9XG5cbiAgYmFja1RvUGFnZSgpIHtcbiAgICBsZXQgY29udGVudFBhZ2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgJ3BhZ2VJZCc6IGNvbnRlbnRQYWdlSWQsXG4gICAgICAgICdjb250ZW50VHlwZSc6ICdlZGl0J1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9wYWdlQ29uZmlnQ29udHJvbGxlciddLCBuYXZpZ2F0aW9uKTtcbiAgfVxuXG4gIGdvdG9WaWV3cygpIHtcbiAgICBsZXQgY29udGVudFBhZ2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGlmIChjb250ZW50UGFnZUlkKSB7XG4gICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAncGFnZUlkJzogY29udGVudFBhZ2VJZFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvblZpZXdzJ10sIG5hdmlnYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uVmlld3MnXSk7XG4gICAgfVxuICB9XG5cblxuICBnZXRDYXBpdGFsaXplKGl0ZW06IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2UuY29udmVydFRvU3BhY2VTZXBhcmF0ZWRDYXBpdGFsaXplZChpdGVtKVxuICB9XG4gIGdldEZpbHRlcihpdGVtKSB7XG4gICAgbGV0IGNvbF9uYW1lID0gaXRlbS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChjb2xfbmFtZS5pbmNsdWRlcygnZGF0ZScpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXJ0RGF0ZUNoYW5nZShlLCBpdGVtKSB7XG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXRUeXBlID09IFwic2ltcGxlQXBpXCIpIHtcbiAgICAgIGl0ZW0uZGVmYXVsdFZhbHVlID0gbW9tZW50KGUudmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbS5kZWZhdWx0VmFsdWUgPSBtb21lbnQoZS52YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxuICAgIH1cblxuICB9XG5cbiAgdGVzdERhdGFzZXQoZGF0YSkge1xuICAgIHRoaXMuaXNEYXRhc2V0UHJldmlldyA9IHRydWU7XG4gICAgdGhpcy5kYXRhU291cmNlTW9kYWwgPSB7fTtcbiAgICB0aGlzLmRhdGFTb3VyY2VNb2RhbCA9IGRhdGE7XG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXRUeXBlID09IFwicXVlcnlidWlsZGVyXCIpIHtcbiAgICAgIHRoaXMuaXNGaWx0ZXJJbnB1dHMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhU291cmNlTW9kYWwuZGF0YXNldFR5cGUgPT0gXCJzaW1wbGVBcGlcIikge1xuICAgICAgdGhpcy5pc0ZpbHRlcklucHV0cyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGFTb3VyY2VNb2RhbC5kYXRhc2V0VHlwZSA9PSBcInBsYWluanNvblwiKSB7XG4gICAgICB0aGlzLmlzRmlsdGVySW5wdXRzID0gZmFsc2U7XG4gICAgICB0aGlzLmdldERhdGFQcmV2aWV3KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGFTb3VyY2VNb2RhbC5kYXRhc2V0VHlwZSA9PSBcInNxbFF1ZXJ5XCIpIHtcbiAgICAgIHRoaXMuaXNGaWx0ZXJJbnB1dHMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRmlsdGVySW5wdXRzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ2V0RGF0YVByZXZpZXcoKTtcbiAgICB9XG5cbiAgfVxuXG5cbiAgZ2V0RGF0YVByZXZpZXcoKSB7XG4gICAgdGhpcy5pc0RhdGFzZXRsb2FkZXIgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXRUeXBlID09IFwibW9uZ29cIikge1xuICAgICAgdGhpcy5nZXREYXRhU2V0Rm9yTW9uZ28odGhpcy5kYXRhU291cmNlTW9kYWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhU291cmNlTW9kYWwuZGF0YXNldFR5cGUgPT0gXCJxdWVyeWJ1aWxkZXJcIikge1xuICAgICAgdGhpcy5nZXREYXRhc2V0Rm9ySW1wYWxhKHRoaXMuZGF0YVNvdXJjZU1vZGFsKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXRUeXBlID09IFwic2ltcGxlQXBpXCIpIHtcbiAgICAgIHRoaXMuZ2V0RGF0YXNldEZvclNpbXBsZUFwaUltcGFsYSh0aGlzLmRhdGFTb3VyY2VNb2RhbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGFTb3VyY2VNb2RhbC5kYXRhc2V0VHlwZSA9PSBcInBsYWluanNvblwiKSB7XG4gICAgICB0aGlzLmdldERhdGFzZXRGb3JQbGFpbkpzb24odGhpcy5kYXRhU291cmNlTW9kYWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhU291cmNlTW9kYWwuZGF0YXNldFR5cGUgPT0gXCJzcWxRdWVyeVwiKSB7XG4gICAgICB0aGlzLmdldERhdGFzZXRGb3JTcWxUZW1wbGF0ZSh0aGlzLmRhdGFTb3VyY2VNb2RhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMuZ2V0RGF0YXNldEZvckltcGFsYSh0aGlzLnNlbGVjdGVkRGF0YVNldClcbiAgICB9XG4gIH1cblxuICBnZXREYXRhU2V0Rm9yTW9uZ28oZGF0YXNldCkge1xuICAgIGxldCBhcGlKc29uT2JqZWN0ID0ge1xuICAgICAgcmVxdWVzdElkOiBkYXRhc2V0LmNvbmZpZy5zZXJ2aWNlSWQsXG4gICAgfTtcbiAgICBpZiAoZGF0YXNldC5jb25maWcuZml4T3BlcmF0aW9uTGV2bGVzICYmIGRhdGFzZXQuY29uZmlnLmZpeE9wZXJhdGlvbkxldmxlcy5sZW5ndGggIT0gMCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGFzZXQuY29uZmlnLmZpeE9wZXJhdGlvbkxldmxlcykge1xuICAgICAgICBPYmplY3QuYXNzaWduKGFwaUpzb25PYmplY3QsIGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBtb25fY29uZmlnID0gdGhpcy5rcGlTZXJ2aWNlLmdldEFsbFNldmljZUFwaUpzb24oYXBpSnNvbk9iamVjdCk7XG4gICAgdGhpcy5zZXJ2aWNlLmdldERhdGEobW9uX2NvbmZpZywgZGF0YXNldC5jb25maWcuYXBpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YVtcIlBheWxvYWRcIl0gfHwgZGF0YTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlTW9kYWxbJ2RhdGEnXSA9IHBheWxvYWQuc2xpY2UoMCwgMSk7XG4gICAgICAgIHRoaXMuaXNEYXRhc2V0bG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldERhdGFzZXRGb3JJbXBhbGEoZGF0YXNldCkge1xuICAgIGxldCByZXF1ZXN0ID0gZGF0YXNldC5jb25maWcucXVlcnlDb25maWc7XG4gICAgbGV0IHRyYW5zZm9ybWVkT2JqZWN0OiBhbnkgPSB7fTtcbiAgICBmb3IgKGxldCBpdGVtIG9mIHJlcXVlc3QucmVxRmllbGRzKSB7XG4gICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhpdGVtKVswXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0LnZhbHVlcyhpdGVtKVswXTtcbiAgICAgIGlmIChrZXkgPT09ICdzdGFydERhdGUnKSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0LnJlY29yZERhdGUgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnbWVhc3VyZXMnXSA9IHJlcXVlc3QubWVhc3VyZXM7XG4gICAgdHJhbnNmb3JtZWRPYmplY3RbJ2RpbWVuc2lvbnMnXSA9IHJlcXVlc3QuZGltZW5zaW9ucztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZmlsdGVycyddID0gdGhpcy50cmFuc2Zvcm1EYXRhRm9yTUZpbHRlcihbXSwgcmVxdWVzdC5tYXBlZEZpbHRlcnMpO1xuXG4gICAgdHJhbnNmb3JtZWRPYmplY3RbJ3NvcnRlcnMnXSA9IHJlcXVlc3Quc29ydGVycztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFtcInBhZ2luYXRpb25SZXF1aXJlZFwiXSA9IGZhbHNlO1xuICAgIGNvbnNvbGUubG9nKHRyYW5zZm9ybWVkT2JqZWN0KTtcblxuICAgIHRoaXMuc2VydmljZS5nZXREYXRhKHRyYW5zZm9ybWVkT2JqZWN0LCBkYXRhc2V0LmNvbmZpZy5hcGkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhWydkYXRhc2V0J107XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZU1vZGFsWydkYXRhJ10gPSBwYXlsb2FkLnNsaWNlKDAsIDEpO1xuICAgICAgICB0aGlzLmlzRGF0YXNldGxvYWRlciA9IGZhbHNlO1xuXG4gICAgICB9XG4gICAgfSlcblxuICB9XG5cblxuICB0cmFuc2Zvcm1EYXRhRm9yTUZpbHRlcihmaWx0ZXJkYXRhLCBtYXBEYXRhKSB7XG5cbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgbWFwRGF0YS5mb3JFYWNoKG1hcHBpbmcgPT4ge1xuICAgICAgbGV0IHJlc3VsdE9iaiA9IHtcbiAgICAgICAgY29sdW1uTmFtZTogbWFwcGluZy5zZXJ2ZXJDb2x1bW4sXG4gICAgICAgIGRhdGFUeXBlOiBtYXBwaW5nLmRhdGFUeXBlLFxuICAgICAgICBvcGVyYXRvcjogbWFwcGluZy5vcGVyYXRvck5hbWUsXG4gICAgICAgIC8vIHZhbHVlOiAobWFwcGluZy5vcGVyYXRvck5hbWUgPT0gXCJpblwiIHx8IG1hcHBpbmcub3BlcmF0b3JOYW1lID09IFwibm90SW5cIikgPyBbbWFwcGluZy5kZWZhdWx0VmFsdWVdIDogbWFwcGluZy5kZWZhdWx0VmFsdWVcbiAgICAgICAgdmFsdWU6IG1hcHBpbmcuZGVmYXVsdFZhbHVlXG4gICAgICB9O1xuICAgICAgaWYgKG1hcHBpbmcuc2VydmVyQ29sdW1uLmluY2x1ZGVzKCdkYXRlJykgJiYgdHlwZW9mIHJlc3VsdE9iai52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gbW9tZW50KHJlc3VsdE9iai52YWx1ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdCh0aGlzLmVudmlyb25tZW50LmRhdGFGb3JtYXQpO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyID0gZmlsdGVyZGF0YS5maW5kKGYgPT4gZi5oYXNPd25Qcm9wZXJ0eShtYXBwaW5nLmxvY2FsQ29sdW1uKSk7XG4gICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgIGlmIChtYXBwaW5nLmRlZmF1bHRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyW21hcHBpbmcubG9jYWxDb2x1bW5dO1xuXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXN1bHRPYmoub3BlcmF0b3IgPSBcImluXCI7XG4gICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYXBwaW5nLnNlcnZlckNvbHVtbi5pbmNsdWRlcygnZGF0ZScpICYmIHR5cGVvZiByZXN1bHRPYmoudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG1hcHBpbmcuZGVmYXVsdFZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHJlc3VsdE9iaik7XG4gICAgfSk7XG4gICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihvYmogPT4gb2JqLnZhbHVlICE9PSBudWxsICYmIG9iai52YWx1ZSAhPT0gXCJcIik7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldERhdGFzZXRGb3JTaW1wbGVBcGlJbXBhbGEoZGF0YXNldDogYW55KSB7XG4gICAgaWYgKGRhdGFzZXQuY29uZmlnLmFwaVR5cGUgPT09IFwicG9zdFwiKSB7XG4gICAgICBsZXQgc2VydmljZUpzb246IGFueSA9IHt9O1xuICAgICAgZGF0YXNldC5jb25maWcucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmZvckVhY2goKGZpbHRlcjogYW55KSA9PiB7XG4gICAgICAgIHNlcnZpY2VKc29uW2ZpbHRlci5zZXJ2ZXJDb2x1bW5dID0gZmlsdGVyLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgbGV0IGRhdGVjb2x1bW4gPSBmaWx0ZXIuc2VydmVyQ29sdW1uLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChkYXRlY29sdW1uLmluY2x1ZGVzKCdkYXRlJykgJiYgdHlwZW9mIGZpbHRlci5kYXRhVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzZXJ2aWNlSnNvbltmaWx0ZXIuc2VydmVyQ29sdW1uXSA9IG1vbWVudChmaWx0ZXIuZGVmYXVsdFZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VydmljZUpzb25bZmlsdGVyLnNlcnZlckNvbHVtbl0gPSBmaWx0ZXIuZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG5cblxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2VydmljZS5nZXRTaW1wbGVBcGlQb3N0UmVxdWVzdChkYXRhc2V0LmNvbmZpZy5hcGksIHNlcnZpY2VKc29uKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRhdGFbXCJQYXlsb2FkXCJdIHx8IGRhdGE7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlTW9kYWxbJ2RhdGEnXSA9IHBheWxvYWQuc2xpY2UoMCwgMSk7O1xuICAgICAgICAgIHRoaXMuaXNEYXRhc2V0bG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGRhdGFzZXQuY29uZmlnLmFwaVR5cGUgPT09IFwiZ2V0XCIpIHtcbiAgICAgIC8vIENvbnN0cnVjdCBHRVQgVVJMIHdpdGggcGFyYW1ldGVyc1xuICAgICAgbGV0IHJlcXVlc3RVcmwgPSBkYXRhc2V0LmNvbmZpZy5hcGkgKyBcIj9cIjtcbiAgICAgIGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5mb3JFYWNoKChmaWx0ZXI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXF1ZXN0VXJsICs9IGAke2ZpbHRlci5zZXJ2ZXJDb2x1bW59PSR7ZmlsdGVyLmRlZmF1bHRWYWx1ZX1gO1xuICAgICAgICBpZiAoaW5kZXggPCBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHJlcXVlc3RVcmwgKz0gXCImXCI7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBNYWtlIEdFVCByZXF1ZXN0XG4gICAgICB0aGlzLnNlcnZpY2UuZ2V0U2ltcGxlQXBpR2V0UmVxdWVzdChyZXF1ZXN0VXJsKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRhdGFbXCJQYXlsb2FkXCJdIHx8IGRhdGE7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlTW9kYWxbJ2RhdGEnXSA9IHBheWxvYWQuc2xpY2UoMCwgMSk7O1xuICAgICAgICAgIHRoaXMuaXNEYXRhc2V0bG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuXG5cblxuICBnZXREYXRhc2V0Rm9yUGxhaW5Kc29uKGRhdGFzZXQpIHtcbiAgICBsZXQgcmVxdWVzdGFwaSA9IGRhdGFzZXQuY29uZmlnLmFwaSArICc/ZGF0YXNldElkPScgKyBkYXRhc2V0LmRhdGFzZXRJZDtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0SnNvbkRhdGFzZXRQYXlsb2FkKHJlcXVlc3RhcGkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZU1vZGFsWydkYXRhJ10gPSBkYXRhLnNsaWNlKDAsIDEpO1xuICAgICAgICB0aGlzLmlzRGF0YXNldGxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGFzZXRGb3JTcWxUZW1wbGF0ZShkYXRhc2V0KSB7XG4gICAgXG4gICAgbGV0IHJlcXVlc3RBcCA9IGRhdGFzZXQuY29uZmlnLmFwaTtcbiAgICBsZXQgcmVxdWVzdF9wYXJhbXMgPSB7XG4gICAgICAnZGJDb25maWcnOiBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy5kYkNvbmZpZyxcbiAgICAgICdkYXRhYmFzZU5hbWUnOiBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy5kYXRhYmFzZU5hbWUsXG4gICAgICAnZmlsdGVycyc6IHRoaXMudHJhbnNmb3JtRGF0YUZvck1GaWx0ZXJGb3JTUWwoZGF0YXNldC5jb25maWcucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzKSxcbiAgICAgICd0ZW1wbGF0ZVF1ZXJ5JzogZGF0YXNldC5jb25maWcucXVlcnlDb25maWcudGVtcGxhdGVRdWVyeSxcbiAgICAgICdlbnJpY2htZW50cyc6IGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLmVucmljaG1lbnRzLFxuICAgIH1cbiAgICB0aGlzLnNlcnZpY2UuZ2VuZXJpY1NxbFF1ZXJ5UmVzcG9uc2UocmVxdWVzdEFwLCByZXF1ZXN0X3BhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlTW9kYWxbJ2RhdGEnXSA9IGRhdGEuc2xpY2UoMCwgMSk7XG4gICAgICAgIHRoaXMuaXNEYXRhc2V0bG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICB0cmFuc2Zvcm1EYXRhRm9yTUZpbHRlckZvclNRbChtYXBEYXRhKSB7XG5cbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgbWFwRGF0YS5mb3JFYWNoKG1hcHBpbmcgPT4ge1xuICAgICAgbGV0IHJlc3VsdE9iaiA9IHtcbiAgICAgICAgY29sdW1uTmFtZTogbWFwcGluZy5zZXJ2ZXJDb2x1bW4sXG4gICAgICAgIGRhdGFUeXBlOiBtYXBwaW5nLmRhdGFUeXBlLFxuICAgICAgICBvcGVyYXRvcjogbWFwcGluZy5vcGVyYXRvck5hbWUsXG4gICAgICAgIGFsaWFzQ29sdW1uTmFtZTogbWFwcGluZy5sb2NhbENvbHVtbixcbiAgICAgICAgdmFsdWU6IG1hcHBpbmcuZGVmYXVsdFZhbHVlXG4gICAgICB9O1xuICAgICAgaWYgKG1hcHBpbmcuc2VydmVyQ29sdW1uLmluY2x1ZGVzKCdkYXRlJykgJiYgdHlwZW9mIHJlc3VsdE9iai52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVzdWx0T2JqLnZhbHVlID0gbW9tZW50KHJlc3VsdE9iai52YWx1ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdCh0aGlzLmVudmlyb25tZW50LmRhdGFGb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICByZXN1bHQucHVzaChyZXN1bHRPYmopO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG4gICAgPGxpYi1jb21tb24taGVhZGVyIFtwYWdlVGl0bGVdPVwiJ0FwcGxpY2F0aW9uIERhdGFzZXRzJ1wiPjwvbGliLWNvbW1vbi1oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC00IHctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0zIHAtNCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTIgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YWJsZSBtci0yXCI+PC9pPiBNYW5hZ2UgRGF0YXNldHNcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bkxpZ2h0V2hpdGV9fVwiIChjbGljayk9XCJiYWNrVG9WaWV3KClcIiAqbmdJZj1cInBhZ2VWaWV3SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgVG8gVmlld1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5MaWdodFdoaXRlfX1cIiAoY2xpY2spPVwiYmFja1RvUGFnZSgpXCIgKm5nSWY9XCJwYWdlQ29uZmlnSWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgVG8gUGFnZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZ2V0Q3JlYXRlTmV3RGF0YXNldCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgRGF0YXNldFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkZXJcIj48L2FwcC1sb2FkZXI+XG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtkYXRhU291cmNlXT1cImRhdGFTZXR0YWJsZURhdGFTb3VyY2VcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNMb2FkZXJcIiBbc2VsZWN0ZWRSb3dLZXlzXT1cIltdXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbc2hvd0NvbHVtbkxpbmVzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIGlkPVwiZ3JpZENvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tc2VhcmNoLXBhbmVsPlxuXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGF0YXNldE5hbWVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGF0YXNldFR5cGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRlZEJ5XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNyZWF0aW9uRGF0ZVwiIHNvcnRPcmRlcj1cImRlc2NcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWN0aW9uXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlXCIgW2ZpeGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmaXhlZFBvc2l0aW9uPVwicmlnaHRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fVwiIChjbGljayk9XCJlZGl0RGF0YXNldChkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFZGl0XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl93YXJuaW5nX21kfX1cIiAoY2xpY2spPVwiZHVwbGljYXRlRGF0YXNldChkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9tZH19XCIgKGNsaWNrKT1cImRlbGV0ZURhdGFzZXQoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX1cIiAoY2xpY2spPVwidGVzdERhdGFzZXQoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCBEYXRhXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuXG48L2Rpdj5cblxuXG48ZHgtcG9wdXAgWyh2aXNpYmxlKV09XCJpc0RhdGFzZXRQcmV2aWV3XCIgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIiBbZHJhZ0VuYWJsZWRdPVwiZmFsc2VcIiBbd2lkdGhdPVwiODAwXCJcbiAgICBbaGVpZ2h0XT1cIidhdXRvJ1wiIFtzaG93VGl0bGVdPVwidHJ1ZVwiIGNsYXNzPVwicG9wdXBcIiB0aXRsZT1cInt7ZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXROYW1lfX1cIj5cbiAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NvbnRlbnQnXCI+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRleHQtMnhsIFwiPnt7ZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXROYW1lfX08L2Rpdj4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG10LTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpbHRlcklucHV0c1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhU291cmNlTW9kYWwuY29uZmlnLnF1ZXJ5Q29uZmlnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlcXVlc3Qgb2YgZGF0YVNvdXJjZU1vZGFsLmNvbmZpZy5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IHt7Z2V0Q2FwaXRhbGl6ZShyZXF1ZXN0LmxvY2FsQ29sdW1uKX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94IGRpc3BsYXlGb3JtYXQ9XCJ5eXl5LU1NLWRkXCIgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwic3RhcnREYXRlQ2hhbmdlKCRldmVudCxyZXF1ZXN0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0RmlsdGVyKHJlcXVlc3QubG9jYWxDb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJyZXF1ZXN0LmRlZmF1bHRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldEZpbHRlcihyZXF1ZXN0LmxvY2FsQ29sdW1uKVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX0gY3Vyc29yLXBvaW50ZXIgbXktNFwiIChjbGljayk9XCJnZXREYXRhUHJldmlldygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDaGVja1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyIHAtM1wiPlxuICAgICAgICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0RhdGFzZXRsb2FkZXJcIj48L2FwcC1sb2FkZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRGF0YXNldGxvYWRlclwiPlxuXG4gICAgICAgICAgICAgICAgPHByZT48Y29kZT57e2RhdGFTb3VyY2VNb2RhbC5kYXRhIHwganNvbn19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9keC1wb3B1cD4iXX0=
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tZGF0YXNldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jb21wb25lbnQvYXBwbGljYXRpb24tZGF0YXNldC9hcHBsaWNhdGlvbi1kYXRhc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9hcHBsaWNhdGlvbi1kYXRhc2V0L2FwcGxpY2F0aW9uLWRhdGFzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJL0MsT0FBTyxNQUFNLE1BQU0sdUJBQXVCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTcEQsTUFBTSxPQUFPLDJCQUEyQjtJQW9CdEMsWUFDVSxPQUFrQyxFQUNuQyxhQUE0QixFQUMzQixNQUFxQixFQUNyQixjQUE4QixFQUM5QixNQUFjLEVBQ2QsS0FBWSxFQUNaLFVBQTRCLEVBQ0gsV0FBZ0I7UUFQekMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVB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LENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O3dIQW5iVSwyQkFBMkIsOE5BNEI1QixlQUFlOzRHQTVCZCwyQkFBMkIsbUxDbEJ4QyxxMkpBZ0dXOzJGRDlFRSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UseUJBQXlCOzswQkFnQ2hDLE1BQU07MkJBQUMsZUFBZTs0Q0FuQkssZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBjb25maXJtIH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9kaWFsb2cnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi8uLi8uLi9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsga3BpY29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2twaS1zZXJ2aWNlJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hcHBsaWNhdGlvbi1kYXRhc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcGxpY2F0aW9uLWRhdGFzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHBsaWNhdGlvbi1kYXRhc2V0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25EYXRhc2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGF0YVNldHRhYmxlRGF0YVNvdXJjZTogYW55O1xuICBpc0xvYWRlcjogYm9vbGVhbjtcbiAgaXNEdXBsaWRhdGVWaWV3OiBib29sZWFuO1xuICBpc05ld0RhdGFTZXRDcmVhdGVWaWV3OiBib29sZWFuO1xuXG4gIHBhZ2VWaWV3SWQ6IGJvb2xlYW47XG4gIHBhZ2VDb25maWdJZDogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxUb0VsZW1lbnQnKSBzY3JvbGxUb0VsZW1lbnQhOiBFbGVtZW50UmVmO1xuICBkZWZhdWx0U3RhcnREYXRlOiBhbnk7XG4gIGRlZmF1bHRFbmREYXRlOiBhbnk7XG4gIGlzRGF0YXNldFByZXZpZXc6IGJvb2xlYW47XG4gIGlzRmlsdGVySW5wdXRzOiBib29sZWFuO1xuICBpc0RhdGFzZXRsb2FkZXI6IGJvb2xlYW47XG4gIGRhdGFTb3VyY2VNb2RhbDogYW55ID0ge307XG4gIHNlbGVjdGVkRGF0YVNldDogYW55O1xuXG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHRpdGxlOiBUaXRsZSxcbiAgICBwcml2YXRlIGtwaVNlcnZpY2U6IGtwaWNvbW1vblNlcnZpY2UsXG4gICAgQEluamVjdChBUFBfRU5WSVJPTk1FTlQpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLnRpdGxlLnNldFRpdGxlKCdBcHBsaWNhdGlvbiBEYXRhc2V0cycpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgbGV0IGNvbnRlbnRWaWV3SWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWyd2aWV3SWQnXTtcbiAgICBpZiAoY29udGVudFZpZXdJZCkge1xuICAgICAgdGhpcy5wYWdlVmlld0lkID0gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IGNvbnRlbnRQYWdlSWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydwYWdlSWQnXTtcbiAgICBpZiAoY29udGVudFBhZ2VJZCkge1xuICAgICAgdGhpcy5wYWdlQ29uZmlnSWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmdldERhdGFTZXQoKTtcbiAgfVxuXG4gIGdldERhdGFTZXQoKSB7XG4gICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcERhdGFzZXRDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhU2V0dGFibGVEYXRhU291cmNlID0gZGF0YTtcbiAgICAgICAgbGV0IGNvbnRlbnREYXRhc2V0ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snZGF0YXNldElkJ107XG4gICAgICAgIGlmIChjb250ZW50RGF0YXNldCkge1xuICAgICAgICAgIGNvbnN0IGZvdW5kT2JqZWN0ID0gdGhpcy5kYXRhU2V0dGFibGVEYXRhU291cmNlLmZpbmQodmlldyA9PiB2aWV3LmRhdGFzZXRJZCA9PT0gY29udGVudERhdGFzZXQpO1xuICAgICAgICAgIHRoaXMuZWRpdERhdGFzZXQoZm91bmRPYmplY3QpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0RhdGFzZXQgQ3JlYXRpb24nKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldENyZWF0ZU5ld0RhdGFzZXQoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXRhc2V0L2RhdGFzZXRFZGl0b3InXSlcblxuICB9XG5cblxuICBkdXBsaWNhdGVEYXRhc2V0KGRhdGEpIHtcbiAgICAvLyB0aGlzLnNlcnZpY2Uuc2V0Q3VycmVudERhdGFzZXRWYWx1ZShkYXRhKVxuICAgIGxldCBuYXZpZ2F0aW9uRXh0cmE6IE5hdmlnYXRpb25FeHRyYXMgPSB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBkYXRhc2V0SWQ6IGRhdGEuZGF0YXNldElkLFxuICAgICAgICBjb250ZW50VHlwZTogXCJjbG9uZVwiXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRGF0YXNldC9kYXRhc2V0RWRpdG9yJ10sIG5hdmlnYXRpb25FeHRyYSlcbiAgfVxuXG5cblxuICBlZGl0RGF0YXNldChkYXRhKSB7XG5cbiAgICB0aGlzLnNlcnZpY2Uuc2V0Q3VycmVudERhdGFzZXRWYWx1ZShkYXRhKVxuICAgIGxldCBuYXZpZ2F0aW9uRXh0cmE6IE5hdmlnYXRpb25FeHRyYXMgPSB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBkYXRhc2V0SWQ6IGRhdGEuZGF0YXNldElkLFxuICAgICAgICBjb250ZW50VHlwZTogXCJlZGl0XCJcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXRhc2V0L2RhdGFzZXRFZGl0b3InXSwgbmF2aWdhdGlvbkV4dHJhKVxuXG4gIH1cblxuICBkZWxldGVEYXRhc2V0KGRhdGEpIHtcbiAgICBsZXQgcmVzdWx0ID0gY29uZmlybShcIjxpPkFyZSBZb3UgU3VyZT88L2k+XCIsIFwiRGVsZXRlIERhdGFzZXRcIik7XG4gICAgcmVzdWx0LnRoZW4oKGRpYWxvZ1Jlc3VsdCkgPT4ge1xuICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZUFwcERhdGFzZXRDb25maWcoZGF0YS5kYXRhc2V0SWQpLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmdldERhdGFTZXQoKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRGF0YXNldCBEZWxldGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1J1bGUgTW9kdWxlJyk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGJhY2tUb1ZpZXcoKSB7XG4gICAgbGV0IGNvbnRlbnRWaWV3SWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWyd2aWV3SWQnXTtcbiAgICBsZXQgY29udGVudFBhZ2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGlmIChjb250ZW50Vmlld0lkICYmIGNvbnRlbnRQYWdlSWQpIHtcbiAgICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICd2aWV3SWQnOiBjb250ZW50Vmlld0lkLFxuICAgICAgICAgICdwYWdlSWQnOiBjb250ZW50UGFnZUlkXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uVmlld3MnXSwgbmF2aWdhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICd2aWV3SWQnOiBjb250ZW50Vmlld0lkLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvblZpZXdzJ10sIG5hdmlnYXRpb24pO1xuICAgIH1cblxuICB9XG5cbiAgYmFja1RvUGFnZSgpIHtcbiAgICBsZXQgY29udGVudFBhZ2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgJ3BhZ2VJZCc6IGNvbnRlbnRQYWdlSWQsXG4gICAgICAgICdjb250ZW50VHlwZSc6ICdlZGl0J1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9wYWdlQ29uZmlnQ29udHJvbGxlciddLCBuYXZpZ2F0aW9uKTtcbiAgfVxuXG4gIGdvdG9WaWV3cygpIHtcbiAgICBsZXQgY29udGVudFBhZ2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGlmIChjb250ZW50UGFnZUlkKSB7XG4gICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAncGFnZUlkJzogY29udGVudFBhZ2VJZFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvblZpZXdzJ10sIG5hdmlnYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uVmlld3MnXSk7XG4gICAgfVxuICB9XG5cblxuICBnZXRDYXBpdGFsaXplKGl0ZW06IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2UuY29udmVydFRvU3BhY2VTZXBhcmF0ZWRDYXBpdGFsaXplZChpdGVtKVxuICB9XG4gIGdldEZpbHRlcihpdGVtKSB7XG4gICAgbGV0IGNvbF9uYW1lID0gaXRlbS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChjb2xfbmFtZS5pbmNsdWRlcygnZGF0ZScpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXJ0RGF0ZUNoYW5nZShlLCBpdGVtKSB7XG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXRUeXBlID09IFwic2ltcGxlQXBpXCIpIHtcbiAgICAgIGl0ZW0uZGVmYXVsdFZhbHVlID0gbW9tZW50KGUudmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbS5kZWZhdWx0VmFsdWUgPSBtb21lbnQoZS52YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxuICAgIH1cblxuICB9XG5cbiAgdGVzdERhdGFzZXQoZGF0YSkge1xuICAgIHRoaXMuaXNEYXRhc2V0UHJldmlldyA9IHRydWU7XG4gICAgdGhpcy5kYXRhU291cmNlTW9kYWwgPSB7fTtcbiAgICB0aGlzLmRhdGFTb3VyY2VNb2RhbCA9IGRhdGE7XG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXRUeXBlID09IFwicXVlcnlidWlsZGVyXCIpIHtcbiAgICAgIHRoaXMuaXNGaWx0ZXJJbnB1dHMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhU291cmNlTW9kYWwuZGF0YXNldFR5cGUgPT0gXCJzaW1wbGVBcGlcIikge1xuICAgICAgdGhpcy5pc0ZpbHRlcklucHV0cyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGFTb3VyY2VNb2RhbC5kYXRhc2V0VHlwZSA9PSBcInBsYWluanNvblwiKSB7XG4gICAgICB0aGlzLmlzRmlsdGVySW5wdXRzID0gZmFsc2U7XG4gICAgICB0aGlzLmdldERhdGFQcmV2aWV3KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGFTb3VyY2VNb2RhbC5kYXRhc2V0VHlwZSA9PSBcInNxbFF1ZXJ5XCIpIHtcbiAgICAgIHRoaXMuaXNGaWx0ZXJJbnB1dHMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRmlsdGVySW5wdXRzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ2V0RGF0YVByZXZpZXcoKTtcbiAgICB9XG5cbiAgfVxuXG5cbiAgZ2V0RGF0YVByZXZpZXcoKSB7XG4gICAgdGhpcy5pc0RhdGFzZXRsb2FkZXIgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXRUeXBlID09IFwibW9uZ29cIikge1xuICAgICAgdGhpcy5nZXREYXRhU2V0Rm9yTW9uZ28odGhpcy5kYXRhU291cmNlTW9kYWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhU291cmNlTW9kYWwuZGF0YXNldFR5cGUgPT0gXCJxdWVyeWJ1aWxkZXJcIikge1xuICAgICAgdGhpcy5nZXREYXRhc2V0Rm9ySW1wYWxhKHRoaXMuZGF0YVNvdXJjZU1vZGFsKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YVNvdXJjZU1vZGFsLmRhdGFzZXRUeXBlID09IFwic2ltcGxlQXBpXCIpIHtcbiAgICAgIHRoaXMuZ2V0RGF0YXNldEZvclNpbXBsZUFwaUltcGFsYSh0aGlzLmRhdGFTb3VyY2VNb2RhbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGFTb3VyY2VNb2RhbC5kYXRhc2V0VHlwZSA9PSBcInBsYWluanNvblwiKSB7XG4gICAgICB0aGlzLmdldERhdGFzZXRGb3JQbGFpbkpzb24odGhpcy5kYXRhU291cmNlTW9kYWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhU291cmNlTW9kYWwuZGF0YXNldFR5cGUgPT0gXCJzcWxRdWVyeVwiKSB7XG4gICAgICB0aGlzLmdldERhdGFzZXRGb3JTcWxUZW1wbGF0ZSh0aGlzLmRhdGFTb3VyY2VNb2RhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMuZ2V0RGF0YXNldEZvckltcGFsYSh0aGlzLnNlbGVjdGVkRGF0YVNldClcbiAgICB9XG4gIH1cblxuICBnZXREYXRhU2V0Rm9yTW9uZ28oZGF0YXNldCkge1xuICAgIGxldCBhcGlKc29uT2JqZWN0ID0ge1xuICAgICAgcmVxdWVzdElkOiBkYXRhc2V0LmNvbmZpZy5zZXJ2aWNlSWQsXG4gICAgfTtcbiAgICBpZiAoZGF0YXNldC5jb25maWcuZml4T3BlcmF0aW9uTGV2bGVzICYmIGRhdGFzZXQuY29uZmlnLmZpeE9wZXJhdGlvbkxldmxlcy5sZW5ndGggIT0gMCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGFzZXQuY29uZmlnLmZpeE9wZXJhdGlvbkxldmxlcykge1xuICAgICAgICBPYmplY3QuYXNzaWduKGFwaUpzb25PYmplY3QsIGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBtb25fY29uZmlnID0gdGhpcy5rcGlTZXJ2aWNlLmdldEFsbFNldmljZUFwaUpzb24oYXBpSnNvbk9iamVjdCk7XG4gICAgdGhpcy5zZXJ2aWNlLmdldERhdGEobW9uX2NvbmZpZywgZGF0YXNldC5jb25maWcuYXBpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YVtcIlBheWxvYWRcIl0gfHwgZGF0YTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlTW9kYWxbJ2RhdGEnXSA9IHBheWxvYWQuc2xpY2UoMCwgMSk7XG4gICAgICAgIHRoaXMuaXNEYXRhc2V0bG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldERhdGFzZXRGb3JJbXBhbGEoZGF0YXNldCkge1xuICAgIGxldCByZXF1ZXN0ID0gZGF0YXNldC5jb25maWcucXVlcnlDb25maWc7XG4gICAgbGV0IHRyYW5zZm9ybWVkT2JqZWN0OiBhbnkgPSB7fTtcbiAgICBmb3IgKGxldCBpdGVtIG9mIHJlcXVlc3QucmVxRmllbGRzKSB7XG4gICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhpdGVtKVswXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0LnZhbHVlcyhpdGVtKVswXTtcbiAgICAgIGlmIChrZXkgPT09ICdzdGFydERhdGUnKSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0LnJlY29yZERhdGUgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnbWVhc3VyZXMnXSA9IHJlcXVlc3QubWVhc3VyZXM7XG4gICAgdHJhbnNmb3JtZWRPYmplY3RbJ2RpbWVuc2lvbnMnXSA9IHJlcXVlc3QuZGltZW5zaW9ucztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZmlsdGVycyddID0gdGhpcy50cmFuc2Zvcm1EYXRhRm9yTUZpbHRlcihbXSwgcmVxdWVzdC5tYXBlZEZpbHRlcnMpO1xuXG4gICAgdHJhbnNmb3JtZWRPYmplY3RbJ3NvcnRlcnMnXSA9IHJlcXVlc3Quc29ydGVycztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFtcInBhZ2luYXRpb25SZXF1aXJlZFwiXSA9IGZhbHNlO1xuICAgIGNvbnNvbGUubG9nKHRyYW5zZm9ybWVkT2JqZWN0KTtcblxuICAgIHRoaXMuc2VydmljZS5nZXREYXRhKHRyYW5zZm9ybWVkT2JqZWN0LCBkYXRhc2V0LmNvbmZpZy5hcGkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhWydkYXRhc2V0J107XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZU1vZGFsWydkYXRhJ10gPSBwYXlsb2FkLnNsaWNlKDAsIDEpO1xuICAgICAgICB0aGlzLmlzRGF0YXNldGxvYWRlciA9IGZhbHNlO1xuXG4gICAgICB9XG4gICAgfSlcblxuICB9XG5cblxuICB0cmFuc2Zvcm1EYXRhRm9yTUZpbHRlcihmaWx0ZXJkYXRhLCBtYXBEYXRhKSB7XG5cbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgbWFwRGF0YS5mb3JFYWNoKG1hcHBpbmcgPT4ge1xuICAgICAgbGV0IHJlc3VsdE9iaiA9IHtcbiAgICAgICAgY29sdW1uTmFtZTogbWFwcGluZy5zZXJ2ZXJDb2x1bW4sXG4gICAgICAgIGRhdGFUeXBlOiBtYXBwaW5nLmRhdGFUeXBlLFxuICAgICAgICBvcGVyYXRvcjogbWFwcGluZy5vcGVyYXRvck5hbWUsXG4gICAgICAgIC8vIHZhbHVlOiAobWFwcGluZy5vcGVyYXRvck5hbWUgPT0gXCJpblwiIHx8IG1hcHBpbmcub3BlcmF0b3JOYW1lID09IFwibm90SW5cIikgPyBbbWFwcGluZy5kZWZhdWx0VmFsdWVdIDogbWFwcGluZy5kZWZhdWx0VmFsdWVcbiAgICAgICAgdmFsdWU6IG1hcHBpbmcuZGVmYXVsdFZhbHVlXG4gICAgICB9O1xuICAgICAgaWYgKG1hcHBpbmcuc2VydmVyQ29sdW1uLmluY2x1ZGVzKCdkYXRlJykgJiYgdHlwZW9mIHJlc3VsdE9iai52YWx1ZSA9PT0gJ3N0cmluZycpIHtcblxuICAgICAgICBpZiAobWFwcGluZy5mb3JtYXR0ZXIgJiYgbWFwcGluZy5mb3JtYXR0ZXIgIT09IFwiXCIpIHtcbiAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KG1hcHBpbmcuZm9ybWF0dGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KHRoaXMuZW52aXJvbm1lbnQuZGF0YUZvcm1hdCk7XG5cbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJkYXRhLmZpbmQoZiA9PiBmLmhhc093blByb3BlcnR5KG1hcHBpbmcubG9jYWxDb2x1bW4pKTtcbiAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgaWYgKG1hcHBpbmcuZGVmYXVsdFZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJbbWFwcGluZy5sb2NhbENvbHVtbl07XG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJlc3VsdE9iai5vcGVyYXRvciA9IFwiaW5cIjtcbiAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1hcHBpbmcuc2VydmVyQ29sdW1uLmluY2x1ZGVzKCdkYXRlJykgJiYgdHlwZW9mIHJlc3VsdE9iai52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChtYXBwaW5nLmZvcm1hdHRlciAmJiBtYXBwaW5nLmZvcm1hdHRlciAhPT0gXCJcIikge1xuICAgICAgICAgICAgICByZXN1bHRPYmoudmFsdWUgPSBtb21lbnQocmVzdWx0T2JqLnZhbHVlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KG1hcHBpbmcuZm9ybWF0dGVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IG1vbWVudChyZXN1bHRPYmoudmFsdWUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQodGhpcy5lbnZpcm9ubWVudC5kYXRhRm9ybWF0KTtcblxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobWFwcGluZy5kZWZhdWx0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2gocmVzdWx0T2JqKTtcbiAgICB9KTtcbiAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKG9iaiA9PiBvYmoudmFsdWUgIT09IG51bGwgJiYgb2JqLnZhbHVlICE9PSBcIlwiKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0RGF0YXNldEZvclNpbXBsZUFwaUltcGFsYShkYXRhc2V0OiBhbnkpIHtcbiAgICBpZiAoZGF0YXNldC5jb25maWcuYXBpVHlwZSA9PT0gXCJwb3N0XCIpIHtcbiAgICAgIGxldCBzZXJ2aWNlSnNvbjogYW55ID0ge307XG4gICAgICBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgICAgc2VydmljZUpzb25bZmlsdGVyLnNlcnZlckNvbHVtbl0gPSBmaWx0ZXIuZGVmYXVsdFZhbHVlO1xuICAgICAgICBsZXQgZGF0ZWNvbHVtbiA9IGZpbHRlci5zZXJ2ZXJDb2x1bW4udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGRhdGVjb2x1bW4uaW5jbHVkZXMoJ2RhdGUnKSAmJiB0eXBlb2YgZmlsdGVyLmRhdGFUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHNlcnZpY2VKc29uW2ZpbHRlci5zZXJ2ZXJDb2x1bW5dID0gbW9tZW50KGZpbHRlci5kZWZhdWx0VmFsdWUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQodGhpcy5lbnZpcm9ubWVudC5kYXRhRm9ybWF0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXJ2aWNlSnNvbltmaWx0ZXIuc2VydmVyQ29sdW1uXSA9IGZpbHRlci5kZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cblxuXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZXJ2aWNlLmdldFNpbXBsZUFwaVBvc3RSZXF1ZXN0KGRhdGFzZXQuY29uZmlnLmFwaSwgc2VydmljZUpzb24pLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YVtcIlBheWxvYWRcIl0gfHwgZGF0YTtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VNb2RhbFsnZGF0YSddID0gcGF5bG9hZC5zbGljZSgwLCAxKTs7XG4gICAgICAgICAgdGhpcy5pc0RhdGFzZXRsb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZGF0YXNldC5jb25maWcuYXBpVHlwZSA9PT0gXCJnZXRcIikge1xuICAgICAgLy8gQ29uc3RydWN0IEdFVCBVUkwgd2l0aCBwYXJhbWV0ZXJzXG4gICAgICBsZXQgcmVxdWVzdFVybCA9IGRhdGFzZXQuY29uZmlnLmFwaSArIFwiP1wiO1xuICAgICAgZGF0YXNldC5jb25maWcucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmZvckVhY2goKGZpbHRlcjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJlcXVlc3RVcmwgKz0gYCR7ZmlsdGVyLnNlcnZlckNvbHVtbn09JHtmaWx0ZXIuZGVmYXVsdFZhbHVlfWA7XG4gICAgICAgIGlmIChpbmRleCA8IGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgcmVxdWVzdFVybCArPSBcIiZcIjtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIE1ha2UgR0VUIHJlcXVlc3RcbiAgICAgIHRoaXMuc2VydmljZS5nZXRTaW1wbGVBcGlHZXRSZXF1ZXN0KHJlcXVlc3RVcmwpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YVtcIlBheWxvYWRcIl0gfHwgZGF0YTtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VNb2RhbFsnZGF0YSddID0gcGF5bG9hZC5zbGljZSgwLCAxKTs7XG4gICAgICAgICAgdGhpcy5pc0RhdGFzZXRsb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG5cblxuXG4gIGdldERhdGFzZXRGb3JQbGFpbkpzb24oZGF0YXNldCkge1xuICAgIGxldCByZXF1ZXN0YXBpID0gZGF0YXNldC5jb25maWcuYXBpICsgJz9kYXRhc2V0SWQ9JyArIGRhdGFzZXQuZGF0YXNldElkO1xuICAgIHRoaXMuc2VydmljZS5nZXRKc29uRGF0YXNldFBheWxvYWQocmVxdWVzdGFwaSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlTW9kYWxbJ2RhdGEnXSA9IGRhdGEuc2xpY2UoMCwgMSk7XG4gICAgICAgIHRoaXMuaXNEYXRhc2V0bG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGF0YXNldEZvclNxbFRlbXBsYXRlKGRhdGFzZXQpIHtcblxuICAgIGxldCByZXF1ZXN0QXAgPSBkYXRhc2V0LmNvbmZpZy5hcGk7XG4gICAgbGV0IHJlcXVlc3RfcGFyYW1zID0ge1xuICAgICAgJ2RiQ29uZmlnJzogZGF0YXNldC5jb25maWcucXVlcnlDb25maWcuZGJDb25maWcsXG4gICAgICAnZGF0YWJhc2VOYW1lJzogZGF0YXNldC5jb25maWcucXVlcnlDb25maWcuZGF0YWJhc2VOYW1lLFxuICAgICAgJ2ZpbHRlcnMnOiB0aGlzLnRyYW5zZm9ybURhdGFGb3JNRmlsdGVyRm9yU1FsKGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycyksXG4gICAgICAndGVtcGxhdGVRdWVyeSc6IGRhdGFzZXQuY29uZmlnLnF1ZXJ5Q29uZmlnLnRlbXBsYXRlUXVlcnksXG4gICAgICAnZW5yaWNobWVudHMnOiBkYXRhc2V0LmNvbmZpZy5xdWVyeUNvbmZpZy5lbnJpY2htZW50cyxcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlLmdlbmVyaWNTcWxRdWVyeVJlc3BvbnNlKHJlcXVlc3RBcCwgcmVxdWVzdF9wYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZU1vZGFsWydkYXRhJ10gPSBkYXRhLnNsaWNlKDAsIDEpO1xuICAgICAgICB0aGlzLmlzRGF0YXNldGxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgdHJhbnNmb3JtRGF0YUZvck1GaWx0ZXJGb3JTUWwobWFwRGF0YSkge1xuXG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIG1hcERhdGEuZm9yRWFjaChtYXBwaW5nID0+IHtcbiAgICAgIGxldCByZXN1bHRPYmogPSB7XG4gICAgICAgIGNvbHVtbk5hbWU6IG1hcHBpbmcuc2VydmVyQ29sdW1uLFxuICAgICAgICBkYXRhVHlwZTogbWFwcGluZy5kYXRhVHlwZSxcbiAgICAgICAgb3BlcmF0b3I6IG1hcHBpbmcub3BlcmF0b3JOYW1lLFxuICAgICAgICBhbGlhc0NvbHVtbk5hbWU6IG1hcHBpbmcubG9jYWxDb2x1bW4sXG4gICAgICAgIHZhbHVlOiBtYXBwaW5nLmRlZmF1bHRWYWx1ZVxuICAgICAgfTtcbiAgICAgIGlmIChtYXBwaW5nLnNlcnZlckNvbHVtbi5pbmNsdWRlcygnZGF0ZScpICYmIHR5cGVvZiByZXN1bHRPYmoudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChtYXBwaW5nLmZvcm1hdHRlciAmJiBtYXBwaW5nLmZvcm1hdHRlciAhPT0gXCJcIikge1xuICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IG1vbWVudChyZXN1bHRPYmoudmFsdWUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQobWFwcGluZy5mb3JtYXR0ZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdE9iai52YWx1ZSA9IG1vbWVudChyZXN1bHRPYmoudmFsdWUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQodGhpcy5lbnZpcm9ubWVudC5kYXRhRm9ybWF0KTtcblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdC5wdXNoKHJlc3VsdE9iaik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cblxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTBcIj5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInQXBwbGljYXRpb24gRGF0YXNldHMnXCI+PC9saWItY29tbW9uLWhlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwLTQgdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMiB0ZXh0LWxnIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJvcmRlci1iIHBiLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRhYmxlIG1yLTJcIj48L2k+IE1hbmFnZSBEYXRhc2V0c1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuTGlnaHRXaGl0ZX19XCIgKGNsaWNrKT1cImJhY2tUb1ZpZXcoKVwiICpuZ0lmPVwicGFnZVZpZXdJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmFjayBUbyBWaWV3XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bkxpZ2h0V2hpdGV9fVwiIChjbGljayk9XCJiYWNrVG9QYWdlKClcIiAqbmdJZj1cInBhZ2VDb25maWdJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmFjayBUbyBQYWdlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fVwiIChjbGljayk9XCJnZXRDcmVhdGVOZXdEYXRhc2V0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBEYXRhc2V0XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwiZGF0YVNldHRhYmxlRGF0YVNvdXJjZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc0xvYWRlclwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtzaG93Q29sdW1uTGluZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgaWQ9XCJncmlkQ29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIj48L2R4by1leHBvcnQ+XG4gICAgICAgICAgICAgICAgPGR4by1zZWFyY2gtcGFuZWwgW2hpZ2hsaWdodENhc2VTZW5zaXRpdmVdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1zZWFyY2gtcGFuZWw+XG5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkYXRhc2V0TmFtZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkYXRhc2V0VHlwZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGVkQnlcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRpb25EYXRlXCIgc29ydE9yZGVyPVwiZGVzY1wiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY3Rpb25cIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGVcIiBbZml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZpeGVkUG9zaXRpb249XCJyaWdodFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImVkaXREYXRhc2V0KGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3dhcm5pbmdfbWR9fVwiIChjbGljayk9XCJkdXBsaWNhdGVEYXRhc2V0KGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX21kfX1cIiAoY2xpY2spPVwiZGVsZXRlRGF0YXNldChkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJ0ZXN0RGF0YXNldChkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBUZXN0IERhdGFcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG5cbjwvZGl2PlxuXG5cbjxkeC1wb3B1cCBbKHZpc2libGUpXT1cImlzRGF0YXNldFByZXZpZXdcIiBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiIFtkcmFnRW5hYmxlZF09XCJmYWxzZVwiIFt3aWR0aF09XCI4MDBcIlxuICAgIFtoZWlnaHRdPVwiJ2F1dG8nXCIgW3Nob3dUaXRsZV09XCJ0cnVlXCIgY2xhc3M9XCJwb3B1cFwiIHRpdGxlPVwie3tkYXRhU291cmNlTW9kYWwuZGF0YXNldE5hbWV9fVwiPlxuICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudCdcIj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGV4dC0yeGwgXCI+e3tkYXRhU291cmNlTW9kYWwuZGF0YXNldE5hbWV9fTwvZGl2PiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbXQtMlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlsdGVySW5wdXRzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFTb3VyY2VNb2RhbC5jb25maWcucXVlcnlDb25maWdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVxdWVzdCBvZiBkYXRhU291cmNlTW9kYWwuY29uZmlnLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4ge3tnZXRDYXBpdGFsaXplKHJlcXVlc3QubG9jYWxDb2x1bW4pfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3ggZGlzcGxheUZvcm1hdD1cInl5eXktTU0tZGRcIiB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJzdGFydERhdGVDaGFuZ2UoJGV2ZW50LHJlcXVlc3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRGaWx0ZXIocmVxdWVzdC5sb2NhbENvbHVtbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInJlcXVlc3QuZGVmYXVsdFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0RmlsdGVyKHJlcXVlc3QubG9jYWxDb2x1bW4pXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fSBjdXJzb3ItcG9pbnRlciBteS00XCIgKGNsaWNrKT1cImdldERhdGFQcmV2aWV3KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBib3JkZXIgcC0zXCI+XG4gICAgICAgICAgICA8YXBwLWxvYWRlciAqbmdJZj1cImlzRGF0YXNldGxvYWRlclwiPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNEYXRhc2V0bG9hZGVyXCI+XG5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7ZGF0YVNvdXJjZU1vZGFsLmRhdGEgfCBqc29ufX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2R4LXBvcHVwPiJdfQ==
|