@kontur.candy/tools 2.175.0 → 2.176.1
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 +16 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +3 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +13 -15
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +2 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +4 -10
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +3 -2
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +9 -7
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +12 -9
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +18 -20
- package/distr/Tools/src/Commons/FormGlobsUtils.js +82 -122
- package/distr/Tools/src/Commons/FormLocationInfo.js +6 -0
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +6 -2
- package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -4
- package/package.json +1 -1
package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js
CHANGED
|
@@ -50,12 +50,6 @@ class FarmDirectory {
|
|
|
50
50
|
cwd: _path.default.join(this.farmDirectory, "picklists")
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
|
-
async getAllFormJsonFiles() {
|
|
54
|
-
const formGfvPaths = await this.enumerateAllGfvs();
|
|
55
|
-
return formGfvPaths.map(x => ({
|
|
56
|
-
gfv: x.gfv
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
53
|
async enumerateAllGfvs() {
|
|
60
54
|
var _this$allGfvInfos;
|
|
61
55
|
await this.ensureGfvDirectoriesUpdated();
|
|
@@ -70,9 +64,9 @@ class FarmDirectory {
|
|
|
70
64
|
const formGfvPaths = await this.enumerateAllGfvs();
|
|
71
65
|
return formGfvPaths.map(x => x.gfv);
|
|
72
66
|
}
|
|
73
|
-
async
|
|
74
|
-
await this.
|
|
75
|
-
return
|
|
67
|
+
async getAllGfvWithLocations() {
|
|
68
|
+
const formGfvPaths = await this.enumerateAllGfvs();
|
|
69
|
+
return formGfvPaths;
|
|
76
70
|
}
|
|
77
71
|
async getFormJsonPath(gfv) {
|
|
78
72
|
var _this$gfvToPathMap2;
|
|
@@ -236,4 +230,4 @@ class FarmDirectory {
|
|
|
236
230
|
}
|
|
237
231
|
}
|
|
238
232
|
exports.FarmDirectory = FarmDirectory;
|
|
239
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzIiwiX2ZzRXh0cmEiLCJfcExpbWl0IiwiX0Zvcm1HbG9ic1V0aWxzIiwiX0ZzVXRpbHMiLCJfVHlwaW5nVXRpbHMiLCJfRXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGYXJtRGlyZWN0b3J5IiwiY29uc3RydWN0b3IiLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2VG9QYXRoTWFwIiwiYWxsR2Z2SW5mb3MiLCJlbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQiLCJ1cGRhdGVHZnZEaXJlY3Rvcmllc0xpbWl0IiwicExpbWl0IiwidW5kZWZpbmVkIiwidXBkYXRlR2Z2RGlyZWN0b3JpZXMiLCJzZXRUaW1lb3V0IiwiRm9ybUdsb2JzIiwiZW51bWVyYXRlRm9ybXNJblJlcG9zaXRvcnkiLCJwYXRoIiwiam9pbiIsIk1hcCIsIm1hcCIsIngiLCJnZnYiLCJmb3JtUGF0aCIsImdldEFsbFBpY2tsaXN0cyIsImdsb2JBc3luYyIsImN3ZCIsImdldEZvcm1EaXJlY3RvcnkiLCJnZXRBbGxGb3JtSnNvbkZpbGVzIiwiZm9ybUdmdlBhdGhzIiwiZW51bWVyYXRlQWxsR2Z2cyIsIl90aGlzJGFsbEdmdkluZm9zIiwicmVqZWN0IiwiZ2V0R2Z2VG9QYXRoTWFwIiwiX3RoaXMkZ2Z2VG9QYXRoTWFwIiwiZ2V0QWxsR2Z2cyIsInJlc29sdmVGb3JtR2xvYnMiLCJmb3JtR2xvYnMiLCJyZXNvbHZlR2xvYnNUb0dmdnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsImdldEZvcm1Kc29uUGF0aCIsIl90aGlzJGdmdlRvUGF0aE1hcDIiLCJmb3JtRGlyUGF0aCIsImdldCIsImV4aXN0c1N5bmMiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJnZXRBbGxDb252ZXJ0ZXJGaWxlUGF0aHMiLCJyZXN1bHQiLCJnZnZJbmZvIiwicHVzaCIsImdldENvbnZlcnRlckZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZmlsZW5hbWUiLCJleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZSIsImZpbGVQYXRoIiwicGF0aEV4aXN0cyIsImdldEFsbFNjaGVtYXNGaWxlUGF0aHMiLCJnZXRTY2hlbWFGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsImdldEFsbE5vcm1hbGl6ZUZpbGVQYXRocyIsImdldE5vcm1hbGl6ZUZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsVW5tYXBGaWxlUGF0aHMiLCJnZXRVbm1hcEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsTWFwRmlsZVBhdGhzIiwiZ2V0TWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxQYXRjaEZpbGVQYXRocyIsImdldFBhdGNoRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxNZXJnZXJzRmlsZVBhdGhzIiwiZ2V0TWVyZ2Vyc0ZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsUHJlc2VudGF0aW9uc0ZpbGVOYW1lcyIsImdldFByZXNlbnRhdGlvbnNGaWxlUGF0aEJ5R2Z2T3JVbmRlZmluZWQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuXG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9FeHRyYWN0R2Z2c0Zyb21GaWxlTmFtZVwiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmludGVyZmFjZSBGYXJtRmlsZUluZm8ge1xuICAgIGdmdjogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRmFybURpcmVjdG9yeSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBnZnZUb1BhdGhNYXA6IHVuZGVmaW5lZCB8IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgcHJpdmF0ZSBhbGxHZnZJbmZvcz86IEFycmF5PHsgZ2Z2OiBzdHJpbmc7IGZvcm1QYXRoOiBzdHJpbmc7IGZvcm1SZWxhdGl2ZVBhdGg6IHN0cmluZyB9PjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuc3VyZUdmdkRpcmVjdG9yaWVzVXBkYXRlZDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5ID0gZmFybURpcmVjdG9yeTtcbiAgICAgICAgY29uc3QgdXBkYXRlR2Z2RGlyZWN0b3JpZXNMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy5lbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxHZnZJbmZvcyA9PSB1bmRlZmluZWQgfHwgdGhpcy5nZnZUb1BhdGhNYXAgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlR2Z2RGlyZWN0b3JpZXNMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsbEdmdkluZm9zID09IHVuZGVmaW5lZCB8fCB0aGlzLmdmdlRvUGF0aE1hcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlR2Z2RGlyZWN0b3JpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgICAgIHVwZGF0ZUdmdkRpcmVjdG9yaWVzTGltaXQoKCkgPT4gdGhpcy51cGRhdGVHZnZEaXJlY3RvcmllcygpKTtcbiAgICAgICAgfSwgNjAwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlR2Z2RGlyZWN0b3JpZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuYWxsR2Z2SW5mb3MgPSBhd2FpdCBGb3JtR2xvYnMuZW51bWVyYXRlRm9ybXNJblJlcG9zaXRvcnkocGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCIuLlwiKSk7XG4gICAgICAgIHRoaXMuZ2Z2VG9QYXRoTWFwID0gbmV3IE1hcCh0aGlzLmFsbEdmdkluZm9zLm1hcCh4ID0+IFt4LmdmdiwgeC5mb3JtUGF0aF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGlja2xpc3RzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdsb2JBc3luYyhcIipcIiwgeyBjd2Q6IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtRGlyZWN0b3J5KCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdsb2JBc3luYyhcIipcIiwgeyBjd2Q6IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtSnNvbkZpbGVzKCk6IFByb21pc2U8RmFybUZpbGVJbmZvW10+IHtcbiAgICAgICAgY29uc3QgZm9ybUdmdlBhdGhzID0gYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCk7XG4gICAgICAgIHJldHVybiBmb3JtR2Z2UGF0aHMubWFwKHggPT4gKHtcbiAgICAgICAgICAgIGdmdjogeC5nZnYsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGVudW1lcmF0ZUFsbEdmdnMoKTogUHJvbWlzZTxBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsR2Z2SW5mb3MgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRHZnZUb1BhdGhNYXAoKTogUHJvbWlzZTxNYXA8c3RyaW5nLCBzdHJpbmc+PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlR2Z2RGlyZWN0b3JpZXNVcGRhdGVkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdmdlRvUGF0aE1hcCA/PyByZWplY3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsR2Z2cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGZvcm1HZnZQYXRocyA9IGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpO1xuICAgICAgICByZXR1cm4gZm9ybUdmdlBhdGhzLm1hcCh4ID0+IHguZ2Z2KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzb2x2ZUZvcm1HbG9icyhmb3JtR2xvYnM6IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmVuc3VyZUdmdkRpcmVjdG9yaWVzVXBkYXRlZCgpO1xuICAgICAgICByZXR1cm4gRm9ybUdsb2JzLnJlc29sdmVHbG9ic1RvR2Z2cyhcbiAgICAgICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhmb3JtR2xvYnMsIHRoaXMuZmFybURpcmVjdG9yeSksXG4gICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUpzb25QYXRoKGdmdjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQoKTtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSAodGhpcy5nZnZUb1BhdGhNYXAgPz8gcmVqZWN0KCkpLmdldChnZnYpO1xuICAgICAgICBpZiAoZm9ybURpclBhdGggIT0gdW5kZWZpbmVkICYmIGV4aXN0c1N5bmMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlckZpbGVQYXRocygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLihhd2FpdCBnbG9iQXN5bmMoXCJjb252ZXJ0ZXJzLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRDb252ZXJ0ZXJGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZ2Z2VG9QYXRoTWFwID0gYXdhaXQgdGhpcy5nZXRHZnZUb1BhdGhNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBnZnYgb2YgZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUoZmlsZW5hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IGdmdlRvUGF0aE1hcC5nZXQoZ2Z2KTtcbiAgICAgICAgICAgIGlmIChmb3JtUGF0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGZvcm1QYXRoLCBcImNvbnZlcnRlcnNcIiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFNjaGVtYXNGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwic2NoZW1hcy8qXCIsIHsgY3dkOiBnZnZJbmZvLmZvcm1QYXRoIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2NoZW1hRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZ2Z2SW5mby5mb3JtUGF0aCwgXCJzY2hlbWFzXCIsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemVGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwibm9ybWFsaXplLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXROb3JtYWxpemVGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcIm5vcm1hbGl6ZVwiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVW5tYXBGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwidW5tYXAvKlwiLCB7IGN3ZDogZ2Z2SW5mby5mb3JtUGF0aCB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFVubWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZ2Z2SW5mby5mb3JtUGF0aCwgXCJ1bm1hcFwiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTWFwRmlsZVBhdGhzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uKGF3YWl0IGdsb2JBc3luYyhcIm1hcC8qXCIsIHsgY3dkOiBnZnZJbmZvLmZvcm1QYXRoIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZ2Z2SW5mby5mb3JtUGF0aCwgXCJtYXBcIiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBhdGNoRmlsZVBhdGhzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uKGF3YWl0IGdsb2JBc3luYyhcInBhdGNoLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRQYXRjaEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFwicGF0Y2hcIiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE1lcmdlcnNGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwibWVyZ2Vycy8qXCIsIHsgY3dkOiBnZnZJbmZvLmZvcm1QYXRoIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWVyZ2Vyc0ZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFwibWVyZ2Vyc1wiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUHJlc2VudGF0aW9uc0ZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChgJHtnZnZJbmZvLmdmdn0ucHJlc2VudGF0aW9ucy5qc29uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHJlc2VudGF0aW9uc0ZpbGVQYXRoQnlHZnZPclVuZGVmaW5lZChnZnY6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgaWYgKGdmdkluZm8uZ2Z2ID09PSBnZnYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKTtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEdBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLGVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLHdCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxxQkFBQSxHQUFBUixPQUFBO0FBTU8sTUFBTVMsYUFBYSxDQUFDO0VBTWhCQyxXQUFXQSxDQUFDQyxhQUFxQixFQUFFO0lBQUEsS0FMekJBLGFBQWE7SUFBQSxLQUN0QkMsWUFBWTtJQUFBLEtBQ1pDLFdBQVc7SUFBQSxLQUNGQywyQkFBMkI7SUFHeEMsSUFBSSxDQUFDSCxhQUFhLEdBQUdBLGFBQWE7SUFDbEMsTUFBTUkseUJBQXlCLEdBQUcsSUFBQUMsZUFBTSxFQUFDLENBQUMs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
|
|
233
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzIiwiX2ZzRXh0cmEiLCJfcExpbWl0IiwiX0Zvcm1HbG9ic1V0aWxzIiwiX0ZzVXRpbHMiLCJfVHlwaW5nVXRpbHMiLCJfRXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGYXJtRGlyZWN0b3J5IiwiY29uc3RydWN0b3IiLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2VG9QYXRoTWFwIiwiYWxsR2Z2SW5mb3MiLCJlbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQiLCJ1cGRhdGVHZnZEaXJlY3Rvcmllc0xpbWl0IiwicExpbWl0IiwidW5kZWZpbmVkIiwidXBkYXRlR2Z2RGlyZWN0b3JpZXMiLCJzZXRUaW1lb3V0IiwiRm9ybUdsb2JzIiwiZW51bWVyYXRlRm9ybXNJblJlcG9zaXRvcnkiLCJwYXRoIiwiam9pbiIsIk1hcCIsIm1hcCIsIngiLCJnZnYiLCJmb3JtUGF0aCIsImdldEFsbFBpY2tsaXN0cyIsImdsb2JBc3luYyIsImN3ZCIsImdldEZvcm1EaXJlY3RvcnkiLCJlbnVtZXJhdGVBbGxHZnZzIiwiX3RoaXMkYWxsR2Z2SW5mb3MiLCJyZWplY3QiLCJnZXRHZnZUb1BhdGhNYXAiLCJfdGhpcyRnZnZUb1BhdGhNYXAiLCJnZXRBbGxHZnZzIiwiZm9ybUdmdlBhdGhzIiwiZ2V0QWxsR2Z2V2l0aExvY2F0aW9ucyIsImdldEZvcm1Kc29uUGF0aCIsIl90aGlzJGdmdlRvUGF0aE1hcDIiLCJmb3JtRGlyUGF0aCIsImdldCIsImV4aXN0c1N5bmMiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJnZXRBbGxDb252ZXJ0ZXJGaWxlUGF0aHMiLCJyZXN1bHQiLCJnZnZJbmZvIiwicHVzaCIsImdldENvbnZlcnRlckZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZmlsZW5hbWUiLCJleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZSIsImZpbGVQYXRoIiwicGF0aEV4aXN0cyIsImdldEFsbFNjaGVtYXNGaWxlUGF0aHMiLCJnZXRTY2hlbWFGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZCIsImdldEFsbE5vcm1hbGl6ZUZpbGVQYXRocyIsImdldE5vcm1hbGl6ZUZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsVW5tYXBGaWxlUGF0aHMiLCJnZXRVbm1hcEZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsTWFwRmlsZVBhdGhzIiwiZ2V0TWFwRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxQYXRjaEZpbGVQYXRocyIsImdldFBhdGNoRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQiLCJnZXRBbGxNZXJnZXJzRmlsZVBhdGhzIiwiZ2V0TWVyZ2Vyc0ZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkIiwiZ2V0QWxsUHJlc2VudGF0aW9uc0ZpbGVOYW1lcyIsImdldFByZXNlbnRhdGlvbnNGaWxlUGF0aEJ5R2Z2T3JVbmRlZmluZWQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuXG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9FeHRyYWN0R2Z2c0Zyb21GaWxlTmFtZVwiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5pbXBvcnQgeyBGb3JtTG9jYXRpb25JbmZvIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRm9ybUxvY2F0aW9uSW5mb1wiO1xuXG5leHBvcnQgY2xhc3MgRmFybURpcmVjdG9yeSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBnZnZUb1BhdGhNYXA6IHVuZGVmaW5lZCB8IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgcHJpdmF0ZSBhbGxHZnZJbmZvcz86IEFycmF5PHsgZ2Z2OiBzdHJpbmc7IGZvcm1QYXRoOiBzdHJpbmc7IGZvcm1SZWxhdGl2ZVBhdGg6IHN0cmluZyB9PjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuc3VyZUdmdkRpcmVjdG9yaWVzVXBkYXRlZDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5ID0gZmFybURpcmVjdG9yeTtcbiAgICAgICAgY29uc3QgdXBkYXRlR2Z2RGlyZWN0b3JpZXNMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy5lbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxHZnZJbmZvcyA9PSB1bmRlZmluZWQgfHwgdGhpcy5nZnZUb1BhdGhNYXAgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlR2Z2RGlyZWN0b3JpZXNMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsbEdmdkluZm9zID09IHVuZGVmaW5lZCB8fCB0aGlzLmdmdlRvUGF0aE1hcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlR2Z2RGlyZWN0b3JpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgICAgIHVwZGF0ZUdmdkRpcmVjdG9yaWVzTGltaXQoKCkgPT4gdGhpcy51cGRhdGVHZnZEaXJlY3RvcmllcygpKTtcbiAgICAgICAgfSwgNjAwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlR2Z2RGlyZWN0b3JpZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuYWxsR2Z2SW5mb3MgPSBhd2FpdCBGb3JtR2xvYnMuZW51bWVyYXRlRm9ybXNJblJlcG9zaXRvcnkocGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCIuLlwiKSk7XG4gICAgICAgIHRoaXMuZ2Z2VG9QYXRoTWFwID0gbmV3IE1hcCh0aGlzLmFsbEdmdkluZm9zLm1hcCh4ID0+IFt4LmdmdiwgeC5mb3JtUGF0aF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGlja2xpc3RzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdsb2JBc3luYyhcIipcIiwgeyBjd2Q6IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtRGlyZWN0b3J5KCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdsb2JBc3luYyhcIipcIiwgeyBjd2Q6IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZW51bWVyYXRlQWxsR2Z2cygpOiBQcm9taXNlPEFycmF5PHsgZ2Z2OiBzdHJpbmc7IGZvcm1QYXRoOiBzdHJpbmc7IGZvcm1SZWxhdGl2ZVBhdGg6IHN0cmluZyB9Pj4ge1xuICAgICAgICBhd2FpdCB0aGlzLmVuc3VyZUdmdkRpcmVjdG9yaWVzVXBkYXRlZCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxHZnZJbmZvcyA/PyByZWplY3QoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldEdmdlRvUGF0aE1hcCgpOiBQcm9taXNlPE1hcDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVHZnZEaXJlY3Rvcmllc1VwZGF0ZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2Z2VG9QYXRoTWFwID8/IHJlamVjdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgZm9ybUdmdlBhdGhzID0gYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCk7XG4gICAgICAgIHJldHVybiBmb3JtR2Z2UGF0aHMubWFwKHggPT4geC5nZnYpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZXaXRoTG9jYXRpb25zKCk6IFByb21pc2U8Rm9ybUxvY2F0aW9uSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IGZvcm1HZnZQYXRocyA9IGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpO1xuICAgICAgICByZXR1cm4gZm9ybUdmdlBhdGhzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtSnNvblBhdGgoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmVuc3VyZUdmdkRpcmVjdG9yaWVzVXBkYXRlZCgpO1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9ICh0aGlzLmdmdlRvUGF0aE1hcCA/PyByZWplY3QoKSkuZ2V0KGdmdik7XG4gICAgICAgIGlmIChmb3JtRGlyUGF0aCAhPSB1bmRlZmluZWQgJiYgZXhpc3RzU3luYyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQ29udmVydGVyRmlsZVBhdGhzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uKGF3YWl0IGdsb2JBc3luYyhcImNvbnZlcnRlcnMvKlwiLCB7IGN3ZDogZ2Z2SW5mby5mb3JtUGF0aCB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldENvbnZlcnRlckZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBnZnZUb1BhdGhNYXAgPSBhd2FpdCB0aGlzLmdldEdmdlRvUGF0aE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdiBvZiBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZShmaWxlbmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gZ2Z2VG9QYXRoTWFwLmdldChnZnYpO1xuICAgICAgICAgICAgaWYgKGZvcm1QYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFwiY29udmVydGVyc1wiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsU2NoZW1hc0ZpbGVQYXRocygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLihhd2FpdCBnbG9iQXN5bmMoXCJzY2hlbWFzLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRTY2hlbWFGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcInNjaGVtYXNcIiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6ZUZpbGVQYXRocygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLihhd2FpdCBnbG9iQXN5bmMoXCJub3JtYWxpemUvKlwiLCB7IGN3ZDogZ2Z2SW5mby5mb3JtUGF0aCB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6ZUZpbGVQYXRoQnlGaWxlTmFtZU9yVW5kZWZpbmVkKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFwibm9ybWFsaXplXCIsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxVbm1hcEZpbGVQYXRocygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLihhd2FpdCBnbG9iQXN5bmMoXCJ1bm1hcC8qXCIsIHsgY3dkOiBnZnZJbmZvLmZvcm1QYXRoIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VW5tYXBGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcInVubWFwXCIsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNYXBGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwibWFwLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRNYXBGaWxlUGF0aEJ5RmlsZU5hbWVPclVuZGVmaW5lZChmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihnZnZJbmZvLmZvcm1QYXRoLCBcIm1hcFwiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGF0Y2hGaWxlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi4oYXdhaXQgZ2xvYkFzeW5jKFwicGF0Y2gvKlwiLCB7IGN3ZDogZ2Z2SW5mby5mb3JtUGF0aCB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFBhdGNoRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZ2Z2SW5mby5mb3JtUGF0aCwgXCJwYXRjaFwiLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTWVyZ2Vyc0ZpbGVQYXRocygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdmdkluZm8gb2YgYXdhaXQgdGhpcy5lbnVtZXJhdGVBbGxHZnZzKCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLihhd2FpdCBnbG9iQXN5bmMoXCJtZXJnZXJzLypcIiwgeyBjd2Q6IGdmdkluZm8uZm9ybVBhdGggfSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRNZXJnZXJzRmlsZVBhdGhCeUZpbGVOYW1lT3JVbmRlZmluZWQoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZ2Z2SW5mby5mb3JtUGF0aCwgXCJtZXJnZXJzXCIsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQcmVzZW50YXRpb25zRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZ2Z2SW5mbyBvZiBhd2FpdCB0aGlzLmVudW1lcmF0ZUFsbEdmdnMoKSkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2dmdkluZm8uZ2Z2fS5wcmVzZW50YXRpb25zLmpzb25gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRQcmVzZW50YXRpb25zRmlsZVBhdGhCeUdmdk9yVW5kZWZpbmVkKGdmdjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBnZnZJbmZvIG9mIGF3YWl0IHRoaXMuZW51bWVyYXRlQWxsR2Z2cygpKSB7XG4gICAgICAgICAgICBpZiAoZ2Z2SW5mby5nZnYgPT09IGdmdikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpO1xuICAgICAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1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
|
|
@@ -35,7 +35,8 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
35
35
|
const staticResourcesChain = _Observe.Observe.files(_path.default.join(__dirname, "..", "..", "StaticFilesForResourcesDir"), "*.js").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("STATICS"), x, _path.default.join(resourcesDirectory, "public", "scripts")));
|
|
36
36
|
const pickListsChain = _Observe.Observe.files(_path.default.join(farmDirectory, "picklists"), "*.json").do(x => _FSTask.FSTask.copyRecursively(context.logger.withPrefix("PICKLISTS"), x, _path.default.join(resourcesDirectory, "picklists")));
|
|
37
37
|
const repositoryRoot = _path.default.join(farmDirectory, "..");
|
|
38
|
-
|
|
38
|
+
await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
|
|
39
|
+
const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
|
|
39
40
|
|
|
40
41
|
/** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources
|
|
41
42
|
* Реализуется только при общем билде форм: candy build *
|
|
@@ -102,4 +103,4 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
102
103
|
console.log(`${_chalk.default.greenBright("Build success")} Total time: ${(0, _TimingUtils.printTime)(totalTime)}`);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX0J1aWxkQ2xpZW50SnNUYXNrIiwiX0J1aWxkTG9jYWxFbmdpbmVUYXNrIiwiX0VuZ2luZVN0cnVjdHVyZVV0aWxzIiwiX0NvbXBpbGVGb3JtIiwiX0dlbmVyYXRlRm9ybSIsIl9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwiX0ZTVGFzayIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX1dyaXRlRm9ybU1ldGEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX09ic2VydmUiLCJfVGltaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRFbmdpbmVDaGFpbiIsImNoYWluV2l0aCIsInAiLCJCdWlsZExvY2FsRW5naW5lVGFzayIsImJ1aWxkRGVidWdPbmx5IiwiY2xpZW50V2VicGFja0NvbmZpZ1Rhc2siLCJjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkQ2xpZW50SnNDaGFpbiIsIkJ1aWxkQ2xpZW50SnNUYXNrIiwic3RhdGljUmVzb3VyY2VzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImdldExvZ2dlciIsIndpdGhQcmVmaXgiLCJwaWNrTGlzdHNDaGFpbiIsImxvZ2dlciIsInJlcG9zaXRvcnlSb290IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwicmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4iLCJlbXB0eSIsImJ1aWxkRm9ybXNDaGFpbiIsImZvcm1EaXJlY3RvcmllcyIsInNwbGl0VG9QYXJhbGxlbENoYWlucyIsImZvcm1SZWxhdGl2ZVBhdGgiLCJnZnYiLCJleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIiwiZm9ybURpclBhdGgiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJybmdTY2hlbWFNYXNrIiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmaWxlIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZ2VuZXJhdG9yU291cmNlIiwicmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwicmVzb2x2ZUxvY2FsRW5naW5lU291cmNlIiwiYXR0YWNoIiwiZmkiLCJnZW5lcmF0b3JGYWN0b3J5IiwidW5kZWZpbmVkIiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImZvcm1Tb3VyY2VzUGF0aCIsImRlcGVuZGVuY2llc0hhc2giLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwic2tpcEdlbmVyYXRpb24iLCJnZW5lcmF0ZUZvcm0iLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwicmVzb3VyY2VzSGFzaCIsImNvbXBpbGVGb3JtIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJ3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwid3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwid3JpdGVGb3JtTWV0YSIsIndhdGNoIiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsInN0b3BPYnNlcnZlNiIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsIlByb21pc2UiLCJhbGwiLCJjdXJyZW50VmFsdWUiLCJlIiwiY29udGludWVPbkVycm9yIiwiZXJyb3IiLCJ0b3RhbFRpbWUiLCJjb25zb2xlIiwibG9nIiwiY2hhbGsiLCJncmVlbkJyaWdodCIsInByaW50VGltZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9EZXZCdWlsZC9SdW5EZXZCdWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IEJ1aWxkQ2xpZW50SnNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvQ2xpZW50SlMvQnVpbGRDbGllbnRKc1Rhc2tcIjtcbmltcG9ydCB7IEJ1aWxkTG9jYWxFbmdpbmVUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0J1aWxkTG9jYWxFbmdpbmVUYXNrXCI7XG5pbXBvcnQgeyBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzaywgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSwgcmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcbmltcG9ydCB7IENoYWluYWJsZVZhbHVlUHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvQ2hhaW5hYmxlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgRW1wdHlQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9FbXB0eVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBnZXRSbmdTY2hlbWFGaWxlbmFtZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vZ2V0Um5nU2NoZW1hRmlsZW5hbWVcIjtcbmltcG9ydCB7IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGggfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0Zvcm1QYXRoVXRpbHNcIjtcbmltcG9ydCB7IFdlbGxLbm93bkRpcmVjdG9yaWVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9XZWxsS25vd25EaXJlY3Rvcmllc1wiO1xuXG5pbXBvcnQgeyBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyB9IGZyb20gXCIuL0RldkJ1aWxkT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRGV2QnVpbGQoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZXZCdWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVFbmdpbmVXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkRW5naW5lQ2hhaW4gPSBlbmdpbmVXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgoXG4gICAgICAgIHAgPT4gbmV3IEJ1aWxkTG9jYWxFbmdpbmVUYXNrKHAsIHJlc291cmNlc0RpcmVjdG9yeSwgb3B0aW9ucy5idWlsZERlYnVnT25seSlcbiAgICApO1xuXG4gICAgY29uc3QgY2xpZW50V2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkQ2xpZW50SnNDaGFpbiA9IGNsaWVudFdlYnBhY2tDb25maWdUYXNrLmNoYWluV2l0aChwID0+IG5ldyBCdWlsZENsaWVudEpzVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnkpKTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0NoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JSZXNvdXJjZXNEaXJcIiksXG4gICAgICAgIFwiKi5qc1wiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCByZXBvc2l0b3J5Um9vdCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcIi4uXCIpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpLFxuICAgICAgICBmYXJtRGlyZWN0b3J5XG4gICAgKTtcblxuICAgIC8qKiDQmtC+0L3QstC10YDRgtC10YDRiyDQvtC/0LjRgdC4INC00LvRjyDRhNC+0YDQvCwg0LrQvtGC0L7RgNGL0LUg0L/QvtC60LAg0L3QtSDRgNC10LDQu9C40LfQvtCy0LDQvdGLINC90LAg0LrQtdC90LTQuCwg0YHQsNC80LAg0LzQtdGF0LDQvdC40LrQsCDQvtC/0LjRgdC4INC/0LXRgNC10L3QtdGB0LXQvdCwINCyINGE0L7RgNC80Ysg0LIg0LrQtdC90LTQuCDQsNC/0LgsINC/0L7RjdGC0L7QvNGDINC+0L3QuCDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LIgY2FuZHkucmVzb3VyY2VzXG4gICAgICogINCg0LXQsNC70LjQt9GD0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0YDQuCDQvtCx0YnQtdC8INCx0LjQu9C00LUg0YTQvtGA0Lw6IGNhbmR5IGJ1aWxkICpcbiAgICAgKiAqL1xuICAgIGxldCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbjogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxzdHJpbmc+IHwgRW1wdHlQcm9kdWNlciA9IE9ic2VydmUuZW1wdHkoKTtcbiAgICBpZiAoZm9ybUdsb2JzWzBdID09PSBcIipcIikge1xuICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZXh0ZXJuYWxDb252ZXJ0ZXJzXCIpLCBcIioueHNsdFwiKS5kbyhcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRVhURVJOQUwtQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZm9ybURpcmVjdG9yaWVzKHJlcG9zaXRvcnlSb290LCBmb3JtR2xvYnMpLnNwbGl0VG9QYXJhbGxlbENoYWlucyhcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIGFzeW5jIGZvcm1SZWxhdGl2ZVBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gZXh0cmFjdEdmdkZyb21Gb3JtUGF0aChmb3JtUmVsYXRpdmVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtUmVsYXRpdmVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1TY2hlbWFzRGlyUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJzY2hlbWFzXCIpO1xuICAgICAgICAgICAgY29uc3Qgcm5nU2NoZW1hTWFzayA9IGAqJHtnZXRSbmdTY2hlbWFGaWxlbmFtZShmb3JtU2NoZW1hc0RpclBhdGgsIGdmdil9YDtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+IHJlc29sdmVGb3JtSW5mbyhmb3JtSnNvbkZpbGUsIGZvcm1EaXJQYXRoLCBlbmdpbmVEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIGZhbHNlLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNraXBHZW5lcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbXBpbGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5idWlsZERlYnVnT25seVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PiB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKGZpLmZvcm1OYW1lLCBmYXJtRGlyZWN0b3J5LCBmb3JtRGlyUGF0aCwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKGZpLmZvcm1OYW1lLCBmYXJtRGlyZWN0b3J5LCBmb3JtRGlyUGF0aCwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGb3JtTWV0YShyZXNvdXJjZXNEaXJlY3RvcnksIGdmdiwgZmkuZW5naW5lU291cmNlLCBmaS5kZXBlbmRlbmNpZXNIYXNoLCBmaS50aGVtZXMpKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIHJuZ1NjaGVtYU1hc2spLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1lcmdlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNRVJHRVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtZXJnZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoZGV2QnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMSA9IGF3YWl0IGJ1aWxkRW5naW5lQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZENsaWVudEpzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNCA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNSA9IGF3YWl0IHBpY2tMaXN0c0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU2ID0gYXdhaXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4ub2JzZXJ2ZSgpO1xuXG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcblxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUyKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU1KCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IERhdGUubm93KCk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGJ1aWxkRW5naW5lQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgYnVpbGRDbGllbnRKc0NoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIHN0YXRpY1Jlc291cmNlc0NoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGlja0xpc3RzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1zQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29udGludWVPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpLFxuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2coYCR7Y2hhbGsuZ3JlZW5CcmlnaHQoXCJCdWlsZCBzdWNjZXNzXCIpfSBUb3RhbCB0aW1lOiAke3ByaW50VGltZSh0b3RhbFRpbWUpfWApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxxQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFlBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLDZCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxxQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsc0JBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLGdCQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxjQUFBLEdBQUFaLE9BQUE7QUFFQSxJQUFBYSxlQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxhQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSxRQUFBLEdBQUFmLE9BQUE7QUFDQSxJQUFBZ0IsWUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQix5QkFBQSxHQUFBakIsT0FBQTtBQUdBLElBQUFrQixxQkFBQSxHQUFBbEIsT0FBQTtBQUNBLElBQUFtQixjQUFBLEdBQUFuQixPQUFBO0FBQ0EsSUFBQW9CLHFCQUFBLEdBQUFwQixPQUFBO0FBSU8sZUFBZXFCLFdBQVdBLENBQzdCQyxPQUFrQyxFQUNs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
|
|
106
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX0J1aWxkQ2xpZW50SnNUYXNrIiwiX0J1aWxkTG9jYWxFbmdpbmVUYXNrIiwiX0VuZ2luZVN0cnVjdHVyZVV0aWxzIiwiX0NvbXBpbGVGb3JtIiwiX0dlbmVyYXRlRm9ybSIsIl9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwiX0ZTVGFzayIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX1dyaXRlRm9ybU1ldGEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX09ic2VydmUiLCJfVGltaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRFbmdpbmVDaGFpbiIsImNoYWluV2l0aCIsInAiLCJCdWlsZExvY2FsRW5naW5lVGFzayIsImJ1aWxkRGVidWdPbmx5IiwiY2xpZW50V2VicGFja0NvbmZpZ1Rhc2siLCJjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkQ2xpZW50SnNDaGFpbiIsIkJ1aWxkQ2xpZW50SnNUYXNrIiwic3RhdGljUmVzb3VyY2VzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImdldExvZ2dlciIsIndpdGhQcmVmaXgiLCJwaWNrTGlzdHNDaGFpbiIsImxvZ2dlciIsInJlcG9zaXRvcnlSb290IiwiRm9ybUdsb2JzIiwiZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0iLCJmb3JtR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsInJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluIiwiZW1wdHkiLCJidWlsZEZvcm1zQ2hhaW4iLCJmb3JtRGlyZWN0b3JpZXMiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJmb3JtUmVsYXRpdmVQYXRoIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1EaXJQYXRoIiwiZm9ybVNjaGVtYXNEaXJQYXRoIiwicm5nU2NoZW1hTWFzayIsImdldFJuZ1NjaGVtYUZpbGVuYW1lIiwiZmlsZSIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsInRyYW5zZm9ybSIsImZvcm1Kc29uRmlsZSIsInJlc29sdmVGb3JtSW5mbyIsImdlbmVyYXRvclNvdXJjZSIsInJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSIsImVuZ2luZVNvdXJjZSIsInJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSIsImF0dGFjaCIsImZpIiwiZ2VuZXJhdG9yRmFjdG9yeSIsInVuZGVmaW5lZCIsInkiLCJnZW5lcmF0b3IiLCJnZXRHZW5lcmF0b3JTb3VyY2VLZXkiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsInNraXBHZW5lcmF0aW9uIiwiZ2VuZXJhdGVGb3JtIiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsInJlc291cmNlc0hhc2giLCJjb21waWxlRm9ybSIsImZvcm1OYW1lIiwidGhlbWVzIiwid3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsIndyaXRlRm9ybU1ldGEiLCJ3YXRjaCIsInN0b3BPYnNlcnZlMSIsIm9ic2VydmUiLCJzdG9wT2JzZXJ2ZTIiLCJzdG9wT2JzZXJ2ZTMiLCJzdG9wT2JzZXJ2ZTQiLCJzdG9wT2JzZXJ2ZTUiLCJzdG9wT2JzZXJ2ZTYiLCJ3YWl0Rm9yRXhpdCIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJub3ciLCJQcm9taXNlIiwiYWxsIiwiY3VycmVudFZhbHVlIiwiZSIsImNvbnRpbnVlT25FcnJvciIsImVycm9yIiwidG90YWxUaW1lIiwiY29uc29sZSIsImxvZyIsImNoYWxrIiwiZ3JlZW5CcmlnaHQiLCJwcmludFRpbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvRGV2QnVpbGQvUnVuRGV2QnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBCdWlsZENsaWVudEpzVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0NsaWVudEpTL0J1aWxkQ2xpZW50SnNUYXNrXCI7XG5pbXBvcnQgeyBCdWlsZExvY2FsRW5naW5lVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9CdWlsZExvY2FsRW5naW5lVGFza1wiO1xuaW1wb3J0IHsgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2ssIGNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lU3RydWN0dXJlVXRpbHNcIjtcbmltcG9ydCB7IGNvbXBpbGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Db21waWxlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHsgZ2VuZXJhdG9yRmFjdG9yeSwgZ2V0R2VuZXJhdG9yU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UsIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgcHJpbnRUaW1lIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGltaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IEVtcHR5UHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvRW1wdHlQcm9kdWNlclwiO1xuaW1wb3J0IHsgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMgfSBmcm9tIFwiLi9EZXZCdWlsZE9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRldkJ1aWxkKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGV2QnVpbGRPcHRpb25zID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGVuZ2luZVdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZEVuZ2luZUNoYWluID0gZW5naW5lV2VicGFja0NvbmZpZ1Rhc2suY2hhaW5XaXRoKFxuICAgICAgICBwID0+IG5ldyBCdWlsZExvY2FsRW5naW5lVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNsaWVudFdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZENsaWVudEpzQ2hhaW4gPSBjbGllbnRXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgocCA9PiBuZXcgQnVpbGRDbGllbnRKc1Rhc2socCwgcmVzb3VyY2VzRGlyZWN0b3J5KSk7XG5cbiAgICBjb25zdCBzdGF0aWNSZXNvdXJjZXNDaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHBpY2tMaXN0c0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiksIFwiKi5qc29uXCIpLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KFwiUElDS0xJU1RTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVwb3NpdG9yeVJvb3QgPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCIuLlwiKTtcbiAgICBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0ob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG5cbiAgICAvKiog0JrQvtC90LLQtdGA0YLQtdGA0Ysg0L7Qv9C40YHQuCDQtNC70Y8g0YTQvtGA0LwsINC60L7RgtC+0YDRi9C1INC/0L7QutCwINC90LUg0YDQtdCw0LvQuNC30L7QstCw0L3RiyDQvdCwINC60LXQvdC00LgsINGB0LDQvNCwINC80LXRhdCw0L3QuNC60LAg0L7Qv9C40YHQuCDQv9C10YDQtdC90LXRgdC10L3QsCDQsiDRhNC+0YDQvNGLINCyINC60LXQvdC00Lgg0LDQv9C4LCDQv9C+0Y3RgtC+0LzRgyDQvtC90Lgg0LTQvtC70LbQvdGLINCx0YvRgtGMINCyIGNhbmR5LnJlc291cmNlc1xuICAgICAqICDQoNC10LDQu9C40LfRg9C10YLRgdGPINGC0L7Qu9GM0LrQviDQv9GA0Lgg0L7QsdGJ0LXQvCDQsdC40LvQtNC1INGE0L7RgNC8OiBjYW5keSBidWlsZCAqXG4gICAgICogKi9cbiAgICBsZXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW46IENoYWluYWJsZVZhbHVlUHJvZHVjZXI8c3RyaW5nPiB8IEVtcHR5UHJvZHVjZXIgPSBPYnNlcnZlLmVtcHR5KCk7XG4gICAgaWYgKGZvcm1HbG9ic1swXSA9PT0gXCIqXCIpIHtcbiAgICAgICAgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImV4dGVybmFsQ29udmVydGVyc1wiKSwgXCIqLnhzbHRcIikuZG8oXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVYVEVSTkFMLUNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmZvcm1EaXJlY3RvcmllcyhyZXBvc2l0b3J5Um9vdCwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBmb3JtUmVsYXRpdmVQYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5Um9vdCwgZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtU2NoZW1hc0RpclBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwic2NoZW1hc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHJuZ1NjaGVtYU1hc2sgPSBgKiR7Z2V0Um5nU2NoZW1hRmlsZW5hbWUoZm9ybVNjaGVtYXNEaXJQYXRoLCBnZnYpfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PiByZXNvbHZlRm9ybUluZm8oZm9ybUpzb25GaWxlLCBmb3JtRGlyUGF0aCwgZW5naW5lRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZW5lcmF0b3JGYWN0b3J5KGZpLmdlbmVyYXRvclNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBmYWxzZSwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5za2lwR2VuZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgZm9ybURpclBhdGgsIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgZm9ybURpclBhdGgsIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlRm9ybU1ldGEocmVzb3VyY2VzRGlyZWN0b3J5LCBnZnYsIGZpLmVuZ2luZVNvdXJjZSwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgZmkudGhlbWVzKSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBybmdTY2hlbWFNYXNrKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGRldkJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBidWlsZEVuZ2luZUNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRDbGllbnRKc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNiA9IGF3YWl0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLm9ic2VydmUoKTtcblxuICAgICAgICBhd2FpdCBjb250ZXh0LndhaXRGb3JFeGl0KCk7XG5cbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTMoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU0KCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNSgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTYoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBidWlsZEVuZ2luZUNoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIGJ1aWxkQ2xpZW50SnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBzdGF0aWNSZXNvdXJjZXNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVlT25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKX0gVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxrQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcscUJBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyw2QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsT0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMscUJBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLHNCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxnQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksY0FBQSxHQUFBWixPQUFBO0FBRUEsSUFBQWEsZUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsYUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsUUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLFlBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIseUJBQUEsR0FBQWpCLE9BQUE7QUFHQSxJQUFBa0IscUJBQUEsR0FBQWxCLE9BQUE7QUFDQSxJQUFBbUIsY0FBQSxHQUFBbkIsT0FBQTtBQUNBLElBQUFvQixxQkFB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
|
|
@@ -11,14 +11,16 @@ var _FormGlobsUtils = require("../../Commons/FormGlobsUtils");
|
|
|
11
11
|
var _IterableUtils = require("../../../../Common/IterableUtils");
|
|
12
12
|
var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
|
|
13
13
|
async function runFormStats(context, options, farmDirectory) {
|
|
14
|
-
|
|
15
|
-
const
|
|
14
|
+
await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
|
|
15
|
+
const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
|
|
16
16
|
const engineToGfvMap = {};
|
|
17
|
-
for (const
|
|
17
|
+
for (const {
|
|
18
|
+
gfv,
|
|
19
|
+
formPath
|
|
20
|
+
} of await _FormGlobsUtils.FormGlobs.resolveGfvGlobs(formGlobs, farmDirectory)) {
|
|
18
21
|
try {
|
|
19
22
|
var _engineToGfvMap$engin, _engineToGfvMap$engin2;
|
|
20
|
-
|
|
21
|
-
const formJsonContent = await (0, _ResolveFormInfo.readFormConfig)(_path.default.join(farmDirectory, "forms", gfv, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName), context.logger);
|
|
23
|
+
const formJsonContent = await (0, _ResolveFormInfo.readFormConfig)(_path.default.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName), context.logger);
|
|
22
24
|
let engineBranch;
|
|
23
25
|
if (formJsonContent.mode === "copy-legacy-prebuilt-resources") {
|
|
24
26
|
engineBranch = "LegacyCopyPrebuilt";
|
|
@@ -40,9 +42,9 @@ async function runFormStats(context, options, farmDirectory) {
|
|
|
40
42
|
context.logger.log(` ${engineGfvs.length} forms`);
|
|
41
43
|
}
|
|
42
44
|
context.logger.log("");
|
|
43
|
-
for (const engine of Object.
|
|
45
|
+
for (const [engine, gfvs] of Object.entries(engineToGfvMap)) {
|
|
44
46
|
context.logger.log(engine);
|
|
45
47
|
context.logger.log(` ${gfvs.join(", ")}`);
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9JdGVyYWJsZVV0aWxzIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwicnVuRm9ybVN0YXRzIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwiRm9ybUdsb2JzIiwiZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0iLCJmb3JtR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsImVuZ2luZVRvR2Z2TWFwIiwiZ2Z2IiwiZm9ybVBhdGgiLCJyZXNvbHZlR2Z2R2xvYnMiLCJfZW5naW5lVG9HZnZNYXAkZW5naW4iLCJfZW5naW5lVG9HZnZNYXAkZW5naW4yIiwiZm9ybUpzb25Db250ZW50IiwicmVhZEZvcm1Db25maWciLCJwYXRoIiwiam9pbiIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsImxvZ2dlciIsImVuZ2luZUJyYW5jaCIsIm1vZGUiLCJfZm9ybUpzb25Db250ZW50JGRlcGUiLCJfZm9ybUpzb25Db250ZW50JGRlcGUyIiwiZGVwZW5kZW5jaWVzIiwiZW5naW5lIiwicHVzaCIsImUiLCJlbmdpbmVHZnZzIiwiaXRlcmF0ZUVudHJpZXMiLCJsb2ciLCJsZW5ndGgiLCJnZnZzIiwiT2JqZWN0IiwiZW50cmllcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9Gb3JtU3RhdHMvUnVuRm9ybVN0YXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBpdGVyYXRlRW50cmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vSXRlcmFibGVVdGlsc1wiO1xuXG5pbXBvcnQgeyBGb3JtU3RhdHNPcHRpb25zIH0gZnJvbSBcIi4vRm9ybVN0YXRzT3B0aW9uc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Gb3JtU3RhdHMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBGb3JtU3RhdHNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgRm9ybUdsb2JzLmVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtKG9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KTtcbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuXG4gICAgY29uc3QgZW5naW5lVG9HZnZNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVHZnZHbG9icyhmb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtSnNvbkNvbnRlbnQgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpLFxuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGV0IGVuZ2luZUJyYW5jaDogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKGZvcm1Kc29uQ29udGVudC5tb2RlID09PSBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiKSB7XG4gICAgICAgICAgICAgICAgZW5naW5lQnJhbmNoID0gXCJMZWdhY3lDb3B5UHJlYnVpbHRcIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybUpzb25Db250ZW50Lm1vZGUgPT09IFwibm8tZWRpdG9yXCIpIHtcbiAgICAgICAgICAgICAgICBlbmdpbmVCcmFuY2ggPSBcIk5vRWRpdG9yXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVuZ2luZUJyYW5jaCA9IGZvcm1Kc29uQ29udGVudC5kZXBlbmRlbmNpZXM/LmVuZ2luZSA/PyBcIlVua25vd25cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVuZ2luZVRvR2Z2TWFwW2VuZ2luZUJyYW5jaF0gPSBlbmdpbmVUb0dmdk1hcFtlbmdpbmVCcmFuY2hdID8/IFtdO1xuICAgICAgICAgICAgZW5naW5lVG9HZnZNYXBbZW5naW5lQnJhbmNoXT8ucHVzaChnZnYpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBlbmdpbmVUb0dmdk1hcFtcIlVua25vd25cIl0gPSBlbmdpbmVUb0dmdk1hcFtcIlVua25vd25cIl0gfHwgW107XG4gICAgICAgICAgICBlbmdpbmVUb0dmdk1hcFtcIlVua25vd25cIl0ucHVzaChnZnYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbZW5naW5lLCBlbmdpbmVHZnZzXSBvZiBpdGVyYXRlRW50cmllcyhlbmdpbmVUb0dmdk1hcCkpIHtcbiAgICAgICAgY29udGV4dC5sb2dnZXIubG9nKGVuZ2luZSk7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLmxvZyhgICAke2VuZ2luZUdmdnMubGVuZ3RofSBmb3Jtc2ApO1xuICAgIH1cbiAgICBjb250ZXh0LmxvZ2dlci5sb2coXCJcIik7XG4gICAgZm9yIChjb25zdCBbZW5naW5lLCBnZnZzXSBvZiBPYmplY3QuZW50cmllcyhlbmdpbmVUb0dmdk1hcCkpIHtcbiAgICAgICAgY29udGV4dC5sb2dnZXIubG9nKGVuZ2luZSk7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLmxvZyhgICAke2dmdnMuam9pbihcIiwgXCIpfWApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLGdCQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFHQSxJQUFBSSxxQkFBQSxHQUFBSixPQUFBO0FBRU8sZUFBZUssWUFBWUEsQ0FDOUJDLE9BQWtDLEVBQ2xDQyxPQUF5QixFQUN6QkMsYUFBcUIsRUFDUjtFQUNiLE1BQU1DLHlCQUFTLENBQUNDLHNDQUFzQyxDQUFDSCxPQUFPLENBQUNJLFNBQVMsRUFBRUgsYUFBYSxDQUFDO0VBQ3hGLE1BQU1HLFNBQVMsR0FBRyxNQUFNRix5QkFBUyxDQUFDRyxpQkFBaUIsQ0FBQ0wsT0FBTyxDQUFDSSxTQUFTLEVBQUVILGFBQWEsQ0FBQztFQUVyRixNQUFNSyxjQUF3QyxHQUFHLENBQUMsQ0FBQztFQUNuRCxLQUFLLE1BQU07SUFBRUMsR0FBRztJQUFFQztFQUFTLENBQUMsSUFBSSxNQUFNTix5QkFBUyxDQUFDTyxlQUFlLENBQUNMLFNBQVMsRUFBRUgsYUFBYSxDQUFDLEVBQUU7SUFDdkYsSUFBSTtNQUFBLElBQUFTLHFCQUFBLEVBQUFDLHNCQUFBO01BQ0EsTUFBTUMsZUFBZSxHQUFHLE1BQU0sSUFBQUMsK0JBQWMsRUFDeENDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDUCxRQUFRLEVBQUVRLDBDQUFvQixDQUFDQyxnQkFBZ0IsQ0FBQyxFQUMxRGxCLE9BQU8sQ0FBQ21CLE1BQ1osQ0FBQztNQUNELElBQUlDLFlBQW9CO01BQ3hCLElBQUlQLGVBQWUsQ0FBQ1EsSUFBSSxLQUFLLGdDQUFnQyxFQUFFO1FBQzNERCxZQUFZLEdBQUcsb0JBQW9CO01BQ3ZDLENBQUMsTUFBTSxJQUFJUCxlQUFlLENBQUNRLElBQUksS0FBSyxXQUFXLEVBQUU7UUFDN0NELFlBQVksR0FBRyxVQUFVO01BQzdCLENBQUMsTUFBTTtRQUFBLElBQUFFLHFCQUFBLEVBQUFDLHNCQUFBO1FBQ0hILFlBQVksSUFBQUUscUJBQUEsSUFBQUMsc0JBQUEsR0FBR1YsZUFBZSxDQUFDVyxZQUFZLGNBQUFELHNCQUFBLHVCQUE1QkEsc0JBQUEsQ0FBOEJFLE1BQU0sY0FBQUgscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxTQUFTO01BQ3BFO01BQ0FmLGNBQWMsQ0FBQ2EsWUFBWSxDQUFDLElBQUFULHFCQUFBLEdBQUdKLGNBQWMsQ0FBQ2EsWUFBWSxDQUFDLGNBQUFULHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksRUFBRTtNQUNqRSxDQUFBQyxzQkFBQSxHQUFBTCxjQUFjLENBQUNhLFlBQVksQ0FBQyxjQUFBUixzQkFBQSx1QkFBNUJBLHNCQUFBLENBQThCYyxJQUFJLENBQUNsQixHQUFHLENBQUM7SUFDM0MsQ0FBQyxDQUFDLE9BQU9tQixDQUFDLEVBQUU7TUFDUnBCLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBR0EsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7TUFDM0RBLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQ21CLElBQUksQ0FBQ2xCLEdBQUcsQ0FBQztJQUN2QztFQUNKO0VBRUEsS0FBSyxNQUFNLENBQUNpQixNQUFNLEVBQUVHLFVBQVUsQ0FBQyxJQUFJLElBQUFDLDZCQUFjLEVBQUN0QixjQUFjLENBQUMsRUFBRTtJQUMvRFAsT0FBTyxDQUFDbUIsTUFBTSxDQUFDVyxHQUFHLENBQUNMLE1BQU0sQ0FBQztJQUMxQnpCLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFFLEtBQUlGLFVBQVUsQ0FBQ0csTUFBTyxRQUFPLENBQUM7RUFDdEQ7RUFDQS9CLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFDLEVBQUUsQ0FBQztFQUN0QixLQUFLLE1BQU0sQ0FBQ0wsTUFBTSxFQUFFTyxJQUFJLENBQUMsSUFBSUMsTUFBTSxDQUFDQyxPQUFPLENBQUMzQixjQUFjLENBQUMsRUFBRTtJQUN6RFAsT0FBTyxDQUFDbUIsTUFBTSxDQUFDVyxHQUFHLENBQUNMLE1BQU0sQ0FBQztJQUMxQnpCLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFFLEtBQUlFLElBQUksQ0FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUUsRUFBQyxDQUFDO0VBQzlDO0FBQ0oifQ==
|
|
@@ -10,17 +10,21 @@ var _FormGlobsUtils = require("../../Commons/FormGlobsUtils");
|
|
|
10
10
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
11
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
12
12
|
async function runRenameFiles(context, options, resourcesDirectory, farmDirectory) {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
|
|
14
|
+
const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
|
|
15
|
+
for (const {
|
|
16
|
+
gfv,
|
|
17
|
+
formPath
|
|
18
|
+
} of await _FormGlobsUtils.FormGlobs.resolveGfvGlobs(formGlobs, farmDirectory)) {
|
|
15
19
|
if (!isNaN(Number(gfv))) {
|
|
16
20
|
const logger = context.logger.withPrefix(`FORM:${gfv}`);
|
|
17
|
-
await renameFiles(farmDirectory, gfv, logger);
|
|
21
|
+
await renameFiles(farmDirectory, gfv, formPath, logger);
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
24
|
}
|
|
21
|
-
async function renameFiles(farmDirectory, gfv, logger) {
|
|
25
|
+
async function renameFiles(farmDirectory, gfv, formPath, logger) {
|
|
22
26
|
var _maxSubversion;
|
|
23
|
-
const presentationsFile = path.join(
|
|
27
|
+
const presentationsFile = path.join(formPath, "presentations.json");
|
|
24
28
|
if (!(await (0, _fsExtra.pathExists)(presentationsFile))) {
|
|
25
29
|
logger.warning(`Form ${gfv} does not have presentations.json.`);
|
|
26
30
|
return;
|
|
@@ -35,14 +39,13 @@ async function renameFiles(farmDirectory, gfv, logger) {
|
|
|
35
39
|
maxSubversion = (_maxSubversion = maxSubversion) !== null && _maxSubversion !== void 0 ? _maxSubversion : 0;
|
|
36
40
|
const rngXmlFileName = `${gfv}.rng.xml`;
|
|
37
41
|
const newRngXmlFileName = `${gfv}.${maxSubversion}.rng.xml`;
|
|
38
|
-
const
|
|
39
|
-
const fileDirPath = path.join(formDirPath, "schemas", rngXmlFileName);
|
|
42
|
+
const fileDirPath = path.join(formPath, "schemas", rngXmlFileName);
|
|
40
43
|
if (!(await (0, _fsExtra.pathExists)(fileDirPath))) {
|
|
41
44
|
logger.warning(`Form ${gfv} does not have ${rngXmlFileName}.`);
|
|
42
45
|
return;
|
|
43
46
|
}
|
|
44
|
-
const newFileDirPath = path.join(
|
|
47
|
+
const newFileDirPath = path.join(formPath, "schemas", newRngXmlFileName);
|
|
45
48
|
logger.log(`Rename "${rngXmlFileName}" in "${newRngXmlFileName}".`);
|
|
46
49
|
await (0, _fsExtra.rename)(fileDirPath, newFileDirPath);
|
|
47
50
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwicnVuUmVuYW1lRmlsZXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsInJlc291cmNlc0RpcmVjdG9yeSIsImZhcm1EaXJlY3RvcnkiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwiZ2Z2IiwiZm9ybVBhdGgiLCJyZXNvbHZlR2Z2R2xvYnMiLCJpc05hTiIsIk51bWJlciIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJyZW5hbWVGaWxlcyIsIl9tYXhTdWJ2ZXJzaW9uIiwicHJlc2VudGF0aW9uc0ZpbGUiLCJqb2luIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJqc29uIiwicmVhZEpzb24iLCJtYXhTdWJ2ZXJzaW9uIiwiaXRlbSIsInVuZGVmaW5lZCIsInJuZ1htbEZpbGVOYW1lIiwibmV3Um5nWG1sRmlsZU5hbWUiLCJmaWxlRGlyUGF0aCIsIm5ld0ZpbGVEaXJQYXRoIiwibG9nIiwicmVuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL1JlbmFtZUZpbGVzL1J1blJlbmFtZUZpbGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cywgcmVhZEpzb24sIHJlbmFtZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5cbmltcG9ydCB7IFJlbmFtZUZpbGVzT3B0aW9ucyB9IGZyb20gXCIuL1JlbmFtZUZpbGVzT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUmVuYW1lRmlsZXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBSZW5hbWVGaWxlc09wdGlvbnMsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0ob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG4gICAgZm9yIChjb25zdCB7IGdmdiwgZm9ybVBhdGggfSBvZiBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZUdmdkdsb2JzKGZvcm1HbG9icywgZmFybURpcmVjdG9yeSkpIHtcbiAgICAgICAgaWYgKCFpc05hTihOdW1iZXIoZ2Z2KSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCk7XG4gICAgICAgICAgICBhd2FpdCByZW5hbWVGaWxlcyhmYXJtRGlyZWN0b3J5LCBnZnYsIGZvcm1QYXRoLCBsb2dnZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZW5hbWVGaWxlcyhmYXJtRGlyZWN0b3J5OiBzdHJpbmcsIGdmdjogc3RyaW5nLCBmb3JtUGF0aDogc3RyaW5nLCBsb2dnZXI6IElMb2dnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcmVzZW50YXRpb25zRmlsZSA9IHBhdGguam9pbihmb3JtUGF0aCwgXCJwcmVzZW50YXRpb25zLmpzb25cIik7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwcmVzZW50YXRpb25zRmlsZSkpKSB7XG4gICAgICAgIGxvZ2dlci53YXJuaW5nKGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIHByZXNlbnRhdGlvbnMuanNvbi5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBqc29uID0gYXdhaXQgcmVhZEpzb24ocHJlc2VudGF0aW9uc0ZpbGUpO1xuICAgIGxldCBtYXhTdWJ2ZXJzaW9uID0gMDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YganNvbikge1xuICAgICAgICBpZiAoaXRlbVtcIk1heFZlcnNpb25cIl0gIT09IHVuZGVmaW5lZCAmJiBpdGVtW1wiTWF4VmVyc2lvblwiXSkge1xuICAgICAgICAgICAgbWF4U3VidmVyc2lvbiA9IGl0ZW1bXCJNYXhWZXJzaW9uXCJdO1xuICAgICAgICB9XG4gICAgfVxuICAgIG1heFN1YnZlcnNpb24gPSBtYXhTdWJ2ZXJzaW9uID8/IDA7XG4gICAgY29uc3Qgcm5nWG1sRmlsZU5hbWUgPSBgJHtnZnZ9LnJuZy54bWxgO1xuICAgIGNvbnN0IG5ld1JuZ1htbEZpbGVOYW1lID0gYCR7Z2Z2fS4ke21heFN1YnZlcnNpb259LnJuZy54bWxgO1xuICAgIGNvbnN0IGZpbGVEaXJQYXRoID0gcGF0aC5qb2luKGZvcm1QYXRoLCBcInNjaGVtYXNcIiwgcm5nWG1sRmlsZU5hbWUpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZmlsZURpclBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSAke3JuZ1htbEZpbGVOYW1lfS5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdGaWxlRGlyUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgXCJzY2hlbWFzXCIsIG5ld1JuZ1htbEZpbGVOYW1lKTtcbiAgICBsb2dnZXIubG9nKGBSZW5hbWUgXCIke3JuZ1htbEZpbGVOYW1lfVwiIGluIFwiJHtuZXdSbmdYbWxGaWxlTmFtZX1cIi5gKTtcbiAgICBhd2FpdCByZW5hbWUoZmlsZURpclBhdGgsIG5ld0ZpbGVEaXJQYXRoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsZUFBQSxHQUFBRixPQUFBO0FBQXlELFNBQUFHLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFMLHdCQUFBUyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYsR0FBQSxVQUFBRyxLQUFBLEdBQUFSLHdCQUFBLENBQUFDLFdBQUEsT0FBQU8sS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUosR0FBQSxZQUFBRyxLQUFBLENBQUFFLEdBQUEsQ0FBQUwsR0FBQSxTQUFBTSxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFBQVgsR0FBQSxRQUFBVyxHQUFBLGtCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFkLEdBQUEsRUFBQVcsR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVYsR0FBQSxFQUFBVyxHQUFBLGNBQUFJLElBQUEsS0FBQUEsSUFBQSxDQUFBVixHQUFBLElBQUFVLElBQUEsQ0FBQUMsR0FBQSxLQUFBUixNQUFBLENBQUFDLGNBQUEsQ0FBQUgsTUFBQSxFQUFBSyxHQUFBLEVBQUFJLElBQUEsWUFBQVQsTUFBQSxDQUFBSyxHQUFBLElBQUFYLEdBQUEsQ0FBQVcsR0FBQSxTQUFBTCxNQUFBLENBQUFKLE9BQUEsR0FBQUYsR0FBQSxNQUFBRyxLQUFBLElBQUFBLEtBQUEsQ0FBQWEsR0FBQSxDQUFBaEIsR0FBQSxFQUFBTSxNQUFBLFlBQUFBLE1BQUE7QUFLbEQsZUFBZVcsY0FBY0EsQ0FDaENDLE9BQWtDLEVBQ2xDQyxPQUEyQixFQUMzQkMsa0JBQTBCLEVBQzFCQyxhQUFxQixFQUNSO0VBQ2IsTUFBTUMseUJBQVMsQ0FBQ0Msc0NBQXNDLENBQUNKLE9BQU8sQ0FBQ0ssU0FBUyxFQUFFSCxhQUFhLENBQUM7RUFDeEYsTUFBTUcsU0FBUyxHQUFHLE1BQU1GLHlCQUFTLENBQUNHLGlCQUFpQixDQUFDTixPQUFPLENBQUNLLFNBQVMsRUFBRUgsYUFBYSxDQUFDO0VBQ3JGLEtBQUssTUFBTTtJQUFFSyxHQUFHO0lBQUVDO0VBQVMsQ0FBQyxJQUFJLE1BQU1MLHlCQUFTLENBQUNNLGVBQWUsQ0FBQ0osU0FBUyxFQUFFSCxhQUFhLENBQUMsRUFBRTtJQUN2RixJQUFJLENBQUNRLEtBQUssQ0FBQ0MsTUFBTSxDQUFDSixHQUFHLENBQUMsQ0FBQyxFQUFFO01BQ3JCLE1BQU1LLE1BQU0sR0FBR2IsT0FBTyxDQUFDYSxNQUFNLENBQUNDLFVBQVUsQ0FBRSxRQUFPTixHQUFJLEVBQUMsQ0FBQztNQUN2RCxNQUFNTyxXQUFXLENBQUNaLGFBQWEsRUFBRUssR0FBRyxFQUFFQyxRQUFRLEVBQUVJLE1BQU0sQ0FBQztJQUMzRDtFQUNKO0FBQ0o7QUFFQSxlQUFlRSxXQUFXQSxDQUFDWixhQUFxQixFQUFFSyxHQUFXLEVBQUVDLFFBQWdCLEVBQUVJLE1BQWUsRUFBaUI7RUFBQSxJQUFBRyxjQUFBO0VBQzdHLE1BQU1DLGlCQUFpQixHQUFHN0MsSUFBSSxDQUFDOEMsSUFBSSxDQUFDVCxRQUFRLEVBQUUsb0JBQW9CLENBQUM7RUFDbkUsSUFBSSxFQUFFLE1BQU0sSUFBQVUsbUJBQVUsRUFBQ0YsaUJBQWlCLENBQUMsQ0FBQyxFQUFFO0lBQ3hDSixNQUFNLENBQUNPLE9BQU8sQ0FBRSxRQUFPWixHQUFJLG9DQUFtQyxDQUFDO0lBQy9EO0VBQ0o7RUFDQSxNQUFNYSxJQUFJLEdBQUcsTUFBTSxJQUFBQyxpQkFBUSxFQUFDTCxpQkFBaUIsQ0FBQztFQUM5QyxJQUFJTSxhQUFhLEdBQUcsQ0FBQztFQUNyQixLQUFLLE1BQU1DLElBQUksSUFBSUgsSUFBSSxFQUFFO0lBQ3JCLElBQUlHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBS0MsU0FBUyxJQUFJRCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7TUFDeERELGFBQWEsR0FBR0MsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN0QztFQUNKO0VBQ0FELGFBQWEsSUFBQVAsY0FBQSxHQUFHTyxhQUFhLGNBQUFQLGNBQUEsY0FBQUEsY0FBQSxHQUFJLENBQUM7RUFDbEMsTUFBTVUsY0FBYyxHQUFJLEdBQUVsQixHQUFJLFVBQVM7RUFDdkMsTUFBTW1CLGlCQUFpQixHQUFJLEdBQUVuQixHQUFJLElBQUdlLGFBQWMsVUFBUztFQUMzRCxNQUFNSyxXQUFXLEdBQUd4RCxJQUFJLENBQUM4QyxJQUFJLENBQUNULFFBQVEsRUFBRSxTQUFTLEVBQUVpQixjQUFjLENBQUM7RUFDbEUsSUFBSSxFQUFFLE1BQU0sSUFBQVAsbUJBQVUsRUFBQ1MsV0FBVyxDQUFDLENBQUMsRUFBRTtJQUNsQ2YsTUFBTSxDQUFDTyxPQUFPLENBQUUsUUFBT1osR0FBSSxrQkFBaUJrQixjQUFlLEdBQUUsQ0FBQztJQUM5RDtFQUNKO0VBQ0EsTUFBTUcsY0FBYyxHQUFHekQsSUFBSSxDQUFDOEMsSUFBSSxDQUFDVCxRQUFRLEVBQUUsU0FBUyxFQUFFa0IsaUJBQWlCLENBQUM7RUFDeEVkLE1BQU0sQ0FBQ2lCLEdBQUcsQ0FBRSxXQUFVSixjQUFlLFNBQVFDLGlCQUFrQixJQUFHLENBQUM7RUFDbkUsTUFBTSxJQUFBSSxlQUFNLEVBQUNILFdBQVcsRUFBRUMsY0FBYyxDQUFDO0FBQzdDIn0=
|