tuain-ng-forms-lib 15.0.26 → 15.0.28
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/classes/forms/form.mjs +18 -1
- package/esm2020/lib/components/forms/basic-form.mjs +9 -2
- package/fesm2015/tuain-ng-forms-lib.mjs +27 -1
- package/fesm2015/tuain-ng-forms-lib.mjs.map +1 -1
- package/fesm2020/tuain-ng-forms-lib.mjs +25 -1
- package/fesm2020/tuain-ng-forms-lib.mjs.map +1 -1
- package/lib/classes/forms/form.d.ts +4 -0
- package/lib/components/forms/basic-form.d.ts +3 -0
- package/package.json +1 -1
|
@@ -23,6 +23,7 @@ export class FormStructureAndData {
|
|
|
23
23
|
this._immutableData = {};
|
|
24
24
|
this._extraInfo = {};
|
|
25
25
|
this._exclusiveSectionsByAttr = {};
|
|
26
|
+
this.customAttributes = {};
|
|
26
27
|
this.state = '';
|
|
27
28
|
this.actionArray = [];
|
|
28
29
|
this.fieldArray = [];
|
|
@@ -60,6 +61,10 @@ export class FormStructureAndData {
|
|
|
60
61
|
this.setStateFlow(definitionReceived?.states, definitionReceived?.transitions, definitionReceived?.defaultState);
|
|
61
62
|
this.immutableData = definitionReceived.immutableData;
|
|
62
63
|
this.extraInfo = definitionReceived.extraInfo;
|
|
64
|
+
this.customAttributes = {};
|
|
65
|
+
if (definitionReceived?.customAttributes) {
|
|
66
|
+
this.setCustomAttributes(definitionReceived?.customAttributes);
|
|
67
|
+
}
|
|
63
68
|
if (definitionReceived.actions) {
|
|
64
69
|
const formActions = definitionReceived.actions.map(objDef => {
|
|
65
70
|
let visibleStates = objDef.visibleStates;
|
|
@@ -183,6 +188,18 @@ export class FormStructureAndData {
|
|
|
183
188
|
getExtraInfo(name) { return this._extraInfo?.[name]?.value ?? null; }
|
|
184
189
|
set extraInfo(extraInfo) { Object.assign(this._extraInfo, extraInfo); }
|
|
185
190
|
get extraInfo() { return JSON.parse(JSON.stringify(this._extraInfo)); }
|
|
191
|
+
// Custom Attributes
|
|
192
|
+
getCustomAttribute(name) { return this.customAttributes?.[name] ?? null; }
|
|
193
|
+
setCustomAttribute(name, value) { if (name) {
|
|
194
|
+
this.customAttributes[name] = value;
|
|
195
|
+
} }
|
|
196
|
+
setCustomAttributes(attributes) {
|
|
197
|
+
if (attributes && typeof attributes === 'object') {
|
|
198
|
+
Object.entries(attributes).forEach(([name, value]) => {
|
|
199
|
+
this.setCustomAttribute(name, value);
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
186
203
|
// Fields
|
|
187
204
|
get fieldNames() { return this.getFieldNames(); }
|
|
188
205
|
getFields() { return this.fieldArray; }
|
|
@@ -531,4 +548,4 @@ export class FormStructureAndData {
|
|
|
531
548
|
*/
|
|
532
549
|
getformSubject() { return this.subject ?? ''; }
|
|
533
550
|
}
|
|
534
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU5QyxPQUFPLEVBQVksTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUMxQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFzQ3RCLE1BQU0sT0FBTyxvQkFBb0I7SUFxQi9CO1FBcEJpQixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFHbkQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ1QsWUFBTyxHQUFrQixJQUFJLENBQUM7UUFFOUIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osYUFBUSxHQUFHLEVBQUUsQ0FBQztRQU1oQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hC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Q3BELENBQUM7SUFDRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEtBQWdDLEVBQUUsT0FBZ0IsRUFBRSxPQUFnQjtRQUNwRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsSUFBWSxJQUE0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBGOztPQUVHO0lBQ0gsZUFBZSxDQUFDLElBQVksSUFBdUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqRjs7T0FFRztJQUNILGNBQWMsQ0FBQyxJQUFZLElBQXdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFaEY7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxJQUFZLElBQThCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFMUY7O09BRUc7SUFDSCxjQUFjLENBQUMsS0FBYSxJQUFhLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFMUU7O09BRUc7SUFDSCxjQUFjLEtBQWEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqRDs7T0FFRztJQUNILFVBQVUsS0FBYSxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRDs7T0FFRztJQUNILGNBQWMsS0FBYSxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztDQUV4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1BY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBGaWVsZERlc2NyaXB0b3IsIEZpZWxkT3B0aW9uIH0gZnJvbSAnLi9maWVsZCc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZSB9IGZyb20gJy4vdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgUmVjb3JkRm9ybVNlY3Rpb24gfSBmcm9tICcuL3NlY3Rpb24nO1xuaW1wb3J0IHsgUmVjb3JkRm9ybVN1YlNlY3Rpb24gfSBmcm9tICcuL3N1YnNlY3Rpb24nO1xuaW1wb3J0IHsgTk9fRVJST1IsIEhFQURFUiB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgVGFibGVSZWNvcmREYXRhIH0gZnJvbSAnLi90YWJsZS9yb3ctZGF0YSc7XG5cbmNvbnN0IEFDVElWRSA9ICdhY3RpdmUnO1xuY29uc3QgU0hPVyA9ICdzaG93JztcbmNvbnN0IEhJREUgPSAnaGlkZSc7XG5jb25zdCBFTkFCTEUgPSAnZW5hYmxlJztcbmNvbnN0IERJU0FCTEUgPSAnZGlzYWJsZSc7XG5jb25zdCBDTEVBTiA9ICdjbGVhbic7XG5pbnRlcmZhY2UgVHJhbnNpdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTdGF0ZUZsb3cge1xuICBkZWZhdWx0U3RhdGU6IHN0cmluZztcbiAgc3RhdGVzOiBzdHJpbmdbXTtcbiAgdHJhbnNpdGlvbnM6IFRyYW5zaXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFBheWxvYWQge1xuICBmaWVsZENvZGU6IHN0cmluZztcbiAgZmllbGRWYWx1ZTogYW55O1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIGZpZWxkT3B0aW9uczogc3RyaW5nLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUGF5bG9hZCB7XG4gIHRhYmxlQ29kZTogc3RyaW5nO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICByZXF1ZXN0ZWRQYWdlOiBudW1iZXI7XG4gIHJlY29yZHNQZXJQYWdlOiBudW1iZXI7XG4gIGN1cnJlbnRGaWx0ZXI6IGFueSxcbiAgc29ydGluZ0NvbHVtbjogc3RyaW5nO1xuICBzb3J0aW5nRGlyZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBGb3JtUGF5bG9hZCB7XG4gIGZpZWxkczogRmllbGRQYXlsb2FkW10sXG4gIHRhYmxlczogVGFibGVQYXlsb2FkW10sXG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtU3RydWN0dXJlQW5kRGF0YSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ2hhbmdlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBmb3JtQ29uZmlnOiBhbnk7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZyA9ICcnO1xuICB0aXRsZTogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCBzdWJqZWN0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIHN0YXRlRmxvdzogU3RhdGVGbG93O1xuICBwcm90ZWN0ZWQgZmllbGRzID0ge307XG4gIHByb3RlY3RlZCBhY3Rpb25zID0ge307XG4gIHByb3RlY3RlZCB0YWJsZXMgPSB7fTtcbiAgcHJvdGVjdGVkIHNlY3Rpb25zID0ge307XG4gIHByb3RlY3RlZCBmaWVsZEFycmF5OiBGaWVsZERlc2NyaXB0b3JbXTtcbiAgcHJvdGVjdGVkIGFjdGlvbkFycmF5OiBGb3JtQWN0aW9uW107XG4gIHByb3RlY3RlZCB0YWJsZUFycmF5OiBSZWNvcmRUYWJsZVtdO1xuICBwcm90ZWN0ZWQgc2VjdGlvbkFycmF5OiBSZWNvcmRGb3JtU2VjdGlvbltdO1xuXG4gIHByaXZhdGUgX2ltbXV0YWJsZURhdGEgPSB7fTtcbiAgcHJpdmF0ZSBfZXh0cmFJbmZvID0ge307XG4gIHByaXZhdGUgX2V4Y2x1c2l2ZVNlY3Rpb25zQnlBdHRyID0ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICcnO1xuICAgIHRoaXMuYWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLmZpZWxkQXJyYXkgPSBbXTtcbiAgICB0aGlzLnRhYmxlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnNlY3Rpb25BcnJheSA9IFtdO1xuICAgIHRoaXMuc3RhdGVGbG93ID0ge1xuICAgICAgZGVmYXVsdFN0YXRlOiAnJyxcbiAgICAgIHN0YXRlczogW10sXG4gICAgICB0cmFuc2l0aW9uczogW10sXG4gICAgfTtcbiAgfVxuXG4gIHNldENvbmZpZyhmb3JtQ29uZmlnKSB7XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcbiAgfVxuXG4gIGNsZWFuRm9ybSgpIHtcbiAgICB0aGlzLmFjdGlvbkFycmF5ID0gW107XG4gICAgdGhpcy5maWVsZEFycmF5ID0gW107XG4gICAgdGhpcy50YWJsZUFycmF5ID0gW107XG4gICAgdGhpcy5zZWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLnN0YXRlRmxvdyA9IHtcbiAgICAgIGRlZmF1bHRTdGF0ZTogJycsXG4gICAgICBzdGF0ZXM6IFtdLFxuICAgICAgdHJhbnNpdGlvbnM6IFtdLFxuICAgIH07XG4gIH1cblxuICBsb2FkRGVmaW5pdGlvbihkZWZpbml0aW9uUmVjZWl2ZWQpIHtcbiAgICB0aGlzLnN0YXRlID0gJyc7XG4gICAgdGhpcy5jbGVhbkZvcm0oKTtcbiAgICBpZiAoIWRlZmluaXRpb25SZWNlaXZlZCkgeyByZXR1cm47IH1cbiAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUgPz8gZGVmaW5pdGlvblJlY2VpdmVkPy5mb3JtPy5mb3JtQ29kZTtcbiAgICB0aGlzLnRpdGxlID0gKGRlZmluaXRpb25SZWNlaXZlZC5mb3JtICYmIGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybVRpdGxlIDogJyc7XG4gICAgdGhpcy5zZXRTdGF0ZUZsb3coZGVmaW5pdGlvblJlY2VpdmVkPy5zdGF0ZXMsIGRlZmluaXRpb25SZWNlaXZlZD8udHJhbnNpdGlvbnMsXG4gICAgICBkZWZpbml0aW9uUmVjZWl2ZWQ/LmRlZmF1bHRTdGF0ZSk7XG4gICAgdGhpcy5pbW11dGFibGVEYXRhID0gZGVmaW5pdGlvblJlY2VpdmVkLmltbXV0YWJsZURhdGE7XG4gICAgdGhpcy5leHRyYUluZm8gPSBkZWZpbml0aW9uUmVjZWl2ZWQuZXh0cmFJbmZvO1xuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtQWN0aW9ucyA9IGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIGZvcm1BY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbEFjdGlvbiA9IG5ldyBGb3JtQWN0aW9uKGFjdGlvblJlY2VpdmVkLCB0aGlzLmZvcm1Db25maWcpO1xuICAgICAgICBjb25zdCBnbG9iYWxBY3Rpb25Db2RlID0gZ2xvYmFsQWN0aW9uLmFjdGlvbkNvZGU7XG4gICAgICAgIGlmIChnbG9iYWxBY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5hY3Rpb25BcnJheS5wdXNoKGdsb2JhbEFjdGlvbik7XG4gICAgICAgICAgdGhpcy5hY3Rpb25zW2dsb2JhbEFjdGlvbkNvZGVdID0gZ2xvYmFsQWN0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMpIHtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuZmllbGRzLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuZmllbGRNb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZmllbGRSZWNlaXZlZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVG9BZGQgPSBuZXcgRmllbGREZXNjcmlwdG9yKGZpZWxkUmVjZWl2ZWQsIHRoaXMuZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGZpZWxkQ29kZSA9IGZpZWxkVG9BZGQuY29kZTtcbiAgICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICAgIHRoaXMuZmllbGRBcnJheS5wdXNoKGZpZWxkVG9BZGQpO1xuICAgICAgICAgIHRoaXMuZmllbGRzW2ZpZWxkQ29kZV0gPSBmaWVsZFRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMpIHtcbiAgICAgIGNvbnN0IHRhYmxlcyA9IGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXMgfHwgb2JqRGVmLmVkaXRhYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi50YWJsZU1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCB0YWJsZVJlY2VpdmVkIG9mIHRhYmxlcykge1xuICAgICAgICBjb25zdCB0YWJsZVRvQWRkID0gbmV3IFJlY29yZFRhYmxlKHRhYmxlUmVjZWl2ZWQsIHRoaXMuZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHRhYmxlQ29kZSA9IHRhYmxlVG9BZGQudGFibGVDb2RlO1xuICAgICAgICBpZiAodGFibGVDb2RlKSB7XG4gICAgICAgICAgdGhpcy50YWJsZUFycmF5LnB1c2godGFibGVUb0FkZCk7XG4gICAgICAgICAgdGhpcy50YWJsZXNbdGFibGVDb2RlXSA9IHRhYmxlVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtU2VjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuc2VjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnNlY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb25SZWNlaXZlZCBvZiBmb3JtU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TZWN0aW9uKHNlY3Rpb25SZWNlaXZlZCwgdGhpcywgdGhpcy5mb3JtQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkNvZGUgPSBzZWN0aW9uVG9BZGQuc2VjdGlvbkNvZGU7XG4gICAgICAgIGlmIChzZWN0aW9uQ29kZSkge1xuICAgICAgICAgIHRoaXMuc2VjdGlvbkFycmF5LnB1c2goc2VjdGlvblRvQWRkKTtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25zW3NlY3Rpb25Db2RlXSA9IHNlY3Rpb25Ub0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEVzdGFkb3NcbiAgZ2V0IGRlZmF1bHRTdGF0ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlOyB9XG4gIGdldCBzdGF0ZXMoKTogYW55W10geyByZXR1cm4gdGhpcy5zdGF0ZUZsb3cuc3RhdGVzOyB9XG4gIHN1cHBvcnRTdGF0ZShzdGF0ZTogc3RyaW5nID0gJycpOiBib29sZWFuIHsgcmV0dXJuICghIXN0YXRlICYmIHRoaXMuc3RhdGVGbG93LnN0YXRlcz8uaW5jbHVkZXMoc3RhdGUpKTsgfVxuXG4gIGNoYW5nZVN0YXRlKG5ld1N0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgIGlmICghbmV3U3RhdGUgfHwgIXRoaXMuc3VwcG9ydFN0YXRlKG5ld1N0YXRlKSB8fCBjdXJyZW50U3RhdGUgPT09IG5ld1N0YXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uVG9DaGFuZ2UgPSB0aGlzLnN0YXRlRmxvdy50cmFuc2l0aW9ucy5maW5kKHRybnMgPT5cbiAgICAgICAgdHJucy5zb3VyY2UgPT09IHRoaXMuc3RhdGUgJiYgdHJucy5kZXN0aW5hdGlvbiA9PT0gbmV3U3RhdGUpO1xuICAgICAgaWYgKHRyYW5zaXRpb25Ub0NoYW5nZSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlQ2hhbmdlLm5leHQoeyBzdGF0ZTogdGhpcy5zdGF0ZSB9KTtcbiAgICByZXR1cm4gKHRoaXMuc3RhdGUgPT09IG5ld1N0YXRlKTtcbiAgfVxuXG4gIGdldCBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX3N0YXRlQ2hhbmdlOyB9XG5cbiAgc2V0U3RhdGVGbG93KHN0YXRlcz8sIHRyYW5zaXRpb25zPywgZGVmYXVsdFN0YXRlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUZsb3cuc3RhdGVzID0gc3RhdGVzO1xuICAgIHRoaXMuc3RhdGVGbG93LmRlZmF1bHRTdGF0ZSA9IGRlZmF1bHRTdGF0ZSB8fCB0aGlzLnN0YXRlRmxvdy5zdGF0ZXNbMF07XG4gICAgdGhpcy5zdGF0ZUZsb3cudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9ucy5tYXAodHJhbnNpdGlvbiA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gdHJhbnNpdGlvbi5uYW1lO1xuICAgICAgY29uc3Qgc291cmNlID0gKHRoaXMuc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLnNvdXJjZSkpID8gdHJhbnNpdGlvbi5zb3VyY2UgOiAnJztcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gKHRoaXMuc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLmRlc3RpbmF0aW9uKSkgPyB0cmFuc2l0aW9uLmRlc3RpbmF0aW9uIDogJyc7XG4gICAgICByZXR1cm4geyBuYW1lLCBzb3VyY2UsIGRlc3RpbmF0aW9uIH07XG4gICAgfSkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYW1lICYmIGl0ZW0uc291cmNlICYmIGl0ZW0uZGVzdGluYXRpb24pO1xuICB9XG5cbiAgLy8gaW1tdXRhYmxlIERhdGFcbiAgZ2V0SW1tdXRhYmxlRWxlbWVudChuYW1lOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5faW1tdXRhYmxlRGF0YT8uW25hbWVdPy52YWx1ZSA/PyBudWxsOyB9XG4gIHNldCBpbW11dGFibGVEYXRhKGltbXV0YWJsZURhdGEpIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9pbW11dGFibGVEYXRhLCBpbW11dGFibGVEYXRhKTsgfVxuICBnZXQgaW1tdXRhYmxlRGF0YSgpOiBhbnkgeyByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9pbW11dGFibGVEYXRhKSk7IH1cblxuICAvLyBleHRyYSBJbmZvXG4gIGdldEV4dHJhSW5mbyhuYW1lOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5fZXh0cmFJbmZvPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cbiAgc2V0IGV4dHJhSW5mbyhleHRyYUluZm8pIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9leHRyYUluZm8sIGV4dHJhSW5mbyk7IH1cbiAgZ2V0IGV4dHJhSW5mbygpOiBhbnkgeyByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9leHRyYUluZm8pKTsgfVxuXG4gIC8vIEZpZWxkc1xuICBnZXQgZmllbGROYW1lcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmdldEZpZWxkTmFtZXMoKTsgfVxuICBnZXRGaWVsZHMoKTogRmllbGREZXNjcmlwdG9yW10geyByZXR1cm4gdGhpcy5maWVsZEFycmF5OyB9XG4gIGdldEZpZWxkTmFtZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5maWVsZEFycmF5Lm1hcChmaWVsZCA9PiBmaWVsZC5jb2RlKTsgfVxuICBnZXRGaWVsZChjb2RlOiBzdHJpbmcpOiBGaWVsZERlc2NyaXB0b3IgeyByZXR1cm4gKGNvZGUgJiYgdGhpcy5maWVsZHM/Lltjb2RlXSkgPyB0aGlzLmZpZWxkc1tjb2RlXSA6IG51bGw7IH1cbiAgZW5hYmxlRmllbGQoY29kZTogc3RyaW5nKTogdm9pZCB7IHRoaXMuZ2V0RmllbGQoY29kZSk/LmVuYWJsZSgpOyB9XG4gIGRpc2FibGVGaWVsZChjb2RlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uZGlzYWJsZSgpOyB9XG4gIGdldEZpZWxkVmFsdWUoY29kZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMuZ2V0RmllbGQoY29kZSk/LnZhbHVlOyB9XG4gIGdldEZpZWxkT3B0aW9uVGV4dChjb2RlOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKT8ub3B0aW9uVGV4dDsgfVxuICBnZXRGaWVsZE9wdGlvbnMoY29kZTogc3RyaW5nKTogRmllbGRPcHRpb25bXSB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKT8ub3B0aW9ucyA/PyBudWxsOyB9XG4gIHNldEZpZWxkVmFsdWUoY29kZTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0VmFsdWUodmFsdWUpOyB9XG4gIHNldEZpZWxkRXJyb3IoY29kZTogc3RyaW5nLCBlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSAnZXJyb3InKTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0RXJyb3IoZXJyb3JDb2RlLCBtZXNzYWdlLCB0eXBlKTsgfVxuICBzZXRGaWVsZEludHJpbnNpY0Vycm9yTWVzc2FnZShjb2RlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IGFueSB7IHRoaXMuZ2V0RmllbGQoY29kZSk/LnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKTsgfVxuXG4gIHNldEZpZWxkUmVxdWlyZWQoaW5wdXRDb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCByZXF1aXJlZDogYm9vbGVhbik6IGFueSB7XG4gICAgY29uc3QgY29kZXMgPSB0aGlzLmdldEZpZWxkU2V0KG51bGwsIGlucHV0Q29kZXMgPz8gbnVsbCk7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIGNvZGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoY29kZSkgPz8gbnVsbDtcbiAgICAgICAgZmllbGQgJiYgKGZpZWxkLnJlcXVpcmVkID0gcmVxdWlyZWQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3IgbW9kaWZpY2FuZG8gY2FtcG8gJHtjb2RlfTogJHtlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEZpZWxkRXJyb3JNZXNzYWdlKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOyB9XG5cbiAgc2V0RmllbGRPcHRpb25zKGNvZGU6IHN0cmluZywgb3B0aW9uc0FycmF5OiBhbnlbXSwgaWRBdHRyaWJ1dGU6IHN0cmluZywgbmFtZUF0dHJpYnV0ZTogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoY29kZSk7XG4gICAgaWYgKGZpZWxkICYmIG9wdGlvbnNBcnJheSkge1xuICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gb3B0aW9uc0FycmF5Lm1hcChpdGVtID0+ICh7XG4gICAgICAgIGZpZWxkT3B0aW9uSWQ6IGl0ZW1baWRBdHRyaWJ1dGVdLFxuICAgICAgICBmaWVsZE9wdGlvblZhbHVlOiBpdGVtW25hbWVBdHRyaWJ1dGVdXG4gICAgICB9KSk7XG4gICAgICBmaWVsZC5zZXRGaWVsZE9wdGlvbnMoZmllbGRPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZFNldChmaWx0ZXIsIGlucHV0Q29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZyB8IG51bGwsIHN1YkNvZGU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nW10ge1xuICAgIGxldCBjb2RlczogYW55W10gPSBbXTtcbiAgICBpZiAoaW5wdXRDb2Rlcykge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dENvZGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2RlcyA9IFtpbnB1dENvZGVzXTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpbnB1dENvZGVzKSAmJiBpbnB1dENvZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29kZXMgPSBpbnB1dENvZGVzID8/IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VjQ29kZSAmJiAhc3ViQ29kZSkge1xuICAgICAgY29kZXMgPSB0aGlzLmdldFNlY3Rpb24oc2VjQ29kZSk/LmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9IGVsc2UgaWYgKHNlY0NvZGUgJiYgc3ViQ29kZSkge1xuICAgICAgY29kZXMgPSB0aGlzLmdldFN1YlNlY3Rpb24oc2VjQ29kZSwgc3ViQ29kZSk/LmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZXMgPSB0aGlzLmdldEZpZWxkTmFtZXMoKSA/PyBbXTtcbiAgICB9XG4gICAgcmV0dXJuIChmaWx0ZXIpID8gY29kZXMuZmlsdGVyKGZsZCA9PiBmaWx0ZXIodGhpcy5nZXRGaWVsZChmbGQpKSkgOiBjb2RlcztcbiAgfVxuXG4gIGFwcGx5T25GaWVsZHMocHJvY2Vzc0Z1bmMsIGlucHV0Q29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICghcHJvY2Vzc0Z1bmMpIHsgcmV0dXJuIDA7IH1cbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgICBsZXQgcHJvY2Vzc2VkRmllbGRzID0gMDtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgY29kZXMpIHtcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKTtcbiAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHByb2Nlc3NGdW5jKGZpZWxkKTtcbiAgICAgICAgICBwcm9jZXNzZWRGaWVsZHMgKz0gMTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBwcm9jZXNhbmRvIGZ1bmNpb24gZW4gY2FtcG8gJHtmaWVsZH06ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc2VkRmllbGRzO1xuICB9XG5cbiAgYXBwbHlQcm9jZXNzVG9BbGxGaWVsZHMocHJvY2Vzc0Z1bmMpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKHByb2Nlc3NGdW5jKTtcbiAgfVxuXG4gIGVuYWJsZUZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5lbmFibGUoKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgc2hvd0ZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5zaG93KCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGhpZGVGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uaGlkZSgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBzaG93TGFiZWxGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uc2hvd0xhYmxlbCgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBoaWRlTGFiZWxGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uaGlkZUxhYmVsKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGRpc2FibGVGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMoZmxkID0+IGZsZD8uZGlzYWJsZSgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBjbGVhbkZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5jbGVhbigpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICB0YWdGaWVsZHNXaXRoRXJyb3IobWVzc2FnZTogc3RyaW5nLCBjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5zZXRFcnJvck1lc3NhZ2UobWVzc2FnZSksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGNsZWFuRXJyb3JGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcignJywgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgdGFnRW1wdHlSZXF1aXJlZEZpZWxkcyhtZXNzYWdlOiBzdHJpbmcsIGNvZGVzID0gbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcihtZXNzYWdlLCB0aGlzLmdldFJlcXVpcmVkRW1wdHlGaWVsZHMoY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpKSA+IDA7XG4gIH1cblxuICBnZXRSZXF1aXJlZEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5yZXF1aXJlZCwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBnZXRSZXF1aXJlZEVtcHR5RmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nLCBvbmx5VmlzaWJsZT86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgaWYgKG9ubHlWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5yZXF1aXJlZCAmJiBmbGQ/LnZpc2libGUgJiYgZmxkPy5lbXB0eSwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQ/LnJlcXVpcmVkICYmIGZsZD8uZW1wdHksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0Q2hhbmdlZEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gIWZsZD8ub3V0cHV0T25seSAmJiBmbGQ/Lmhhc0NoYW5nZWQsIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0RmllbGRzV2l0aFZhbGlkYXRpb25Jc3N1ZXMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcsIG9ubHlWaXNpYmxlPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBpZiAob25seVZpc2libGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiAoZmxkPy5oYXNFcnJvcigpICYmIGZsZD8udmlzaWJsZSksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkPy5oYXNFcnJvcigpLCBjb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGdldEZpZWxkc1ZhbHVlcyhpbnB1dENvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgICBjb25zdCByZXN1bHRPYmplY3QgPSB7fTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY29kZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBjb2RlID0gY29kZXNbaW5kZXhdO1xuICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgcmVzdWx0T2JqZWN0W2NvZGVdID0gdGhpcy5maWVsZHM/Lltjb2RlXT8uZ2V0VmFsdWUoKSA/PyBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqZWN0O1xuICB9XG5cbiAgLy8gQWNjaW9uZXNcbiAgZ2V0QWN0aW9ucygpOiBGb3JtQWN0aW9uW10geyByZXR1cm4gdGhpcy5hY3Rpb25BcnJheTsgfVxuICBnZXRBY3Rpb24oY29kZTogc3RyaW5nKTogRm9ybUFjdGlvbiB7IHJldHVybiAoY29kZSAmJiB0aGlzLmFjdGlvbnM/Lltjb2RlXSkgPyB0aGlzLmFjdGlvbnNbY29kZV0gOiBudWxsOyB9XG4gIHNob3dBY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25BY3Rpb25zKGNvZGVzLCBTSE9XKTsgfVxuICBoaWRlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgSElERSk7IH1cbiAgZW5hYmxlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgRU5BQkxFKTsgfVxuICBkaXNhYmxlQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uQWN0aW9ucyhjb2RlcywgRElTQUJMRSk7IH1cbiAgZW5hYmxlQWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5lbmFibGVBY3Rpb25zKGNvZGUpOyB9XG4gIGRpc2FibGVBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmRpc2FibGVBY3Rpb25zKGNvZGUpOyB9XG4gIHNob3dBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLnNob3dBY3Rpb25zKGNvZGUpOyB9XG4gIGhpZGVBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmhpZGVBY3Rpb25zKGNvZGUpOyB9XG4gIGdldEhlYWRlckFjdGlvbnMoKSB7IHJldHVybiB0aGlzLmdldEFjdGlvbnNCeUF0dHJpYnV0ZSgnbG9jYXRpb24nLCBIRUFERVIpOyB9XG5cbiAgZ2V0QWN0aW9uc0J5QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWUpOiBGb3JtQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbkFycmF5LmZpbHRlcihhY3Rpb25JdGVtID0+IGFjdGlvbkl0ZW0ubWF0Y2hBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTtcbiAgfVxuXG4gIGV4ZWNPbkFjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBhY3Rpb25Db2RlcyA9IChBcnJheS5pc0FycmF5KGNvZGVzKSkgPyBjb2RlcyA6IChjb2RlcyA/IFtjb2Rlc10gOiBbXSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgYWN0aW9uQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGFjdGlvbkNvZGVzLmZvckVhY2goY29kZSA9PiB7XG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmdldEFjdGlvbihjb2RlKTtcbiAgICAgIGFjdGlvbj8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVGFibGFzXG4gIGdldFRhYmxlcygpOiBSZWNvcmRUYWJsZVtdIHsgcmV0dXJuIHRoaXMudGFibGVBcnJheTsgfVxuICBnZXRUYWJsZShjb2RlOiBzdHJpbmcpOiBSZWNvcmRUYWJsZSB7IHJldHVybiAoY29kZSAmJiB0aGlzLnRhYmxlcz8uW2NvZGVdKSA/IHRoaXMudGFibGVzW2NvZGVdIDogbnVsbDsgfVxuICBnZXRUYWJsZVJlY29yZChjb2RlOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBUYWJsZVJlY29yZERhdGEgeyByZXR1cm4gdGhpcy5nZXRUYWJsZShjb2RlKT8uZ2V0VGFibGVSZWNvcmQoaWQpIH1cbiAgZW5hYmxlVGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIEVOQUJMRSk7IH1cbiAgZGlzYWJsZVRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uVGFibGVzKGNvZGVzLCBESVNBQkxFKTsgfVxuICBzaG93VGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIFNIT1cpOyB9XG4gIGhpZGVUYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgSElERSk7IH1cbiAgY2xlYW5UYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgQ0xFQU4pOyB9XG4gIHNob3dUYWJsZShjb2RlOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuc2hvd1RhYmxlcyhjb2RlKTsgfVxuICBoaWRlVGFibGUoY29kZTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmhpZGVUYWJsZXMoY29kZSk7IH1cbiAgY2xlYW5UYWJsZShjb2RlOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuZ2V0VGFibGUoY29kZSk/LmNsZWFuKCk7IH1cblxuICBleGVjT25UYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZUNvZGVzID0gKEFycmF5LmlzQXJyYXkoY29kZXMpKSA/IGNvZGVzIDogKGNvZGVzID8gW2NvZGVzXSA6IFtdKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCB0YWJsZUNvZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICB0YWJsZUNvZGVzLmZvckVhY2goY29kZSA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IHRoaXMuZ2V0VGFibGUoY29kZSk7XG4gICAgICB0YWJsZT8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU2VjY2lvbmVzXG4gIGdldFNlY3Rpb25zKCk6IFJlY29yZEZvcm1TZWN0aW9uW10geyByZXR1cm4gdGhpcy5zZWN0aW9uQXJyYXk7IH1cbiAgZ2V0U2VjdGlvbnNUaXRsZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9ucygpPy5maWx0ZXIoc2VjID0+IHNlYz8udGl0bGUpLm1hcChzZWMgPT4gc2VjPy50aXRsZSA/PyAnJyk7IH1cbiAgbnVtU2VjdGlvbnMoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuc2VjdGlvbkFycmF5Lmxlbmd0aDsgfVxuICBnZXRTZWN0aW9uc0J5QXR0cmlidXRlKG5hbWUsIHZhbHVlKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLnNlY3Rpb25BcnJheS5maWx0ZXIoaXRlbSA9PiBpdGVtLm1hdGNoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7IH1cbiAgZ2V0IHNlY3Rpb25UaXRsZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uc1RpdGxlcygpOyB9XG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLnNlY3Rpb25BcnJheS5maWx0ZXIoc2VjID0+IHNlYy5hYnNvbHV0ZVZpc2libGUpOyB9XG4gIGdldFNlY3Rpb24oY29kZTogc3RyaW5nKTogUmVjb3JkRm9ybVNlY3Rpb24geyByZXR1cm4gKGNvZGUgJiYgdGhpcy5zZWN0aW9ucz8uW2NvZGVdKSA/IHRoaXMuc2VjdGlvbnNbY29kZV0gOiBudWxsOyB9XG4gIHNob3dTZWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgdGhpcy5leGVjT25TZWN0aW9ucyhjb2RlcywgU0hPVyk7IH1cbiAgaGlkZVNlY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyB0aGlzLmV4ZWNPblNlY3Rpb25zKGNvZGVzLCBISURFKTsgfVxuICBzaG93U2VjdGlvbihjb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuc2hvd1NlY3Rpb25zKGNvZGUpOyB9XG4gIGhpZGVTZWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5oaWRlU2VjdGlvbnMoY29kZSk7IH1cbiAgYWN0aXZlU2VjdGlvbigpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHJbQUNUSVZFXTsgfVxuICBnZXRTdWJTZWN0aW9uKGNvZGU6IHN0cmluZywgc3ViQ29kZSk6IFJlY29yZEZvcm1TdWJTZWN0aW9uIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uZ2V0U3Vic2VjdGlvbihzdWJDb2RlKSA/PyBudWxsOyB9XG4gIHNob3dTdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1YkNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25TdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlcywgU0hPVyk7IH1cbiAgc2hvd1N1YlNlY3Rpb24oY29kZTogc3RyaW5nLCBzdWJDb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuc2hvd1N1YlNlY3Rpb25zKGNvZGUsIHN1YkNvZGUpOyB9XG4gIGhpZGVTdWJTZWN0aW9uKGNvZGU6IHN0cmluZywgc3ViQ29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmhpZGVTdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlKTsgfVxuICBoaWRlU3ViU2VjdGlvbnMoY29kZTogc3RyaW5nLCBzdWJDb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uU3ViU2VjdGlvbnMoY29kZSwgc3ViQ29kZXMsIEhJREUpOyB9XG4gIGdldFNlY3Rpb25BY3Rpb25zKGNvZGUpOiBGb3JtQWN0aW9uW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpPy5nZXRBY3Rpb25zKCkgPz8gbnVsbDsgfVxuICBnZXRTZWN0aW9uQWN0aW9uTmFtZXMoY29kZSk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uZ2V0QWN0aW9uTmFtZXMoKSA/PyBudWxsOyB9XG5cbiAgYWN0aXZhdGVTZWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChjb2RlID09PSB0aGlzLl9leGNsdXNpdmVTZWN0aW9uc0J5QXR0cltBQ1RJVkVdKSB7IHJldHVybjsgfVxuICAgIHRoaXMuZ2V0U2VjdGlvbih0aGlzLmFjdGl2ZVNlY3Rpb24oKSk/LmluYWN0aXZhdGUoKTtcbiAgICB0aGlzLmdldFNlY3Rpb24oY29kZSk/LmFjdGl2YXRlKCk7XG4gICAgdGhpcy5fZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHJbQUNUSVZFXSA9IGNvZGU7XG4gIH1cblxuICBleGVjT25TZWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBmdW5jdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlY3Rpb25Db2RlcyA9IChBcnJheS5pc0FycmF5KGNvZGVzKSkgPyBjb2RlcyA6IChjb2RlcyA/IFtjb2Rlc10gOiBbXSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgc2VjdGlvbkNvZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cbiAgICBzZWN0aW9uQ29kZXMuZm9yRWFjaChjb2RlID0+IHtcbiAgICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmdldFNlY3Rpb24oY29kZSk7XG4gICAgICBzZWN0aW9uPy5bZnVuY3Rpb25OYW1lXT8uKCk7XG4gICAgfSk7XG4gIH1cblxuICBleGVjT25TdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1Yk5hbWVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIGZ1bmN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3ViQ29kZXMgPSAoQXJyYXkuaXNBcnJheShzdWJOYW1lcykpID8gc3ViTmFtZXMgOiAoc3ViTmFtZXMgPyBbc3ViTmFtZXNdIDogW10pO1xuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmdldFNlY3Rpb24oY29kZSk7XG4gICAgaWYgKCFmdW5jdGlvbk5hbWUgfHwgIXNlY3Rpb24gfHwgc3ViQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIGZvciAoY29uc3Qgc3ViQ29kZSBvZiBzdWJDb2Rlcykge1xuICAgICAgY29uc3Qgc3ViU2VjdGlvbiA9IHRoaXMuZ2V0U3ViU2VjdGlvbihjb2RlLCBzdWJDb2RlKTtcbiAgICAgIHN1YlNlY3Rpb24/LltmdW5jdGlvbk5hbWVdPy4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kb3MgcHJvcGlvcyBkZSBnZXN0acOzbiBkZWwgZm9ybXVsYXJpb1xuICAgKi9cblxuICBjbGVhbkRhdGEoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkQXJyYXkpIHtcbiAgICAgIGZpZWxkLnNldFZhbHVlKGZpZWxkLmRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdGFibGUgb2YgdGhpcy50YWJsZUFycmF5KSB7XG4gICAgICB0YWJsZS5jbGVhbigpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBheWxvYWQoKTogYW55IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybVBheWxvYWQgPSB7IGZpZWxkczogW10sIHRhYmxlczogW10gfTtcbiAgICBmb3JtRGF0YS5maWVsZHMgPSB0aGlzLmdldEZpZWxkcygpLmZpbHRlcihmbGQgPT4gIWZsZD8ub3V0cHV0T25seSlcbiAgICAgIC5tYXAoZmxkID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRQYXlsb2FkOiBGaWVsZFBheWxvYWQgPSB7XG4gICAgICAgICAgZmllbGRDb2RlOiBmbGQ/LmNvZGUsXG4gICAgICAgICAgZmllbGRWYWx1ZTogZmxkPy52YWx1ZSxcbiAgICAgICAgICBlZGl0YWJsZTogIWZsZD8uYWJzb2x1dGVEaXNhYmxlZCxcbiAgICAgICAgICB2aXNpYmxlOiBmbGQ/LmFic29sdXRlVmlzaWJsZSxcbiAgICAgICAgICByZXF1aXJlZDogZmxkPy5yZXF1aXJlZCxcbiAgICAgICAgICBmaWVsZE9wdGlvbnM6ICcnLFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWVsZFBheWxvYWQ7XG4gICAgICB9KTtcblxuICAgIGZvcm1EYXRhLnRhYmxlcyA9IHRoaXMuZ2V0VGFibGVzKCkubWFwKHRibCA9PiB7XG4gICAgICBjb25zdCB0YWJsZVBheWxvYWQ6IFRhYmxlUGF5bG9hZCA9IHtcbiAgICAgICAgdGFibGVDb2RlOiB0YmwudGFibGVDb2RlLFxuICAgICAgICB2aXNpYmxlOiB0YmwuYWJzb2x1dGVWaXNpYmxlLFxuICAgICAgICBjdXJyZW50UGFnZTogdGJsLmN1cnJlbnRQYWdlLFxuICAgICAgICByZXF1ZXN0ZWRQYWdlOiB0YmwucmVxdWVzdGVkUGFnZSxcbiAgICAgICAgcmVjb3Jkc1BlclBhZ2U6IHRibC5yZWNvcmRzUGVyUGFnZSxcbiAgICAgICAgY3VycmVudEZpbHRlcjogdGJsLmN1cnJlbnRGaWx0ZXIsXG4gICAgICAgIHNvcnRpbmdDb2x1bW46IHRibC5zb3J0aW5nLmNvbHVtbk5hbWUsXG4gICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHRibC5zb3J0aW5nLmRpcmVjdGlvbixcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGFibGVQYXlsb2FkXG4gICAgfSlcbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1YmplY3RcbiAgICovXG4gIGdldCBmb3JtU3ViamVjdCgpIHsgcmV0dXJuIHRoaXMuc3ViamVjdDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3ViamVjdFxuICAgKi9cbiAgc2V0IGZvcm1TdWJqZWN0KHN1YmplY3QpIHsgdGhpcy5zdWJqZWN0ID0gc3ViamVjdDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3RhdGVzXG4gICAqL1xuICBnZXRTdGF0ZXMoKSB7IHJldHVybiB0aGlzLnN0YXRlczsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3RhdGVcbiAgICovXG4gIGdldEN1cnJlbnRTdGF0ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdGF0ZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGl0bGVcbiAgICovXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnRpdGxlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aXRsZVxuICAgKi9cbiAgc2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnRpdGxlID0gdGl0bGU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1cHBvcnRTdGF0ZVxuICAgKi9cbiAgc3VwcG9ydE1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5zdXBwb3J0U3RhdGUoc3RhdGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbmFibGVGaWVsZHNcbiAgICovXG4gIGVuYWJsZUVkaXRGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVGaWVsZHMoY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZGlzYWJsZUZpZWxkc1xuICAgKi9cbiAgZGlzYWJsZUVkaXRGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlRmllbGRzKGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0RmllbGRcbiAgICovXG4gIGdldEZpZWxkT2JqZWN0KGNvZGU6IHN0cmluZyk6IEZpZWxkRGVzY3JpcHRvciB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0QWN0aW9uXG4gICAqL1xuICBnZXRBY3Rpb25PYmplY3QoY29kZTogc3RyaW5nKTogRm9ybUFjdGlvbiB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRBY3Rpb24oY29kZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGdldFRhYmxlXG4gICAqL1xuICBnZXRUYWJsZU9iamVjdChjb2RlOiBzdHJpbmcpOiBSZWNvcmRUYWJsZSB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRUYWJsZShjb2RlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0U2VjdGlvblxuICAgKi9cbiAgZ2V0U2VjdGlvbk9iamVjdChjb2RlOiBzdHJpbmcpOiBSZWNvcmRGb3JtU2VjdGlvbiB8IG51bGwgeyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBjaGFuZ2VTdGF0ZVxuICAgKi9cbiAgY2hhbmdlRm9ybU1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jaGFuZ2VTdGF0ZShzdGF0ZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1YmplY3RcbiAgICovXG4gIGdldEZvcm1TdWJqZWN0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN1YmplY3Q7IH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdWJqZWN0XG4gICAqL1xuICBnZXRTdWJqZWN0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN1YmplY3QgPz8gJyc7IH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdWJqZWN0XG4gICAqL1xuICBnZXRmb3JtU3ViamVjdCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdWJqZWN0ID8/ICcnOyB9XG5cbn1cbiJdfQ==
|
|
551
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU5QyxPQUFPLEVBQVksTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUMxQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFzQ3RCLE1BQU0sT0FBTyxvQkFBb0I7SUFxQi9CO1FBcEJpQixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFHbkQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ1QsWUFBTyxHQUFrQixJQUFJLENBQUM7UUFFOUIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUtoQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hC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LElBQXVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakY7O09BRUc7SUFDSCxjQUFjLENBQUMsSUFBWSxJQUF3QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhGOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsSUFBWSxJQUE4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFGOztPQUVHO0lBQ0gsY0FBYyxDQUFDLEtBQWEsSUFBYSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFFOztPQUVHO0lBQ0gsY0FBYyxLQUFhLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDakQ7O09BRUc7SUFDSCxVQUFVLEtBQWEsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQ7O09BRUc7SUFDSCxjQUFjLEtBQWEsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FFeEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuaW1wb3J0IHsgRmllbGREZXNjcmlwdG9yLCBGaWVsZE9wdGlvbiB9IGZyb20gJy4vZmllbGQnO1xuaW1wb3J0IHsgUmVjb3JkVGFibGUgfSBmcm9tICcuL3RhYmxlL3RhYmxlJztcbmltcG9ydCB7IFJlY29yZEZvcm1TZWN0aW9uIH0gZnJvbSAnLi9zZWN0aW9uJztcbmltcG9ydCB7IFJlY29yZEZvcm1TdWJTZWN0aW9uIH0gZnJvbSAnLi9zdWJzZWN0aW9uJztcbmltcG9ydCB7IE5PX0VSUk9SLCBIRUFERVIgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IFRhYmxlUmVjb3JkRGF0YSB9IGZyb20gJy4vdGFibGUvcm93LWRhdGEnO1xuXG5jb25zdCBBQ1RJVkUgPSAnYWN0aXZlJztcbmNvbnN0IFNIT1cgPSAnc2hvdyc7XG5jb25zdCBISURFID0gJ2hpZGUnO1xuY29uc3QgRU5BQkxFID0gJ2VuYWJsZSc7XG5jb25zdCBESVNBQkxFID0gJ2Rpc2FibGUnO1xuY29uc3QgQ0xFQU4gPSAnY2xlYW4nO1xuaW50ZXJmYWNlIFRyYW5zaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBkZXN0aW5hdGlvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhdGVGbG93IHtcbiAgZGVmYXVsdFN0YXRlOiBzdHJpbmc7XG4gIHN0YXRlczogc3RyaW5nW107XG4gIHRyYW5zaXRpb25zOiBUcmFuc2l0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRQYXlsb2FkIHtcbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGZpZWxkVmFsdWU6IGFueTtcbiAgZWRpdGFibGU6IGJvb2xlYW47XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBmaWVsZE9wdGlvbnM6IHN0cmluZyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVBheWxvYWQge1xuICB0YWJsZUNvZGU6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgcmVxdWVzdGVkUGFnZTogbnVtYmVyO1xuICByZWNvcmRzUGVyUGFnZTogbnVtYmVyO1xuICBjdXJyZW50RmlsdGVyOiBhbnksXG4gIHNvcnRpbmdDb2x1bW46IHN0cmluZztcbiAgc29ydGluZ0RpcmVjdGlvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRm9ybVBheWxvYWQge1xuICBmaWVsZHM6IEZpZWxkUGF5bG9hZFtdLFxuICB0YWJsZXM6IFRhYmxlUGF5bG9hZFtdLFxufVxuXG5leHBvcnQgY2xhc3MgRm9ybVN0cnVjdHVyZUFuZERhdGEge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgZm9ybUNvbmZpZzogYW55O1xuICBzdGF0ZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmcgPSAnJztcbiAgdGl0bGU6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgc3ViamVjdDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBzdGF0ZUZsb3c6IFN0YXRlRmxvdztcbiAgcHJvdGVjdGVkIGZpZWxkcyA9IHt9O1xuICBwcm90ZWN0ZWQgYWN0aW9ucyA9IHt9O1xuICBwcm90ZWN0ZWQgdGFibGVzID0ge307XG4gIHByb3RlY3RlZCBzZWN0aW9ucyA9IHt9O1xuICBwcm90ZWN0ZWQgZmllbGRBcnJheTogRmllbGREZXNjcmlwdG9yW107XG4gIHByb3RlY3RlZCBhY3Rpb25BcnJheTogRm9ybUFjdGlvbltdO1xuICBwcm90ZWN0ZWQgdGFibGVBcnJheTogUmVjb3JkVGFibGVbXTtcbiAgcHJvdGVjdGVkIHNlY3Rpb25BcnJheTogUmVjb3JkRm9ybVNlY3Rpb25bXTtcbiAgcHJpdmF0ZSBfaW1tdXRhYmxlRGF0YSA9IHt9O1xuICBwcml2YXRlIF9leHRyYUluZm8gPSB7fTtcbiAgcHJpdmF0ZSBfZXhjbHVzaXZlU2VjdGlvbnNCeUF0dHIgPSB7fTtcbiAgcHVibGljIGN1c3RvbUF0dHJpYnV0ZXM6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3RhdGUgPSAnJztcbiAgICB0aGlzLmFjdGlvbkFycmF5ID0gW107XG4gICAgdGhpcy5maWVsZEFycmF5ID0gW107XG4gICAgdGhpcy50YWJsZUFycmF5ID0gW107XG4gICAgdGhpcy5zZWN0aW9uQXJyYXkgPSBbXTtcbiAgICB0aGlzLnN0YXRlRmxvdyA9IHtcbiAgICAgIGRlZmF1bHRTdGF0ZTogJycsXG4gICAgICBzdGF0ZXM6IFtdLFxuICAgICAgdHJhbnNpdGlvbnM6IFtdLFxuICAgIH07XG4gIH1cblxuICBzZXRDb25maWcoZm9ybUNvbmZpZykge1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XG4gIH1cblxuICBjbGVhbkZvcm0oKSB7XG4gICAgdGhpcy5hY3Rpb25BcnJheSA9IFtdO1xuICAgIHRoaXMuZmllbGRBcnJheSA9IFtdO1xuICAgIHRoaXMudGFibGVBcnJheSA9IFtdO1xuICAgIHRoaXMuc2VjdGlvbkFycmF5ID0gW107XG4gICAgdGhpcy5zdGF0ZUZsb3cgPSB7XG4gICAgICBkZWZhdWx0U3RhdGU6ICcnLFxuICAgICAgc3RhdGVzOiBbXSxcbiAgICAgIHRyYW5zaXRpb25zOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgbG9hZERlZmluaXRpb24oZGVmaW5pdGlvblJlY2VpdmVkKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICcnO1xuICAgIHRoaXMuY2xlYW5Gb3JtKCk7XG4gICAgaWYgKCFkZWZpbml0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lID8/IGRlZmluaXRpb25SZWNlaXZlZD8uZm9ybT8uZm9ybUNvZGU7XG4gICAgdGhpcy50aXRsZSA9IChkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybSAmJiBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtVGl0bGUpXG4gICAgICA/IGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSA6ICcnO1xuICAgIHRoaXMuc2V0U3RhdGVGbG93KGRlZmluaXRpb25SZWNlaXZlZD8uc3RhdGVzLCBkZWZpbml0aW9uUmVjZWl2ZWQ/LnRyYW5zaXRpb25zLFxuICAgICAgZGVmaW5pdGlvblJlY2VpdmVkPy5kZWZhdWx0U3RhdGUpO1xuICAgIHRoaXMuaW1tdXRhYmxlRGF0YSA9IGRlZmluaXRpb25SZWNlaXZlZC5pbW11dGFibGVEYXRhO1xuICAgIHRoaXMuZXh0cmFJbmZvID0gZGVmaW5pdGlvblJlY2VpdmVkLmV4dHJhSW5mbztcbiAgICB0aGlzLmN1c3RvbUF0dHJpYnV0ZXMgPSB7fTtcbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkPy5jdXN0b21BdHRyaWJ1dGVzKSB7XG4gICAgICB0aGlzLnNldEN1c3RvbUF0dHJpYnV0ZXMoZGVmaW5pdGlvblJlY2VpdmVkPy5jdXN0b21BdHRyaWJ1dGVzKTtcbiAgICB9XG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtQWN0aW9ucyA9IGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIGZvcm1BY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbEFjdGlvbiA9IG5ldyBGb3JtQWN0aW9uKGFjdGlvblJlY2VpdmVkLCB0aGlzLmZvcm1Db25maWcpO1xuICAgICAgICBjb25zdCBnbG9iYWxBY3Rpb25Db2RlID0gZ2xvYmFsQWN0aW9uLmFjdGlvbkNvZGU7XG4gICAgICAgIGlmIChnbG9iYWxBY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5hY3Rpb25BcnJheS5wdXNoKGdsb2JhbEFjdGlvbik7XG4gICAgICAgICAgdGhpcy5hY3Rpb25zW2dsb2JhbEFjdGlvbkNvZGVdID0gZ2xvYmFsQWN0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMpIHtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuZmllbGRzLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzID8/IG9iakRlZi5lZGl0YWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuZmllbGRNb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZmllbGRSZWNlaXZlZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVG9BZGQgPSBuZXcgRmllbGREZXNjcmlwdG9yKGZpZWxkUmVjZWl2ZWQsIHRoaXMuZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGZpZWxkQ29kZSA9IGZpZWxkVG9BZGQuY29kZTtcbiAgICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICAgIHRoaXMuZmllbGRBcnJheS5wdXNoKGZpZWxkVG9BZGQpO1xuICAgICAgICAgIHRoaXMuZmllbGRzW2ZpZWxkQ29kZV0gPSBmaWVsZFRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMpIHtcbiAgICAgIGNvbnN0IHRhYmxlcyA9IGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXMgfHwgb2JqRGVmLmVkaXRhYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi50YWJsZU1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCB0YWJsZVJlY2VpdmVkIG9mIHRhYmxlcykge1xuICAgICAgICBjb25zdCB0YWJsZVRvQWRkID0gbmV3IFJlY29yZFRhYmxlKHRhYmxlUmVjZWl2ZWQsIHRoaXMuZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHRhYmxlQ29kZSA9IHRhYmxlVG9BZGQudGFibGVDb2RlO1xuICAgICAgICBpZiAodGFibGVDb2RlKSB7XG4gICAgICAgICAgdGhpcy50YWJsZUFycmF5LnB1c2godGFibGVUb0FkZCk7XG4gICAgICAgICAgdGhpcy50YWJsZXNbdGFibGVDb2RlXSA9IHRhYmxlVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtU2VjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuc2VjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnNlY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb25SZWNlaXZlZCBvZiBmb3JtU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TZWN0aW9uKHNlY3Rpb25SZWNlaXZlZCwgdGhpcywgdGhpcy5mb3JtQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkNvZGUgPSBzZWN0aW9uVG9BZGQuc2VjdGlvbkNvZGU7XG4gICAgICAgIGlmIChzZWN0aW9uQ29kZSkge1xuICAgICAgICAgIHRoaXMuc2VjdGlvbkFycmF5LnB1c2goc2VjdGlvblRvQWRkKTtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25zW3NlY3Rpb25Db2RlXSA9IHNlY3Rpb25Ub0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEVzdGFkb3NcbiAgZ2V0IGRlZmF1bHRTdGF0ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlOyB9XG4gIGdldCBzdGF0ZXMoKTogYW55W10geyByZXR1cm4gdGhpcy5zdGF0ZUZsb3cuc3RhdGVzOyB9XG4gIHN1cHBvcnRTdGF0ZShzdGF0ZTogc3RyaW5nID0gJycpOiBib29sZWFuIHsgcmV0dXJuICghIXN0YXRlICYmIHRoaXMuc3RhdGVGbG93LnN0YXRlcz8uaW5jbHVkZXMoc3RhdGUpKTsgfVxuXG4gIGNoYW5nZVN0YXRlKG5ld1N0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgIGlmICghbmV3U3RhdGUgfHwgIXRoaXMuc3VwcG9ydFN0YXRlKG5ld1N0YXRlKSB8fCBjdXJyZW50U3RhdGUgPT09IG5ld1N0YXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uVG9DaGFuZ2UgPSB0aGlzLnN0YXRlRmxvdy50cmFuc2l0aW9ucy5maW5kKHRybnMgPT5cbiAgICAgICAgdHJucy5zb3VyY2UgPT09IHRoaXMuc3RhdGUgJiYgdHJucy5kZXN0aW5hdGlvbiA9PT0gbmV3U3RhdGUpO1xuICAgICAgaWYgKHRyYW5zaXRpb25Ub0NoYW5nZSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlQ2hhbmdlLm5leHQoeyBzdGF0ZTogdGhpcy5zdGF0ZSB9KTtcbiAgICByZXR1cm4gKHRoaXMuc3RhdGUgPT09IG5ld1N0YXRlKTtcbiAgfVxuXG4gIGdldCBzdGF0ZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX3N0YXRlQ2hhbmdlOyB9XG5cbiAgc2V0U3RhdGVGbG93KHN0YXRlcz8sIHRyYW5zaXRpb25zPywgZGVmYXVsdFN0YXRlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUZsb3cuc3RhdGVzID0gc3RhdGVzO1xuICAgIHRoaXMuc3RhdGVGbG93LmRlZmF1bHRTdGF0ZSA9IGRlZmF1bHRTdGF0ZSB8fCB0aGlzLnN0YXRlRmxvdy5zdGF0ZXNbMF07XG4gICAgdGhpcy5zdGF0ZUZsb3cudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9ucy5tYXAodHJhbnNpdGlvbiA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gdHJhbnNpdGlvbi5uYW1lO1xuICAgICAgY29uc3Qgc291cmNlID0gKHRoaXMuc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLnNvdXJjZSkpID8gdHJhbnNpdGlvbi5zb3VyY2UgOiAnJztcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gKHRoaXMuc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLmRlc3RpbmF0aW9uKSkgPyB0cmFuc2l0aW9uLmRlc3RpbmF0aW9uIDogJyc7XG4gICAgICByZXR1cm4geyBuYW1lLCBzb3VyY2UsIGRlc3RpbmF0aW9uIH07XG4gICAgfSkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYW1lICYmIGl0ZW0uc291cmNlICYmIGl0ZW0uZGVzdGluYXRpb24pO1xuICB9XG5cbiAgLy8gaW1tdXRhYmxlIERhdGFcbiAgZ2V0SW1tdXRhYmxlRWxlbWVudChuYW1lOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5faW1tdXRhYmxlRGF0YT8uW25hbWVdPy52YWx1ZSA/PyBudWxsOyB9XG4gIHNldCBpbW11dGFibGVEYXRhKGltbXV0YWJsZURhdGEpIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9pbW11dGFibGVEYXRhLCBpbW11dGFibGVEYXRhKTsgfVxuICBnZXQgaW1tdXRhYmxlRGF0YSgpOiBhbnkgeyByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9pbW11dGFibGVEYXRhKSk7IH1cblxuICAvLyBleHRyYSBJbmZvXG4gIGdldEV4dHJhSW5mbyhuYW1lOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5fZXh0cmFJbmZvPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cbiAgc2V0IGV4dHJhSW5mbyhleHRyYUluZm8pIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9leHRyYUluZm8sIGV4dHJhSW5mbyk7IH1cbiAgZ2V0IGV4dHJhSW5mbygpOiBhbnkgeyByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9leHRyYUluZm8pKTsgfVxuXG4gIC8vIEN1c3RvbSBBdHRyaWJ1dGVzXG4gIGdldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5jdXN0b21BdHRyaWJ1dGVzPy5bbmFtZV0gPz8gbnVsbDsgfVxuICBzZXRDdXN0b21BdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7IGlmIChuYW1lKSB7IHRoaXMuY3VzdG9tQXR0cmlidXRlc1tuYW1lXSA9IHZhbHVlOyB9IH1cbiAgc2V0Q3VzdG9tQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoYXR0cmlidXRlcyAmJiB0eXBlb2YgYXR0cmlidXRlcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpLmZvckVhY2goKFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRmllbGRzXG4gIGdldCBmaWVsZE5hbWVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuZ2V0RmllbGROYW1lcygpOyB9XG4gIGdldEZpZWxkcygpOiBGaWVsZERlc2NyaXB0b3JbXSB7IHJldHVybiB0aGlzLmZpZWxkQXJyYXk7IH1cbiAgZ2V0RmllbGROYW1lcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmZpZWxkQXJyYXkubWFwKGZpZWxkID0+IGZpZWxkLmNvZGUpOyB9XG4gIGdldEZpZWxkKGNvZGU6IHN0cmluZyk6IEZpZWxkRGVzY3JpcHRvciB7IHJldHVybiAoY29kZSAmJiB0aGlzLmZpZWxkcz8uW2NvZGVdKSA/IHRoaXMuZmllbGRzW2NvZGVdIDogbnVsbDsgfVxuICBlbmFibGVGaWVsZChjb2RlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uZW5hYmxlKCk7IH1cbiAgZGlzYWJsZUZpZWxkKGNvZGU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5kaXNhYmxlKCk7IH1cbiAgZ2V0RmllbGRWYWx1ZShjb2RlOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gdGhpcy5nZXRGaWVsZChjb2RlKT8udmFsdWU7IH1cbiAgZ2V0RmllbGRPcHRpb25UZXh0KGNvZGU6IHN0cmluZyk6IGFueSB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpPy5vcHRpb25UZXh0OyB9XG4gIGdldEZpZWxkT3B0aW9ucyhjb2RlOiBzdHJpbmcpOiBGaWVsZE9wdGlvbltdIHwgbnVsbCB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpPy5vcHRpb25zID8/IG51bGw7IH1cbiAgc2V0RmllbGRWYWx1ZShjb2RlOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRWYWx1ZSh2YWx1ZSk7IH1cbiAgc2V0RmllbGRFcnJvcihjb2RlOiBzdHJpbmcsIGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyA9ICdlcnJvcicpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UsIHR5cGUpOyB9XG4gIHNldEZpZWxkSW50cmluc2ljRXJyb3JNZXNzYWdlKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogYW55IHsgdGhpcy5nZXRGaWVsZChjb2RlKT8uc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2UpOyB9XG5cbiAgc2V0RmllbGRSZXF1aXJlZChpbnB1dENvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHJlcXVpcmVkOiBib29sZWFuKTogYW55IHtcbiAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgaW5wdXRDb2RlcyA/PyBudWxsKTtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgY29kZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKSA/PyBudWxsO1xuICAgICAgICBmaWVsZCAmJiAoZmllbGQucmVxdWlyZWQgPSByZXF1aXJlZCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBtb2RpZmljYW5kbyBjYW1wbyAke2NvZGV9OiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRFcnJvck1lc3NhZ2UoY29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBhbnkgeyB0aGlzLmdldEZpZWxkKGNvZGUpPy5zZXRFcnJvck1lc3NhZ2UobWVzc2FnZSk7IH1cblxuICBzZXRGaWVsZE9wdGlvbnMoY29kZTogc3RyaW5nLCBvcHRpb25zQXJyYXk6IGFueVtdLCBpZEF0dHJpYnV0ZTogc3RyaW5nLCBuYW1lQXR0cmlidXRlOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChjb2RlKTtcbiAgICBpZiAoZmllbGQgJiYgb3B0aW9uc0FycmF5KSB7XG4gICAgICBjb25zdCBmaWVsZE9wdGlvbnMgPSBvcHRpb25zQXJyYXkubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgZmllbGRPcHRpb25JZDogaXRlbVtpZEF0dHJpYnV0ZV0sXG4gICAgICAgIGZpZWxkT3B0aW9uVmFsdWU6IGl0ZW1bbmFtZUF0dHJpYnV0ZV1cbiAgICAgIH0pKTtcbiAgICAgIGZpZWxkLnNldEZpZWxkT3B0aW9ucyhmaWVsZE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpZWxkU2V0KGZpbHRlciwgaW5wdXRDb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nIHwgbnVsbCwgc3ViQ29kZT86IHN0cmluZyB8IG51bGwpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGNvZGVzOiBhbnlbXSA9IFtdO1xuICAgIGlmIChpbnB1dENvZGVzKSB7XG4gICAgICBpZiAodHlwZW9mIGlucHV0Q29kZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvZGVzID0gW2lucHV0Q29kZXNdO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlucHV0Q29kZXMpICYmIGlucHV0Q29kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb2RlcyA9IGlucHV0Q29kZXMgPz8gW107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzZWNDb2RlICYmICFzdWJDb2RlKSB7XG4gICAgICBjb2RlcyA9IHRoaXMuZ2V0U2VjdGlvbihzZWNDb2RlKT8uZ2V0RmllbGROYW1lcygpID8/IFtdO1xuICAgIH0gZWxzZSBpZiAoc2VjQ29kZSAmJiBzdWJDb2RlKSB7XG4gICAgICBjb2RlcyA9IHRoaXMuZ2V0U3ViU2VjdGlvbihzZWNDb2RlLCBzdWJDb2RlKT8uZ2V0RmllbGROYW1lcygpID8/IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlcyA9IHRoaXMuZ2V0RmllbGROYW1lcygpID8/IFtdO1xuICAgIH1cbiAgICByZXR1cm4gKGZpbHRlcikgPyBjb2Rlcy5maWx0ZXIoZmxkID0+IGZpbHRlcih0aGlzLmdldEZpZWxkKGZsZCkpKSA6IGNvZGVzO1xuICB9XG5cbiAgYXBwbHlPbkZpZWxkcyhwcm9jZXNzRnVuYywgaW5wdXRDb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKCFwcm9jZXNzRnVuYykgeyByZXR1cm4gMDsgfVxuICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRGaWVsZFNldChudWxsLCBpbnB1dENvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICAgIGxldCBwcm9jZXNzZWRGaWVsZHMgPSAwO1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBjb2Rlcykge1xuICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGNvZGUpO1xuICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcHJvY2Vzc0Z1bmMoZmllbGQpO1xuICAgICAgICAgIHByb2Nlc3NlZEZpZWxkcyArPSAxO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYEVycm9yIHByb2Nlc2FuZG8gZnVuY2lvbiBlbiBjYW1wbyAke2ZpZWxkfTogJHtlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9jZXNzZWRGaWVsZHM7XG4gIH1cblxuICBhcHBseVByb2Nlc3NUb0FsbEZpZWxkcyhwcm9jZXNzRnVuYykge1xuICAgIHJldHVybiB0aGlzLmFwcGx5T25GaWVsZHMocHJvY2Vzc0Z1bmMpO1xuICB9XG5cbiAgZW5hYmxlRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LmVuYWJsZSgpLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBzaG93RmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LnNob3coKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgaGlkZUZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5oaWRlKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIHNob3dMYWJlbEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5zaG93TGFibGVsKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGhpZGVMYWJlbEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5oaWRlTGFiZWwoKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZGlzYWJsZUZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlPbkZpZWxkcyhmbGQgPT4gZmxkPy5kaXNhYmxlKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGNsZWFuRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LmNsZWFuKCksIGNvZGVzLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIHRhZ0ZpZWxkc1dpdGhFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseU9uRmllbGRzKGZsZCA9PiBmbGQ/LnNldEVycm9yTWVzc2FnZShtZXNzYWdlKSwgY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgY2xlYW5FcnJvckZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFnRmllbGRzV2l0aEVycm9yKCcnLCBjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICB0YWdFbXB0eVJlcXVpcmVkRmllbGRzKG1lc3NhZ2U6IHN0cmluZywgY29kZXMgPSBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFnRmllbGRzV2l0aEVycm9yKG1lc3NhZ2UsIHRoaXMuZ2V0UmVxdWlyZWRFbXB0eUZpZWxkcyhjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSkpID4gMDtcbiAgfVxuXG4gIGdldFJlcXVpcmVkRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQ/LnJlcXVpcmVkLCBjb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgfVxuXG4gIGdldFJlcXVpcmVkRW1wdHlGaWVsZHMoY29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcsIG9ubHlWaXNpYmxlPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBpZiAob25seVZpc2libGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQ/LnJlcXVpcmVkICYmIGZsZD8udmlzaWJsZSAmJiBmbGQ/LmVtcHR5LCBjb2RlcyA/PyBudWxsLCBzZWNDb2RlLCBzdWJDb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZD8ucmVxdWlyZWQgJiYgZmxkPy5lbXB0eSwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBnZXRDaGFuZ2VkRmllbGRzKGNvZGVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBzZWNDb2RlPzogc3RyaW5nLCBzdWJDb2RlPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiAhZmxkPy5vdXRwdXRPbmx5ICYmIGZsZD8uaGFzQ2hhbmdlZCwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cblxuICBnZXRGaWVsZHNXaXRoVmFsaWRhdGlvbklzc3Vlcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZywgb25seVZpc2libGU/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGlmIChvbmx5VmlzaWJsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IChmbGQ/Lmhhc0Vycm9yKCkgJiYgZmxkPy52aXNpYmxlKSwgY29kZXMgPz8gbnVsbCwgc2VjQ29kZSwgc3ViQ29kZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQ/Lmhhc0Vycm9yKCksIGNvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgZ2V0RmllbGRzVmFsdWVzKGlucHV0Q29kZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIHNlY0NvZGU/OiBzdHJpbmcsIHN1YkNvZGU/OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRGaWVsZFNldChudWxsLCBpbnB1dENvZGVzID8/IG51bGwsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICAgIGNvbnN0IHJlc3VsdE9iamVjdCA9IHt9O1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2Rlcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBjb2Rlc1tpbmRleF07XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICByZXN1bHRPYmplY3RbY29kZV0gPSB0aGlzLmZpZWxkcz8uW2NvZGVdPy5nZXRWYWx1ZSgpID8/IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRPYmplY3Q7XG4gIH1cblxuICAvLyBBY2Npb25lc1xuICBnZXRBY3Rpb25zKCk6IEZvcm1BY3Rpb25bXSB7IHJldHVybiB0aGlzLmFjdGlvbkFycmF5OyB9XG4gIGdldEFjdGlvbihjb2RlOiBzdHJpbmcpOiBGb3JtQWN0aW9uIHsgcmV0dXJuIChjb2RlICYmIHRoaXMuYWN0aW9ucz8uW2NvZGVdKSA/IHRoaXMuYWN0aW9uc1tjb2RlXSA6IG51bGw7IH1cbiAgc2hvd0FjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPbkFjdGlvbnMoY29kZXMsIFNIT1cpOyB9XG4gIGhpZGVBY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25BY3Rpb25zKGNvZGVzLCBISURFKTsgfVxuICBlbmFibGVBY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25BY3Rpb25zKGNvZGVzLCBFTkFCTEUpOyB9XG4gIGRpc2FibGVBY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25BY3Rpb25zKGNvZGVzLCBESVNBQkxFKTsgfVxuICBlbmFibGVBY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmVuYWJsZUFjdGlvbnMoY29kZSk7IH1cbiAgZGlzYWJsZUFjdGlvbihjb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZGlzYWJsZUFjdGlvbnMoY29kZSk7IH1cbiAgc2hvd0FjdGlvbihjb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuc2hvd0FjdGlvbnMoY29kZSk7IH1cbiAgaGlkZUFjdGlvbihjb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuaGlkZUFjdGlvbnMoY29kZSk7IH1cbiAgZ2V0SGVhZGVyQWN0aW9ucygpIHsgcmV0dXJuIHRoaXMuZ2V0QWN0aW9uc0J5QXR0cmlidXRlKCdsb2NhdGlvbicsIEhFQURFUik7IH1cblxuICBnZXRBY3Rpb25zQnlBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZSk6IEZvcm1BY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uQXJyYXkuZmlsdGVyKGFjdGlvbkl0ZW0gPT4gYWN0aW9uSXRlbS5tYXRjaEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpO1xuICB9XG5cbiAgZXhlY09uQWN0aW9ucyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBmdW5jdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbkNvZGVzID0gKEFycmF5LmlzQXJyYXkoY29kZXMpKSA/IGNvZGVzIDogKGNvZGVzID8gW2NvZGVzXSA6IFtdKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCBhY3Rpb25Db2Rlcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgYWN0aW9uQ29kZXMuZm9yRWFjaChjb2RlID0+IHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZ2V0QWN0aW9uKGNvZGUpO1xuICAgICAgYWN0aW9uPy5bZnVuY3Rpb25OYW1lXT8uKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBUYWJsYXNcbiAgZ2V0VGFibGVzKCk6IFJlY29yZFRhYmxlW10geyByZXR1cm4gdGhpcy50YWJsZUFycmF5OyB9XG4gIGdldFRhYmxlKGNvZGU6IHN0cmluZyk6IFJlY29yZFRhYmxlIHsgcmV0dXJuIChjb2RlICYmIHRoaXMudGFibGVzPy5bY29kZV0pID8gdGhpcy50YWJsZXNbY29kZV0gOiBudWxsOyB9XG4gIGdldFRhYmxlUmVjb3JkKGNvZGU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFRhYmxlUmVjb3JkRGF0YSB7IHJldHVybiB0aGlzLmdldFRhYmxlKGNvZGUpPy5nZXRUYWJsZVJlY29yZChpZCkgfVxuICBlbmFibGVUYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgRU5BQkxFKTsgfVxuICBkaXNhYmxlVGFibGVzKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25UYWJsZXMoY29kZXMsIERJU0FCTEUpOyB9XG4gIHNob3dUYWJsZXMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblRhYmxlcyhjb2RlcywgU0hPVyk7IH1cbiAgaGlkZVRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uVGFibGVzKGNvZGVzLCBISURFKTsgfVxuICBjbGVhblRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuZXhlY09uVGFibGVzKGNvZGVzLCBDTEVBTik7IH1cbiAgc2hvd1RhYmxlKGNvZGU6IHN0cmluZykgeyByZXR1cm4gdGhpcy5zaG93VGFibGVzKGNvZGUpOyB9XG4gIGhpZGVUYWJsZShjb2RlOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuaGlkZVRhYmxlcyhjb2RlKTsgfVxuICBjbGVhblRhYmxlKGNvZGU6IHN0cmluZykgeyByZXR1cm4gdGhpcy5nZXRUYWJsZShjb2RlKT8uY2xlYW4oKTsgfVxuXG4gIGV4ZWNPblRhYmxlcyhjb2Rlczogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsLCBmdW5jdGlvbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhYmxlQ29kZXMgPSAoQXJyYXkuaXNBcnJheShjb2RlcykpID8gY29kZXMgOiAoY29kZXMgPyBbY29kZXNdIDogW10pO1xuICAgIGlmICghZnVuY3Rpb25OYW1lIHx8IHRhYmxlQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIHRhYmxlQ29kZXMuZm9yRWFjaChjb2RlID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZShjb2RlKTtcbiAgICAgIHRhYmxlPy5bZnVuY3Rpb25OYW1lXT8uKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBTZWNjaW9uZXNcbiAgZ2V0U2VjdGlvbnMoKTogUmVjb3JkRm9ybVNlY3Rpb25bXSB7IHJldHVybiB0aGlzLnNlY3Rpb25BcnJheTsgfVxuICBnZXRTZWN0aW9uc1RpdGxlcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb25zKCk/LmZpbHRlcihzZWMgPT4gc2VjPy50aXRsZSkubWFwKHNlYyA9PiBzZWM/LnRpdGxlID8/ICcnKTsgfVxuICBudW1TZWN0aW9ucygpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5zZWN0aW9uQXJyYXkubGVuZ3RoOyB9XG4gIGdldFNlY3Rpb25zQnlBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOiBSZWNvcmRGb3JtU2VjdGlvbltdIHsgcmV0dXJuIHRoaXMuc2VjdGlvbkFycmF5LmZpbHRlcihpdGVtID0+IGl0ZW0ubWF0Y2hBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTsgfVxuICBnZXQgc2VjdGlvblRpdGxlcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb25zVGl0bGVzKCk7IH1cbiAgZ2V0IHZpc2libGVTZWN0aW9ucygpOiBSZWNvcmRGb3JtU2VjdGlvbltdIHsgcmV0dXJuIHRoaXMuc2VjdGlvbkFycmF5LmZpbHRlcihzZWMgPT4gc2VjLmFic29sdXRlVmlzaWJsZSk7IH1cbiAgZ2V0U2VjdGlvbihjb2RlOiBzdHJpbmcpOiBSZWNvcmRGb3JtU2VjdGlvbiB7IHJldHVybiAoY29kZSAmJiB0aGlzLnNlY3Rpb25zPy5bY29kZV0pID8gdGhpcy5zZWN0aW9uc1tjb2RlXSA6IG51bGw7IH1cbiAgc2hvd1NlY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyB0aGlzLmV4ZWNPblNlY3Rpb25zKGNvZGVzLCBTSE9XKTsgfVxuICBoaWRlU2VjdGlvbnMoY29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHRoaXMuZXhlY09uU2VjdGlvbnMoY29kZXMsIEhJREUpOyB9XG4gIHNob3dTZWN0aW9uKGNvZGU6IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5zaG93U2VjdGlvbnMoY29kZSk7IH1cbiAgaGlkZVNlY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmhpZGVTZWN0aW9ucyhjb2RlKTsgfVxuICBhY3RpdmVTZWN0aW9uKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9leGNsdXNpdmVTZWN0aW9uc0J5QXR0cltBQ1RJVkVdOyB9XG4gIGdldFN1YlNlY3Rpb24oY29kZTogc3RyaW5nLCBzdWJDb2RlKTogUmVjb3JkRm9ybVN1YlNlY3Rpb24geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpPy5nZXRTdWJzZWN0aW9uKHN1YkNvZGUpID8/IG51bGw7IH1cbiAgc2hvd1N1YlNlY3Rpb25zKGNvZGU6IHN0cmluZywgc3ViQ29kZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7IHJldHVybiB0aGlzLmV4ZWNPblN1YlNlY3Rpb25zKGNvZGUsIHN1YkNvZGVzLCBTSE9XKTsgfVxuICBzaG93U3ViU2VjdGlvbihjb2RlOiBzdHJpbmcsIHN1YkNvZGU6IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5zaG93U3ViU2VjdGlvbnMoY29kZSwgc3ViQ29kZSk7IH1cbiAgaGlkZVN1YlNlY3Rpb24oY29kZTogc3RyaW5nLCBzdWJDb2RlOiBzdHJpbmcpOiB2b2lkIHsgcmV0dXJuIHRoaXMuaGlkZVN1YlNlY3Rpb25zKGNvZGUsIHN1YkNvZGUpOyB9XG4gIGhpZGVTdWJTZWN0aW9ucyhjb2RlOiBzdHJpbmcsIHN1YkNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyk6IHZvaWQgeyByZXR1cm4gdGhpcy5leGVjT25TdWJTZWN0aW9ucyhjb2RlLCBzdWJDb2RlcywgSElERSk7IH1cbiAgZ2V0U2VjdGlvbkFjdGlvbnMoY29kZSk6IEZvcm1BY3Rpb25bXSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb24oY29kZSk/LmdldEFjdGlvbnMoKSA/PyBudWxsOyB9XG4gIGdldFNlY3Rpb25BY3Rpb25OYW1lcyhjb2RlKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uKGNvZGUpPy5nZXRBY3Rpb25OYW1lcygpID8/IG51bGw7IH1cblxuICBhY3RpdmF0ZVNlY3Rpb24oY29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGNvZGUgPT09IHRoaXMuX2V4Y2x1c2l2ZVNlY3Rpb25zQnlBdHRyW0FDVElWRV0pIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5nZXRTZWN0aW9uKHRoaXMuYWN0aXZlU2VjdGlvbigpKT8uaW5hY3RpdmF0ZSgpO1xuICAgIHRoaXMuZ2V0U2VjdGlvbihjb2RlKT8uYWN0aXZhdGUoKTtcbiAgICB0aGlzLl9leGNsdXNpdmVTZWN0aW9uc0J5QXR0cltBQ1RJVkVdID0gY29kZTtcbiAgfVxuXG4gIGV4ZWNPblNlY3Rpb25zKGNvZGVzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGwsIGZ1bmN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2VjdGlvbkNvZGVzID0gKEFycmF5LmlzQXJyYXkoY29kZXMpKSA/IGNvZGVzIDogKGNvZGVzID8gW2NvZGVzXSA6IFtdKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCBzZWN0aW9uQ29kZXMubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxuICAgIHNlY3Rpb25Db2Rlcy5mb3JFYWNoKGNvZGUgPT4ge1xuICAgICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0U2VjdGlvbihjb2RlKTtcbiAgICAgIHNlY3Rpb24/LltmdW5jdGlvbk5hbWVdPy4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4ZWNPblN1YlNlY3Rpb25zKGNvZGU6IHN0cmluZywgc3ViTmFtZXM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgZnVuY3Rpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdWJDb2RlcyA9IChBcnJheS5pc0FycmF5KHN1Yk5hbWVzKSkgPyBzdWJOYW1lcyA6IChzdWJOYW1lcyA/IFtzdWJOYW1lc10gOiBbXSk7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0U2VjdGlvbihjb2RlKTtcbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSB8fCAhc2VjdGlvbiB8fCBzdWJDb2Rlcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgZm9yIChjb25zdCBzdWJDb2RlIG9mIHN1YkNvZGVzKSB7XG4gICAgICBjb25zdCBzdWJTZWN0aW9uID0gdGhpcy5nZXRTdWJTZWN0aW9uKGNvZGUsIHN1YkNvZGUpO1xuICAgICAgc3ViU2VjdGlvbj8uW2Z1bmN0aW9uTmFtZV0/LigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvcyBwcm9waW9zIGRlIGdlc3Rpw7NuIGRlbCBmb3JtdWxhcmlvXG4gICAqL1xuXG4gIGNsZWFuRGF0YSgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuZmllbGRBcnJheSkge1xuICAgICAgZmllbGQuc2V0VmFsdWUoZmllbGQuZGVmYXVsdFZhbHVlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB0YWJsZSBvZiB0aGlzLnRhYmxlQXJyYXkpIHtcbiAgICAgIHRhYmxlLmNsZWFuKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGF5bG9hZCgpOiBhbnkge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtUGF5bG9hZCA9IHsgZmllbGRzOiBbXSwgdGFibGVzOiBbXSB9O1xuICAgIGZvcm1EYXRhLmZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCkuZmlsdGVyKGZsZCA9PiAhZmxkPy5vdXRwdXRPbmx5KVxuICAgICAgLm1hcChmbGQgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZFBheWxvYWQ6IEZpZWxkUGF5bG9hZCA9IHtcbiAgICAgICAgICBmaWVsZENvZGU6IGZsZD8uY29kZSxcbiAgICAgICAgICBmaWVsZFZhbHVlOiBmbGQ/LnZhbHVlLFxuICAgICAgICAgIGVkaXRhYmxlOiAhZmxkPy5hYnNvbHV0ZURpc2FibGVkLFxuICAgICAgICAgIHZpc2libGU6IGZsZD8uYWJzb2x1dGVWaXNpYmxlLFxuICAgICAgICAgIHJlcXVpcmVkOiBmbGQ/LnJlcXVpcmVkLFxuICAgICAgICAgIGZpZWxkT3B0aW9uczogJycsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkUGF5bG9hZDtcbiAgICAgIH0pO1xuXG4gICAgZm9ybURhdGEudGFibGVzID0gdGhpcy5nZXRUYWJsZXMoKS5tYXAodGJsID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlUGF5bG9hZDogVGFibGVQYXlsb2FkID0ge1xuICAgICAgICB0YWJsZUNvZGU6IHRibC50YWJsZUNvZGUsXG4gICAgICAgIHZpc2libGU6IHRibC5hYnNvbHV0ZVZpc2libGUsXG4gICAgICAgIGN1cnJlbnRQYWdlOiB0YmwuY3VycmVudFBhZ2UsXG4gICAgICAgIHJlcXVlc3RlZFBhZ2U6IHRibC5yZXF1ZXN0ZWRQYWdlLFxuICAgICAgICByZWNvcmRzUGVyUGFnZTogdGJsLnJlY29yZHNQZXJQYWdlLFxuICAgICAgICBjdXJyZW50RmlsdGVyOiB0YmwuY3VycmVudEZpbHRlcixcbiAgICAgICAgc29ydGluZ0NvbHVtbjogdGJsLnNvcnRpbmcuY29sdW1uTmFtZSxcbiAgICAgICAgc29ydGluZ0RpcmVjdGlvbjogdGJsLnNvcnRpbmcuZGlyZWN0aW9uLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0YWJsZVBheWxvYWRcbiAgICB9KVxuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3ViamVjdFxuICAgKi9cbiAgZ2V0IGZvcm1TdWJqZWN0KCkgeyByZXR1cm4gdGhpcy5zdWJqZWN0OyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdWJqZWN0XG4gICAqL1xuICBzZXQgZm9ybVN1YmplY3Qoc3ViamVjdCkgeyB0aGlzLnN1YmplY3QgPSBzdWJqZWN0OyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdGF0ZXNcbiAgICovXG4gIGdldFN0YXRlcygpIHsgcmV0dXJuIHRoaXMuc3RhdGVzOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzdGF0ZVxuICAgKi9cbiAgZ2V0Q3VycmVudFN0YXRlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN0YXRlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aXRsZVxuICAgKi9cbiAgZ2V0VGl0bGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMudGl0bGU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRpdGxlXG4gICAqL1xuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nKTogdm9pZCB7IHRoaXMudGl0bGUgPSB0aXRsZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3VwcG9ydFN0YXRlXG4gICAqL1xuICBzdXBwb3J0TW9kZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnN1cHBvcnRTdGF0ZShzdGF0ZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGVuYWJsZUZpZWxkc1xuICAgKi9cbiAgZW5hYmxlRWRpdEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZUZpZWxkcyhjb2Rlcywgc2VjQ29kZSwgc3ViQ29kZSk7XG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBkaXNhYmxlRmllbGRzXG4gICAqL1xuICBkaXNhYmxlRWRpdEZpZWxkcyhjb2Rlcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbCwgc2VjQ29kZT86IHN0cmluZywgc3ViQ29kZT86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVGaWVsZHMoY29kZXMsIHNlY0NvZGUsIHN1YkNvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBnZXRGaWVsZFxuICAgKi9cbiAgZ2V0RmllbGRPYmplY3QoY29kZTogc3RyaW5nKTogRmllbGREZXNjcmlwdG9yIHwgbnVsbCB7IHJldHVybiB0aGlzLmdldEZpZWxkKGNvZGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBnZXRBY3Rpb25cbiAgICovXG4gIGdldEFjdGlvbk9iamVjdChjb2RlOiBzdHJpbmcpOiBGb3JtQWN0aW9uIHwgbnVsbCB7IHJldHVybiB0aGlzLmdldEFjdGlvbihjb2RlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0VGFibGVcbiAgICovXG4gIGdldFRhYmxlT2JqZWN0KGNvZGU6IHN0cmluZyk6IFJlY29yZFRhYmxlIHwgbnVsbCB7IHJldHVybiB0aGlzLmdldFRhYmxlKGNvZGUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBnZXRTZWN0aW9uXG4gICAqL1xuICBnZXRTZWN0aW9uT2JqZWN0KGNvZGU6IHN0cmluZyk6IFJlY29yZEZvcm1TZWN0aW9uIHwgbnVsbCB7IHJldHVybiB0aGlzLmdldFNlY3Rpb24oY29kZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGNoYW5nZVN0YXRlXG4gICAqL1xuICBjaGFuZ2VGb3JtTW9kZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNoYW5nZVN0YXRlKHN0YXRlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc3ViamVjdFxuICAgKi9cbiAgZ2V0Rm9ybVN1YmplY3QoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuc3ViamVjdDsgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1YmplY3RcbiAgICovXG4gIGdldFN1YmplY3QoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuc3ViamVjdCA/PyAnJzsgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHN1YmplY3RcbiAgICovXG4gIGdldGZvcm1TdWJqZWN0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnN1YmplY3QgPz8gJyc7IH1cblxufVxuIl19
|