@kontur.candy/tools 2.140.0 → 2.141.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/CHANGELOG.md +8 -0
- package/distr/Common/KCLangRuntimeUtils.js +10 -2
- package/distr/Common/UseShowOnce.js +88 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +2 -2
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +2 -2
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +381 -332
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +146 -102
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
<a name="2.141.0"></a>
|
|
2
|
+
# [2.141.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.140.0...release/tools/v2.141.0) (2022-12-16)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **Tools:** copying merge resources ([5e4131c](https://git.skbkontur.ru/ke/candy-utils/commit/5e4131c)), see [#6809](https://yt.skbkontur.ru/issue/FS-6809)
|
|
8
|
+
|
|
1
9
|
<a name="2.140.0"></a>
|
|
2
10
|
# [2.140.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.139.0...release/tools/v2.140.0) (2022-11-30)
|
|
3
11
|
|
|
@@ -122,6 +122,14 @@ class KCLangRuntimeUtils {
|
|
|
122
122
|
return undefined;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
floor(value) {
|
|
126
|
+
if (isBigSource(value)) {
|
|
127
|
+
return (0, _AutocalcCommonFunctions.wrapDecimalOperand)((0, _AutocalcCommonFunctions.wrapDecimalOperand)(value).round(undefined, 0));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
|
|
125
133
|
sum(left, right) {
|
|
126
134
|
if (!isBigOrNumber(left) && !isBigOrNumber(right)) {
|
|
127
135
|
return undefined;
|
|
@@ -239,11 +247,11 @@ class KCLangRuntimeUtils {
|
|
|
239
247
|
}
|
|
240
248
|
|
|
241
249
|
dateNow() {
|
|
242
|
-
return new Date().
|
|
250
|
+
return new Date().toLocaleDateString("ru-RU");
|
|
243
251
|
}
|
|
244
252
|
|
|
245
253
|
}
|
|
246
254
|
|
|
247
255
|
exports.KCLangRuntimeUtils = KCLangRuntimeUtils;
|
|
248
256
|
KCLangRuntimeUtils.kcLangUtilsName = "kcLangUtils";
|
|
249
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9LQ0xhbmdSdW50aW1lVXRpbHMudHMiXSwibmFtZXMiOlsiaXNCaWdTb3VyY2UiLCJ2YWx1ZSIsIkJpZyIsImlzQmlnT3JOdW1iZXIiLCJLQ0xhbmdSdW50aW1lVXRpbHMiLCJhbmQiLCJsZWZ0IiwicmlnaHQiLCJ1bmRlZmluZWQiLCJkaXZpc2lvbiIsImRpdiIsImVxIiwiY21wIiwiZ2UiLCJndGUiLCJndCIsImxlIiwibHRlIiwibHQiLCJtaW51cyIsImFyZ3VtZW50IiwibXVsIiwibXVsdGlwbHkiLCJub3QiLCJub3RlcSIsIm9yIiwicm91bmQiLCJmcmFjdGlvbkRpZ2l0cyIsInN1bSIsImFkZCIsImFicyIsInhhYnMiLCJsZW5ndGgiLCJleGlzdHMiLCJ2YWx1ZVNlbGVjdG9yIiwicGF0aCIsImNvbnZlcnRUb0RlY2ltYWwiLCJjb252ZXJ0VG9TdHJpbmciLCJ0b1N0cmluZyIsInJlZ2V4TWF0Y2giLCJwYXR0ZXJuIiwiUmVnRXhwIiwidGVzdCIsIm9uZW9mIiwidmFsdWVzIiwiaW5kZXhPZiIsInZhbHVlQXNCaWciLCJzb21lIiwiaXRlbSIsInN1YnN0cmluZyIsInN0ciIsInN0YXJ0IiwiZW5kIiwiZGF0ZU5vdyIsIkRhdGUiLCJ0b0xvY2FsZVN0cmluZyIsInJlcGxhY2UiLCJrY0xhbmdVdGlsc05hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUVBLE1BQU1BLFdBQVcsR0FBSUMsS0FBRCxJQUErQjtBQUMvQyxNQUFJLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkIsT0FBT0EsS0FBUCxLQUFpQixRQUE5QyxJQUEwREEsS0FBSyxZQUFZQyxZQUEvRSxFQUFvRjtBQUNoRixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPLEtBQVA7QUFDSCxDQUxEOztBQU9BLE1BQU1DLGFBQWEsR0FBSUYsS0FBRCxJQUNsQixPQUFPQSxLQUFQLEtBQWlCLFFBQWpCLElBQTZCQSxLQUFLLFlBQVlDLFlBRGxE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QSxhQUFPMkMsTUFBTSxDQUFDRyxJQUFQLENBQVlDLElBQUksSUFBSTdDLGFBQWEsQ0FBQzZDLElBQUQsQ0FBYixJQUF1QkYsVUFBVSxDQUFDbkMsRUFBWCxDQUFjcUMsSUFBZCxDQUEzQyxDQUFQO0FBQ0g7O0FBRUQsV0FBTyxLQUFQO0FBQ0g7O0FBRU1DLEVBQUFBLFNBQVMsQ0FDWkMsR0FEWSxFQUVaQyxLQUZZLEVBR1puQixNQUhZLEVBSU07QUFDbEIsUUFBSWtCLEdBQUcsSUFBSTFDLFNBQVAsSUFBb0IyQyxLQUFLLElBQUkzQyxTQUE3QixJQUEwQ3dCLE1BQU0sSUFBSXhCLFNBQXhELEVBQW1FO0FBQy9ELGFBQU9BLFNBQVA7QUFDSDs7QUFDRCxRQUFJd0IsTUFBTSxJQUFJLENBQWQsRUFBaUI7QUFDYixhQUFPLEVBQVA7QUFDSDs7QUFDRCxVQUFNb0IsR0FBRyxHQUFHRCxLQUFLLEdBQUduQixNQUFwQjtBQUVBLFdBQU9rQixHQUFHLENBQUNELFNBQUosQ0FBY0UsS0FBZCxFQUFxQkMsR0FBckIsQ0FBUDtBQUNIOztBQUNNQyxFQUFBQSxPQUFPLEdBQXVCO0FBQ2pDLFdBQU8sSUFBSUMsSUFBSixHQUFXQyxjQUFYLENBQTBCLE9BQTFCLEVBQW1DQyxPQUFuQyxDQUEyQyxHQUEzQyxFQUFnRCxFQUFoRCxDQUFQO0FBQ0g7O0FBNU0yQjs7O0FBQW5CcEQsa0IsQ0FDS3FELGUsR0FBa0IsYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWcsIHsgQmlnU291cmNlIH0gZnJvbSBcImJpZy5qc1wiO1xuXG5pbXBvcnQgeyB3cmFwRGVjaW1hbE9wZXJhbmQgfSBmcm9tIFwiLi4vRW5naW5lL3NyYy9IZWxwZXJzL0F1dG9jYWxjQ29tbW9uRnVuY3Rpb25zXCI7XG5cbmNvbnN0IGlzQmlnU291cmNlID0gKHZhbHVlOiBCaWdTb3VyY2UpOiBib29sZWFuID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJpZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNCaWdPck51bWJlciA9ICh2YWx1ZTogQmlnIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCB8IHVua25vd24pID0+XG4gICAgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHZhbHVlIGluc3RhbmNlb2YgQmlnO1xuXG5leHBvcnQgY2xhc3MgS0NMYW5nUnVudGltZVV0aWxzIHtcbiAgICBwdWJsaWMgc3RhdGljIGtjTGFuZ1V0aWxzTmFtZSA9IFwia2NMYW5nVXRpbHNcIjtcblxuICAgIHB1YmxpYyBhbmQobGVmdDogYm9vbGVhbiB8IHVuZGVmaW5lZCwgcmlnaHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGxlZnQgPT0gdW5kZWZpbmVkIHx8IHJpZ2h0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVmdCAmJiByaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGl2aXNpb24obGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5kaXYocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGVxKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHJpZ2h0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5jbXAocmlnaHQpID09PSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2UobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuZ3RlKHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGd0KGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmd0KHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGxlKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmx0ZShyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBsdChsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5sdChyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtaW51cyhhcmd1bWVudDogQmlnU291cmNlKTogdW5rbm93biB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQoYXJndW1lbnQpLm11bCgtMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbXVsdGlwbHkobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogdW5rbm93biB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkubXVsKHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3QobGVmdD86IGJvb2xlYW4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGxlZnQgIT0gdW5kZWZpbmVkID8gIWxlZnQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGVxKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZXEobGVmdCwgcmlnaHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcihsZWZ0OiBib29sZWFuIHwgdW5kZWZpbmVkLCByaWdodDogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT0gXCJib29sZWFuXCIgfHwgdHlwZW9mIHJpZ2h0ID09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdCB8fCByaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyByb3VuZCh2YWx1ZTogQmlnU291cmNlLCBmcmFjdGlvbkRpZ2l0cz86IG51bWJlcik6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQodmFsdWUpLnJvdW5kKGZyYWN0aW9uRGlnaXRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdW0obGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFpc0JpZ09yTnVtYmVyKGxlZnQpICYmICFpc0JpZ09yTnVtYmVyKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuYWRkKHJpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQocmlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzKGFyZ3VtZW50OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KS5hYnMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyB4YWJzKGFyZ3VtZW50OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHdyYXBEZWNpbWFsT3BlcmFuZChhcmd1bWVudCk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubHQoMCkgPyBuZXcgQmlnKDApIDogdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGVuZ3RoKGFyZ3VtZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50Lmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGlzdHModmFsdWVTZWxlY3RvcjogKHBhdGg6IHN0cmluZykgPT4gdW5rbm93biwgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZVNlbGVjdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlU2VsZWN0b3IocGF0aCk7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPSB1bmRlZmluZWQgJiYgdmFsdWUgIT0gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydFRvRGVjaW1hbChhcmd1bWVudDogQmlnU291cmNlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChhcmd1bWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnRUb1N0cmluZyhhcmd1bWVudDogQmlnU291cmNlIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyZ3VtZW50IGluc3RhbmNlb2YgQmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnQudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2V4TWF0Y2gocGF0dGVybjogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwYXR0ZXJuID09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybikudGVzdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25lb2YodmFsdWVzOiBBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBCaWc+LCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgQmlnKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnT3JOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUFzQmlnID0gbmV3IEJpZyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzLnNvbWUoaXRlbSA9PiBpc0JpZ09yTnVtYmVyKGl0ZW0pICYmIHZhbHVlQXNCaWcuZXEoaXRlbSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdWJzdHJpbmcoXG4gICAgICAgIHN0cjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBzdGFydDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgICAgICBsZW5ndGg6IG51bWJlciB8IHVuZGVmaW5lZFxuICAgICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChzdHIgPT0gdW5kZWZpbmVkIHx8IHN0YXJ0ID09IHVuZGVmaW5lZCB8fCBsZW5ndGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBsZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHB1YmxpYyBkYXRlTm93KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKFwiZW4tR0JcIikucmVwbGFjZShcIixcIiwgXCJcIik7XG4gICAgfVxufVxuIl19
|
|
257
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9LQ0xhbmdSdW50aW1lVXRpbHMudHMiXSwibmFtZXMiOlsiaXNCaWdTb3VyY2UiLCJ2YWx1ZSIsIkJpZyIsImlzQmlnT3JOdW1iZXIiLCJLQ0xhbmdSdW50aW1lVXRpbHMiLCJhbmQiLCJsZWZ0IiwicmlnaHQiLCJ1bmRlZmluZWQiLCJkaXZpc2lvbiIsImRpdiIsImVxIiwiY21wIiwiZ2UiLCJndGUiLCJndCIsImxlIiwibHRlIiwibHQiLCJtaW51cyIsImFyZ3VtZW50IiwibXVsIiwibXVsdGlwbHkiLCJub3QiLCJub3RlcSIsIm9yIiwicm91bmQiLCJmcmFjdGlvbkRpZ2l0cyIsImZsb29yIiwic3VtIiwiYWRkIiwiYWJzIiwieGFicyIsImxlbmd0aCIsImV4aXN0cyIsInZhbHVlU2VsZWN0b3IiLCJwYXRoIiwiY29udmVydFRvRGVjaW1hbCIsImNvbnZlcnRUb1N0cmluZyIsInRvU3RyaW5nIiwicmVnZXhNYXRjaCIsInBhdHRlcm4iLCJSZWdFeHAiLCJ0ZXN0Iiwib25lb2YiLCJ2YWx1ZXMiLCJpbmRleE9mIiwidmFsdWVBc0JpZyIsInNvbWUiLCJpdGVtIiwic3Vic3RyaW5nIiwic3RyIiwic3RhcnQiLCJlbmQiLCJkYXRlTm93IiwiRGF0ZSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImtjTGFuZ1V0aWxzTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRUEsTUFBTUEsV0FBVyxHQUFJQyxLQUFELElBQStCO0FBQy9DLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QixPQUFPQSxLQUFQLEtBQWlCLFFBQTlDLElBQTBEQSxLQUFLLFlBQVlDLFlBQS9FLEVBQW9GO0FBQ2hGLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU8sS0FBUDtBQUNILENBTEQ7O0FBT0EsTUFBTUMsYUFBYSxHQUFJRixLQUFELElBQ2xCLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLEtBQUssWUFBWUMsWUFE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LE9BQU9QLEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7QUFDM0IsYUFBTzRDLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlN0MsS0FBZixNQUEwQixDQUFDLENBQWxDO0FBQ0g7O0FBRUQsUUFBSUUsYUFBYSxDQUFDRixLQUFELENBQWpCLEVBQTBCO0FBQ3RCLFlBQU04QyxVQUFVLEdBQUcsSUFBSTdDLFlBQUosQ0FBUUQsS0FBUixDQUFuQjtBQUNBLGFBQU80QyxNQUFNLENBQUNHLElBQVAsQ0FBWUMsSUFBSSxJQUFJOUMsYUFBYSxDQUFDOEMsSUFBRCxDQUFiLElBQXVCRixVQUFVLENBQUNwQyxFQUFYLENBQWNzQyxJQUFkLENBQTNDLENBQVA7QUFDSDs7QUFFRCxXQUFPLEtBQVA7QUFDSDs7QUFFTUMsRUFBQUEsU0FBUyxDQUNaQyxHQURZLEVBRVpDLEtBRlksRUFHWm5CLE1BSFksRUFJTTtBQUNsQixRQUFJa0IsR0FBRyxJQUFJM0MsU0FBUCxJQUFvQjRDLEtBQUssSUFBSTVDLFNBQTdCLElBQTBDeUIsTUFBTSxJQUFJekIsU0FBeEQsRUFBbUU7QUFDL0QsYUFBT0EsU0FBUDtBQUNIOztBQUNELFFBQUl5QixNQUFNLElBQUksQ0FBZCxFQUFpQjtBQUNiLGFBQU8sRUFBUDtBQUNIOztBQUNELFVBQU1vQixHQUFHLEdBQUdELEtBQUssR0FBR25CLE1BQXBCO0FBRUEsV0FBT2tCLEdBQUcsQ0FBQ0QsU0FBSixDQUFjRSxLQUFkLEVBQXFCQyxHQUFyQixDQUFQO0FBQ0g7O0FBRU1DLEVBQUFBLE9BQU8sR0FBdUI7QUFDakMsV0FBTyxJQUFJQyxJQUFKLEdBQVdDLGtCQUFYLENBQThCLE9BQTlCLENBQVA7QUFDSDs7QUFwTjJCOzs7QUFBbkJwRCxrQixDQUNLcUQsZSxHQUFrQixhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZywgeyBCaWdTb3VyY2UgfSBmcm9tIFwiYmlnLmpzXCI7XG5cbmltcG9ydCB7IHdyYXBEZWNpbWFsT3BlcmFuZCB9IGZyb20gXCIuLi9FbmdpbmUvc3JjL0hlbHBlcnMvQXV0b2NhbGNDb21tb25GdW5jdGlvbnNcIjtcblxuY29uc3QgaXNCaWdTb3VyY2UgPSAodmFsdWU6IEJpZ1NvdXJjZSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHZhbHVlIGluc3RhbmNlb2YgQmlnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBpc0JpZ09yTnVtYmVyID0gKHZhbHVlOiBCaWcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsIHwgdW5rbm93bikgPT5cbiAgICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBCaWc7XG5cbmV4cG9ydCBjbGFzcyBLQ0xhbmdSdW50aW1lVXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMga2NMYW5nVXRpbHNOYW1lID0gXCJrY0xhbmdVdGlsc1wiO1xuXG4gICAgcHVibGljIGFuZChsZWZ0OiBib29sZWFuIHwgdW5kZWZpbmVkLCByaWdodDogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAobGVmdCA9PSB1bmRlZmluZWQgfHwgcmlnaHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsZWZ0ICYmIHJpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXZpc2lvbihsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmRpdihyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXEobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2YgbGVmdCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgcmlnaHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0ID09PSByaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmNtcChyaWdodCkgPT09IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5ndGUocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ3QobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuZ3QocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGUobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkubHRlKHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGx0KGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmx0KHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIG1pbnVzKGFyZ3VtZW50OiBCaWdTb3VyY2UpOiB1bmtub3duIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGFyZ3VtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChhcmd1bWVudCkubXVsKC0xKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBtdWx0aXBseShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiB1bmtub3duIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5tdWwocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdChsZWZ0PzogYm9vbGVhbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbGVmdCAhPSB1bmRlZmluZWQgPyAhbGVmdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90ZXEobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5lcShsZWZ0LCByaWdodCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yKGxlZnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsIHJpZ2h0OiBib29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0eXBlb2YgbGVmdCA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgcmlnaHQgPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0IHx8IHJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHJvdW5kKHZhbHVlOiBCaWdTb3VyY2UsIGZyYWN0aW9uRGlnaXRzPzogbnVtYmVyKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZCh2YWx1ZSkucm91bmQoZnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGZsb29yKHZhbHVlOiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKHdyYXBEZWNpbWFsT3BlcmFuZCh2YWx1ZSkucm91bmQodW5kZWZpbmVkLCAwKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3VtKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghaXNCaWdPck51bWJlcihsZWZ0KSAmJiAhaXNCaWdPck51bWJlcihyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmFkZChyaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKHJpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFicyhhcmd1bWVudDogQmlnU291cmNlKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGFyZ3VtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChhcmd1bWVudCkuYWJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgeGFicyhhcmd1bWVudDogQmlnU291cmNlKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGFyZ3VtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB3cmFwRGVjaW1hbE9wZXJhbmQoYXJndW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmx0KDApID8gbmV3IEJpZygwKSA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGxlbmd0aChhcmd1bWVudDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhpc3RzKHZhbHVlU2VsZWN0b3I6IChwYXRoOiBzdHJpbmcpID0+IHVua25vd24sIHBhdGg6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWVTZWxlY3RvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZVNlbGVjdG9yKHBhdGgpO1xuICAgICAgICByZXR1cm4gdmFsdWUgIT0gdW5kZWZpbmVkICYmIHZhbHVlICE9IFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnRUb0RlY2ltYWwoYXJndW1lbnQ6IEJpZ1NvdXJjZSB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQoYXJndW1lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb252ZXJ0VG9TdHJpbmcoYXJndW1lbnQ6IEJpZ1NvdXJjZSB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnQudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcmd1bWVudCBpbnN0YW5jZW9mIEJpZykge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdleE1hdGNoKHBhdHRlcm46IHN0cmluZyB8IHVuZGVmaW5lZCwgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocGF0dGVybiA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4pLnRlc3QodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uZW9mKHZhbHVlczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgQmlnPiwgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IEJpZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWVzID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzLmluZGV4T2YodmFsdWUpICE9PSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0JpZ09yTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVBc0JpZyA9IG5ldyBCaWcodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5zb21lKGl0ZW0gPT4gaXNCaWdPck51bWJlcihpdGVtKSAmJiB2YWx1ZUFzQmlnLmVxKGl0ZW0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3Vic3RyaW5nKFxuICAgICAgICBzdHI6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgc3RhcnQ6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICAgICAgbGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoc3RyID09IHVuZGVmaW5lZCB8fCBzdGFydCA9PSB1bmRlZmluZWQgfHwgbGVuZ3RoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgbGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkYXRlTm93KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhcInJ1LVJVXCIpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useShowOnce = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _MetricsProviderContext = require("../Engine/src/Controls/Internals/Metrics/MetricsProviderContext");
|
|
13
|
+
|
|
14
|
+
var _UseAsyncEffect = require("./UseAsyncEffect");
|
|
15
|
+
|
|
16
|
+
var _NidusClientContext = require("./NidusClient/NidusClientContext");
|
|
17
|
+
|
|
18
|
+
const useShowOnce = props => {
|
|
19
|
+
const [isOpen, setIsOpen] = _react.default.useState(false);
|
|
20
|
+
|
|
21
|
+
const [isSaveInNidus, setIsSaveInNidus] = _react.default.useState(false);
|
|
22
|
+
|
|
23
|
+
const nidus = (0, _NidusClientContext.useNidusClient)();
|
|
24
|
+
const track = (0, _MetricsProviderContext.useMetrics)();
|
|
25
|
+
const nidusName = props.nidusName;
|
|
26
|
+
const nidusKey = props.nidusKey;
|
|
27
|
+
const info = {
|
|
28
|
+
name: props.infoName,
|
|
29
|
+
date: new Date().toUTCString()
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
async function addToNidus() {
|
|
33
|
+
track(props.metricsName, {
|
|
34
|
+
from: props.metricsInfo
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
if (isSaveInNidus) {
|
|
38
|
+
await nidus.insert(nidusName, nidusKey, info);
|
|
39
|
+
setIsSaveInNidus(false);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async function searchInNidusById(id) {
|
|
44
|
+
const result = await nidus.search(nidusName, nidusKey, id);
|
|
45
|
+
|
|
46
|
+
if (result.totalSuitableCount === 0) {
|
|
47
|
+
setIsSaveInNidus(true);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
(0, _UseAsyncEffect.useAsyncEffect)(async () => {
|
|
54
|
+
await searchInNidusById(info.name).then(result => {
|
|
55
|
+
const itemsCount = result.items.length;
|
|
56
|
+
|
|
57
|
+
if (itemsCount === 0) {
|
|
58
|
+
setIsOpen(true);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}, []);
|
|
62
|
+
|
|
63
|
+
async function addToNidusFromLink() {
|
|
64
|
+
if (isSaveInNidus) {
|
|
65
|
+
await nidus.insert(nidusName, nidusKey, info);
|
|
66
|
+
setIsSaveInNidus(false);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
(0, _UseAsyncEffect.useAsyncEffect)(async () => {
|
|
71
|
+
if (props.openFromLink) {
|
|
72
|
+
await addToNidusFromLink();
|
|
73
|
+
}
|
|
74
|
+
}, [props.openFromLink]);
|
|
75
|
+
|
|
76
|
+
if (props.openFromLink) {
|
|
77
|
+
setIsOpen(isOpen && !props.openFromLink);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
isOpen: isOpen,
|
|
82
|
+
setIsOpen: setIsOpen,
|
|
83
|
+
addToNidus: addToNidus
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
exports.useShowOnce = useShowOnce;
|
|
88
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9Vc2VTaG93T25jZS50cyJdLCJuYW1lcyI6WyJ1c2VTaG93T25jZSIsInByb3BzIiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImlzU2F2ZUluTmlkdXMiLCJzZXRJc1NhdmVJbk5pZHVzIiwibmlkdXMiLCJ0cmFjayIsIm5pZHVzTmFtZSIsIm5pZHVzS2V5IiwiaW5mbyIsIm5hbWUiLCJpbmZvTmFtZSIsImRhdGUiLCJEYXRlIiwidG9VVENTdHJpbmciLCJhZGRUb05pZHVzIiwibWV0cmljc05hbWUiLCJmcm9tIiwibWV0cmljc0luZm8iLCJpbnNlcnQiLCJzZWFyY2hJbk5pZHVzQnlJZCIsImlkIiwicmVzdWx0Iiwic2VhcmNoIiwidG90YWxTdWl0YWJsZUNvdW50IiwidGhlbiIsIml0ZW1zQ291bnQiLCJpdGVtcyIsImxlbmd0aCIsImFkZFRvTmlkdXNGcm9tTGluayIsIm9wZW5Gcm9tTGluayJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBaUJPLE1BQU1BLFdBQVcsR0FBSUMsS0FBRCxJQUE2QjtBQUNwRCxRQUFNLENBQUNDLE1BQUQsRUFBU0MsU0FBVCxJQUFzQkMsZUFBTUMsUUFBTixDQUF3QixLQUF4QixDQUE1Qjs7QUFDQSxRQUFNLENBQUNDLGFBQUQsRUFBZ0JDLGdCQUFoQixJQUFvQ0gsZUFBTUMsUUFBTixDQUF3QixLQUF4QixDQUExQzs7QUFDQSxRQUFNRyxLQUFLLEdBQUcseUNBQWQ7QUFDQSxRQUFNQyxLQUFLLEdBQUcseUNBQWQ7QUFFQSxRQUFNQyxTQUFTLEdBQUdULEtBQUssQ0FBQ1MsU0FBeEI7QUFDQSxRQUFNQyxRQUFRLEdBQUdWLEtBQUssQ0FBQ1UsUUFBdkI7QUFDQSxRQUFNQyxJQUFVLEdBQUc7QUFDZkMsSUFBQUEsSUFBSSxFQUFFWixLQUFLLENBQUNhLFFBREc7QUFFZkMsSUFBQUEsSUFBSSxFQUFFLElBQUlDLElBQUosR0FBV0MsV0FBWDtBQUZTLEdBQW5COztBQUtBLGlCQUFlQyxVQUFmLEdBQTRCO0FBQ3hCVCxJQUFBQSxLQUFLLENBQUNSLEtBQUssQ0FBQ2tCLFdBQVAsRUFBb0I7QUFDckJDLE1BQUFBLElBQUksRUFBRW5CLEtBQUssQ0FBQ29CO0FBRFMsS0FBcEIsQ0FBTDs7QUFJQSxRQUFJZixhQUFKLEVBQW1CO0FBQ2YsWUFBTUUsS0FBSyxDQUFDYyxNQUFOLENBQWFaLFNBQWIsRUFBd0JDLFFBQXhCLEVBQWtDQyxJQUFsQyxDQUFOO0FBQ0FMLE1BQUFBLGdCQUFnQixDQUFDLEtBQUQsQ0FBaEI7QUFDSDtBQUNKOztBQUVELGlCQUFlZ0IsaUJBQWYsQ0FBaUNDLEVBQWpDLEVBQTZDO0FBQ3pDLFVBQU1DLE1BQU0sR0FBRyxNQUFNakIsS0FBSyxDQUFDa0IsTUFBTixDQUFhaEIsU0FBYixFQUF3QkMsUUFBeEIsRUFBa0NhLEVBQWxDLENBQXJCOztBQUNBLFFBQUlDLE1BQU0sQ0FBQ0Usa0JBQVAsS0FBOEIsQ0FBbEMsRUFBcUM7QUFDakNwQixNQUFBQSxnQkFBZ0IsQ0FBQyxJQUFELENBQWhCO0FBQ0g7O0FBQ0QsV0FBT2tCLE1BQVA7QUFDSDs7QUFFRCxzQ0FBZSxZQUFZO0FBQ3ZCLFVBQU1GLGlCQUFpQixDQUFDWCxJQUFJLENBQUNDLElBQU4sQ0FBakIsQ0FBNkJlLElBQTdCLENBQWtDSCxNQUFNLElBQUk7QUFDOUMsWUFBTUksVUFBVSxHQUFHSixNQUFNLENBQUNLLEtBQVAsQ0FBYUMsTUFBaEM7O0FBQ0EsVUFBSUYsVUFBVSxLQUFLLENBQW5CLEVBQXNCO0FBQ2xCMUIsUUFBQUEsU0FBUyxDQUFDLElBQUQsQ0FBVDtBQUNIO0FBQ0osS0FMSyxDQUFOO0FBTUgsR0FQRCxFQU9HLEVBUEg7O0FBU0EsaUJBQWU2QixrQkFBZixHQUFvQztBQUNoQyxRQUFJMUIsYUFBSixFQUFtQjtBQUNmLFlBQU1FLEtBQUssQ0FBQ2MsTUFBTixDQUFhWixTQUFiLEVBQXdCQyxRQUF4QixFQUFrQ0MsSUFBbEMsQ0FBTjtBQUNBTCxNQUFBQSxnQkFBZ0IsQ0FBQyxLQUFELENBQWhCO0FBQ0g7QUFDSjs7QUFFRCxzQ0FBZSxZQUFZO0FBQ3ZCLFFBQUlOLEtBQUssQ0FBQ2dDLFlBQVYsRUFBd0I7QUFDcEIsWUFBTUQsa0JBQWtCLEVBQXhCO0FBQ0g7QUFDSixHQUpELEVBSUcsQ0FBQy9CLEtBQUssQ0FBQ2dDLFlBQVAsQ0FKSDs7QUFNQSxNQUFJaEMsS0FBSyxDQUFDZ0MsWUFBVixFQUF3QjtBQUNwQjlCLElBQUFBLFNBQVMsQ0FBQ0QsTUFBTSxJQUFJLENBQUNELEtBQUssQ0FBQ2dDLFlBQWxCLENBQVQ7QUFDSDs7QUFFRCxTQUFPO0FBQUUvQixJQUFBQSxNQUFNLEVBQUVBLE1BQVY7QUFBa0JDLElBQUFBLFNBQVMsRUFBRUEsU0FBN0I7QUFBd0NlLElBQUFBLFVBQVUsRUFBRUE7QUFBcEQsR0FBUDtBQUNILENBM0RNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyB1c2VNZXRyaWNzIH0gZnJvbSBcIi4uL0VuZ2luZS9zcmMvQ29udHJvbHMvSW50ZXJuYWxzL01ldHJpY3MvTWV0cmljc1Byb3ZpZGVyQ29udGV4dFwiO1xuXG5pbXBvcnQgeyB1c2VBc3luY0VmZmVjdCB9IGZyb20gXCIuL1VzZUFzeW5jRWZmZWN0XCI7XG5pbXBvcnQgeyB1c2VOaWR1c0NsaWVudCB9IGZyb20gXCIuL05pZHVzQ2xpZW50L05pZHVzQ2xpZW50Q29udGV4dFwiO1xuaW1wb3J0IHsgTmlkdXNFbnRyeURhdGEgfSBmcm9tIFwiLi9OaWR1c0NsaWVudC9JTmlkdXNDbGllbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSB1c2VTaG93T25jZVByb3BzIHtcbiAgICBuaWR1c05hbWU6IHN0cmluZztcbiAgICBuaWR1c0tleTogc3RyaW5nO1xuICAgIGluZm9OYW1lOiBzdHJpbmc7XG4gICAgbWV0cmljc05hbWU6IHN0cmluZztcbiAgICBtZXRyaWNzSW5mbzogc3RyaW5nO1xuICAgIG9wZW5Gcm9tTGluaz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5mbyBleHRlbmRzIE5pZHVzRW50cnlEYXRhIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGF0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgdXNlU2hvd09uY2UgPSAocHJvcHM6IHVzZVNob3dPbmNlUHJvcHMpID0+IHtcbiAgICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gUmVhY3QudXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIGNvbnN0IFtpc1NhdmVJbk5pZHVzLCBzZXRJc1NhdmVJbk5pZHVzXSA9IFJlYWN0LnVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgICBjb25zdCBuaWR1cyA9IHVzZU5pZHVzQ2xpZW50KCk7XG4gICAgY29uc3QgdHJhY2sgPSB1c2VNZXRyaWNzKCk7XG5cbiAgICBjb25zdCBuaWR1c05hbWUgPSBwcm9wcy5uaWR1c05hbWU7XG4gICAgY29uc3QgbmlkdXNLZXkgPSBwcm9wcy5uaWR1c0tleTtcbiAgICBjb25zdCBpbmZvOiBJbmZvID0ge1xuICAgICAgICBuYW1lOiBwcm9wcy5pbmZvTmFtZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKS50b1VUQ1N0cmluZygpLFxuICAgIH07XG5cbiAgICBhc3luYyBmdW5jdGlvbiBhZGRUb05pZHVzKCkge1xuICAgICAgICB0cmFjayhwcm9wcy5tZXRyaWNzTmFtZSwge1xuICAgICAgICAgICAgZnJvbTogcHJvcHMubWV0cmljc0luZm8sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc1NhdmVJbk5pZHVzKSB7XG4gICAgICAgICAgICBhd2FpdCBuaWR1cy5pbnNlcnQobmlkdXNOYW1lLCBuaWR1c0tleSwgaW5mbyk7XG4gICAgICAgICAgICBzZXRJc1NhdmVJbk5pZHVzKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHNlYXJjaEluTmlkdXNCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbmlkdXMuc2VhcmNoKG5pZHVzTmFtZSwgbmlkdXNLZXksIGlkKTtcbiAgICAgICAgaWYgKHJlc3VsdC50b3RhbFN1aXRhYmxlQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHNldElzU2F2ZUluTmlkdXModHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICB1c2VBc3luY0VmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHNlYXJjaEluTmlkdXNCeUlkKGluZm8ubmFtZSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbXNDb3VudCA9IHJlc3VsdC5pdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoaXRlbXNDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHNldElzT3Blbih0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgW10pO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gYWRkVG9OaWR1c0Zyb21MaW5rKCkge1xuICAgICAgICBpZiAoaXNTYXZlSW5OaWR1cykge1xuICAgICAgICAgICAgYXdhaXQgbmlkdXMuaW5zZXJ0KG5pZHVzTmFtZSwgbmlkdXNLZXksIGluZm8pO1xuICAgICAgICAgICAgc2V0SXNTYXZlSW5OaWR1cyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VBc3luY0VmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5vcGVuRnJvbUxpbmspIHtcbiAgICAgICAgICAgIGF3YWl0IGFkZFRvTmlkdXNGcm9tTGluaygpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLm9wZW5Gcm9tTGlua10pO1xuXG4gICAgaWYgKHByb3BzLm9wZW5Gcm9tTGluaykge1xuICAgICAgICBzZXRJc09wZW4oaXNPcGVuICYmICFwcm9wcy5vcGVuRnJvbUxpbmspO1xuICAgIH1cblxuICAgIHJldHVybiB7IGlzT3BlbjogaXNPcGVuLCBzZXRJc09wZW46IHNldElzT3BlbiwgYWRkVG9OaWR1czogYWRkVG9OaWR1cyB9O1xufTtcbiJdfQ==
|
|
@@ -200,7 +200,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
200
200
|
} else {
|
|
201
201
|
return new _SingleValueProducer.SingleValueProducer("");
|
|
202
202
|
}
|
|
203
|
-
}).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => {
|
|
203
|
+
}).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "mergers"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MERGERS"), x, _path.default.join(resourcesDirectory, "mergers")))).attach(async fi => {
|
|
204
204
|
const modifier = content => content.replace(/<x:include href="[./]+/g, '<x:include href="');
|
|
205
205
|
|
|
206
206
|
return _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.modifyFilesContent((0, _StaticLogger.getLogger)().withPrefix("FIX-XSLT-INCLUDE"), x, _path.default.join(resourcesDirectory, "converters"), "**/*.xslt", modifier));
|
|
@@ -262,4 +262,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
|
|
|
262
262
|
await (0, _fsExtra.emptyDir)(resourcesDirectory);
|
|
263
263
|
logger.log("Resource directory clean");
|
|
264
264
|
}
|
|
265
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJjb3B5RmlsZSIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxtQkFBVCxDQUE2QkMsZUFBN0IsRUFBdUU7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SUFBSSxDQUFDQyxHQUFMLEVBQWxCOztBQUNBLFFBQUk7QUFDQSxVQUFJL0YsT0FBTyxDQUFDcUYsS0FBWixFQUFtQjtBQUNmLGNBQU1DLG9CQUFvQixDQUFDcEYsa0JBQUQsRUFBcUJILE9BQU8sQ0FBQ2lCLE1BQTdCLENBQTFCO0FBQ0g7O0FBQ0QsWUFBTVQsY0FBYyxDQUFDeUYsWUFBckI7QUFDQSxZQUFNMUUsaUNBQWlDLENBQUMwRSxZQUF4QztBQUNBLFlBQU14RSxvQkFBb0IsQ0FBQ3dFLFlBQTNCO0FBQ0EsWUFBTWpFLGVBQWUsQ0FBQ2lFLFlBQXRCLENBUEEsQ0FRQTs7QUFDQUMsTUFBQUEsT0FBTyxDQUFDaEMsR0FBUixDQUFZaUMsZUFBTUMsV0FBTixDQUFrQixlQUFsQixDQUFaO0FBQ0gsS0FWRCxTQVVVO0FBQ04sWUFBTUMsU0FBUyxHQUFHTixJQUFJLENBQUNDLEdBQUwsS0FBYUYsU0FBL0IsQ0FETSxDQUVOOztBQUNBSSxNQUFBQSxPQUFPLENBQUNoQyxHQUFSLENBQWEsZUFBYyw0QkFBVW1DLFNBQVYsQ0FBcUIsRUFBaEQ7QUFDSDtBQUNKO0FBQ0o7O0FBRUQsZUFBZWQsb0JBQWYsQ0FBb0NwRixrQkFBcEMsRUFBZ0VjLE1BQWhFLEVBQWdHO0FBQzVGQSxFQUFBQSxNQUFNLENBQUNpRCxHQUFQLENBQVcsa0NBQWtDL0Qsa0JBQTdDO0FBQ0EsUUFBTSx1QkFBU0Esa0JBQVQsQ0FBTjtBQUNBYyxFQUFBQSxNQUFNLENBQUNpRCxHQUFQLENBQVcsMEJBQVg7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGVtcHR5RGlyLCBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbm90aWZpZXIgZnJvbSBcIm5vZGUtbm90aWZpZXJcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgZ2V0RW5naW5lU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0VuZ2luZVNvdXJjZVwiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgTnVsbEZvcm1HZW5lcmF0b3IgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL051bGxGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7XG4gICAgZ2VuZXJhdG9yRmFjdG9yeSxcbiAgICBHZW5lcmF0b3JTb3VyY2UsXG4gICAgZ2V0R2VuZXJhdG9yU291cmNlS2V5LFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uLCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkTW9kZSwgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgU2luZ2xlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9TaW5nbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5cbmltcG9ydCB7IEJ1aWxkRm9ybXNPcHRpb25zIH0gZnJvbSBcIi4vQnVpbGRGb3Jtc09wdGlvbnNcIjtcblxuZnVuY3Rpb24gZ2V0R2VuZXJhdG9yVmVyc2lvbihnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKGdlbmVyYXRvclNvdXJjZS50eXBlID09PSBcIlB1Ymxpc2hlZEdlbmVyYXRvclwiKSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkJ1aWxkRm9ybXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBCdWlsZEZvcm1zT3B0aW9ucyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMudmFsaWRhdGVHbG9icyhcbiAgICAgICAgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVTcGVjaWZpZXJzKGJ1aWxkT3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpLFxuICAgICAgICBmYXJtRGlyZWN0b3J5XG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUHJvZHVjdGlvblJlc291cmNlc0RpclwiKSxcbiAgICAgICAgXCIqLmpzXCIsXG4gICAgICAgIFwiKi5qcy5tYXBcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc291cmNlc051U3BlY0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSksIFwiKi5udXNwZWNcIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weUJ5TWFza3MoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5VU1BFQ1wiKSwgeCwgW1wiKi5udXNwZWNcIl0sIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnkpKVxuICAgICk7XG5cbiAgICBjb25zdCBjb3BpZWRFbmdpbmVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCBidWlsZENhY2hlID0gbmV3IEJ1aWxkQ2FjaGUoZmFybURpcmVjdG9yeSwgb3B0aW9ucy5idWlsZENhY2hlTW9kZSk7XG4gICAgY29uc3QgYnVpbGRGb3Jtc0NoYWluID0gT2JzZXJ2ZS5kaXJlY3RvcnkocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiksIGZvcm1HbG9icykuc3BsaXRUb1BhcmFsbGVsQ2hhaW5zKFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgYXN5bmMgZ2Z2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcblxuICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpKSkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53YXJuaW5nKFxuICAgICAgICAgICAgICAgICAgICBgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb24gZmlsZS4gVG8gaW5jbHVkZSB0aGlzIGZvcm0gdG8gYnVpbGQgcHJvY2VzcyByZXN0YXJ0IGJ1aWxkYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUudmFsdWUoe30pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUZvcm1JbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUpzb25GaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGdyYWRlRm9ybUpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZUxhc3RTdGFibGVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VQcmVyZWxlYXNlVmVyc2lvblxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZW5naW5lVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IGF3YWl0IHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oZmkuZW5naW5lVmVyc2lvbiwgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChnZnYpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIobmV3IE51bGxGb3JtR2VuZXJhdG9yKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yRmFjdG9yeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclNvdXJjZSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIk51bGxGb3JtR2VuZXJhdG9yXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiTnVsbEVuZ2luZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmdpbmVGYWN0b3J5KGZpLmVuZ2luZVNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBvcHRpb25zLnVzZVZlcnNpb25Gcm9tQ2FjaGUpLmRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvcGllZEVuZ2luZXMuaGFzKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRU5HSU5FXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwdWJsaWNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWRFbmdpbmVzLmFkZChnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBmaSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gKGZpLmVuZ2luZVNvdXJjZSAhPSB1bmRlZmluZWQgPyBnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSA6IFwiTnVsbEVuZ2luZVwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4veHNsdFRlbXBsYXRlcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2pzSGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNjaGVtYXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdWdhci8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXV0b2NhbGMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsaWRhdGlvbnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsb2NhbGl6YXRpb24vKiovKlwiXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlICE9PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGZpLmdlbmVyYXRvci5zdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaCA9IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBkZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgYnVpbGRDYWNoZS5leGlzdHMoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgR0VORVJBVEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCA/PyBcIlVuZGVmaW5lZFJlc291cmNlc0hhc2hcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgYnVpbGRDYWNoZS5leGlzdHMoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgQ09NUElMRToke2dmdn1gKS5sb2coXCJTa2lwcGVkIGR1ZSBidWlsZCBjYWNoZSBleGlzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRDYWNoZS5leHRyYWN0KGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoLCByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNvbXBpbGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRm9ybU1ldGEoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImxlZ2FjeS1wcmVidWlsdFwiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTEVHQUNZLVBSRUJVSUxUXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5yZXBsYWNlKC88eDppbmNsdWRlIGhyZWY9XCJbLi9dKy9nLCAnPHg6aW5jbHVkZSBocmVmPVwiJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5tb2RpZnlGaWxlc0NvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkZJWC1YU0xULUlOQ0xVREVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKi8qLnhzbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiLi5cIiwgXCIuLlwiLCBcInhzbHRUZW1wbGF0ZXNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJYU0xULVRFTVBMQVRFU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiLCBcInhzbHRUZW1wbGF0ZXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKSkuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQUkVTRU5UQVRJT05TXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwcmVzZW50YXRpb25zXCIsIGAke2dmdn0ucHJlc2VudGF0aW9ucy5qc29uYClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubm90aWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7ZmkuZm9ybU5hbWV9OiDRgdCx0L7RgNC60LAg0LfQsNCy0LXRgNGI0LXQvdCwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRW5naW5lOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UgPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiW05vRW5naW5lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS50eXBlID09PSBcIkxvY2FsRW5naW5lU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNCA9IGF3YWl0IHJlc291cmNlc051U3BlY0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuICAgICAgICBpZiAoc3RvcE9ic2VydmUzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlNCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1zQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUb3RhbCB0aW1lOiAke3ByaW50VGltZSh0b3RhbFRpbWUpfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmxvZyhcIkNsZWFuaW5nIHJlc291cmNlIGRpcmVjdG9yeS4gXCIgKyByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGF3YWl0IGVtcHR5RGlyKHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgbG9nZ2VyLmxvZyhcIlJlc291cmNlIGRpcmVjdG9yeSBjbGVhblwiKTtcbn1cbiJdfQ==
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJjb3B5RmlsZSIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxtQkFBVCxDQUE2QkMsZUFBN0IsRUFBdUU7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QU0sQ0FBQ2lELEdBQVAsQ0FBVywwQkFBWDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgZW1wdHlEaXIsIHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBub3RpZmllciBmcm9tIFwibm9kZS1ub3RpZmllclwiO1xuXG5pbXBvcnQgeyBlbmdpbmVGYWN0b3J5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0FjcXVpcmVGb3JtRW5naW5lXCI7XG5pbXBvcnQgeyBnZXRFbmdpbmVTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvRW5naW5lU291cmNlXCI7XG5pbXBvcnQgeyBjb21waWxlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm1cIjtcbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBOdWxsRm9ybUdlbmVyYXRvciB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vTnVsbEZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHtcbiAgICBnZW5lcmF0b3JGYWN0b3J5LFxuICAgIEdlbmVyYXRvclNvdXJjZSxcbiAgICBnZXRHZW5lcmF0b3JTb3VyY2VLZXksXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZ2luZVZlcnNpb24sIHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRNb2RlLCByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBTaW5nbGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL1NpbmdsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IHByaW50VGltZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1RpbWluZ1V0aWxzXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmRpcmVjdG9yeShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBnZnYgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi94c2x0VGVtcGxhdGVzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vanNIZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgIT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgZmkuZ2VuZXJhdG9yLnN1cHBvcnRzRGVwZW5kZW5jaWVzRXh0cmFjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoID0gYXdhaXQgZmkuZ2VuZXJhdG9yLmdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBidWlsZENhY2hlLmV4aXN0cyhmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBHRU5FUkFURToke2dmdn1gKS5sb2coXCJTa2lwcGVkIGR1ZSBidWlsZCBjYWNoZSBleGl0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoID8/IFwiVW5kZWZpbmVkUmVzb3VyY2VzSGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBidWlsZENhY2hlLmV4aXN0cyhmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBDT01QSUxFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXN0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBidWlsZENhY2hlLmV4dHJhY3QoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gsIHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29tcGlsZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGb3JtTWV0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Db3B5TGVnYWN5UHJlYnVpbHRSZXNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibGVnYWN5LXByZWJ1aWx0XCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJMRUdBQ1ktUFJFQlVJTFRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwic2NoZW1hc1wiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RpZmllciA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQucmVwbGFjZSgvPHg6aW5jbHVkZSBocmVmPVwiWy4vXSsvZywgJzx4OmluY2x1ZGUgaHJlZj1cIicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2subW9kaWZ5RmlsZXNDb250ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJGSVgtWFNMVC1JTkNMVURFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKiovKi54c2x0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJ4c2x0VGVtcGxhdGVzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiWFNMVC1URU1QTEFURVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiwgXCJ4c2x0VGVtcGxhdGVzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwcmVzZW50YXRpb25zLmpzb25cIikpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5RmlsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUFJFU0VOVEFUSU9OU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHJlc2VudGF0aW9uc1wiLCBgJHtnZnZ9LnByZXNlbnRhdGlvbnMuanNvbmApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyLm5vdGlmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2ZpLmZvcm1OYW1lfTog0YHQsdC+0YDQutCwINC30LDQstC10YDRiNC10L3QsGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEVuZ2luZTogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlID09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIltOb0VuZ2luZV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlMyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzTnVTcGVjQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXX0=
|
|
@@ -75,7 +75,7 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
75
75
|
skipCodeReformatting: options.skipGeneratedCodeReformatting,
|
|
76
76
|
resourcesHash: fi.dependenciesHash
|
|
77
77
|
});
|
|
78
|
-
}).attach(async fi => _Observe.Observe.files(_path.default.join(formDirPath, "form"), "**/*")).do(fi => (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, fi.dependenciesHash, options.buildDebugOnly)).do(fi => (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, fi.dependenciesHash, fi.themes)).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.rng.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.file(_path.default.join(fi.formSourcesPath, "presentations.json")).do(x => _FSTask.FSTask.copyFile((0, _StaticLogger.getLogger)().withPrefix("PRESENTATIONS"), x, _path.default.join(resourcesDirectory, "presentations", `${gfv}.presentations.json`)))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap"))));
|
|
78
|
+
}).attach(async fi => _Observe.Observe.files(_path.default.join(formDirPath, "form"), "**/*")).do(fi => (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, fi.dependenciesHash, options.buildDebugOnly)).do(fi => (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, fi.dependenciesHash, fi.themes)).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.rng.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "mergers"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MERGERS"), x, _path.default.join(resourcesDirectory, "mergers")))).attach(async fi => _Observe.Observe.file(_path.default.join(fi.formSourcesPath, "presentations.json")).do(x => _FSTask.FSTask.copyFile((0, _StaticLogger.getLogger)().withPrefix("PRESENTATIONS"), x, _path.default.join(resourcesDirectory, "presentations", `${gfv}.presentations.json`)))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap"))));
|
|
79
79
|
});
|
|
80
80
|
|
|
81
81
|
if (devBuildOptions.watch) {
|
|
@@ -109,4 +109,4 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
109
109
|
console.log(`${_chalk.default.greenBright("Build success")} Total time: ${(0, _TimingUtils.printTime)(totalTime)}`);
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9EZXZCdWlsZC9SdW5EZXZCdWlsZC50cyJdLCJuYW1lcyI6WyJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkRW5naW5lQ2hhaW4iLCJjaGFpbldpdGgiLCJwIiwiQnVpbGRMb2NhbEVuZ2luZVRhc2siLCJidWlsZERlYnVnT25seSIsImNsaWVudFdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRDbGllbnRKc0NoYWluIiwiQnVpbGRDbGllbnRKc1Rhc2siLCJzdGF0aWNSZXNvdXJjZXNDaGFpbiIsIk9ic2VydmUiLCJmaWxlcyIsInBhdGgiLCJqb2luIiwiX19kaXJuYW1lIiwiZG8iLCJ4IiwiRlNUYXNrIiwiY29weVJlY3Vyc2l2ZWx5Iiwid2l0aFByZWZpeCIsInBpY2tMaXN0c0NoYWluIiwibG9nZ2VyIiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiZmkiLCJ1bmRlZmluZWQiLCJ5IiwiZ2VuZXJhdG9yIiwiZm9ybVNvdXJjZXNQYXRoIiwiZGVwZW5kZW5jaWVzSGFzaCIsImdldEFsbERlcGVuZGVuY2llc0hhc2giLCJza2lwR2VuZXJhdGlvbiIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJjb3B5RmlsZSIsIndhdGNoIiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsIlByb21pc2UiLCJhbGwiLCJjdXJyZW50VmFsdWUiLCJlIiwiY29udGludWVPbkVycm9yIiwiZXJyb3IiLCJ0b3RhbFRpbWUiLCJjb25zb2xlIiwibG9nIiwiY2hhbGsiLCJncmVlbkJyaWdodCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSU8sZUFBZUEsV0FBZixDQUNIQyxPQURHLEVBRUhDLE9BRkcsRUFHSEMsZUFIRyxFQUlIQyxrQkFKRyxFQUtIQyxhQUxHLEVBTUhDLHFCQU5HLEVBT0hDLG1CQVBHLEVBUVU7QUFDYixRQUFNQyxlQUFlLEdBQUdOLE9BQXhCO0FBRUEsUUFBTU8sdUJBQXVCLEdBQUcsTUFBTSx5REFBOEJOLGVBQTlCLENBQXRDO0FBQ0EsUUFBTU8sZ0JBQWdCLEdBQUdELHVCQUF1QixDQUFDRSxTQUF4QixDQUNyQkMsQ0FBQyxJQUFJLElBQUlDLDBDQUFKLENBQXlCRCxDQUF6QixFQUE0QlIsa0JBQTVCLEVBQWdERixPQUFPLENBQUNZLGNBQXhELENBRGdCLENBQXpCO0FBSUEsUUFBTUMsdUJBQXVCLEdBQUcsTUFBTSx5REFBOEJaLGVBQTlCLENBQXRDO0FBQ0EsUUFBTWEsa0JBQWtCLEdBQUdELHVCQUF1QixDQUFDSixTQUF4QixDQUFrQ0MsQ0FBQyxJQUFJLElBQUlLLG9DQUFKLENBQXNCTCxDQUF0QixFQUF5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QU8sQ0FBQzZCLE1BQVIsQ0FBZThDLEtBQWYsQ0FBcUJGLENBQXJCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsZ0JBQU1BLENBQU47QUFDSDtBQUNKO0FBQ0osS0FYRCxHQUpjLENBQVosQ0FBTjtBQWlCQSxVQUFNRyxTQUFTLEdBQUdSLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixTQUEvQixDQW5CRyxDQW9CSDs7QUFDQVUsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQWEsR0FBRUMsZUFBTUMsV0FBTixDQUFrQixlQUFsQixDQUFtQyxnQkFBZSw0QkFBVUosU0FBVixDQUFxQixFQUF0RjtBQUNIO0FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IEJ1aWxkQ2xpZW50SnNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvQ2xpZW50SlMvQnVpbGRDbGllbnRKc1Rhc2tcIjtcbmltcG9ydCB7IEJ1aWxkTG9jYWxFbmdpbmVUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0J1aWxkTG9jYWxFbmdpbmVUYXNrXCI7XG5pbXBvcnQgeyBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzaywgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSwgcmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcblxuaW1wb3J0IHsgRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMgfSBmcm9tIFwiLi9EZXZCdWlsZE9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRldkJ1aWxkKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGV2QnVpbGRPcHRpb25zID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGVuZ2luZVdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZEVuZ2luZUNoYWluID0gZW5naW5lV2VicGFja0NvbmZpZ1Rhc2suY2hhaW5XaXRoKFxuICAgICAgICBwID0+IG5ldyBCdWlsZExvY2FsRW5naW5lVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNsaWVudFdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZENsaWVudEpzQ2hhaW4gPSBjbGllbnRXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgocCA9PiBuZXcgQnVpbGRDbGllbnRKc1Rhc2socCwgcmVzb3VyY2VzRGlyZWN0b3J5KSk7XG5cbiAgICBjb25zdCBzdGF0aWNSZXNvdXJjZXNDaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHBpY2tMaXN0c0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiksIFwiKi5qc29uXCIpLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KFwiUElDS0xJU1RTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnZhbGlkYXRlR2xvYnMoXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZGlyZWN0b3J5KHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIpLCBmb3JtR2xvYnMpLnNwbGl0VG9QYXJhbGxlbENoYWlucyhcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIGdmdiA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdik7XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PiByZXNvbHZlRm9ybUluZm8oZm9ybUpzb25GaWxlLCBmb3JtRGlyUGF0aCwgZW5naW5lRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZW5lcmF0b3JGYWN0b3J5KGZpLmdlbmVyYXRvclNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBmYWxzZSwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5za2lwR2VuZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWxkRGVidWdPbmx5XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMoZmkuZm9ybU5hbWUsIGZhcm1EaXJlY3RvcnksIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGb3JtTWV0YShyZXNvdXJjZXNEaXJlY3RvcnksIGdmdiwgZmkuZW5naW5lU291cmNlLCBmaS5kZXBlbmRlbmNpZXNIYXNoLCBmaS50aGVtZXMpKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIFwiKi5ybmcueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weUZpbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBSRVNFTlRBVElPTlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInByZXNlbnRhdGlvbnNcIiwgYCR7Z2Z2fS5wcmVzZW50YXRpb25zLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGRldkJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBidWlsZEVuZ2luZUNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRDbGllbnRKc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG5cbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuXG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMSgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBidWlsZEVuZ2luZUNoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIGJ1aWxkQ2xpZW50SnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBzdGF0aWNSZXNvdXJjZXNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVlT25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKX0gVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICB9XG59XG4iXX0=
|
|
112
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9EZXZCdWlsZC9SdW5EZXZCdWlsZC50cyJdLCJuYW1lcyI6WyJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkRW5naW5lQ2hhaW4iLCJjaGFpbldpdGgiLCJwIiwiQnVpbGRMb2NhbEVuZ2luZVRhc2siLCJidWlsZERlYnVnT25seSIsImNsaWVudFdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRDbGllbnRKc0NoYWluIiwiQnVpbGRDbGllbnRKc1Rhc2siLCJzdGF0aWNSZXNvdXJjZXNDaGFpbiIsIk9ic2VydmUiLCJmaWxlcyIsInBhdGgiLCJqb2luIiwiX19kaXJuYW1lIiwiZG8iLCJ4IiwiRlNUYXNrIiwiY29weVJlY3Vyc2l2ZWx5Iiwid2l0aFByZWZpeCIsInBpY2tMaXN0c0NoYWluIiwibG9nZ2VyIiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiZmkiLCJ1bmRlZmluZWQiLCJ5IiwiZ2VuZXJhdG9yIiwiZm9ybVNvdXJjZXNQYXRoIiwiZGVwZW5kZW5jaWVzSGFzaCIsImdldEFsbERlcGVuZGVuY2llc0hhc2giLCJza2lwR2VuZXJhdGlvbiIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJjb3B5RmlsZSIsIndhdGNoIiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsIlByb21pc2UiLCJhbGwiLCJjdXJyZW50VmFsdWUiLCJlIiwiY29udGludWVPbkVycm9yIiwiZXJyb3IiLCJ0b3RhbFRpbWUiLCJjb25zb2xlIiwibG9nIiwiY2hhbGsiLCJncmVlbkJyaWdodCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSU8sZUFBZUEsV0FBZixDQUNIQyxPQURHLEVBRUhDLE9BRkcsRUFHSEMsZUFIRyxFQUlIQyxrQkFKRyxFQUtIQyxhQUxHLEVBTUhDLHFCQU5HLEVBT0hDLG1CQVBHLEVBUVU7QUFDYixRQUFNQyxlQUFlLEdBQUdOLE9BQXhCO0FBRUEsUUFBTU8sdUJBQXVCLEdBQUcsTUFBTSx5REFBOEJOLGVBQTlCLENBQXRDO0FBQ0EsUUFBTU8sZ0JBQWdCLEdBQUdELHVCQUF1QixDQUFDRSxTQUF4QixDQUNyQkMsQ0FBQyxJQUFJLElBQUlDLDBDQUFKLENBQXlCRCxDQUF6QixFQUE0QlIsa0JBQTVCLEVBQWdERixPQUFPLENBQUNZLGNBQXhELENBRGdCLENBQXpCO0FBSUEsUUFBTUMsdUJBQXVCLEdBQUcsTUFBTSx5REFBOEJaLGVBQTlCLENBQXRDO0FBQ0EsUUFBTWEsa0JBQWtCLEdBQUdELHVCQUF1QixDQUFDSixTQUF4QixDQUFrQ0MsQ0FBQyxJQUFJLElBQUlLLG9DQUFKLENBQXNCTCxDQUF0QixFQUF5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T0FBTyxDQUFDQyxHQUFSLENBQVksQ0FDZDlELGdCQUFnQixDQUFDK0QsWUFESCxFQUVkekQsa0JBQWtCLENBQUN5RCxZQUZMLEVBR2R2RCxvQkFBb0IsQ0FBQ3VELFlBSFAsRUFJZCxDQUFDLFlBQVk7QUFDVCxVQUFJO0FBQ0EsY0FBTTVDLGNBQWMsQ0FBQzRDLFlBQXJCO0FBQ0EsY0FBTXRDLGVBQWUsQ0FBQ3NDLFlBQXRCO0FBQ0gsT0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtBQUNSLFlBQUl4RSxPQUFPLENBQUN5RSxlQUFaLEVBQTZCO0FBQ3pCMUUsVUFBQUEsT0FBTyxDQUFDNkIsTUFBUixDQUFlOEMsS0FBZixDQUFxQkYsQ0FBckI7QUFDSCxTQUZELE1BRU87QUFDSCxnQkFBTUEsQ0FBTjtBQUNIO0FBQ0o7QUFDSixLQVhELEdBSmMsQ0FBWixDQUFOO0FBaUJBLFVBQU1HLFNBQVMsR0FBR1IsSUFBSSxDQUFDQyxHQUFMLEtBQWFGLFNBQS9CLENBbkJHLENBb0JIOztBQUNBVSxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBYSxHQUFFQyxlQUFNQyxXQUFOLENBQWtCLGVBQWxCLENBQW1DLGdCQUFlLDRCQUFVSixTQUFWLENBQXFCLEVBQXRGO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcblxuaW1wb3J0IHsgQnVpbGRDbGllbnRKc1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9DbGllbnRKUy9CdWlsZENsaWVudEpzVGFza1wiO1xuaW1wb3J0IHsgQnVpbGRMb2NhbEVuZ2luZVRhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvQnVpbGRMb2NhbEVuZ2luZVRhc2tcIjtcbmltcG9ydCB7IGNyZWF0ZUNsaWVudFdlYnBhY2tDb25maWdUYXNrLCBjcmVhdGVFbmdpbmVXZWJwYWNrQ29uZmlnVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZVN0cnVjdHVyZVV0aWxzXCI7XG5pbXBvcnQgeyBjb21waWxlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm1cIjtcbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7IGdlbmVyYXRvckZhY3RvcnksIGdldEdlbmVyYXRvclNvdXJjZUtleSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLCByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IHJlc29sdmVGb3JtSW5mbyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgd3JpdGVGb3JtTWV0YSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1dyaXRlRm9ybU1ldGFcIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL09ic2VydmVcIjtcbmltcG9ydCB7IHByaW50VGltZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1RpbWluZ1V0aWxzXCI7XG5pbXBvcnQgeyB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlQXR0YWNobWVudFBhdGhGaWxlc1wiO1xuXG5pbXBvcnQgeyBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyB9IGZyb20gXCIuL0RldkJ1aWxkT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRGV2QnVpbGQoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZXZCdWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVFbmdpbmVXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkRW5naW5lQ2hhaW4gPSBlbmdpbmVXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgoXG4gICAgICAgIHAgPT4gbmV3IEJ1aWxkTG9jYWxFbmdpbmVUYXNrKHAsIHJlc291cmNlc0RpcmVjdG9yeSwgb3B0aW9ucy5idWlsZERlYnVnT25seSlcbiAgICApO1xuXG4gICAgY29uc3QgY2xpZW50V2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkQ2xpZW50SnNDaGFpbiA9IGNsaWVudFdlYnBhY2tDb25maWdUYXNrLmNoYWluV2l0aChwID0+IG5ldyBCdWlsZENsaWVudEpzVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnkpKTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0NoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JSZXNvdXJjZXNEaXJcIiksXG4gICAgICAgIFwiKi5qc1wiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMudmFsaWRhdGVHbG9icyhcbiAgICAgICAgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVTcGVjaWZpZXJzKG9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSxcbiAgICAgICAgZmFybURpcmVjdG9yeVxuICAgICk7XG4gICAgY29uc3QgYnVpbGRGb3Jtc0NoYWluID0gT2JzZXJ2ZS5kaXJlY3RvcnkocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiksIGZvcm1HbG9icykuc3BsaXRUb1BhcmFsbGVsQ2hhaW5zKFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgZ2Z2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+IHJlc29sdmVGb3JtSW5mbyhmb3JtSnNvbkZpbGUsIGZvcm1EaXJQYXRoLCBlbmdpbmVEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIGZhbHNlLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNraXBHZW5lcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbXBpbGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKGZpLmZvcm1OYW1lLCBmYXJtRGlyZWN0b3J5LCByZXNvdXJjZXNEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PiB3cml0ZUZvcm1NZXRhKHJlc291cmNlc0RpcmVjdG9yeSwgZ2Z2LCBmaS5lbmdpbmVTb3VyY2UsIGZpLmRlcGVuZGVuY2llc0hhc2gsIGZpLnRoZW1lcykpXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwic2NoZW1hc1wiKSwgXCIqLnJuZy54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWVyZ2Vyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1FUkdFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1lcmdlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKSkuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQUkVTRU5UQVRJT05TXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwcmVzZW50YXRpb25zXCIsIGAke2dmdn0ucHJlc2VudGF0aW9ucy5qc29uYClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChkZXZCdWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgYnVpbGRFbmdpbmVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkQ2xpZW50SnNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU0ID0gYXdhaXQgYnVpbGRGb3Jtc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU1ID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuXG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcblxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUyKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU1KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgYnVpbGRFbmdpbmVDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBidWlsZENsaWVudEpzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgc3RhdGljUmVzb3VyY2VzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCksXG4gICAgICAgIF0pO1xuICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIil9IFRvdGFsIHRpbWU6ICR7cHJpbnRUaW1lKHRvdGFsVGltZSl9YCk7XG4gICAgfVxufVxuIl19
|