@rivet-health/design-system 11.2.2 → 11.3.0
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/table/state.mjs +10 -5
- package/fesm2015/rivet-health-design-system.mjs +9 -4
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +9 -4
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/table/state.d.ts +1 -1
- package/package.json +1 -1
|
@@ -68,10 +68,15 @@ export var RivTable;
|
|
|
68
68
|
},
|
|
69
69
|
}, { type: 'load' });
|
|
70
70
|
const fullColumns = resolveColumns(s, columns, options.allowSelection);
|
|
71
|
-
const data = [
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
const data = [];
|
|
72
|
+
data.push(fullColumns.map(({ name }) => name));
|
|
73
|
+
for (const record of dataSet.currentPageData) {
|
|
74
|
+
const row = [];
|
|
75
|
+
for (const column of fullColumns) {
|
|
76
|
+
row.push(await cellFormatter(record, column));
|
|
77
|
+
}
|
|
78
|
+
data.push(row);
|
|
79
|
+
}
|
|
75
80
|
yield { loading: false, data };
|
|
76
81
|
},
|
|
77
82
|
csvFilename: (options?.csvFileBasename?.slice(0, 200) ?? pluralEntityName) +
|
|
@@ -638,4 +643,4 @@ async function* reduce(state, action, columns, source) {
|
|
|
638
643
|
break;
|
|
639
644
|
}
|
|
640
645
|
}
|
|
641
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQXNCLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3pFLE9BQU8sRUFFTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsYUFBYSxFQUNiLE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUdkLE1BQU0sS0FBVyxRQUFRLENBd2Z4QjtBQXhmRCxXQUFpQixRQUFRO0lBeUNWLGtCQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQVUsQ0FBQztJQStQckQsU0FBZ0IsYUFBYSxDQUszQixNQUF1QixFQUN2QixPQUErQixFQUMvQixnQkFBd0IsRUFDeEIsT0FBaUM7UUFFakMsa0NBQWtDO1FBQ2xDLE1BQU0sWUFBWSxHQUF1QjtZQUN2QyxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxDQUFDO29CQUNQLFFBQVEsRUFBRSxFQUFFO2lCQUNiO2dCQUNELE9BQU8sRUFBRSxJQUFJO2FBQ2Q7WUFDRCxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDckMsTUFBTSxFQUFFO2dCQUNOLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixxQkFBcUIsRUFBRSxDQUFDO2FBQ3pCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxFQUFFO2FBQ25CO1lBQ0QsU0FBUyxFQUFFO2dCQUNULG9CQUFvQixFQUFF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Q29udGVudCI6WyJpbXBvcnQgRnVzZSwgeyBJRnVzZU9wdGlvbnMgfSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7IGRlZmF1bHRzRGVlcCwgZGlmZmVyZW5jZSwgb3JkZXJCeSwgcmFuZ2UsIHVuaW9uIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIENvbm5lY3RhYmxlLFxuICBjb25uZWN0YWJsZSxcbiAgZnJvbSxcbiAgbWFwLFxuICBtZXJnZVNjYW4sXG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICd1dGlsaXR5LXR5cGVzJztcblxuZXhwb3J0IG5hbWVzcGFjZSBSaXZUYWJsZSB7XG4gIGV4cG9ydCB0eXBlIFJvdyA9IHsgaWQ6IHN0cmluZyB8IG51bWJlciB9O1xuICBleHBvcnQgdHlwZSBDb2x1bW4gPSBzdHJpbmc7XG4gIGV4cG9ydCB0eXBlIEZpbHRlcnMgPSBhbnk7XG5cbiAgLyoqXG4gICAqIFJpdlRhYmxlJ3Mgc3RhdGUgYW5kIHVzZXIgYWN0aW9ucyBhcmUgZGl2aWRlZCBpbnRvIHRoZSBmb2xsb3dpbmcgY2h1bmtzOlxuICAgKlxuICAgKiAtIFF1ZXJ5IChmb3IgdGhpbmdzIGxpa2UgZmlsdGVycywgcGFnaW5hdGlvbiwgc2VhcmNoLCBldGMuKVxuICAgKiAtIExvYWRpbmcgKGZvciB3aGV0aGVyIG9yIG5vdCB0aGUgdGFibGUgaXMgbG9hZGluZyByb3cgZGF0YSlcbiAgICogLSBSZXN1bHQgKGZvciB0aGUgcm93IGRhdGEgaXRzZWxmKVxuICAgKiAtIERpc3BsYXkgKGZvciB0aGluZ3MgbGlrZSBjb2x1bW4gY29uZmlndXJhdGlvbilcbiAgICogLSBTZWxlY3Rpb24gKGZvciB0cmFja2luZyB0aGUgdXNlcidzIHJvdyBzZWxlY3Rpb25zKVxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIGRhdGEgZmxvdyBpcyB1bmlkaXJlY3Rpb25hbDogdGhlIFVJIGlzc3VlcyBhY3Rpb25zLCB3aGljaFxuICAgKiBhZmZlY3QgdGhlIHN0YXRlLCBhbmQgdGhlIHN0YXRlIGdldHMgcGFzc2VkIGJhY2sgdG8gdGhlIFVJIGZvciBkaXNwbGF5LlxuICAgKlxuICAgKiDilIzilIDilIDilIDilIDilIDilIDilJBcbiAgICog4pSCICBVSSAg4peE4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICAqIOKUlOKUgOKUgOKUrOKUgOKUgOKUgOKUmCAgICAgICAg4pSCXG4gICAqICAgIOKUgiAgICAgICAgICAgIOKUglxuICAgKiDilIzilIDilIDilrzilIDilIDilIDilIDilIDilIDilIDilIDilJAgICDilIJcbiAgICog4pSCICBBY3Rpb25zICDilIIgICDilIJcbiAgICog4pSU4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAg4pSCXG4gICAqICAgIOKUgiAgICAgICAgICAgIOKUglxuICAgKiDilIzilIDilIDilrzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilJBcbiAgICog4pSCICBTdGF0ZSByZWR1Y2VyICDilIJcbiAgICog4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICAqXG4gICAqIEZyb20gdGhlIGNvcmUgc3RhdGUsIGNhbGN1bGF0ZWQgc3RhdGUgaXMgZGVyaXZlZCBhbmQgYWRkZWQgdG8gdGhlIGNvcmVcbiAgICogc3RhdGUgKGUuZy4sIGZyb20gdGhlIHJhdyBzZWxlY3Rpb24gc3RhdGUgd2UgY2FuIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdFxuICAgKiBhbGwgdGhlIHJvd3Mgb24gdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgcGFnZSBhcmUgc2VsZWN0ZWQsIGV0Yy4pLlxuICAgKi9cblxuICAvLy8vLy8vLy8vL1xuICAvLyBRdWVyeSAvL1xuICAvLy8vLy8vLy8vL1xuXG4gIC8vIFF1ZXJ5IHN0YXRlIC8vXG5cbiAgZXhwb3J0IHR5cGUgT3JkZXJEaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcbiAgZXhwb3J0IGNvbnN0IHBhZ2VTaXplcyA9IFsyNSwgNTAsIDEwMCwgMjUwXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgUXVlcnk8QyBleHRlbmRzIENvbHVtbiwgRiBleHRlbmRzIEZpbHRlcnM+ID0ge1xuICAgIG9yZGVyOiB7XG4gICAgICBkaXJlY3Rpb246IE9yZGVyRGlyZWN0aW9uO1xuICAgICAgY29sdW1uOiBDO1xuICAgIH0gfCBudWxsO1xuICAgIHNlYXJjaDogc3RyaW5nO1xuICAgIGZpbHRlcnM6IEYgfCBudWxsO1xuICAgIHBhZ2luYXRpb246IHtcbiAgICAgIHBhZ2U6IG51bWJlcjtcbiAgICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgfTtcbiAgfTtcblxuICAvLyBRdWVyeSBhY3Rpb25zIC8vXG5cbiAgZXhwb3J0IHR5cGUgUXVlcnlBY3Rpb248QyBleHRlbmRzIENvbHVtbiwgRiBleHRlbmRzIEZpbHRlcnM+ID1cbiAgICB8IHsgdHlwZTogJ2xvYWQnIH1cbiAgICB8IHsgdHlwZTogJ29yZGVyQ2hhbmdlJzsgcGF5bG9hZDogUXVlcnk8QywgRj5bJ29yZGVyJ10gfVxuICAgIHwgeyB0eXBlOiAnb3JkZXJDb2x1bW5Ub2dnbGUnOyBjb2x1bW46IEMgfVxuICAgIHwgeyB0eXBlOiAnc2VhcmNoQ2hhbmdlJzsgcGF5bG9hZDogUXVlcnk8QywgRj5bJ3NlYXJjaCddIH1cbiAgICB8IHsgdHlwZTogJ2ZpbHRlcnNDaGFuZ2UnOyBwYXlsb2FkOiBRdWVyeTxDLCBGPlsnZmlsdGVycyddIH1cbiAgICB8IHsgdHlwZTogJ3BhZ2luYXRpb25DaGFuZ2UnOyBwYXlsb2FkOiBRdWVyeTxDLCBGPlsncGFnaW5hdGlvbiddIH1cbiAgICB8IHsgdHlwZTogJ25leHRQYWdlTmF2aWdhdGUnIH1cbiAgICB8IHsgdHlwZTogJ3ByZXZpb3VzUGFnZU5hdmlnYXRlJyB9XG4gICAgfCB7IHR5cGU6ICdwYWdlQ2hhbmdlJzsgcGFnZTogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogJ3BhZ2VTaXplQ2hhbmdlJzsgc2l6ZTogbnVtYmVyIH07XG5cbiAgLy8vLy8vLy8vL1xuICAvLyBMb2FkIC8vXG4gIC8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBMb2FkID0ge1xuICAgIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgZXJyb3I6IHVua25vd24gfCBudWxsO1xuICB9O1xuXG4gIC8vLy8vLy8vLy8vL1xuICAvLyBSZXN1bHQgLy9cbiAgLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgUmVzdWx0PFIgZXh0ZW5kcyBSb3c+ID0ge1xuICAgIC8qKlxuICAgICAqIFRoZSBmdWxsIHJvdyBkYXRhIGZvciB0aGUgY3VycmVudCBwYWdlLCBhZnRlciBmaWx0ZXJzLCBzZWFyY2ggcXVlcnksIGFuZFxuICAgICAqIHJvdyBvcmRlcmluZyBhcmUgYXBwbGllZC5cbiAgICAgKi9cbiAgICBjdXJyZW50UGFnZURhdGE6IFJbXTtcbiAgICAvKipcbiAgICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgKHJlZ2FyZGxlc3Mgb2YgcGFnaW5hdGlvbikgdGhhdCBtYXRjaCB0aGVcbiAgICAgKiBmaWx0ZXJzIGFuZCBzZWFyY2ggcXVlcnkuXG4gICAgICovXG4gICAgdG90YWxNYXRjaGluZ1Jvd0NvdW50OiBudW1iZXI7XG4gIH07XG4gIGV4cG9ydCB0eXBlIFNvdXJjZTxSIGV4dGVuZHMgUm93LCBDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPSAoXG4gICAgcXVlcnk6IFJpdlRhYmxlLlF1ZXJ5PEMsIEY+LFxuICAgIG1vc3RSZWNlbnRBY3Rpb246IFJpdlRhYmxlLkFjdGlvbjxSLCBDLCBGPixcbiAgKSA9PiBQcm9taXNlPFJlc3VsdDxSPj47XG5cbiAgLy8vLy8vLy8vLy8vL1xuICAvLyBEaXNwbGF5IC8vXG4gIC8vLy8vLy8vLy8vLy9cblxuICAvLyBEaXNwbGF5IHN0YXRlIC8vXG5cbiAgZXhwb3J0IHR5cGUgQ29sdW1uU2V0dGluZ3M8QyBleHRlbmRzIENvbHVtbj4gPSB7XG4gICAgbmFtZTogQztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIHByZWZlcnJlZFdpZHRoOiBudW1iZXIgfCAnYXV0byc7XG4gICAgcGlubmVkOiBib29sZWFuO1xuICB9O1xuICBleHBvcnQgdHlwZSBEaXNwbGF5PEMgZXh0ZW5kcyBDb2x1bW4+ID0ge1xuICAgIGNvbHVtblNldHRpbmdzOiBDb2x1bW5TZXR0aW5nczxDPltdO1xuICB9O1xuXG4gIC8vIERpc3BsYXkgYWN0aW9ucyAvL1xuXG4gIGV4cG9ydCB0eXBlIERpc3BsYXlBY3Rpb248QyBleHRlbmRzIENvbHVtbj4gPVxuICAgIHwgeyB0eXBlOiAnY29sdW1uU2V0dGluZ3NDaGFuZ2UnOyBwYXlsb2FkOiBEaXNwbGF5PEM+Wydjb2x1bW5TZXR0aW5ncyddIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ2NvbHVtblBpbkNoYW5nZSc7XG4gICAgICAgIGNvbHVtbjogQztcbiAgICAgICAgcGlubmVkOiBib29sZWFuO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnY29sdW1uT3JkZXJDaGFuZ2UnO1xuICAgICAgICBwcmV2aW91c0luZGV4OiBudW1iZXI7XG4gICAgICAgIG5ld0luZGV4OiBudW1iZXI7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdjb2x1bW5FbmFibGVkQ2hhbmdlJztcbiAgICAgICAgY29sdW1uOiBDO1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnY29sdW1uV2lkdGhDaGFuZ2UnO1xuICAgICAgICBjb2x1bW46IEM7XG4gICAgICAgIHByZWZlcnJlZFdpZHRoOiBudW1iZXIgfCAnYXV0byc7XG4gICAgICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vL1xuICAvLyBTZWxlY3Rpb24gLy9cbiAgLy8vLy8vLy8vLy8vLy8vXG5cbiAgLy8gU2VsZWN0aW9uIHN0YXRlIC8vXG5cbiAgZXhwb3J0IHR5cGUgU2VsZWN0aW9uPFIgZXh0ZW5kcyBSb3c+ID0ge1xuICAgIG1vc3RSZWNlbnRseVNlbGVjdGVkOiBSWydpZCddIHwgbnVsbDtcbiAgfSAmIChcbiAgICB8IHtcbiAgICAgICAgbW9kZTogJ2luY2x1ZGUnO1xuICAgICAgICBpbmNsdWRlZDogU2V0PFJbJ2lkJ10+O1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBtb2RlOiAnZXhjbHVkZSc7XG4gICAgICAgIGV4Y2x1ZGVkOiBTZXQ8UlsnaWQnXT47XG4gICAgICB9XG4gICk7XG5cbiAgLy8gU2VsZWN0aW9uIGFjdGlvbnMgLy9cblxuICBleHBvcnQgdHlwZSBTZWxlY3Rpb25BY3Rpb248UiBleHRlbmRzIFJvdz4gPVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnc2VsZWN0aW9uQ2hhbmdlJztcbiAgICAgICAgcGF5bG9hZDogU2VsZWN0aW9uPFI+O1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAncm93U2VsZWN0ZWRDaGFuZ2UnO1xuICAgICAgICBpZDogUlsnaWQnXTtcbiAgICAgICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgICAgIGNvbnRpZ3VvdXM6IGJvb2xlYW47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdwYWdlU2VsZWN0ZWRDaGFuZ2UnO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnYWxsU2VsZWN0ZWRDaGFuZ2UnO1xuICAgICAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBQdXR0aW5nIGl0IGFsbCB0b2dldGhlciAvL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIC8vIENvbWJpbmVkIHN0YXRlIC8vXG5cbiAgZXhwb3J0IHR5cGUgQ29yZVN0YXRlPFIgZXh0ZW5kcyBSb3csIEMgZXh0ZW5kcyBDb2x1bW4sIEYgZXh0ZW5kcyBGaWx0ZXJzPiA9IHtcbiAgICBxdWVyeTogUXVlcnk8QywgRj47XG4gICAgbG9hZDogTG9hZDtcbiAgICByZXN1bHQ6IFJlc3VsdDxSPjtcbiAgICBkaXNwbGF5OiBEaXNwbGF5PEM+O1xuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uPFI+O1xuICB9O1xuXG4gIC8vIENvbWJpbmVkIGFjdGlvbnMgLy9cblxuICBleHBvcnQgdHlwZSBBY3Rpb248UiBleHRlbmRzIFJvdywgQyBleHRlbmRzIENvbHVtbiwgRiBleHRlbmRzIEZpbHRlcnM+ID1cbiAgICB8IFF1ZXJ5QWN0aW9uPEMsIEY+XG4gICAgfCBEaXNwbGF5QWN0aW9uPEM+XG4gICAgfCBTZWxlY3Rpb25BY3Rpb248Uj47XG5cbiAgLy8gRnVsbCBzdGF0ZSAoY29yZSBzdGF0ZSBwbHVzIHB1cmUgZGVyaXZhdGlvbnMpIC8vXG5cbiAgZXhwb3J0IHR5cGUgQ29sdW1uRGF0YVR5cGUgPVxuICAgIHwgJ2FkdmFuY2VkJ1xuICAgIHwgJ2N1cnJlbmN5J1xuICAgIHwgJ2RhdGUnXG4gICAgfCAnaWNvbidcbiAgICB8ICdsb25nVGV4dCdcbiAgICB8ICdudW1iZXInXG4gICAgfCAnc2hvcnRUZXh0JztcbiAgZXhwb3J0IHR5cGUgQ29sdW1uQWxpZ25tZW50ID0gJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuICBleHBvcnQgdHlwZSBDb2x1bW5NZXRhZGF0YSA9IHtcbiAgICBvcmRlcmFibGU6IGJvb2xlYW47XG4gICAgbWluV2lkdGg6IG51bWJlcjtcbiAgICBkYXRhVHlwZTogQ29sdW1uRGF0YVR5cGU7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgZGVmYXVsdFBpbm5lZD86IGJvb2xlYW47XG4gIH07XG4gIGV4cG9ydCB0eXBlIEZ1bGxSb3c8UiBleHRlbmRzIFJvdz4gPSBSICYge1xuICAgIHJvd0xpbms6IHN0cmluZyB8IG51bGw7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIH07XG4gIGV4cG9ydCB0eXBlIEZ1bGxDb2x1bW48QyBleHRlbmRzIENvbHVtbj4gPSBDb2x1bW5TZXR0aW5nczxDPiAmXG4gICAgQ29sdW1uTWV0YWRhdGEgJiB7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgbGVmdDogbnVtYmVyIHwgbnVsbDtcbiAgICAgIGFsaWdubWVudDogQ29sdW1uQWxpZ25tZW50O1xuICAgIH07XG4gIGV4cG9ydCB0eXBlIE11bHRpU2VsZWN0aW9uU3RhdGUgPSBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnO1xuXG4gIGV4cG9ydCB0eXBlIENzdkNlbGxGb3JtYXR0ZXI8UiBleHRlbmRzIFJvdywgQyBleHRlbmRzIENvbHVtbj4gPSAoXG4gICAgcm93OiBSLFxuICAgIGNvbHVtbjogRnVsbENvbHVtbjxDPixcbiAgKSA9PiBzdHJpbmc7XG4gIGV4cG9ydCB0eXBlIENzdlJvdyA9IHN0cmluZ1tdO1xuICBleHBvcnQgdHlwZSBDc3YgPSBDc3ZSb3dbXTtcbiAgZXhwb3J0IHR5cGUgQ3N2T3V0cHV0ID1cbiAgICB8IHsgbG9hZGluZzogdHJ1ZTsgZGF0YTogbnVsbCB9XG4gICAgfCB7IGxvYWRpbmc6IGZhbHNlOyBkYXRhOiBDc3YgfTtcblxuICBleHBvcnQgdHlwZSBGdWxsU3RhdGU8XG4gICAgUiBleHRlbmRzIFJvdyxcbiAgICBDIGV4dGVuZHMgQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBGaWx0ZXJzLFxuICA+ID0gQ29yZVN0YXRlPFIsIEMsIEY+ICYge1xuICAgIHF1ZXJ5OiB7XG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIHByZXZpb3VzOiBudW1iZXIgfCBudWxsO1xuICAgICAgICBwYWdlczogbnVtYmVyW107XG4gICAgICAgIG5leHQ6IG51bWJlciB8IG51bGw7XG4gICAgICAgIHBhZ2VDb3VudDogbnVtYmVyO1xuICAgICAgICBzaG93Q29udHJvbHM6IGJvb2xlYW47XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzdWx0OiB7XG4gICAgICByb3dzOiBGdWxsUm93PFI+W107XG4gICAgICBjc3ZEYXRhOiAoKSA9PiBBc3luY0dlbmVyYXRvcjxDc3ZPdXRwdXQ+O1xuICAgICAgY3N2RmlsZW5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIGRpc3BsYXk6IHtcbiAgICAgIGNvbHVtbnM6IEZ1bGxDb2x1bW48Qz5bXTtcbiAgICAgIGFsbENvbHVtbnM6IENvbHVtblNldHRpbmdzPEM+W107XG4gICAgICB6ZXJvU3RhdGVNZXNzYWdlOiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgc2VsZWN0aW9uOiB7XG4gICAgICBhbGxvd1NlbGVjdGlvbjogYm9vbGVhbjtcbiAgICAgIGlzQWxsU2VsZWN0ZWQ6IE11bHRpU2VsZWN0aW9uU3RhdGU7XG4gICAgICBpc0N1cnJlbnRQYWdlU2VsZWN0ZWQ6IE11bHRpU2VsZWN0aW9uU3RhdGU7XG4gICAgICBzZWxlY3RlZENvdW50OiBudW1iZXI7XG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogVGhlIG1hbmFnZXIgaXMgd2hhdCBzZXRzIHVwIHRoZSBpbml0aWFsIHN0YXRlIGFuZCB0cmFuc2xhdGVzIHVzZXIgYWN0aW9uc1xuICAgKiAobGlrZSBwYWdpbmF0aW9uIG9yIGZpbHRlciBjaGFuZ2VzLCBldGMuKSBpbnRvIG5ldyByb3cgZGF0YSBieSBjYWxsaW5nIHRoZVxuICAgKiByZWR1Y2VyIGZ1bmN0aW9uLiBJdCBhbHNvIGF1Z21lbnRzIHRoZSBjb3JlIHN0YXRlIHdpdGggYWRkaXRpb25hbCBkZXJpdmVkXG4gICAqIHN0YXRlLlxuICAgKi9cblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyPFIgZXh0ZW5kcyBSb3csIEMgZXh0ZW5kcyBDb2x1bW4sIEYgZXh0ZW5kcyBGaWx0ZXJzPiA9IHtcbiAgICBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxSLCBDLCBGPj47XG4gICAgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxSLCBDLCBGPj47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlck9wdGlvbnM8XG4gICAgUiBleHRlbmRzIFJvdyxcbiAgICBDIGV4dGVuZHMgQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBGaWx0ZXJzLFxuICA+ID0ge1xuICAgIGluaXRpYWxTdGF0ZT86IERlZXBQYXJ0aWFsPENvcmVTdGF0ZTxSLCBDLCBGPj47XG4gICAgcm93TGluaz86IChyb3c6IFIpID0+IHN0cmluZztcbiAgICBjc3ZDZWxsRm9ybWF0dGVyPzogQ3N2Q2VsbEZvcm1hdHRlcjxSLCBDPjtcbiAgICBjc3ZGaWxlQmFzZW5hbWU/OiBzdHJpbmc7XG4gICAgYWxsb3dTZWxlY3Rpb24/OiBib29sZWFuO1xuICB9O1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYW5hZ2VyPFxuICAgIFIgZXh0ZW5kcyBSb3csXG4gICAgQyBleHRlbmRzIENvbHVtbixcbiAgICBGIGV4dGVuZHMgRmlsdGVycyxcbiAgPihcbiAgICBzb3VyY2U6IFNvdXJjZTxSLCBDLCBGPixcbiAgICBjb2x1bW5zOiBNYXA8QywgQ29sdW1uTWV0YWRhdGE+LFxuICAgIHBsdXJhbEVudGl0eU5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTWFuYWdlck9wdGlvbnM8UiwgQywgRj4sXG4gICk6IE1hbmFnZXI8UiwgQywgRj4ge1xuICAgIC8vIFNldCB1cCB0aGUgaW5pdGlhbCB0YWJsZSBzdGF0ZS5cbiAgICBjb25zdCBkZWZhdWx0U3RhdGU6IENvcmVTdGF0ZTxSLCBDLCBGPiA9IHtcbiAgICAgIHF1ZXJ5OiB7XG4gICAgICAgIG9yZGVyOiBudWxsLFxuICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgcGFnZTogMCxcbiAgICAgICAgICBwYWdlU2l6ZTogMjUsXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcnM6IG51bGwsXG4gICAgICB9LFxuICAgICAgbG9hZDogeyBsb2FkaW5nOiBmYWxzZSwgZXJyb3I6IG51bGwgfSxcbiAgICAgIHJlc3VsdDoge1xuICAgICAgICBjdXJyZW50UGFnZURhdGE6IFtdLFxuICAgICAgICB0b3RhbE1hdGNoaW5nUm93Q291bnQ6IDAsXG4gICAgICB9LFxuICAgICAgZGlzcGxheToge1xuICAgICAgICBjb2x1bW5TZXR0aW5nczogW10sXG4gICAgICB9LFxuICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgIG1vc3RSZWNlbnRseVNlbGVjdGVkOiBudWxsLFxuICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgZGVmYXVsdGVkSW5pdGlhbFN0YXRlOiBDb3JlU3RhdGU8UiwgQywgRj4gPSBkZWZhdWx0c0RlZXAoXG4gICAgICB7fSxcbiAgICAgIG9wdGlvbnM/LmluaXRpYWxTdGF0ZSxcbiAgICAgIGRlZmF1bHRTdGF0ZSxcbiAgICApO1xuXG4gICAgLy8gV2lyZSB1cCByZWR1Y2VkIHN0YXRlIGZyb20gYWN0aW9ucyBhbmQgaW5pdGlhbCBzdGF0ZS5cbiAgICBjb25zdCBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxSLCBDLCBGPj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIGNvbnN0IGNvcmVTdGF0ZTogT2JzZXJ2YWJsZTxDb3JlU3RhdGU8UiwgQywgRj4+ID0gYWN0aW9ucy5waXBlKFxuICAgICAgbWVyZ2VTY2FuKFxuICAgICAgICAoc3RhdGUsIGFjdGlvbikgPT4gZnJvbShyZWR1Y2Uoc3RhdGUsIGFjdGlvbiwgY29sdW1ucywgc291cmNlKSksXG4gICAgICAgIGRlZmF1bHRlZEluaXRpYWxTdGF0ZSxcbiAgICAgICAgMSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIC8vIEF1Z21lbnQgc3RhdGUgd2l0aCBkZXJpdmVkIHN0YXRlLCBhbmQgc3Vic2NyaWJlLlxuICAgIGNvbnN0IHN0YXRlOiBDb25uZWN0YWJsZTxGdWxsU3RhdGU8UiwgQywgRj4+ID0gY29ubmVjdGFibGUoXG4gICAgICBjb3JlU3RhdGUucGlwZShcbiAgICAgICAgbWFwKHMgPT4gKHtcbiAgICAgICAgICAuLi5zLFxuICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAuLi5zLnF1ZXJ5LFxuICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAuLi5zLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHByZXZpb3VzOiBnZXRQcmV2aW91c1BhZ2UocyksXG4gICAgICAgICAgICAgIHBhZ2VzOiBnZXRQYWdlcyhzKSxcbiAgICAgICAgICAgICAgbmV4dDogZ2V0TmV4dFBhZ2UocyksXG4gICAgICAgICAgICAgIHBhZ2VDb3VudDogZ2V0UGFnZUNvdW50KHMpLFxuICAgICAgICAgICAgICBzaG93Q29udHJvbHM6IGdldFNob3dQYWdpbmF0aW9uQ29udHJvbHMocyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zLnJlc3VsdCxcbiAgICAgICAgICAgIHJvd3M6IHMucmVzdWx0LmN1cnJlbnRQYWdlRGF0YS5tYXAocm93ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnJvdyxcbiAgICAgICAgICAgICAgcm93TGluazogb3B0aW9ucz8ucm93TGluayA/IG9wdGlvbnMucm93TGluayhyb3cpIDogbnVsbCxcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGlzUm93U2VsZWN0ZWQocywgcm93LmlkKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGNzdkRhdGE6IGFzeW5jIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNlbGxGb3JtYXR0ZXIgPSBvcHRpb25zPy5jc3ZDZWxsRm9ybWF0dGVyO1xuICAgICAgICAgICAgICBpZiAoIWNlbGxGb3JtYXR0ZXIpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgJ29wdGlvbnMuY3N2Q2VsbEZvcm1hdHRlciBpcyByZXF1aXJlZCBmb3IgQ1NWIGV4cG9ydCcsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgeWllbGQgeyBsb2FkaW5nOiB0cnVlLCBkYXRhOiBudWxsIH07XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGFTZXQgPSBhd2FpdCBzb3VyY2UoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgLi4ucy5xdWVyeSxcbiAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogMCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IHMucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdsb2FkJyB9LFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBmdWxsQ29sdW1ucyA9IHJlc29sdmVDb2x1bW5zKFxuICAgICAgICAgICAgICAgIHMsXG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBvcHRpb25zLmFsbG93U2VsZWN0aW9uLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBkYXRhOiBDc3YgPSBbXG4gICAgICAgICAgICAgICAgZnVsbENvbHVtbnMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSksXG4gICAgICAgICAgICAgICAgLi4uZGF0YVNldC5jdXJyZW50UGFnZURhdGEubWFwKHJlY29yZCA9PlxuICAgICAgICAgICAgICAgICAgZnVsbENvbHVtbnMubWFwKGNvbHVtbiA9PiBjZWxsRm9ybWF0dGVyKHJlY29yZCwgY29sdW1uKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgeWllbGQgeyBsb2FkaW5nOiBmYWxzZSwgZGF0YSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNzdkZpbGVuYW1lOlxuICAgICAgICAgICAgICAob3B0aW9ucz8uY3N2RmlsZUJhc2VuYW1lPy5zbGljZSgwLCAyMDApID8/IHBsdXJhbEVudGl0eU5hbWUpICtcbiAgICAgICAgICAgICAgJy5jc3YnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGlzcGxheToge1xuICAgICAgICAgICAgLi4ucy5kaXNwbGF5LFxuICAgICAgICAgICAgY29sdW1uczogcmVzb2x2ZUNvbHVtbnMocywgY29sdW1ucywgb3B0aW9ucz8uYWxsb3dTZWxlY3Rpb24pLFxuICAgICAgICAgICAgYWxsQ29sdW1uczogZ2V0QWxsQ29sdW1ucyhzLCBjb2x1bW5zKSxcbiAgICAgICAgICAgIHplcm9TdGF0ZU1lc3NhZ2U6IGdldFplcm9TdGF0ZU1lc3NhZ2UocywgcGx1cmFsRW50aXR5TmFtZSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgICAgIC4uLnMuc2VsZWN0aW9uLFxuICAgICAgICAgICAgYWxsb3dTZWxlY3Rpb246ICEhb3B0aW9ucz8uYWxsb3dTZWxlY3Rpb24sXG4gICAgICAgICAgICBpc0FsbFNlbGVjdGVkOiBpc0FsbFNlbGVjdGVkKHMpLFxuICAgICAgICAgICAgaXNDdXJyZW50UGFnZVNlbGVjdGVkOiBpc0N1cnJlbnRQYWdlU2VsZWN0ZWQocyksXG4gICAgICAgICAgICBzZWxlY3RlZENvdW50OiBzZWxlY3RlZENvdW50KHMpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pKSxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3RvcjogKCkgPT4gbmV3IFJlcGxheVN1YmplY3QoMSksXG4gICAgICAgIHJlc2V0T25EaXNjb25uZWN0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBzdGF0ZS5jb25uZWN0KCk7XG5cbiAgICAvLyBMb2FkIGluaXRpYWwgdGFibGUgcm93IGRhdGEuXG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3N0IHRhYmxlcyB1c2UgcmVtb3RlIGJhY2tlbmRzIHRvIGZldGNoIGRhdGEgYXN5bmNocm9ub3VzbHksIGJ1dCBhblxuICAgKiBpbi1tZW1vcnkgc291cmNlIGlzIHVzZWZ1bCBmb3Igc21hbGwgZGF0YXNldHMsIHdoZW4gUml2VGFibGUgZmVhdHVyZXMgbGlrZVxuICAgKiBvcmRlcmluZyBhbmQgcGFnaW5hdGlvbiBhcmUgZGVzaXJlZC5cbiAgICovXG5cbiAgZXhwb3J0IHR5cGUgSW5NZW1vcnlDb2x1bW5NZXRhZGF0YTxSIGV4dGVuZHMgUm93PiA9IE9taXQ8XG4gICAgQ29sdW1uTWV0YWRhdGEsXG4gICAgJ29yZGVyYWJsZSdcbiAgPiAmIHsgb3JkZXJLZXk/OiBrZXlvZiBSIH07XG5cbiAgZXhwb3J0IHR5cGUgSW5NZW1vcnlNYW5hZ2VyT3B0aW9uczxcbiAgICBSIGV4dGVuZHMgUm93LFxuICAgIEMgZXh0ZW5kcyBDb2x1bW4sXG4gICAgRiBleHRlbmRzIEZpbHRlcnMsXG4gID4gPSBNYW5hZ2VyT3B0aW9uczxSLCBDLCBGPiAmIHtcbiAgICBmdXNlT3B0aW9ucz86IElGdXNlT3B0aW9uczxSPjtcbiAgICBmaWx0ZXI/OiAoZmlsdGVyczogRiB8IG51bGwsIHJvdzogUikgPT4gYm9vbGVhbjtcbiAgfTtcblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5NZW1vcnlNYW5hZ2VyPFxuICAgIFIgZXh0ZW5kcyBSb3csXG4gICAgQyBleHRlbmRzIENvbHVtbixcbiAgICBGIGV4dGVuZHMgRmlsdGVycyxcbiAgPihcbiAgICBmZXRjaERhdGFzZXQ6ICgpID0+IFByb21pc2U8UltdPiB8IFJbXSxcbiAgICBjb2x1bW5zOiBNYXA8QywgSW5NZW1vcnlDb2x1bW5NZXRhZGF0YTxSPj4sXG4gICAgcGx1cmFsRW50aXR5TmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBJbk1lbW9yeU1hbmFnZXJPcHRpb25zPFIsIEMsIEY+LFxuICApOiBNYW5hZ2VyPFIsIEMsIEY+IHtcbiAgICBsZXQgZGF0YTogUltdO1xuICAgIGxldCBmdXNlOiBGdXNlPFI+O1xuXG4gICAgY29uc3Qgc291cmNlOiBTb3VyY2U8UiwgQywgRj4gPSBhc3luYyAocXVlcnksIG1vc3RSZWNlbnRBY3Rpb24pID0+IHtcbiAgICAgIGlmIChtb3N0UmVjZW50QWN0aW9uLnR5cGUgPT09ICdsb2FkJykge1xuICAgICAgICBkYXRhID0gYXdhaXQgZmV0Y2hEYXRhc2V0KCk7XG4gICAgICAgIGZ1c2UgPSBuZXcgRnVzZShkYXRhLCBvcHRpb25zPy5mdXNlT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBjb25zdCBvcmRlckNvbHVtbjoga2V5b2YgUiB8IHVuZGVmaW5lZCA9IHF1ZXJ5Lm9yZGVyXG4gICAgICAgID8gY29sdW1ucy5nZXQocXVlcnkub3JkZXIuY29sdW1uKT8ub3JkZXJLZXlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBvcmRlcmVkID0gcXVlcnkuc2VhcmNoXG4gICAgICAgID8gZnVzZS5zZWFyY2gocXVlcnkuc2VhcmNoKS5tYXAocmVzdWx0ID0+IHJlc3VsdC5pdGVtKVxuICAgICAgICA6IHF1ZXJ5Lm9yZGVyICYmIG9yZGVyQ29sdW1uXG4gICAgICAgID8gb3JkZXJCeShkYXRhLCBvcmRlckNvbHVtbiwgcXVlcnkub3JkZXIuZGlyZWN0aW9uKVxuICAgICAgICA6IGRhdGE7XG4gICAgICBjb25zdCBmaWx0ZXIgPSBvcHRpb25zPy5maWx0ZXI7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IGZpbHRlclxuICAgICAgICA/IG9yZGVyZWQuZmlsdGVyKHJvdyA9PiBmaWx0ZXIocXVlcnkuZmlsdGVycywgcm93KSlcbiAgICAgICAgOiBvcmRlcmVkO1xuICAgICAgY29uc3Qgc3RhcnRJZHggPSBxdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplICogcXVlcnkucGFnaW5hdGlvbi5wYWdlO1xuICAgICAgY29uc3QgZW5kSWR4ID0gc3RhcnRJZHggKyBxdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgICAgY29uc3QgcGFnaW5hdGVkID0gZmlsdGVyZWQuc2xpY2Uoc3RhcnRJZHgsIGVuZElkeCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXJyZW50UGFnZURhdGE6IHBhZ2luYXRlZCxcbiAgICAgICAgdG90YWxNYXRjaGluZ1Jvd0NvdW50OiBmaWx0ZXJlZC5sZW5ndGgsXG4gICAgICB9O1xuICAgIH07XG4gICAgY29uc3QgY29sdW1uTWV0YWRhdGE6IE1hcDxDLCBDb2x1bW5NZXRhZGF0YT4gPSBuZXcgTWFwKFxuICAgICAgWy4uLmNvbHVtbnMuZW50cmllcygpXS5tYXAoKFtuYW1lLCBtZXRhZGF0YV0pID0+IFtcbiAgICAgICAgbmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIG9yZGVyYWJsZTogISFtZXRhZGF0YS5vcmRlcktleSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogbWV0YWRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgbWluV2lkdGg6IG1ldGFkYXRhLm1pbldpZHRoLFxuICAgICAgICAgIGRhdGFUeXBlOiBtZXRhZGF0YS5kYXRhVHlwZSxcbiAgICAgICAgICBkZWZhdWx0UGlubmVkOiBtZXRhZGF0YS5kZWZhdWx0UGlubmVkLFxuICAgICAgICB9LFxuICAgICAgXSksXG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlTWFuYWdlcihzb3VyY2UsIGNvbHVtbk1ldGFkYXRhLCBwbHVyYWxFbnRpdHlOYW1lLCBvcHRpb25zKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+KTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KFxuICAgIE1hdGguY2VpbChcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgLyBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICksXG4gICAgMSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJldmlvdXNQYWdlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IG51bWJlciB8IG51bGwge1xuICByZXR1cm4gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlID09PSAwXG4gICAgPyBudWxsXG4gICAgOiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgLSAxO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlczxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHBhZGRpbmcgPSA0O1xuICBjb25zdCBtaW4gPSAwO1xuICBjb25zdCBtYXggPSBnZXRQYWdlQ291bnQoc3RhdGUpIC0gMTtcbiAgY29uc3QgZGVzaXJlZFN0YXJ0ID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlIC0gcGFkZGluZztcbiAgY29uc3QgY2xhbXBlZFN0YXJ0ID0gTWF0aC5tYXgobWluLCBkZXNpcmVkU3RhcnQpO1xuICBjb25zdCBkZXNpcmVkRW5kID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlICsgcGFkZGluZztcbiAgY29uc3QgY2xhbXBlZEVuZCA9IE1hdGgubWluKG1heCwgZGVzaXJlZEVuZCk7XG4gIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgobWluLCBjbGFtcGVkU3RhcnQgLSAoZGVzaXJlZEVuZCAtIGNsYW1wZWRFbmQpKTtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4obWF4LCBjbGFtcGVkRW5kICsgKGNsYW1wZWRTdGFydCAtIGRlc2lyZWRTdGFydCkpO1xuICByZXR1cm4gcmFuZ2Uoc3RhcnQsIGVuZCArIDEpO1xufVxuXG5mdW5jdGlvbiBnZXROZXh0UGFnZTxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgbWF4ID0gZ2V0UGFnZUNvdW50KHN0YXRlKSAtIDE7XG4gIGNvbnN0IG5leHQgPSBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKyAxO1xuICByZXR1cm4gbmV4dCA8PSBtYXggPyBuZXh0IDogbnVsbDtcbn1cblxuLy8gV2UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuXG5mdW5jdGlvbiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IGJvb2xlYW4ge1xuICBjb25zdCBzbWFsbGVzdFBhZ2VTaXplID0gTWF0aC5taW4oLi4uWy4uLlJpdlRhYmxlLnBhZ2VTaXplc10pO1xuICByZXR1cm4gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCA+IHNtYWxsZXN0UGFnZVNpemU7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbHVtbnM8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihcbiAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPixcbiAgc3VwcG9ydGVkQ29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbik6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10ge1xuICAvLyBJZiB0aGUgdGFibGUgb2ZmZXJzIG1vcmUgY29sdW1ucyB0aGFuIHRoZSB1c2VyIGhhcyBjb25maWd1cmF0aW9uIHNldHRpbmdzXG4gIC8vIGZvciAob3IgaWYgdGhlIHVzZXIgaGFzIG5vIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgeWV0KSwgd2UnbGwgYXBwZW5kIHRoZW1cbiAgLy8gdG8gdGhlIGVuZCAodW5sZXNzIHRoZXkgc2hvdWxkIGJlIHBpbm5lZCBieSBkZWZhdWx0LCBpbiB3aGljaCBjYXNlIHdlJ2xsXG4gIC8vIGFwcGVuZCB0aGVtIGFmdGVyIHRoZSBvdGhlciBwaW5uZWQgY29sdW1ucykuIFRoaXMgZW5zdXJlcyB0aGF0IG5ldyBjb2x1bW5zXG4gIC8vIHdlIGFkZCB0byBleGlzdGluZyB0YWJsZXMgb3ZlciB0aW1lICgxKSBnZXQgZGlzcGxheWVkIGV2ZW4gdGhvdWdoIHRoZXlcbiAgLy8gZG9uJ3QgYXBwZWFyIGluIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB5ZXQsIGFuZCAoMikgZG9uJ3RcbiAgLy8gaW50ZXJydXB0IHRoZWlyIGV4aXN0aW5nIHNldHVwLlxuICBjb25zdCBjb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MgPSBkaWZmZXJlbmNlKFxuICAgIFsuLi5zdXBwb3J0ZWRDb2x1bW5zLmtleXMoKV0sXG4gICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSxcbiAgKTtcblxuICAvLyBUaHJvdyBvdXQgc2V0dGluZ3MgZm9yIGNvbHVtbnMgbm8gbG9uZ2VyIG9mZmVyZWQgYnkgdGhlIHRhYmxlLlxuICBjb25zdCBjb2x1bW5zV2l0aFVzZXJTZXR0aW5nczogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSA9XG4gICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5maWx0ZXIoKHsgbmFtZSB9KSA9PlxuICAgICAgc3VwcG9ydGVkQ29sdW1ucy5oYXMobmFtZSksXG4gICAgKTtcblxuICBjb25zdCBjb2x1bW5zV2l0aG91dFVzZXJTZXR0aW5nczogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSA9IFtcbiAgICAuLi5jb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MsXG4gIF0ubWFwKChuYW1lOiBDKSA9PiAoe1xuICAgIG5hbWUsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBwcmVmZXJyZWRXaWR0aDogJ2F1dG8nLFxuICAgIHBpbm5lZDogISFzdXBwb3J0ZWRDb2x1bW5zLmdldChuYW1lKT8uZGVmYXVsdFBpbm5lZCxcbiAgfSkpO1xuXG4gIHJldHVybiBvcmRlckJ5UGlubmVkKFtcbiAgICAuLi5jb2x1bW5zV2l0aFVzZXJTZXR0aW5ncyxcbiAgICAuLi5jb2x1bW5zV2l0aG91dFVzZXJTZXR0aW5ncyxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIG9yZGVyQnlQaW5uZWQ8QyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbj4oXG4gIGNvbHVtbnM6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10sXG4pOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPltdIHtcbiAgcmV0dXJuIG9yZGVyQnkoY29sdW1ucywgdiA9PiAodi5waW5uZWQgPyAxIDogMCksICdkZXNjJyk7XG59XG5cbmZ1bmN0aW9uIGdldEFsaWdubWVudChcbiAgbWV0YWRhdGE6IFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhLFxuICBpbmRleDogbnVtYmVyLFxuICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW4sXG4pOiBSaXZUYWJsZS5Db2x1bW5BbGlnbm1lbnQge1xuICBpZiAoaW5kZXggPT09IDAgJiYgIWFsbG93U2VsZWN0aW9uKSByZXR1cm4gJ2xlZnQnO1xuICBzd2l0Y2ggKG1ldGFkYXRhLmRhdGFUeXBlKSB7XG4gICAgY2FzZSAnZGF0ZSc6XG4gICAgY2FzZSAnbG9uZ1RleHQnOlxuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICBjYXNlICdhZHZhbmNlZCc6XG4gICAgY2FzZSAnaWNvbic6XG4gICAgY2FzZSAnc2hvcnRUZXh0JzpcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb2x1bW5zPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIHN1cHBvcnRlZENvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGFsbG93U2VsZWN0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdIHtcbiAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIHN1cHBvcnRlZENvbHVtbnMpO1xuICByZXR1cm4gYWxsQ29sdW1uc1xuICAgIC5maWx0ZXIoKHsgZW5hYmxlZCB9KSA9PiBlbmFibGVkKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIGZ1bGxDb2x1bW5zOiBSaXZUYWJsZS5GdWxsQ29sdW1uPEM+W10sXG4gICAgICAgIHNldHRpbmdzOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPixcbiAgICAgICAgaTogbnVtYmVyLFxuICAgICAgKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdID0+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBzdXBwb3J0ZWRDb2x1bW5zLmdldChzZXR0aW5ncy5uYW1lKSE7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkV2lkdGggPVxuICAgICAgICAgIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoID09PSAnYXV0bydcbiAgICAgICAgICAgID8gbWV0YWRhdGEubWluV2lkdGhcbiAgICAgICAgICAgIDogTWF0aC5tYXgobWV0YWRhdGEubWluV2lkdGgsIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNDb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz4gfCB1bmRlZmluZWQgPVxuICAgICAgICAgIGZ1bGxDb2x1bW5zW2kgLSAxXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5mdWxsQ29sdW1ucyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgICAgIC4uLm1ldGFkYXRhLFxuICAgICAgICAgICAgd2lkdGg6IHJlc29sdmVkV2lkdGgsXG4gICAgICAgICAgICBsZWZ0OiBzZXR0aW5ncy5waW5uZWRcbiAgICAgICAgICAgICAgPyBwcmV2aW91c0NvbHVtblxuICAgICAgICAgICAgICAgID8gKHByZXZpb3VzQ29sdW1uLmxlZnQgfHwgMCkgKyBwcmV2aW91c0NvbHVtbi53aWR0aFxuICAgICAgICAgICAgICAgIDogYWxsb3dTZWxlY3Rpb25cbiAgICAgICAgICAgICAgICA/IDQwXG4gICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ2V0QWxpZ25tZW50KG1ldGFkYXRhLCBpLCBhbGxvd1NlbGVjdGlvbiksXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0sXG4gICAgICBbXSxcbiAgICApO1xufVxuXG5mdW5jdGlvbiBnZXRaZXJvU3RhdGVNZXNzYWdlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiwgZW50aXR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiAwKSByZXR1cm4gbnVsbDtcbiAgaWYgKHN0YXRlLnF1ZXJ5LnNlYXJjaClcbiAgICByZXR1cm4gYE5vICR7ZW50aXR5fSBtYXRjaCB5b3VyIGN1cnJlbnQgc2VhcmNoIGtleXdvcmQuYDtcbiAgaWYgKHN0YXRlLnF1ZXJ5LmZpbHRlcnMpIHJldHVybiBgTm8gJHtlbnRpdHl9IG1hdGNoIHlvdXIgY3VycmVudCBmaWx0ZXJzLmA7XG4gIHJldHVybiBgTm8gJHtlbnRpdHl9LmA7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUNvbHVtblBpbjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICBjb2x1bW46IEMsXG4gIHBpbm5lZDogYm9vbGVhbixcbik6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgY29sdW1uU2V0dGluZ3M6IG9yZGVyQnlQaW5uZWQoXG4gICAgICAgIGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgICAuLi5jLFxuICAgICAgICAgIHBpbm5lZDogYy5uYW1lID09PSBjb2x1bW4gPyBwaW5uZWQgOiBjLnBpbm5lZCxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VDb2x1bW5PcmRlcjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICBwcmV2aW91c0luZGV4OiBudW1iZXIsXG4gIG5ld0luZGV4OiBudW1iZXIsXG4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucyk7XG5cbiAgLy8gRmlyc3QsIHB1dCB0aGUgY29sdW1ucyBpbiB0aGUgZGVzaXJlZCBvcmRlci5cbiAgY29uc3QgaXRlbSA9IGFsbENvbHVtbnNbcHJldmlvdXNJbmRleF07XG4gIGNvbnN0IHdpdGhvdXRJdGVtID0gYWxsQ29sdW1ucy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IHByZXZpb3VzSW5kZXgpO1xuICBjb25zdCByZW9yZGVyZWQgPSBbXG4gICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoMCwgbmV3SW5kZXgpLFxuICAgIGl0ZW0sXG4gICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UobmV3SW5kZXgpLFxuICBdO1xuXG4gIC8vIFRoZW4sIHdlIG1heSBuZWVkIHRvIGZpeCB0aGUgcGlucyAoYWxsIHBpbm5lZCBjb2x1bW5zIGFwcGVhciBhdCB0aGVcbiAgLy8gYmVnaW5uaW5nIG9mIHRoZSBjb2x1bW5zIGFycmF5KSBzaW5jZSB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGRyYWdcbiAgLy8gYW5kIGRyb3AgY29sdW1ucyB0byBhbmQgZnJvbSB0aGUgcGlubmVkIGFyZWEuIElmIHRoZSB1c2VyIGRyYWdzIGFcbiAgLy8gY29sdW1uIGFjcm9zcyB0aGF0IHRocmVzaG9sZCwgdXBkYXRlIGl0cyBwaW5uZWQgc3RhdHVzLlxuICBjb25zdCB1cGRhdGVkID0gcmVvcmRlcmVkLm1hcCgoc2V0dGluZ3MsIGksIGFycikgPT4ge1xuICAgIGlmIChuZXdJbmRleCA9PT0gaSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIHBpbm5lZDogc2V0dGluZ3MucGlubmVkXG4gICAgICAgICAgPyBhcnJbaSAtIDFdPy5waW5uZWQgPz8gdHJ1ZVxuICAgICAgICAgIDogYXJyW2kgKyAxXT8ucGlubmVkID8/IGZhbHNlLFxuICAgICAgfTtcbiAgICB9IGVsc2UgcmV0dXJuIHNldHRpbmdzO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICBjb2x1bW5TZXR0aW5nczogdXBkYXRlZCxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VDb2x1bW5FbmFibGVkPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGNvbHVtbjogQyxcbiAgZW5hYmxlZDogYm9vbGVhbixcbik6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgY29sdW1uU2V0dGluZ3M6IGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgLi4uYyxcbiAgICAgICAgZW5hYmxlZDogYy5uYW1lID09PSBjb2x1bW4gPyBlbmFibGVkIDogYy5lbmFibGVkLFxuICAgICAgfSkpLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUNvbHVtbldpZHRoPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGNvbHVtbjogQyxcbiAgcHJlZmVycmVkV2lkdGg6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+WydwcmVmZXJyZWRXaWR0aCddLFxuKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+IHtcbiAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIGNvbHVtbnMpO1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICBjb2x1bW5TZXR0aW5nczogYWxsQ29sdW1ucy5tYXAoYyA9PiAoe1xuICAgICAgICAuLi5jLFxuICAgICAgICBwcmVmZXJyZWRXaWR0aDogYy5uYW1lID09PSBjb2x1bW4gPyBwcmVmZXJyZWRXaWR0aCA6IGMucHJlZmVycmVkV2lkdGgsXG4gICAgICB9KSksXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNSb3dTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sIGlkOiBSWydpZCddKTogYm9vbGVhbiB7XG4gIHN3aXRjaCAoc3RhdGUuc2VsZWN0aW9uLm1vZGUpIHtcbiAgICBjYXNlICdpbmNsdWRlJzpcbiAgICAgIHJldHVybiBzdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWQuaGFzKGlkKTtcbiAgICBjYXNlICdleGNsdWRlJzpcbiAgICAgIHJldHVybiAhc3RhdGUuc2VsZWN0aW9uLmV4Y2x1ZGVkLmhhcyhpZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBbGxTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBSaXZUYWJsZS5NdWx0aVNlbGVjdGlvblN0YXRlIHtcbiAgaWYgKFxuICAgIChzdGF0ZS5zZWxlY3Rpb24ubW9kZSA9PT0gJ2V4Y2x1ZGUnICYmXG4gICAgICBzdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWQuc2l6ZSA9PT0gMCkgfHxcbiAgICAoc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJyAmJlxuICAgICAgc3RhdGUuc2VsZWN0aW9uLmluY2x1ZGVkLnNpemUgPT09IHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQpXG4gIClcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKFxuICAgIChzdGF0ZS5zZWxlY3Rpb24ubW9kZSA9PT0gJ2V4Y2x1ZGUnICYmXG4gICAgICBzdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWQuc2l6ZSA9PT0gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCkgfHxcbiAgICAoc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJyAmJiBzdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWQuc2l6ZSA9PT0gMClcbiAgKVxuICAgIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICdpbmRldGVybWluYXRlJztcbn1cblxuZnVuY3Rpb24gaXNDdXJyZW50UGFnZVNlbGVjdGVkPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IFJpdlRhYmxlLk11bHRpU2VsZWN0aW9uU3RhdGUge1xuICBjb25zdCBzZWxlY3RlZFN0YXRlcyA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEubWFwKCh7IGlkIH0pID0+XG4gICAgaXNSb3dTZWxlY3RlZChzdGF0ZSwgaWQpLFxuICApO1xuICBpZiAoc2VsZWN0ZWRTdGF0ZXMubGVuZ3RoID4gMCkge1xuICAgIGlmIChzZWxlY3RlZFN0YXRlcy5ldmVyeSh2ID0+IHYpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoc2VsZWN0ZWRTdGF0ZXMuc29tZSh2ID0+IHYpKSByZXR1cm4gJ2luZGV0ZXJtaW5hdGUnO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0ZWRDb3VudDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXIge1xuICBzd2l0Y2ggKHN0YXRlLnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgY2FzZSAnaW5jbHVkZSc6XG4gICAgICByZXR1cm4gc3RhdGUuc2VsZWN0aW9uLmluY2x1ZGVkLnNpemU7XG4gICAgY2FzZSAnZXhjbHVkZSc6XG4gICAgICByZXR1cm4gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCAtIHN0YXRlLnNlbGVjdGlvbi5leGNsdWRlZC5zaXplO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiByZWZyZXNoUmVzdWx0V2l0aDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBzb3VyY2U6IFJpdlRhYmxlLlNvdXJjZTxSLCBDLCBGPixcbiAgbW9zdFJlY2VudEFjdGlvbjogUml2VGFibGUuQWN0aW9uPFIsIEMsIEY+LFxuKTogQXN5bmNHZW5lcmF0b3I8Uml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+PiB7XG4gIHlpZWxkIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsb2FkOiB7XG4gICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSxcbiAgfTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzb3VyY2Uoc3RhdGUucXVlcnksIG1vc3RSZWNlbnRBY3Rpb24pO1xuICAgIHlpZWxkIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZDoge1xuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICB9LFxuICAgICAgcmVzdWx0LFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBsb2FkOiB7XG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRSb3dTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBpZDogUlsnaWQnXSxcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gIGNvbnRpZ3VvdXM6IGJvb2xlYW4sXG4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBpZiAoc2VsZWN0ZWQpIHtcbiAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBuZXcgU2V0PFJbJ2lkJ10+KFtpZF0pO1xuICAgIGlmIChjb250aWd1b3VzICYmIHN0YXRlLnNlbGVjdGlvbi5tb3N0UmVjZW50bHlTZWxlY3RlZCkge1xuICAgICAgY29uc3Qgc3RhcnRJZHggPSBzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLmZpbmRJbmRleChcbiAgICAgICAgcm93ID0+IHJvdy5pZCA9PT0gc3RhdGUuc2VsZWN0aW9uLm1vc3RSZWNlbnRseVNlbGVjdGVkLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVuZElkeCA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEuZmluZEluZGV4KFxuICAgICAgICByb3cgPT4gcm93LmlkID09PSBpZCxcbiAgICAgICk7XG4gICAgICBpZiAodHlwZW9mIHN0YXJ0SWR4ID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZW5kSWR4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIGxldCBpID0gTWF0aC5taW4oc3RhcnRJZHgsIGVuZElkeCk7XG4gICAgICAgICAgaSA8PSBNYXRoLm1heChzdGFydElkeCwgZW5kSWR4KTtcbiAgICAgICAgICBpKytcbiAgICAgICAgKSB7XG4gICAgICAgICAgbmV3U2VsZWN0aW9uLmFkZChzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhW2ldLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IGlkLFxuICAgICAgICAuLi4oc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJ1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIHVuaW9uKFsuLi5zdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWRdLCBbLi4ubmV3U2VsZWN0aW9uXSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIG1vZGU6ICdleGNsdWRlJyxcbiAgICAgICAgICAgICAgZXhjbHVkZWQ6IG5ldyBTZXQoXG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZShbLi4uc3RhdGUuc2VsZWN0aW9uLmV4Y2x1ZGVkXSwgWy4uLm5ld1NlbGVjdGlvbl0pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgIG1vc3RSZWNlbnRseVNlbGVjdGVkOiBudWxsLFxuICAgICAgICAuLi4oc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJ1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UoWy4uLnN0YXRlLnNlbGVjdGlvbi5pbmNsdWRlZF0sIFtpZF0pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBtb2RlOiAnZXhjbHVkZScsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVkOiBuZXcgU2V0KHVuaW9uKFsuLi5zdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWRdLCBbaWRdKSksXG4gICAgICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVQYWdlU2VsZWN0ZWQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+KTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+IHtcbiAgY29uc3QgaXNQYWdlRnVsbHlTZWxlY3RlZCA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEuZXZlcnkoKHsgaWQgfSkgPT5cbiAgICBpc1Jvd1NlbGVjdGVkKHN0YXRlLCBpZCksXG4gICk7XG4gIHJldHVybiBzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLnJlZHVjZSgoYWNjdW11bGF0ZWRTdGF0ZSwgcm93KSA9PiB7XG4gICAgcmV0dXJuIHNldFJvd1NlbGVjdGVkKFxuICAgICAgYWNjdW11bGF0ZWRTdGF0ZSxcbiAgICAgIHJvdy5pZCxcbiAgICAgICFpc1BhZ2VGdWxseVNlbGVjdGVkLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfSwgc3RhdGUpO1xufVxuXG5mdW5jdGlvbiB0b2dnbGVBbGxTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBpZiAoaXNBbGxTZWxlY3RlZChzdGF0ZSkgPT09IHRydWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgaW5jbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdleGNsdWRlJyxcbiAgICAgICAgZXhjbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sIGNvbHVtbjogQyk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBxdWVyeToge1xuICAgICAgICAuLi5zdGF0ZS5xdWVyeSxcbiAgICAgICAgb3JkZXI6XG4gICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBxdWVyeToge1xuICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICBvcmRlcjoge1xuICAgICAgICBjb2x1bW4sXG4gICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiByZWR1Y2U8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihcbiAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPixcbiAgYWN0aW9uOiBSaXZUYWJsZS5BY3Rpb248UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIHNvdXJjZTogUml2VGFibGUuU291cmNlPFIsIEMsIEY+LFxuKTogQXN5bmNHZW5lcmF0b3I8Uml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+PiB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlICdsb2FkJzpcbiAgICAgIHlpZWxkKiByZWZyZXNoUmVzdWx0V2l0aChzdGF0ZSwgc291cmNlLCBhY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnb3JkZXJDaGFuZ2UnOlxuICAgICAgeWllbGQqIHJlZnJlc2hSZXN1bHRXaXRoKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgICAgb3JkZXI6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnb3JkZXJDb2x1bW5Ub2dnbGUnOlxuICAgICAgeWllbGQqIHJlZnJlc2hSZXN1bHRXaXRoKFxuICAgICAgICB0b2dnbGVDb2x1bW5PcmRlcihzdGF0ZSwgYWN0aW9uLmNvbHVtbiksXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NlYXJjaENoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFnaW5hdGlvbkNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwcmV2aW91c1BhZ2VOYXZpZ2F0ZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGdldFByZXZpb3VzUGFnZShzdGF0ZSkgPz8gMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbmV4dFBhZ2VOYXZpZ2F0ZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGdldE5leHRQYWdlKHN0YXRlKSA/PyBnZXRQYWdlQ291bnQoc3RhdGUpIC0gMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFnZUNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGFjdGlvbi5wYWdlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYWdlU2l6ZUNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2VTaXplOiBhY3Rpb24uc2l6ZSxcbiAgICAgICAgICAgICAgcGFnZTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZmlsdGVyc0NoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBmaWx0ZXJzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGVjdGlvbjoge1xuICAgICAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICBpbmNsdWRlZDogbmV3IFNldCgpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtblNldHRpbmdzQ2hhbmdlJzpcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICAgIGNvbHVtblNldHRpbmdzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb2x1bW5QaW5DaGFuZ2UnOlxuICAgICAgeWllbGQgY2hhbmdlQ29sdW1uUGluKHN0YXRlLCBjb2x1bW5zLCBhY3Rpb24uY29sdW1uLCBhY3Rpb24ucGlubmVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtbk9yZGVyQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbk9yZGVyKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgYWN0aW9uLnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGFjdGlvbi5uZXdJbmRleCxcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb2x1bW5FbmFibGVkQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbkVuYWJsZWQoc3RhdGUsIGNvbHVtbnMsIGFjdGlvbi5jb2x1bW4sIGFjdGlvbi5lbmFibGVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtbldpZHRoQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbldpZHRoKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgYWN0aW9uLmNvbHVtbixcbiAgICAgICAgYWN0aW9uLnByZWZlcnJlZFdpZHRoLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NlbGVjdGlvbkNoYW5nZSc6XG4gICAgICB5aWVsZCB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3Rpb246IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Jvd1NlbGVjdGVkQ2hhbmdlJzpcbiAgICAgIHlpZWxkIHNldFJvd1NlbGVjdGVkKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgYWN0aW9uLmlkLFxuICAgICAgICBhY3Rpb24uc2VsZWN0ZWQsXG4gICAgICAgIGFjdGlvbi5jb250aWd1b3VzLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3BhZ2VTZWxlY3RlZENoYW5nZSc6XG4gICAgICB5aWVsZCB0b2dnbGVQYWdlU2VsZWN0ZWQoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYWxsU2VsZWN0ZWRDaGFuZ2UnOlxuICAgICAgeWllbGQgdG9nZ2xlQWxsU2VsZWN0ZWQoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gIH1cbn1cbiJdfQ==
|
|
646
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQXNCLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3pFLE9BQU8sRUFFTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsYUFBYSxFQUNiLE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUdkLE1BQU0sS0FBVyxRQUFRLENBMmZ4QjtBQTNmRCxXQUFpQixRQUFRO0lBeUNWLGtCQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQVUsQ0FBQztJQStQckQsU0FBZ0IsYUFBYSxDQUszQixNQUF1QixFQUN2QixPQUErQixFQUMvQixnQkFBd0IsRUFDeEIsT0FBaUM7UUFFakMsa0NBQWtDO1FBQ2xDLE1BQU0sWUFBWSxHQUF1QjtZQUN2QyxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxDQUFDO29CQUNQLFFBQVEsRUFBRSxFQUFFO2lCQUNiO2dCQUNELE9BQU8sRUFBRSxJQUFJO2FBQ2Q7WUFDRCxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDckMsTUFBTSxFQUFFO2dCQUNOLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixxQkFBcUIsRUFBRSxDQUFDO2FBQ3pCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxFQUFFO2FBQ25CO1lBQ0QsU0FBUyxFQUFFO2dCQUNULG9CQUFvQixFQUFF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a0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsTUFBTTtRQUNSLEtBQUssbUJBQW1CO1lBQ3RCLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsTUFBTTtLQUNUO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGdXNlLCB7IElGdXNlT3B0aW9ucyB9IGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgZGVmYXVsdHNEZWVwLCBkaWZmZXJlbmNlLCBvcmRlckJ5LCByYW5nZSwgdW5pb24gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGFibGUsXG4gIGNvbm5lY3RhYmxlLFxuICBmcm9tLFxuICBtYXAsXG4gIG1lcmdlU2NhbixcbiAgT2JzZXJ2YWJsZSxcbiAgUmVwbGF5U3ViamVjdCxcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWVwUGFydGlhbCB9IGZyb20gJ3V0aWxpdHktdHlwZXMnO1xuXG5leHBvcnQgbmFtZXNwYWNlIFJpdlRhYmxlIHtcbiAgZXhwb3J0IHR5cGUgUm93ID0geyBpZDogc3RyaW5nIHwgbnVtYmVyIH07XG4gIGV4cG9ydCB0eXBlIENvbHVtbiA9IHN0cmluZztcbiAgZXhwb3J0IHR5cGUgRmlsdGVycyA9IGFueTtcblxuICAvKipcbiAgICogUml2VGFibGUncyBzdGF0ZSBhbmQgdXNlciBhY3Rpb25zIGFyZSBkaXZpZGVkIGludG8gdGhlIGZvbGxvd2luZyBjaHVua3M6XG4gICAqXG4gICAqIC0gUXVlcnkgKGZvciB0aGluZ3MgbGlrZSBmaWx0ZXJzLCBwYWdpbmF0aW9uLCBzZWFyY2gsIGV0Yy4pXG4gICAqIC0gTG9hZGluZyAoZm9yIHdoZXRoZXIgb3Igbm90IHRoZSB0YWJsZSBpcyBsb2FkaW5nIHJvdyBkYXRhKVxuICAgKiAtIFJlc3VsdCAoZm9yIHRoZSByb3cgZGF0YSBpdHNlbGYpXG4gICAqIC0gRGlzcGxheSAoZm9yIHRoaW5ncyBsaWtlIGNvbHVtbiBjb25maWd1cmF0aW9uKVxuICAgKiAtIFNlbGVjdGlvbiAoZm9yIHRyYWNraW5nIHRoZSB1c2VyJ3Mgcm93IHNlbGVjdGlvbnMpXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgZGF0YSBmbG93IGlzIHVuaWRpcmVjdGlvbmFsOiB0aGUgVUkgaXNzdWVzIGFjdGlvbnMsIHdoaWNoXG4gICAqIGFmZmVjdCB0aGUgc3RhdGUsIGFuZCB0aGUgc3RhdGUgZ2V0cyBwYXNzZWQgYmFjayB0byB0aGUgVUkgZm9yIGRpc3BsYXkuXG4gICAqXG4gICAqIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAgKiDilIIgIFVJICDil4TilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgICog4pSU4pSA4pSA4pSs4pSA4pSA4pSA4pSYICAgICAgICDilIJcbiAgICogICAg4pSCICAgICAgICAgICAg4pSCXG4gICAqIOKUjOKUgOKUgOKWvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgIOKUglxuICAgKiDilIIgIEFjdGlvbnMgIOKUgiAgIOKUglxuICAgKiDilJTilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilJggICDilIJcbiAgICogICAg4pSCICAgICAgICAgICAg4pSCXG4gICAqIOKUjOKUgOKUgOKWvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUkFxuICAgKiDilIIgIFN0YXRlIHJlZHVjZXIgIOKUglxuICAgKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgICpcbiAgICogRnJvbSB0aGUgY29yZSBzdGF0ZSwgY2FsY3VsYXRlZCBzdGF0ZSBpcyBkZXJpdmVkIGFuZCBhZGRlZCB0byB0aGUgY29yZVxuICAgKiBzdGF0ZSAoZS5nLiwgZnJvbSB0aGUgcmF3IHNlbGVjdGlvbiBzdGF0ZSB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90XG4gICAqIGFsbCB0aGUgcm93cyBvbiB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBwYWdlIGFyZSBzZWxlY3RlZCwgZXRjLikuXG4gICAqL1xuXG4gIC8vLy8vLy8vLy8vXG4gIC8vIFF1ZXJ5IC8vXG4gIC8vLy8vLy8vLy8vXG5cbiAgLy8gUXVlcnkgc3RhdGUgLy9cblxuICBleHBvcnQgdHlwZSBPcmRlckRpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuICBleHBvcnQgY29uc3QgcGFnZVNpemVzID0gWzI1LCA1MCwgMTAwLCAyNTBdIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBRdWVyeTxDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPSB7XG4gICAgb3JkZXI6IHtcbiAgICAgIGRpcmVjdGlvbjogT3JkZXJEaXJlY3Rpb247XG4gICAgICBjb2x1bW46IEM7XG4gICAgfSB8IG51bGw7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgZmlsdGVyczogRiB8IG51bGw7XG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgcGFnZTogbnVtYmVyO1xuICAgICAgcGFnZVNpemU6IG51bWJlcjtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFF1ZXJ5IGFjdGlvbnMgLy9cblxuICBleHBvcnQgdHlwZSBRdWVyeUFjdGlvbjxDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPVxuICAgIHwgeyB0eXBlOiAnbG9hZCcgfVxuICAgIHwgeyB0eXBlOiAnb3JkZXJDaGFuZ2UnOyBwYXlsb2FkOiBRdWVyeTxDLCBGPlsnb3JkZXInXSB9XG4gICAgfCB7IHR5cGU6ICdvcmRlckNvbHVtblRvZ2dsZSc7IGNvbHVtbjogQyB9XG4gICAgfCB7IHR5cGU6ICdzZWFyY2hDaGFuZ2UnOyBwYXlsb2FkOiBRdWVyeTxDLCBGPlsnc2VhcmNoJ10gfVxuICAgIHwgeyB0eXBlOiAnZmlsdGVyc0NoYW5nZSc7IHBheWxvYWQ6IFF1ZXJ5PEMsIEY+WydmaWx0ZXJzJ10gfVxuICAgIHwgeyB0eXBlOiAncGFnaW5hdGlvbkNoYW5nZSc7IHBheWxvYWQ6IFF1ZXJ5PEMsIEY+WydwYWdpbmF0aW9uJ10gfVxuICAgIHwgeyB0eXBlOiAnbmV4dFBhZ2VOYXZpZ2F0ZScgfVxuICAgIHwgeyB0eXBlOiAncHJldmlvdXNQYWdlTmF2aWdhdGUnIH1cbiAgICB8IHsgdHlwZTogJ3BhZ2VDaGFuZ2UnOyBwYWdlOiBudW1iZXIgfVxuICAgIHwgeyB0eXBlOiAncGFnZVNpemVDaGFuZ2UnOyBzaXplOiBudW1iZXIgfTtcblxuICAvLy8vLy8vLy8vXG4gIC8vIExvYWQgLy9cbiAgLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIExvYWQgPSB7XG4gICAgbG9hZGluZzogYm9vbGVhbjtcbiAgICBlcnJvcjogdW5rbm93biB8IG51bGw7XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vXG4gIC8vIFJlc3VsdCAvL1xuICAvLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBSZXN1bHQ8UiBleHRlbmRzIFJvdz4gPSB7XG4gICAgLyoqXG4gICAgICogVGhlIGZ1bGwgcm93IGRhdGEgZm9yIHRoZSBjdXJyZW50IHBhZ2UsIGFmdGVyIGZpbHRlcnMsIHNlYXJjaCBxdWVyeSwgYW5kXG4gICAgICogcm93IG9yZGVyaW5nIGFyZSBhcHBsaWVkLlxuICAgICAqL1xuICAgIGN1cnJlbnRQYWdlRGF0YTogUltdO1xuICAgIC8qKlxuICAgICAqIFRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyAocmVnYXJkbGVzcyBvZiBwYWdpbmF0aW9uKSB0aGF0IG1hdGNoIHRoZVxuICAgICAqIGZpbHRlcnMgYW5kIHNlYXJjaCBxdWVyeS5cbiAgICAgKi9cbiAgICB0b3RhbE1hdGNoaW5nUm93Q291bnQ6IG51bWJlcjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgU291cmNlPFIgZXh0ZW5kcyBSb3csIEMgZXh0ZW5kcyBDb2x1bW4sIEYgZXh0ZW5kcyBGaWx0ZXJzPiA9IChcbiAgICBxdWVyeTogUml2VGFibGUuUXVlcnk8QywgRj4sXG4gICAgbW9zdFJlY2VudEFjdGlvbjogUml2VGFibGUuQWN0aW9uPFIsIEMsIEY+LFxuICApID0+IFByb21pc2U8UmVzdWx0PFI+PjtcblxuICAvLy8vLy8vLy8vLy8vXG4gIC8vIERpc3BsYXkgLy9cbiAgLy8vLy8vLy8vLy8vL1xuXG4gIC8vIERpc3BsYXkgc3RhdGUgLy9cblxuICBleHBvcnQgdHlwZSBDb2x1bW5TZXR0aW5nczxDIGV4dGVuZHMgQ29sdW1uPiA9IHtcbiAgICBuYW1lOiBDO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJlZmVycmVkV2lkdGg6IG51bWJlciB8ICdhdXRvJztcbiAgICBwaW5uZWQ6IGJvb2xlYW47XG4gIH07XG4gIGV4cG9ydCB0eXBlIERpc3BsYXk8QyBleHRlbmRzIENvbHVtbj4gPSB7XG4gICAgY29sdW1uU2V0dGluZ3M6IENvbHVtblNldHRpbmdzPEM+W107XG4gIH07XG5cbiAgLy8gRGlzcGxheSBhY3Rpb25zIC8vXG5cbiAgZXhwb3J0IHR5cGUgRGlzcGxheUFjdGlvbjxDIGV4dGVuZHMgQ29sdW1uPiA9XG4gICAgfCB7IHR5cGU6ICdjb2x1bW5TZXR0aW5nc0NoYW5nZSc7IHBheWxvYWQ6IERpc3BsYXk8Qz5bJ2NvbHVtblNldHRpbmdzJ10gfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnY29sdW1uUGluQ2hhbmdlJztcbiAgICAgICAgY29sdW1uOiBDO1xuICAgICAgICBwaW5uZWQ6IGJvb2xlYW47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdjb2x1bW5PcmRlckNoYW5nZSc7XG4gICAgICAgIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgICAgICAgbmV3SW5kZXg6IG51bWJlcjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ2NvbHVtbkVuYWJsZWRDaGFuZ2UnO1xuICAgICAgICBjb2x1bW46IEM7XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdjb2x1bW5XaWR0aENoYW5nZSc7XG4gICAgICAgIGNvbHVtbjogQztcbiAgICAgICAgcHJlZmVycmVkV2lkdGg6IG51bWJlciB8ICdhdXRvJztcbiAgICAgIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFNlbGVjdGlvbiAvL1xuICAvLy8vLy8vLy8vLy8vLy9cblxuICAvLyBTZWxlY3Rpb24gc3RhdGUgLy9cblxuICBleHBvcnQgdHlwZSBTZWxlY3Rpb248UiBleHRlbmRzIFJvdz4gPSB7XG4gICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IFJbJ2lkJ10gfCBudWxsO1xuICB9ICYgKFxuICAgIHwge1xuICAgICAgICBtb2RlOiAnaW5jbHVkZSc7XG4gICAgICAgIGluY2x1ZGVkOiBTZXQ8UlsnaWQnXT47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIG1vZGU6ICdleGNsdWRlJztcbiAgICAgICAgZXhjbHVkZWQ6IFNldDxSWydpZCddPjtcbiAgICAgIH1cbiAgKTtcblxuICAvLyBTZWxlY3Rpb24gYWN0aW9ucyAvL1xuXG4gIGV4cG9ydCB0eXBlIFNlbGVjdGlvbkFjdGlvbjxSIGV4dGVuZHMgUm93PiA9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3Rpb25DaGFuZ2UnO1xuICAgICAgICBwYXlsb2FkOiBTZWxlY3Rpb248Uj47XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdyb3dTZWxlY3RlZENoYW5nZSc7XG4gICAgICAgIGlkOiBSWydpZCddO1xuICAgICAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICAgICAgY29udGlndW91czogYm9vbGVhbjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3BhZ2VTZWxlY3RlZENoYW5nZSc7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdhbGxTZWxlY3RlZENoYW5nZSc7XG4gICAgICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyIC8vXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgLy8gQ29tYmluZWQgc3RhdGUgLy9cblxuICBleHBvcnQgdHlwZSBDb3JlU3RhdGU8UiBleHRlbmRzIFJvdywgQyBleHRlbmRzIENvbHVtbiwgRiBleHRlbmRzIEZpbHRlcnM+ID0ge1xuICAgIHF1ZXJ5OiBRdWVyeTxDLCBGPjtcbiAgICBsb2FkOiBMb2FkO1xuICAgIHJlc3VsdDogUmVzdWx0PFI+O1xuICAgIGRpc3BsYXk6IERpc3BsYXk8Qz47XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb248Uj47XG4gIH07XG5cbiAgLy8gQ29tYmluZWQgYWN0aW9ucyAvL1xuXG4gIGV4cG9ydCB0eXBlIEFjdGlvbjxSIGV4dGVuZHMgUm93LCBDIGV4dGVuZHMgQ29sdW1uLCBGIGV4dGVuZHMgRmlsdGVycz4gPVxuICAgIHwgUXVlcnlBY3Rpb248QywgRj5cbiAgICB8IERpc3BsYXlBY3Rpb248Qz5cbiAgICB8IFNlbGVjdGlvbkFjdGlvbjxSPjtcblxuICAvLyBGdWxsIHN0YXRlIChjb3JlIHN0YXRlIHBsdXMgcHVyZSBkZXJpdmF0aW9ucykgLy9cblxuICBleHBvcnQgdHlwZSBDb2x1bW5EYXRhVHlwZSA9XG4gICAgfCAnYWR2YW5jZWQnXG4gICAgfCAnY3VycmVuY3knXG4gICAgfCAnZGF0ZSdcbiAgICB8ICdpY29uJ1xuICAgIHwgJ2xvbmdUZXh0J1xuICAgIHwgJ251bWJlcidcbiAgICB8ICdzaG9ydFRleHQnO1xuICBleHBvcnQgdHlwZSBDb2x1bW5BbGlnbm1lbnQgPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG4gIGV4cG9ydCB0eXBlIENvbHVtbk1ldGFkYXRhID0ge1xuICAgIG9yZGVyYWJsZTogYm9vbGVhbjtcbiAgICBtaW5XaWR0aDogbnVtYmVyO1xuICAgIGRhdGFUeXBlOiBDb2x1bW5EYXRhVHlwZTtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBkZWZhdWx0UGlubmVkPzogYm9vbGVhbjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgRnVsbFJvdzxSIGV4dGVuZHMgUm93PiA9IFIgJiB7XG4gICAgcm93TGluazogc3RyaW5nIHwgbnVsbDtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgRnVsbENvbHVtbjxDIGV4dGVuZHMgQ29sdW1uPiA9IENvbHVtblNldHRpbmdzPEM+ICZcbiAgICBDb2x1bW5NZXRhZGF0YSAmIHtcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICBsZWZ0OiBudW1iZXIgfCBudWxsO1xuICAgICAgYWxpZ25tZW50OiBDb2x1bW5BbGlnbm1lbnQ7XG4gICAgfTtcbiAgZXhwb3J0IHR5cGUgTXVsdGlTZWxlY3Rpb25TdGF0ZSA9IGJvb2xlYW4gfCAnaW5kZXRlcm1pbmF0ZSc7XG5cbiAgZXhwb3J0IHR5cGUgQ3N2Q2VsbEZvcm1hdHRlcjxSIGV4dGVuZHMgUm93LCBDIGV4dGVuZHMgQ29sdW1uPiA9IChcbiAgICByb3c6IFIsXG4gICAgY29sdW1uOiBGdWxsQ29sdW1uPEM+LFxuICApID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcbiAgZXhwb3J0IHR5cGUgQ3N2Um93ID0gc3RyaW5nW107XG4gIGV4cG9ydCB0eXBlIENzdiA9IENzdlJvd1tdO1xuICBleHBvcnQgdHlwZSBDc3ZPdXRwdXQgPVxuICAgIHwgeyBsb2FkaW5nOiB0cnVlOyBkYXRhOiBudWxsIH1cbiAgICB8IHsgbG9hZGluZzogZmFsc2U7IGRhdGE6IENzdiB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxTdGF0ZTxcbiAgICBSIGV4dGVuZHMgUm93LFxuICAgIEMgZXh0ZW5kcyBDb2x1bW4sXG4gICAgRiBleHRlbmRzIEZpbHRlcnMsXG4gID4gPSBDb3JlU3RhdGU8UiwgQywgRj4gJiB7XG4gICAgcXVlcnk6IHtcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgcHJldmlvdXM6IG51bWJlciB8IG51bGw7XG4gICAgICAgIHBhZ2VzOiBudW1iZXJbXTtcbiAgICAgICAgbmV4dDogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgcGFnZUNvdW50OiBudW1iZXI7XG4gICAgICAgIHNob3dDb250cm9sczogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXN1bHQ6IHtcbiAgICAgIHJvd3M6IEZ1bGxSb3c8Uj5bXTtcbiAgICAgIGNzdkRhdGE6ICgpID0+IEFzeW5jR2VuZXJhdG9yPENzdk91dHB1dD47XG4gICAgICBjc3ZGaWxlbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgZGlzcGxheToge1xuICAgICAgY29sdW1uczogRnVsbENvbHVtbjxDPltdO1xuICAgICAgYWxsQ29sdW1uczogQ29sdW1uU2V0dGluZ3M8Qz5bXTtcbiAgICAgIHplcm9TdGF0ZU1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBzZWxlY3Rpb246IHtcbiAgICAgIGFsbG93U2VsZWN0aW9uOiBib29sZWFuO1xuICAgICAgaXNBbGxTZWxlY3RlZDogTXVsdGlTZWxlY3Rpb25TdGF0ZTtcbiAgICAgIGlzQ3VycmVudFBhZ2VTZWxlY3RlZDogTXVsdGlTZWxlY3Rpb25TdGF0ZTtcbiAgICAgIHNlbGVjdGVkQ291bnQ6IG51bWJlcjtcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgbWFuYWdlciBpcyB3aGF0IHNldHMgdXAgdGhlIGluaXRpYWwgc3RhdGUgYW5kIHRyYW5zbGF0ZXMgdXNlciBhY3Rpb25zXG4gICAqIChsaWtlIHBhZ2luYXRpb24gb3IgZmlsdGVyIGNoYW5nZXMsIGV0Yy4pIGludG8gbmV3IHJvdyBkYXRhIGJ5IGNhbGxpbmcgdGhlXG4gICAqIHJlZHVjZXIgZnVuY3Rpb24uIEl0IGFsc28gYXVnbWVudHMgdGhlIGNvcmUgc3RhdGUgd2l0aCBhZGRpdGlvbmFsIGRlcml2ZWRcbiAgICogc3RhdGUuXG4gICAqL1xuXG4gIGV4cG9ydCB0eXBlIE1hbmFnZXI8UiBleHRlbmRzIFJvdywgQyBleHRlbmRzIENvbHVtbiwgRiBleHRlbmRzIEZpbHRlcnM+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFIsIEMsIEY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFIsIEMsIEY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxcbiAgICBSIGV4dGVuZHMgUm93LFxuICAgIEMgZXh0ZW5kcyBDb2x1bW4sXG4gICAgRiBleHRlbmRzIEZpbHRlcnMsXG4gID4gPSB7XG4gICAgaW5pdGlhbFN0YXRlPzogRGVlcFBhcnRpYWw8Q29yZVN0YXRlPFIsIEMsIEY+PjtcbiAgICByb3dMaW5rPzogKHJvdzogUikgPT4gc3RyaW5nO1xuICAgIGNzdkNlbGxGb3JtYXR0ZXI/OiBDc3ZDZWxsRm9ybWF0dGVyPFIsIEM+O1xuICAgIGNzdkZpbGVCYXNlbmFtZT86IHN0cmluZztcbiAgICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8XG4gICAgUiBleHRlbmRzIFJvdyxcbiAgICBDIGV4dGVuZHMgQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBGaWx0ZXJzLFxuICA+KFxuICAgIHNvdXJjZTogU291cmNlPFIsIEMsIEY+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBDb2x1bW5NZXRhZGF0YT4sXG4gICAgcGx1cmFsRW50aXR5TmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBNYW5hZ2VyT3B0aW9uczxSLCBDLCBGPixcbiAgKTogTWFuYWdlcjxSLCBDLCBGPiB7XG4gICAgLy8gU2V0IHVwIHRoZSBpbml0aWFsIHRhYmxlIHN0YXRlLlxuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFIsIEMsIEY+ID0ge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgb3JkZXI6IG51bGwsXG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgIHBhZ2VTaXplOiAyNSxcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgIH0sXG4gICAgICBsb2FkOiB7IGxvYWRpbmc6IGZhbHNlLCBlcnJvcjogbnVsbCB9LFxuICAgICAgcmVzdWx0OiB7XG4gICAgICAgIGN1cnJlbnRQYWdlRGF0YTogW10sXG4gICAgICAgIHRvdGFsTWF0Y2hpbmdSb3dDb3VudDogMCxcbiAgICAgIH0sXG4gICAgICBkaXNwbGF5OiB7XG4gICAgICAgIGNvbHVtblNldHRpbmdzOiBbXSxcbiAgICAgIH0sXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgaW5jbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxSLCBDLCBGPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICAvLyBXaXJlIHVwIHJlZHVjZWQgc3RhdGUgZnJvbSBhY3Rpb25zIGFuZCBpbml0aWFsIHN0YXRlLlxuICAgIGNvbnN0IGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFIsIEMsIEY+PiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgY29uc3QgY29yZVN0YXRlOiBPYnNlcnZhYmxlPENvcmVTdGF0ZTxSLCBDLCBGPj4gPSBhY3Rpb25zLnBpcGUoXG4gICAgICBtZXJnZVNjYW4oXG4gICAgICAgIChzdGF0ZSwgYWN0aW9uKSA9PiBmcm9tKHJlZHVjZShzdGF0ZSwgYWN0aW9uLCBjb2x1bW5zLCBzb3VyY2UpKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gQXVnbWVudCBzdGF0ZSB3aXRoIGRlcml2ZWQgc3RhdGUsIGFuZCBzdWJzY3JpYmUuXG4gICAgY29uc3Qgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxSLCBDLCBGPj4gPSBjb25uZWN0YWJsZShcbiAgICAgIGNvcmVTdGF0ZS5waXBlKFxuICAgICAgICBtYXAocyA9PiAoe1xuICAgICAgICAgIC4uLnMsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIC4uLnMucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnMucXVlcnkucGFnaW5hdGlvbixcbiAgICAgICAgICAgICAgcHJldmlvdXM6IGdldFByZXZpb3VzUGFnZShzKSxcbiAgICAgICAgICAgICAgcGFnZXM6IGdldFBhZ2VzKHMpLFxuICAgICAgICAgICAgICBuZXh0OiBnZXROZXh0UGFnZShzKSxcbiAgICAgICAgICAgICAgcGFnZUNvdW50OiBnZXRQYWdlQ291bnQocyksXG4gICAgICAgICAgICAgIHNob3dDb250cm9sczogZ2V0U2hvd1BhZ2luYXRpb25Db250cm9scyhzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnMucmVzdWx0LFxuICAgICAgICAgICAgcm93czogcy5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLm1hcChyb3cgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucm93LFxuICAgICAgICAgICAgICByb3dMaW5rOiBvcHRpb25zPy5yb3dMaW5rID8gb3B0aW9ucy5yb3dMaW5rKHJvdykgOiBudWxsLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogaXNSb3dTZWxlY3RlZChzLCByb3cuaWQpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY3N2RGF0YTogYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2VsbEZvcm1hdHRlciA9IG9wdGlvbnM/LmNzdkNlbGxGb3JtYXR0ZXI7XG4gICAgICAgICAgICAgIGlmICghY2VsbEZvcm1hdHRlcilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAnb3B0aW9ucy5jc3ZDZWxsRm9ybWF0dGVyIGlzIHJlcXVpcmVkIGZvciBDU1YgZXhwb3J0JyxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB5aWVsZCB7IGxvYWRpbmc6IHRydWUsIGRhdGE6IG51bGwgfTtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YVNldCA9IGF3YWl0IHNvdXJjZShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAuLi5zLnF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogcy5yZXN1bHQudG90YWxNYXRjaGluZ1Jvd0NvdW50LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2xvYWQnIH0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGZ1bGxDb2x1bW5zID0gcmVzb2x2ZUNvbHVtbnMoXG4gICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGE6IENzdiA9IFtdO1xuICAgICAgICAgICAgICBkYXRhLnB1c2goZnVsbENvbHVtbnMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkpO1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiBkYXRhU2V0LmN1cnJlbnRQYWdlRGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdzogQ3N2Um93ID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgZnVsbENvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGF3YWl0IGNlbGxGb3JtYXR0ZXIocmVjb3JkLCBjb2x1bW4pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgeWllbGQgeyBsb2FkaW5nOiBmYWxzZSwgZGF0YSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNzdkZpbGVuYW1lOlxuICAgICAgICAgICAgICAob3B0aW9ucz8uY3N2RmlsZUJhc2VuYW1lPy5zbGljZSgwLCAyMDApID8/IHBsdXJhbEVudGl0eU5hbWUpICtcbiAgICAgICAgICAgICAgJy5jc3YnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGlzcGxheToge1xuICAgICAgICAgICAgLi4ucy5kaXNwbGF5LFxuICAgICAgICAgICAgY29sdW1uczogcmVzb2x2ZUNvbHVtbnMocywgY29sdW1ucywgb3B0aW9ucz8uYWxsb3dTZWxlY3Rpb24pLFxuICAgICAgICAgICAgYWxsQ29sdW1uczogZ2V0QWxsQ29sdW1ucyhzLCBjb2x1bW5zKSxcbiAgICAgICAgICAgIHplcm9TdGF0ZU1lc3NhZ2U6IGdldFplcm9TdGF0ZU1lc3NhZ2UocywgcGx1cmFsRW50aXR5TmFtZSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgICAgIC4uLnMuc2VsZWN0aW9uLFxuICAgICAgICAgICAgYWxsb3dTZWxlY3Rpb246ICEhb3B0aW9ucz8uYWxsb3dTZWxlY3Rpb24sXG4gICAgICAgICAgICBpc0FsbFNlbGVjdGVkOiBpc0FsbFNlbGVjdGVkKHMpLFxuICAgICAgICAgICAgaXNDdXJyZW50UGFnZVNlbGVjdGVkOiBpc0N1cnJlbnRQYWdlU2VsZWN0ZWQocyksXG4gICAgICAgICAgICBzZWxlY3RlZENvdW50OiBzZWxlY3RlZENvdW50KHMpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pKSxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3RvcjogKCkgPT4gbmV3IFJlcGxheVN1YmplY3QoMSksXG4gICAgICAgIHJlc2V0T25EaXNjb25uZWN0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBzdGF0ZS5jb25uZWN0KCk7XG5cbiAgICAvLyBMb2FkIGluaXRpYWwgdGFibGUgcm93IGRhdGEuXG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3N0IHRhYmxlcyB1c2UgcmVtb3RlIGJhY2tlbmRzIHRvIGZldGNoIGRhdGEgYXN5bmNocm9ub3VzbHksIGJ1dCBhblxuICAgKiBpbi1tZW1vcnkgc291cmNlIGlzIHVzZWZ1bCBmb3Igc21hbGwgZGF0YXNldHMsIHdoZW4gUml2VGFibGUgZmVhdHVyZXMgbGlrZVxuICAgKiBvcmRlcmluZyBhbmQgcGFnaW5hdGlvbiBhcmUgZGVzaXJlZC5cbiAgICovXG5cbiAgZXhwb3J0IHR5cGUgSW5NZW1vcnlDb2x1bW5NZXRhZGF0YTxSIGV4dGVuZHMgUm93PiA9IE9taXQ8XG4gICAgQ29sdW1uTWV0YWRhdGEsXG4gICAgJ29yZGVyYWJsZSdcbiAgPiAmIHsgb3JkZXJLZXk/OiBrZXlvZiBSIH07XG5cbiAgZXhwb3J0IHR5cGUgSW5NZW1vcnlNYW5hZ2VyT3B0aW9uczxcbiAgICBSIGV4dGVuZHMgUm93LFxuICAgIEMgZXh0ZW5kcyBDb2x1bW4sXG4gICAgRiBleHRlbmRzIEZpbHRlcnMsXG4gID4gPSBNYW5hZ2VyT3B0aW9uczxSLCBDLCBGPiAmIHtcbiAgICBmdXNlT3B0aW9ucz86IElGdXNlT3B0aW9uczxSPjtcbiAgICBmaWx0ZXI/OiAoZmlsdGVyczogRiB8IG51bGwsIHJvdzogUikgPT4gYm9vbGVhbjtcbiAgfTtcblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5NZW1vcnlNYW5hZ2VyPFxuICAgIFIgZXh0ZW5kcyBSb3csXG4gICAgQyBleHRlbmRzIENvbHVtbixcbiAgICBGIGV4dGVuZHMgRmlsdGVycyxcbiAgPihcbiAgICBmZXRjaERhdGFzZXQ6ICgpID0+IFByb21pc2U8UltdPiB8IFJbXSxcbiAgICBjb2x1bW5zOiBNYXA8QywgSW5NZW1vcnlDb2x1bW5NZXRhZGF0YTxSPj4sXG4gICAgcGx1cmFsRW50aXR5TmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBJbk1lbW9yeU1hbmFnZXJPcHRpb25zPFIsIEMsIEY+LFxuICApOiBNYW5hZ2VyPFIsIEMsIEY+IHtcbiAgICBsZXQgZGF0YTogUltdO1xuICAgIGxldCBmdXNlOiBGdXNlPFI+O1xuXG4gICAgY29uc3Qgc291cmNlOiBTb3VyY2U8UiwgQywgRj4gPSBhc3luYyAocXVlcnksIG1vc3RSZWNlbnRBY3Rpb24pID0+IHtcbiAgICAgIGlmIChtb3N0UmVjZW50QWN0aW9uLnR5cGUgPT09ICdsb2FkJykge1xuICAgICAgICBkYXRhID0gYXdhaXQgZmV0Y2hEYXRhc2V0KCk7XG4gICAgICAgIGZ1c2UgPSBuZXcgRnVzZShkYXRhLCBvcHRpb25zPy5mdXNlT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBjb25zdCBvcmRlckNvbHVtbjoga2V5b2YgUiB8IHVuZGVmaW5lZCA9IHF1ZXJ5Lm9yZGVyXG4gICAgICAgID8gY29sdW1ucy5nZXQocXVlcnkub3JkZXIuY29sdW1uKT8ub3JkZXJLZXlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBvcmRlcmVkID0gcXVlcnkuc2VhcmNoXG4gICAgICAgID8gZnVzZS5zZWFyY2gocXVlcnkuc2VhcmNoKS5tYXAocmVzdWx0ID0+IHJlc3VsdC5pdGVtKVxuICAgICAgICA6IHF1ZXJ5Lm9yZGVyICYmIG9yZGVyQ29sdW1uXG4gICAgICAgID8gb3JkZXJCeShkYXRhLCBvcmRlckNvbHVtbiwgcXVlcnkub3JkZXIuZGlyZWN0aW9uKVxuICAgICAgICA6IGRhdGE7XG4gICAgICBjb25zdCBmaWx0ZXIgPSBvcHRpb25zPy5maWx0ZXI7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IGZpbHRlclxuICAgICAgICA/IG9yZGVyZWQuZmlsdGVyKHJvdyA9PiBmaWx0ZXIocXVlcnkuZmlsdGVycywgcm93KSlcbiAgICAgICAgOiBvcmRlcmVkO1xuICAgICAgY29uc3Qgc3RhcnRJZHggPSBxdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplICogcXVlcnkucGFnaW5hdGlvbi5wYWdlO1xuICAgICAgY29uc3QgZW5kSWR4ID0gc3RhcnRJZHggKyBxdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgICAgY29uc3QgcGFnaW5hdGVkID0gZmlsdGVyZWQuc2xpY2Uoc3RhcnRJZHgsIGVuZElkeCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXJyZW50UGFnZURhdGE6IHBhZ2luYXRlZCxcbiAgICAgICAgdG90YWxNYXRjaGluZ1Jvd0NvdW50OiBmaWx0ZXJlZC5sZW5ndGgsXG4gICAgICB9O1xuICAgIH07XG4gICAgY29uc3QgY29sdW1uTWV0YWRhdGE6IE1hcDxDLCBDb2x1bW5NZXRhZGF0YT4gPSBuZXcgTWFwKFxuICAgICAgWy4uLmNvbHVtbnMuZW50cmllcygpXS5tYXAoKFtuYW1lLCBtZXRhZGF0YV0pID0+IFtcbiAgICAgICAgbmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIG9yZGVyYWJsZTogISFtZXRhZGF0YS5vcmRlcktleSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogbWV0YWRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgbWluV2lkdGg6IG1ldGFkYXRhLm1pbldpZHRoLFxuICAgICAgICAgIGRhdGFUeXBlOiBtZXRhZGF0YS5kYXRhVHlwZSxcbiAgICAgICAgICBkZWZhdWx0UGlubmVkOiBtZXRhZGF0YS5kZWZhdWx0UGlubmVkLFxuICAgICAgICB9LFxuICAgICAgXSksXG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlTWFuYWdlcihzb3VyY2UsIGNvbHVtbk1ldGFkYXRhLCBwbHVyYWxFbnRpdHlOYW1lLCBvcHRpb25zKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+KTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KFxuICAgIE1hdGguY2VpbChcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgLyBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICksXG4gICAgMSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJldmlvdXNQYWdlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IG51bWJlciB8IG51bGwge1xuICByZXR1cm4gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlID09PSAwXG4gICAgPyBudWxsXG4gICAgOiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgLSAxO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlczxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHBhZGRpbmcgPSA0O1xuICBjb25zdCBtaW4gPSAwO1xuICBjb25zdCBtYXggPSBnZXRQYWdlQ291bnQoc3RhdGUpIC0gMTtcbiAgY29uc3QgZGVzaXJlZFN0YXJ0ID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlIC0gcGFkZGluZztcbiAgY29uc3QgY2xhbXBlZFN0YXJ0ID0gTWF0aC5tYXgobWluLCBkZXNpcmVkU3RhcnQpO1xuICBjb25zdCBkZXNpcmVkRW5kID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlICsgcGFkZGluZztcbiAgY29uc3QgY2xhbXBlZEVuZCA9IE1hdGgubWluKG1heCwgZGVzaXJlZEVuZCk7XG4gIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgobWluLCBjbGFtcGVkU3RhcnQgLSAoZGVzaXJlZEVuZCAtIGNsYW1wZWRFbmQpKTtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4obWF4LCBjbGFtcGVkRW5kICsgKGNsYW1wZWRTdGFydCAtIGRlc2lyZWRTdGFydCkpO1xuICByZXR1cm4gcmFuZ2Uoc3RhcnQsIGVuZCArIDEpO1xufVxuXG5mdW5jdGlvbiBnZXROZXh0UGFnZTxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgbWF4ID0gZ2V0UGFnZUNvdW50KHN0YXRlKSAtIDE7XG4gIGNvbnN0IG5leHQgPSBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKyAxO1xuICByZXR1cm4gbmV4dCA8PSBtYXggPyBuZXh0IDogbnVsbDtcbn1cblxuLy8gV2UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuXG5mdW5jdGlvbiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IGJvb2xlYW4ge1xuICBjb25zdCBzbWFsbGVzdFBhZ2VTaXplID0gTWF0aC5taW4oLi4uWy4uLlJpdlRhYmxlLnBhZ2VTaXplc10pO1xuICByZXR1cm4gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCA+IHNtYWxsZXN0UGFnZVNpemU7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbHVtbnM8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihcbiAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPixcbiAgc3VwcG9ydGVkQ29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbik6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10ge1xuICAvLyBJZiB0aGUgdGFibGUgb2ZmZXJzIG1vcmUgY29sdW1ucyB0aGFuIHRoZSB1c2VyIGhhcyBjb25maWd1cmF0aW9uIHNldHRpbmdzXG4gIC8vIGZvciAob3IgaWYgdGhlIHVzZXIgaGFzIG5vIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgeWV0KSwgd2UnbGwgYXBwZW5kIHRoZW1cbiAgLy8gdG8gdGhlIGVuZCAodW5sZXNzIHRoZXkgc2hvdWxkIGJlIHBpbm5lZCBieSBkZWZhdWx0LCBpbiB3aGljaCBjYXNlIHdlJ2xsXG4gIC8vIGFwcGVuZCB0aGVtIGFmdGVyIHRoZSBvdGhlciBwaW5uZWQgY29sdW1ucykuIFRoaXMgZW5zdXJlcyB0aGF0IG5ldyBjb2x1bW5zXG4gIC8vIHdlIGFkZCB0byBleGlzdGluZyB0YWJsZXMgb3ZlciB0aW1lICgxKSBnZXQgZGlzcGxheWVkIGV2ZW4gdGhvdWdoIHRoZXlcbiAgLy8gZG9uJ3QgYXBwZWFyIGluIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB5ZXQsIGFuZCAoMikgZG9uJ3RcbiAgLy8gaW50ZXJydXB0IHRoZWlyIGV4aXN0aW5nIHNldHVwLlxuICBjb25zdCBjb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MgPSBkaWZmZXJlbmNlKFxuICAgIFsuLi5zdXBwb3J0ZWRDb2x1bW5zLmtleXMoKV0sXG4gICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSxcbiAgKTtcblxuICAvLyBUaHJvdyBvdXQgc2V0dGluZ3MgZm9yIGNvbHVtbnMgbm8gbG9uZ2VyIG9mZmVyZWQgYnkgdGhlIHRhYmxlLlxuICBjb25zdCBjb2x1bW5zV2l0aFVzZXJTZXR0aW5nczogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSA9XG4gICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5maWx0ZXIoKHsgbmFtZSB9KSA9PlxuICAgICAgc3VwcG9ydGVkQ29sdW1ucy5oYXMobmFtZSksXG4gICAgKTtcblxuICBjb25zdCBjb2x1bW5zV2l0aG91dFVzZXJTZXR0aW5nczogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSA9IFtcbiAgICAuLi5jb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MsXG4gIF0ubWFwKChuYW1lOiBDKSA9PiAoe1xuICAgIG5hbWUsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBwcmVmZXJyZWRXaWR0aDogJ2F1dG8nLFxuICAgIHBpbm5lZDogISFzdXBwb3J0ZWRDb2x1bW5zLmdldChuYW1lKT8uZGVmYXVsdFBpbm5lZCxcbiAgfSkpO1xuXG4gIHJldHVybiBvcmRlckJ5UGlubmVkKFtcbiAgICAuLi5jb2x1bW5zV2l0aFVzZXJTZXR0aW5ncyxcbiAgICAuLi5jb2x1bW5zV2l0aG91dFVzZXJTZXR0aW5ncyxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIG9yZGVyQnlQaW5uZWQ8QyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbj4oXG4gIGNvbHVtbnM6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10sXG4pOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPltdIHtcbiAgcmV0dXJuIG9yZGVyQnkoY29sdW1ucywgdiA9PiAodi5waW5uZWQgPyAxIDogMCksICdkZXNjJyk7XG59XG5cbmZ1bmN0aW9uIGdldEFsaWdubWVudChcbiAgbWV0YWRhdGE6IFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhLFxuICBpbmRleDogbnVtYmVyLFxuICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW4sXG4pOiBSaXZUYWJsZS5Db2x1bW5BbGlnbm1lbnQge1xuICBpZiAoaW5kZXggPT09IDAgJiYgIWFsbG93U2VsZWN0aW9uKSByZXR1cm4gJ2xlZnQnO1xuICBzd2l0Y2ggKG1ldGFkYXRhLmRhdGFUeXBlKSB7XG4gICAgY2FzZSAnZGF0ZSc6XG4gICAgY2FzZSAnbG9uZ1RleHQnOlxuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICBjYXNlICdhZHZhbmNlZCc6XG4gICAgY2FzZSAnaWNvbic6XG4gICAgY2FzZSAnc2hvcnRUZXh0JzpcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb2x1bW5zPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIHN1cHBvcnRlZENvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGFsbG93U2VsZWN0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdIHtcbiAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIHN1cHBvcnRlZENvbHVtbnMpO1xuICByZXR1cm4gYWxsQ29sdW1uc1xuICAgIC5maWx0ZXIoKHsgZW5hYmxlZCB9KSA9PiBlbmFibGVkKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIGZ1bGxDb2x1bW5zOiBSaXZUYWJsZS5GdWxsQ29sdW1uPEM+W10sXG4gICAgICAgIHNldHRpbmdzOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPixcbiAgICAgICAgaTogbnVtYmVyLFxuICAgICAgKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdID0+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBzdXBwb3J0ZWRDb2x1bW5zLmdldChzZXR0aW5ncy5uYW1lKSE7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkV2lkdGggPVxuICAgICAgICAgIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoID09PSAnYXV0bydcbiAgICAgICAgICAgID8gbWV0YWRhdGEubWluV2lkdGhcbiAgICAgICAgICAgIDogTWF0aC5tYXgobWV0YWRhdGEubWluV2lkdGgsIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNDb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz4gfCB1bmRlZmluZWQgPVxuICAgICAgICAgIGZ1bGxDb2x1bW5zW2kgLSAxXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5mdWxsQ29sdW1ucyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgICAgIC4uLm1ldGFkYXRhLFxuICAgICAgICAgICAgd2lkdGg6IHJlc29sdmVkV2lkdGgsXG4gICAgICAgICAgICBsZWZ0OiBzZXR0aW5ncy5waW5uZWRcbiAgICAgICAgICAgICAgPyBwcmV2aW91c0NvbHVtblxuICAgICAgICAgICAgICAgID8gKHByZXZpb3VzQ29sdW1uLmxlZnQgfHwgMCkgKyBwcmV2aW91c0NvbHVtbi53aWR0aFxuICAgICAgICAgICAgICAgIDogYWxsb3dTZWxlY3Rpb25cbiAgICAgICAgICAgICAgICA/IDQwXG4gICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIGFsaWdubWVudDogZ2V0QWxpZ25tZW50KG1ldGFkYXRhLCBpLCBhbGxvd1NlbGVjdGlvbiksXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0sXG4gICAgICBbXSxcbiAgICApO1xufVxuXG5mdW5jdGlvbiBnZXRaZXJvU3RhdGVNZXNzYWdlPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiwgZW50aXR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiAwKSByZXR1cm4gbnVsbDtcbiAgaWYgKHN0YXRlLnF1ZXJ5LnNlYXJjaClcbiAgICByZXR1cm4gYE5vICR7ZW50aXR5fSBtYXRjaCB5b3VyIGN1cnJlbnQgc2VhcmNoIGtleXdvcmQuYDtcbiAgaWYgKHN0YXRlLnF1ZXJ5LmZpbHRlcnMpIHJldHVybiBgTm8gJHtlbnRpdHl9IG1hdGNoIHlvdXIgY3VycmVudCBmaWx0ZXJzLmA7XG4gIHJldHVybiBgTm8gJHtlbnRpdHl9LmA7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUNvbHVtblBpbjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICBjb2x1bW46IEMsXG4gIHBpbm5lZDogYm9vbGVhbixcbik6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgY29sdW1uU2V0dGluZ3M6IG9yZGVyQnlQaW5uZWQoXG4gICAgICAgIGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgICAuLi5jLFxuICAgICAgICAgIHBpbm5lZDogYy5uYW1lID09PSBjb2x1bW4gPyBwaW5uZWQgOiBjLnBpbm5lZCxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VDb2x1bW5PcmRlcjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICBwcmV2aW91c0luZGV4OiBudW1iZXIsXG4gIG5ld0luZGV4OiBudW1iZXIsXG4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucyk7XG5cbiAgLy8gRmlyc3QsIHB1dCB0aGUgY29sdW1ucyBpbiB0aGUgZGVzaXJlZCBvcmRlci5cbiAgY29uc3QgaXRlbSA9IGFsbENvbHVtbnNbcHJldmlvdXNJbmRleF07XG4gIGNvbnN0IHdpdGhvdXRJdGVtID0gYWxsQ29sdW1ucy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IHByZXZpb3VzSW5kZXgpO1xuICBjb25zdCByZW9yZGVyZWQgPSBbXG4gICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoMCwgbmV3SW5kZXgpLFxuICAgIGl0ZW0sXG4gICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UobmV3SW5kZXgpLFxuICBdO1xuXG4gIC8vIFRoZW4sIHdlIG1heSBuZWVkIHRvIGZpeCB0aGUgcGlucyAoYWxsIHBpbm5lZCBjb2x1bW5zIGFwcGVhciBhdCB0aGVcbiAgLy8gYmVnaW5uaW5nIG9mIHRoZSBjb2x1bW5zIGFycmF5KSBzaW5jZSB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGRyYWdcbiAgLy8gYW5kIGRyb3AgY29sdW1ucyB0byBhbmQgZnJvbSB0aGUgcGlubmVkIGFyZWEuIElmIHRoZSB1c2VyIGRyYWdzIGFcbiAgLy8gY29sdW1uIGFjcm9zcyB0aGF0IHRocmVzaG9sZCwgdXBkYXRlIGl0cyBwaW5uZWQgc3RhdHVzLlxuICBjb25zdCB1cGRhdGVkID0gcmVvcmRlcmVkLm1hcCgoc2V0dGluZ3MsIGksIGFycikgPT4ge1xuICAgIGlmIChuZXdJbmRleCA9PT0gaSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIHBpbm5lZDogc2V0dGluZ3MucGlubmVkXG4gICAgICAgICAgPyBhcnJbaSAtIDFdPy5waW5uZWQgPz8gdHJ1ZVxuICAgICAgICAgIDogYXJyW2kgKyAxXT8ucGlubmVkID8/IGZhbHNlLFxuICAgICAgfTtcbiAgICB9IGVsc2UgcmV0dXJuIHNldHRpbmdzO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICBjb2x1bW5TZXR0aW5nczogdXBkYXRlZCxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VDb2x1bW5FbmFibGVkPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGNvbHVtbjogQyxcbiAgZW5hYmxlZDogYm9vbGVhbixcbik6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgY29sdW1uU2V0dGluZ3M6IGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgLi4uYyxcbiAgICAgICAgZW5hYmxlZDogYy5uYW1lID09PSBjb2x1bW4gPyBlbmFibGVkIDogYy5lbmFibGVkLFxuICAgICAgfSkpLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUNvbHVtbldpZHRoPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oXG4gIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIGNvbHVtbjogQyxcbiAgcHJlZmVycmVkV2lkdGg6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+WydwcmVmZXJyZWRXaWR0aCddLFxuKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+IHtcbiAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIGNvbHVtbnMpO1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICBjb2x1bW5TZXR0aW5nczogYWxsQ29sdW1ucy5tYXAoYyA9PiAoe1xuICAgICAgICAuLi5jLFxuICAgICAgICBwcmVmZXJyZWRXaWR0aDogYy5uYW1lID09PSBjb2x1bW4gPyBwcmVmZXJyZWRXaWR0aCA6IGMucHJlZmVycmVkV2lkdGgsXG4gICAgICB9KSksXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNSb3dTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sIGlkOiBSWydpZCddKTogYm9vbGVhbiB7XG4gIHN3aXRjaCAoc3RhdGUuc2VsZWN0aW9uLm1vZGUpIHtcbiAgICBjYXNlICdpbmNsdWRlJzpcbiAgICAgIHJldHVybiBzdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWQuaGFzKGlkKTtcbiAgICBjYXNlICdleGNsdWRlJzpcbiAgICAgIHJldHVybiAhc3RhdGUuc2VsZWN0aW9uLmV4Y2x1ZGVkLmhhcyhpZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBbGxTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBSaXZUYWJsZS5NdWx0aVNlbGVjdGlvblN0YXRlIHtcbiAgaWYgKFxuICAgIChzdGF0ZS5zZWxlY3Rpb24ubW9kZSA9PT0gJ2V4Y2x1ZGUnICYmXG4gICAgICBzdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWQuc2l6ZSA9PT0gMCkgfHxcbiAgICAoc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJyAmJlxuICAgICAgc3RhdGUuc2VsZWN0aW9uLmluY2x1ZGVkLnNpemUgPT09IHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQpXG4gIClcbiAgICByZXR1cm4gdHJ1ZTtcbiAgaWYgKFxuICAgIChzdGF0ZS5zZWxlY3Rpb24ubW9kZSA9PT0gJ2V4Y2x1ZGUnICYmXG4gICAgICBzdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWQuc2l6ZSA9PT0gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCkgfHxcbiAgICAoc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJyAmJiBzdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWQuc2l6ZSA9PT0gMClcbiAgKVxuICAgIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICdpbmRldGVybWluYXRlJztcbn1cblxuZnVuY3Rpb24gaXNDdXJyZW50UGFnZVNlbGVjdGVkPFxuICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbj4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPik6IFJpdlRhYmxlLk11bHRpU2VsZWN0aW9uU3RhdGUge1xuICBjb25zdCBzZWxlY3RlZFN0YXRlcyA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEubWFwKCh7IGlkIH0pID0+XG4gICAgaXNSb3dTZWxlY3RlZChzdGF0ZSwgaWQpLFxuICApO1xuICBpZiAoc2VsZWN0ZWRTdGF0ZXMubGVuZ3RoID4gMCkge1xuICAgIGlmIChzZWxlY3RlZFN0YXRlcy5ldmVyeSh2ID0+IHYpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoc2VsZWN0ZWRTdGF0ZXMuc29tZSh2ID0+IHYpKSByZXR1cm4gJ2luZGV0ZXJtaW5hdGUnO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0ZWRDb3VudDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBudW1iZXIge1xuICBzd2l0Y2ggKHN0YXRlLnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgY2FzZSAnaW5jbHVkZSc6XG4gICAgICByZXR1cm4gc3RhdGUuc2VsZWN0aW9uLmluY2x1ZGVkLnNpemU7XG4gICAgY2FzZSAnZXhjbHVkZSc6XG4gICAgICByZXR1cm4gc3RhdGUucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCAtIHN0YXRlLnNlbGVjdGlvbi5leGNsdWRlZC5zaXplO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiByZWZyZXNoUmVzdWx0V2l0aDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBzb3VyY2U6IFJpdlRhYmxlLlNvdXJjZTxSLCBDLCBGPixcbiAgbW9zdFJlY2VudEFjdGlvbjogUml2VGFibGUuQWN0aW9uPFIsIEMsIEY+LFxuKTogQXN5bmNHZW5lcmF0b3I8Uml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+PiB7XG4gIHlpZWxkIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsb2FkOiB7XG4gICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSxcbiAgfTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzb3VyY2Uoc3RhdGUucXVlcnksIG1vc3RSZWNlbnRBY3Rpb24pO1xuICAgIHlpZWxkIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZDoge1xuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICB9LFxuICAgICAgcmVzdWx0LFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBsb2FkOiB7XG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRSb3dTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KFxuICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+LFxuICBpZDogUlsnaWQnXSxcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gIGNvbnRpZ3VvdXM6IGJvb2xlYW4sXG4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBpZiAoc2VsZWN0ZWQpIHtcbiAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBuZXcgU2V0PFJbJ2lkJ10+KFtpZF0pO1xuICAgIGlmIChjb250aWd1b3VzICYmIHN0YXRlLnNlbGVjdGlvbi5tb3N0UmVjZW50bHlTZWxlY3RlZCkge1xuICAgICAgY29uc3Qgc3RhcnRJZHggPSBzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLmZpbmRJbmRleChcbiAgICAgICAgcm93ID0+IHJvdy5pZCA9PT0gc3RhdGUuc2VsZWN0aW9uLm1vc3RSZWNlbnRseVNlbGVjdGVkLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVuZElkeCA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEuZmluZEluZGV4KFxuICAgICAgICByb3cgPT4gcm93LmlkID09PSBpZCxcbiAgICAgICk7XG4gICAgICBpZiAodHlwZW9mIHN0YXJ0SWR4ID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZW5kSWR4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIGxldCBpID0gTWF0aC5taW4oc3RhcnRJZHgsIGVuZElkeCk7XG4gICAgICAgICAgaSA8PSBNYXRoLm1heChzdGFydElkeCwgZW5kSWR4KTtcbiAgICAgICAgICBpKytcbiAgICAgICAgKSB7XG4gICAgICAgICAgbmV3U2VsZWN0aW9uLmFkZChzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhW2ldLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IGlkLFxuICAgICAgICAuLi4oc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJ1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIHVuaW9uKFsuLi5zdGF0ZS5zZWxlY3Rpb24uaW5jbHVkZWRdLCBbLi4ubmV3U2VsZWN0aW9uXSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIG1vZGU6ICdleGNsdWRlJyxcbiAgICAgICAgICAgICAgZXhjbHVkZWQ6IG5ldyBTZXQoXG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZShbLi4uc3RhdGUuc2VsZWN0aW9uLmV4Y2x1ZGVkXSwgWy4uLm5ld1NlbGVjdGlvbl0pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgIG1vc3RSZWNlbnRseVNlbGVjdGVkOiBudWxsLFxuICAgICAgICAuLi4oc3RhdGUuc2VsZWN0aW9uLm1vZGUgPT09ICdpbmNsdWRlJ1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UoWy4uLnN0YXRlLnNlbGVjdGlvbi5pbmNsdWRlZF0sIFtpZF0pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBtb2RlOiAnZXhjbHVkZScsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVkOiBuZXcgU2V0KHVuaW9uKFsuLi5zdGF0ZS5zZWxlY3Rpb24uZXhjbHVkZWRdLCBbaWRdKSksXG4gICAgICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVQYWdlU2VsZWN0ZWQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+KTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+IHtcbiAgY29uc3QgaXNQYWdlRnVsbHlTZWxlY3RlZCA9IHN0YXRlLnJlc3VsdC5jdXJyZW50UGFnZURhdGEuZXZlcnkoKHsgaWQgfSkgPT5cbiAgICBpc1Jvd1NlbGVjdGVkKHN0YXRlLCBpZCksXG4gICk7XG4gIHJldHVybiBzdGF0ZS5yZXN1bHQuY3VycmVudFBhZ2VEYXRhLnJlZHVjZSgoYWNjdW11bGF0ZWRTdGF0ZSwgcm93KSA9PiB7XG4gICAgcmV0dXJuIHNldFJvd1NlbGVjdGVkKFxuICAgICAgYWNjdW11bGF0ZWRTdGF0ZSxcbiAgICAgIHJvdy5pZCxcbiAgICAgICFpc1BhZ2VGdWxseVNlbGVjdGVkLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfSwgc3RhdGUpO1xufVxuXG5mdW5jdGlvbiB0b2dnbGVBbGxTZWxlY3RlZDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4pOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4ge1xuICBpZiAoaXNBbGxTZWxlY3RlZChzdGF0ZSkgPT09IHRydWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgaW5jbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgIG1vZGU6ICdleGNsdWRlJyxcbiAgICAgICAgZXhjbHVkZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRj4sIGNvbHVtbjogQyk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPiB7XG4gIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBxdWVyeToge1xuICAgICAgICAuLi5zdGF0ZS5xdWVyeSxcbiAgICAgICAgb3JkZXI6XG4gICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBxdWVyeToge1xuICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICBvcmRlcjoge1xuICAgICAgICBjb2x1bW4sXG4gICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiByZWR1Y2U8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuPihcbiAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGPixcbiAgYWN0aW9uOiBSaXZUYWJsZS5BY3Rpb248UiwgQywgRj4sXG4gIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gIHNvdXJjZTogUml2VGFibGUuU291cmNlPFIsIEMsIEY+LFxuKTogQXN5bmNHZW5lcmF0b3I8Uml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEY+PiB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlICdsb2FkJzpcbiAgICAgIHlpZWxkKiByZWZyZXNoUmVzdWx0V2l0aChzdGF0ZSwgc291cmNlLCBhY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnb3JkZXJDaGFuZ2UnOlxuICAgICAgeWllbGQqIHJlZnJlc2hSZXN1bHRXaXRoKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgICAgb3JkZXI6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnb3JkZXJDb2x1bW5Ub2dnbGUnOlxuICAgICAgeWllbGQqIHJlZnJlc2hSZXN1bHRXaXRoKFxuICAgICAgICB0b2dnbGVDb2x1bW5PcmRlcihzdGF0ZSwgYWN0aW9uLmNvbHVtbiksXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NlYXJjaENoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBtb3N0UmVjZW50bHlTZWxlY3RlZDogbnVsbCxcbiAgICAgICAgICAgIG1vZGU6ICdpbmNsdWRlJyxcbiAgICAgICAgICAgIGluY2x1ZGVkOiBuZXcgU2V0KCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFnaW5hdGlvbkNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwcmV2aW91c1BhZ2VOYXZpZ2F0ZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGdldFByZXZpb3VzUGFnZShzdGF0ZSkgPz8gMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbmV4dFBhZ2VOYXZpZ2F0ZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGdldE5leHRQYWdlKHN0YXRlKSA/PyBnZXRQYWdlQ291bnQoc3RhdGUpIC0gMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFnZUNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2U6IGFjdGlvbi5wYWdlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYWdlU2l6ZUNoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24sXG4gICAgICAgICAgICAgIHBhZ2VTaXplOiBhY3Rpb24uc2l6ZSxcbiAgICAgICAgICAgICAgcGFnZTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBhY3Rpb24sXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZmlsdGVyc0NoYW5nZSc6XG4gICAgICB5aWVsZCogcmVmcmVzaFJlc3VsdFdpdGgoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgICAgICBmaWx0ZXJzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGVjdGlvbjoge1xuICAgICAgICAgICAgbW9zdFJlY2VudGx5U2VsZWN0ZWQ6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnaW5jbHVkZScsXG4gICAgICAgICAgICBpbmNsdWRlZDogbmV3IFNldCgpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtblNldHRpbmdzQ2hhbmdlJzpcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICAgIGNvbHVtblNldHRpbmdzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb2x1bW5QaW5DaGFuZ2UnOlxuICAgICAgeWllbGQgY2hhbmdlQ29sdW1uUGluKHN0YXRlLCBjb2x1bW5zLCBhY3Rpb24uY29sdW1uLCBhY3Rpb24ucGlubmVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtbk9yZGVyQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbk9yZGVyKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgYWN0aW9uLnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGFjdGlvbi5uZXdJbmRleCxcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb2x1bW5FbmFibGVkQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbkVuYWJsZWQoc3RhdGUsIGNvbHVtbnMsIGFjdGlvbi5jb2x1bW4sIGFjdGlvbi5lbmFibGVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NvbHVtbldpZHRoQ2hhbmdlJzpcbiAgICAgIHlpZWxkIGNoYW5nZUNvbHVtbldpZHRoKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgYWN0aW9uLmNvbHVtbixcbiAgICAgICAgYWN0aW9uLnByZWZlcnJlZFdpZHRoLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NlbGVjdGlvbkNoYW5nZSc6XG4gICAgICB5aWVsZCB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3Rpb246IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Jvd1NlbGVjdGVkQ2hhbmdlJzpcbiAgICAgIHlpZWxkIHNldFJvd1NlbGVjdGVkKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgYWN0aW9uLmlkLFxuICAgICAgICBhY3Rpb24uc2VsZWN0ZWQsXG4gICAgICAgIGFjdGlvbi5jb250aWd1b3VzLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3BhZ2VTZWxlY3RlZENoYW5nZSc6XG4gICAgICB5aWVsZCB0b2dnbGVQYWdlU2VsZWN0ZWQoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYWxsU2VsZWN0ZWRDaGFuZ2UnOlxuICAgICAgeWllbGQgdG9nZ2xlQWxsU2VsZWN0ZWQoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3120,10 +3120,15 @@ var RivTable;
|
|
|
3120
3120
|
pageSize: s.result.totalMatchingRowCount,
|
|
3121
3121
|
} }), { type: 'load' }));
|
|
3122
3122
|
const fullColumns = resolveColumns(s, columns, options.allowSelection);
|
|
3123
|
-
const data = [
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3123
|
+
const data = [];
|
|
3124
|
+
data.push(fullColumns.map(({ name }) => name));
|
|
3125
|
+
for (const record of dataSet.currentPageData) {
|
|
3126
|
+
const row = [];
|
|
3127
|
+
for (const column of fullColumns) {
|
|
3128
|
+
row.push(yield __await(cellFormatter(record, column)));
|
|
3129
|
+
}
|
|
3130
|
+
data.push(row);
|
|
3131
|
+
}
|
|
3127
3132
|
yield yield __await({ loading: false, data });
|
|
3128
3133
|
});
|
|
3129
3134
|
}, csvFilename: ((_b = (_a = options === null || options === void 0 ? void 0 : options.csvFileBasename) === null || _a === void 0 ? void 0 : _a.slice(0, 200)) !== null && _b !== void 0 ? _b : pluralEntityName) +
|