@kontur.candy/tools 2.147.0 → 2.149.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +51 -6
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +18 -4
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +11 -0
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +6 -0
- package/distr/Common/HttpClient/HttpClient.js +5 -2
- package/distr/Common/IterableUtils.js +26 -1
- package/distr/Common/ModelPath/ModelPath.js +3 -3
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +45 -2
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +3 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +5 -5
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +37 -0
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +9 -7
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +369 -369
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +33 -33
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -86,11 +86,11 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
86
86
|
return _Observe.Observe.file(_path.default.join(formDirPath, "form.json")).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath, engineDirectory, context.logger.withPrefix(`FORM:${gfv}`), options.upgradeFormJson, options.useLastStableVersion, options.usePrereleaseVersion)).transform(async fi => {
|
|
87
87
|
if (fi.mode === _ResolveFormInfo.FormBuildMode.NormalBuild) {
|
|
88
88
|
if (fi.generatorVersion == undefined) {
|
|
89
|
-
throw new Error("generatorVersion is
|
|
89
|
+
throw new Error("generatorVersion is not defined");
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
if (fi.engineVersion == undefined) {
|
|
93
|
-
throw new Error("engineVersion is
|
|
93
|
+
throw new Error("engineVersion is not defined");
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
return { ...fi,
|
|
@@ -178,8 +178,8 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
178
178
|
mode: options.buildCacheMode,
|
|
179
179
|
farmDirectory: farmDirectory
|
|
180
180
|
} : undefined;
|
|
181
|
-
await (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, (_fi$dependenciesHash2 = fi.dependenciesHash) !== null && _fi$dependenciesHash2 !== void 0 ? _fi$dependenciesHash2 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not
|
|
182
|
-
await (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, (_fi$dependenciesHash3 = fi.dependenciesHash) !== null && _fi$dependenciesHash3 !== void 0 ? _fi$dependenciesHash3 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not
|
|
181
|
+
await (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, (_fi$dependenciesHash2 = fi.dependenciesHash) !== null && _fi$dependenciesHash2 !== void 0 ? _fi$dependenciesHash2 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supported"), false, undefined, buildCacheOptions);
|
|
182
|
+
await (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, (_fi$dependenciesHash3 = fi.dependenciesHash) !== null && _fi$dependenciesHash3 !== void 0 ? _fi$dependenciesHash3 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supported"), fi.themes, buildCache, buildCacheOptions);
|
|
183
183
|
}).do(async fi => {
|
|
184
184
|
if (fi.generatorSource == undefined) {
|
|
185
185
|
return;
|
|
@@ -262,4 +262,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
|
|
|
262
262
|
await (0, _fsExtra.emptyDir)(resourcesDirectory);
|
|
263
263
|
logger.log("Resource directory clean");
|
|
264
264
|
}
|
|
265
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJjb3B5RmlsZSIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxtQkFBVCxDQUE2QkMsZUFBN0IsRUFBdUU7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QU0sQ0FBQ2lELEdBQVAsQ0FBVywwQkFBWDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgZW1wdHlEaXIsIHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBub3RpZmllciBmcm9tIFwibm9kZS1ub3RpZmllclwiO1xuXG5pbXBvcnQgeyBlbmdpbmVGYWN0b3J5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0FjcXVpcmVGb3JtRW5naW5lXCI7XG5pbXBvcnQgeyBnZXRFbmdpbmVTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvRW5naW5lU291cmNlXCI7XG5pbXBvcnQgeyBjb21waWxlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm1cIjtcbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBOdWxsRm9ybUdlbmVyYXRvciB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vTnVsbEZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHtcbiAgICBnZW5lcmF0b3JGYWN0b3J5LFxuICAgIEdlbmVyYXRvclNvdXJjZSxcbiAgICBnZXRHZW5lcmF0b3JTb3VyY2VLZXksXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZ2luZVZlcnNpb24sIHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRNb2RlLCByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBTaW5nbGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL1NpbmdsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IHByaW50VGltZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1RpbWluZ1V0aWxzXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmRpcmVjdG9yeShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBnZnYgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi94c2x0VGVtcGxhdGVzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vanNIZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgIT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgZmkuZ2VuZXJhdG9yLnN1cHBvcnRzRGVwZW5kZW5jaWVzRXh0cmFjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoID0gYXdhaXQgZmkuZ2VuZXJhdG9yLmdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBidWlsZENhY2hlLmV4aXN0cyhmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBHRU5FUkFURToke2dmdn1gKS5sb2coXCJTa2lwcGVkIGR1ZSBidWlsZCBjYWNoZSBleGl0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoID8/IFwiVW5kZWZpbmVkUmVzb3VyY2VzSGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBidWlsZENhY2hlLmV4aXN0cyhmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBDT01QSUxFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXN0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBidWlsZENhY2hlLmV4dHJhY3QoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gsIHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29tcGlsZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGb3JtTWV0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Db3B5TGVnYWN5UHJlYnVpbHRSZXNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibGVnYWN5LXByZWJ1aWx0XCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJMRUdBQ1ktUFJFQlVJTFRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwic2NoZW1hc1wiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RpZmllciA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQucmVwbGFjZSgvPHg6aW5jbHVkZSBocmVmPVwiWy4vXSsvZywgJzx4OmluY2x1ZGUgaHJlZj1cIicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2subW9kaWZ5RmlsZXNDb250ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJGSVgtWFNMVC1JTkNMVURFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKiovKi54c2x0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJ4c2x0VGVtcGxhdGVzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiWFNMVC1URU1QTEFURVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiwgXCJ4c2x0VGVtcGxhdGVzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwcmVzZW50YXRpb25zLmpzb25cIikpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5RmlsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUFJFU0VOVEFUSU9OU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHJlc2VudGF0aW9uc1wiLCBgJHtnZnZ9LnByZXNlbnRhdGlvbnMuanNvbmApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyLm5vdGlmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2ZpLmZvcm1OYW1lfTog0YHQsdC+0YDQutCwINC30LDQstC10YDRiNC10L3QsGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEVuZ2luZTogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlID09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIltOb0VuZ2luZV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlMyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzTnVTcGVjQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXX0=
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJjb3B5RmlsZSIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxtQkFBVCxDQUE2QkMsZUFBN0IsRUFBdUU7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QU0sQ0FBQ2lELEdBQVAsQ0FBVywwQkFBWDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgZW1wdHlEaXIsIHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBub3RpZmllciBmcm9tIFwibm9kZS1ub3RpZmllclwiO1xuXG5pbXBvcnQgeyBlbmdpbmVGYWN0b3J5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0FjcXVpcmVGb3JtRW5naW5lXCI7XG5pbXBvcnQgeyBnZXRFbmdpbmVTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvRW5naW5lU291cmNlXCI7XG5pbXBvcnQgeyBjb21waWxlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm1cIjtcbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBOdWxsRm9ybUdlbmVyYXRvciB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vTnVsbEZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHtcbiAgICBnZW5lcmF0b3JGYWN0b3J5LFxuICAgIEdlbmVyYXRvclNvdXJjZSxcbiAgICBnZXRHZW5lcmF0b3JTb3VyY2VLZXksXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZ2luZVZlcnNpb24sIHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRNb2RlLCByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBTaW5nbGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL1NpbmdsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IHByaW50VGltZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1RpbWluZ1V0aWxzXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmRpcmVjdG9yeShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBnZnYgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZW5naW5lVmVyc2lvbiBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChnZnYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IGF3YWl0IHJlc29sdmVFbmdpbmVWZXJzaW9uKGZpLmVuZ2luZVZlcnNpb24sIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKG5ldyBOdWxsRm9ybUdlbmVyYXRvcigpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvckZhY3RvcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVZlcnNpb25Gcm9tQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJOdWxsRm9ybUdlbmVyYXRvclwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5lbmdpbmVTb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihcIk51bGxFbmdpbmVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5naW5lRmFjdG9yeShmaS5lbmdpbmVTb3VyY2UsIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlKS5kbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyB4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3BpZWRFbmdpbmVzLmhhcyhnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVOR0lORVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkRW5naW5lcy5hZGQoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZmksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IChmaS5lbmdpbmVTb3VyY2UgIT0gdW5kZWZpbmVkID8gZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkgOiBcIk51bGxFbmdpbmVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL3hzbHRUZW1wbGF0ZXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9qc0hlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSAhPT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBmaS5nZW5lcmF0b3Iuc3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZvcm1NZXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJsZWdhY3ktcHJlYnVpbHRcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkxFR0FDWS1QUkVCVUlMVFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1lcmdlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNRVJHRVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtZXJnZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5yZXBsYWNlKC88eDppbmNsdWRlIGhyZWY9XCJbLi9dKy9nLCAnPHg6aW5jbHVkZSBocmVmPVwiJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5tb2RpZnlGaWxlc0NvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkZJWC1YU0xULUlOQ0xVREVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKi8qLnhzbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiLi5cIiwgXCIuLlwiLCBcInhzbHRUZW1wbGF0ZXNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJYU0xULVRFTVBMQVRFU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiLCBcInhzbHRUZW1wbGF0ZXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKSkuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQUkVTRU5UQVRJT05TXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwcmVzZW50YXRpb25zXCIsIGAke2dmdn0ucHJlc2VudGF0aW9ucy5qc29uYClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubm90aWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7ZmkuZm9ybU5hbWV9OiDRgdCx0L7RgNC60LAg0LfQsNCy0LXRgNGI0LXQvdCwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRW5naW5lOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UgPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiW05vRW5naW5lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS50eXBlID09PSBcIkxvY2FsRW5naW5lU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNCA9IGF3YWl0IHJlc291cmNlc051U3BlY0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuICAgICAgICBpZiAoc3RvcE9ic2VydmUzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlNCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1zQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUb3RhbCB0aW1lOiAke3ByaW50VGltZSh0b3RhbFRpbWUpfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmxvZyhcIkNsZWFuaW5nIHJlc291cmNlIGRpcmVjdG9yeS4gXCIgKyByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGF3YWl0IGVtcHR5RGlyKHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgbG9nZ2VyLmxvZyhcIlJlc291cmNlIGRpcmVjdG9yeSBjbGVhblwiKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ToolsApiClient = void 0;
|
|
7
|
+
|
|
8
|
+
var _AuthenticationMode = require("../../../../Common/HttpClient/AuthenticationMode");
|
|
9
|
+
|
|
10
|
+
var _HttpClient = require("../../../../Common/HttpClient/HttpClient");
|
|
11
|
+
|
|
12
|
+
var _NodeFetch = require("../../../../Common/HttpClient/FetchImplementation/NodeFetch");
|
|
13
|
+
|
|
14
|
+
var _EndPoints = require("../../../../Common/EndPoints");
|
|
15
|
+
|
|
16
|
+
class ToolsApiClient {
|
|
17
|
+
constructor(baseUrl, resourceZone, authentication) {
|
|
18
|
+
this.httpClient = void 0;
|
|
19
|
+
this.httpClient = new _HttpClient.HttpClient(_NodeFetch.nodeFetch, baseUrl !== null && baseUrl !== void 0 ? baseUrl : _EndPoints.localCandyApi, (0, _AuthenticationMode.createAuthenticationProvider)(authentication), {
|
|
20
|
+
resourceZone: resourceZone
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async compileNormalizationRules(rules, normalizerId) {
|
|
25
|
+
return this.httpClient.post(this.getUrl("compile-normalization-rules")).withQueryParams({
|
|
26
|
+
normalizerId: normalizerId
|
|
27
|
+
}).withJsonBody(rules).json();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
getUrl(draftRelatedUrl) {
|
|
31
|
+
return `v1/tools/${draftRelatedUrl}`;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
exports.ToolsApiClient = ToolsApiClient;
|
|
37
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Db21tb25zL0FwaUNsaWVudC9Ub29sc0FwaUNsaWVudC50cyJdLCJuYW1lcyI6WyJUb29sc0FwaUNsaWVudCIsImNvbnN0cnVjdG9yIiwiYmFzZVVybCIsInJlc291cmNlWm9uZSIsImF1dGhlbnRpY2F0aW9uIiwiaHR0cENsaWVudCIsIkh0dHBDbGllbnQiLCJub2RlRmV0Y2giLCJsb2NhbENhbmR5QXBpIiwiY29tcGlsZU5vcm1hbGl6YXRpb25SdWxlcyIsInJ1bGVzIiwibm9ybWFsaXplcklkIiwicG9zdCIsImdldFVybCIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhKc29uQm9keSIsImpzb24iLCJkcmFmdFJlbGF0ZWRVcmwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFPTyxNQUFNQSxjQUFOLENBQXFCO0FBR2pCQyxFQUFBQSxXQUFXLENBQUNDLE9BQUQsRUFBbUJDLFlBQW5CLEVBQTBDQyxjQUExQyxFQUErRTtBQUFBLFNBRmhGQyxVQUVnRjtBQUM3RixTQUFLQSxVQUFMLEdBQWtCLElBQUlDLHNCQUFKLENBQ2RDLG9CQURjLEVBRWRMLE9BRmMsYUFFZEEsT0FGYyxjQUVkQSxPQUZjLEdBRUhNLHdCQUZHLEVBR2Qsc0RBQTZCSixjQUE3QixDQUhjLEVBSWQ7QUFDSUQsTUFBQUEsWUFBWSxFQUFFQTtBQURsQixLQUpjLENBQWxCO0FBUUg7O0FBRXFDLFFBQXpCTSx5QkFBeUIsQ0FDbENDLEtBRGtDLEVBRWxDQyxZQUZrQyxFQUdNO0FBQ3hDLFdBQU8sS0FBS04sVUFBTCxDQUNGTyxJQURFLENBQ0csS0FBS0MsTUFBTCxDQUFZLDZCQUFaLENBREgsRUFFRkMsZUFGRSxDQUVjO0FBQUVILE1BQUFBLFlBQVksRUFBRUE7QUFBaEIsS0FGZCxFQUdGSSxZQUhFLENBR1dMLEtBSFgsRUFJRk0sSUFKRSxFQUFQO0FBS0g7O0FBRU9ILEVBQUFBLE1BQU0sQ0FBQ0ksZUFBRCxFQUFrQztBQUM1QyxXQUFRLFlBQVdBLGVBQWdCLEVBQW5DO0FBQ0g7O0FBM0J1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIdHRwQ2xpZW50IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0lIdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZGUsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvQXV0aGVudGljYXRpb25Nb2RlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0h0dHBDbGllbnRcIjtcbmltcG9ydCB7IG5vZGVGZXRjaCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vSHR0cENsaWVudC9GZXRjaEltcGxlbWVudGF0aW9uL05vZGVGZXRjaFwiO1xuaW1wb3J0IHsgbG9jYWxDYW5keUFwaSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vRW5kUG9pbnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZU5vcm1hbGl6YXRpb25SdWxlc1Jlc3VsdCB7XG4gICAgZGlhZ25vc3RpY01lc3NhZ2VzPzogc3RyaW5nW107XG4gICAgc291cmNlVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRvb2xzQXBpQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGJhc2VVcmw/OiBzdHJpbmcsIHJlc291cmNlWm9uZT86IHN0cmluZywgYXV0aGVudGljYXRpb24/OiBBdXRoZW50aWNhdGlvbk1vZGUpIHtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoXG4gICAgICAgICAgICBub2RlRmV0Y2gsXG4gICAgICAgICAgICBiYXNlVXJsID8/IGxvY2FsQ2FuZHlBcGksXG4gICAgICAgICAgICBjcmVhdGVBdXRoZW50aWNhdGlvblByb3ZpZGVyKGF1dGhlbnRpY2F0aW9uKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29tcGlsZU5vcm1hbGl6YXRpb25SdWxlcyhcbiAgICAgICAgcnVsZXM6IHN0cmluZyxcbiAgICAgICAgbm9ybWFsaXplcklkPzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxDb21waWxlTm9ybWFsaXphdGlvblJ1bGVzUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0VXJsKFwiY29tcGlsZS1ub3JtYWxpemF0aW9uLXJ1bGVzXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IG5vcm1hbGl6ZXJJZDogbm9ybWFsaXplcklkIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJ1bGVzKVxuICAgICAgICAgICAgLmpzb248Q29tcGlsZU5vcm1hbGl6YXRpb25SdWxlc1Jlc3VsdD4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvdG9vbHMvJHtkcmFmdFJlbGF0ZWRVcmx9YDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -154,16 +154,18 @@ class BuildCache {
|
|
|
154
154
|
|
|
155
155
|
async existsFileCacheOrDownload(gfv, generatorVersion, depsHash) {
|
|
156
156
|
const filePath = this.getCacheFilePath(gfv, generatorVersion, depsHash);
|
|
157
|
-
this.logger.log(`Start search file
|
|
157
|
+
this.logger.log(`Start search file locally: ${filePath}`);
|
|
158
|
+
const filename = path.basename(filePath);
|
|
158
159
|
await (0, _fsExtra.ensureDir)(path.dirname(filePath));
|
|
159
160
|
|
|
160
161
|
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
161
|
-
this.logger.log(
|
|
162
|
+
this.logger.log("Found file in local directory");
|
|
162
163
|
return filePath;
|
|
163
164
|
} else {
|
|
164
165
|
try {
|
|
165
|
-
this.logger.log(
|
|
166
|
-
|
|
166
|
+
this.logger.log(`Cache file was not found locally: ${filePath}`);
|
|
167
|
+
this.logger.log(`Looking for cache in drive storage: ${filename}`);
|
|
168
|
+
const response = await (0, _nodeFetch.default)(`https://api.kontur.ru/drive/v1/public/${filename}`);
|
|
167
169
|
this.logger.log(`Drive response status code: ${response.status.toString()}`);
|
|
168
170
|
|
|
169
171
|
if (response.status === 200) {
|
|
@@ -171,9 +173,9 @@ class BuildCache {
|
|
|
171
173
|
return filePath;
|
|
172
174
|
} else {
|
|
173
175
|
if (response.status === 404) {
|
|
174
|
-
this.logger.error(
|
|
176
|
+
this.logger.error(`Cache file not found in drive storage: ${filename}. GFV: ${gfv}, GeneratorVersion: ${generatorVersion}, DependenciesHash: ${depsHash}`);
|
|
175
177
|
} else {
|
|
176
|
-
this.logger.error(`Drive storage
|
|
178
|
+
this.logger.error(`Drive storage sent ${response.status} status code, I don't process it in any way`);
|
|
177
179
|
}
|
|
178
180
|
|
|
179
181
|
return undefined;
|
|
@@ -190,4 +192,4 @@ class BuildCache {
|
|
|
190
192
|
}
|
|
191
193
|
|
|
192
194
|
exports.BuildCache = BuildCache;
|
|
193
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW4udHMiXSwibmFtZXMiOlsic2luZ2xlTGltaXQiLCJDYWNoZUFzc2V0c1BsdWdpbiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImFwcGx5IiwiY29tcGlsZXIiLCJob29rcyIsImVtaXQiLCJ0YXBQcm9taXNlIiwiY29tcGlsYXRpb24iLCJjYWNoZUl0ZW1zIiwiYXNzZXROYW1lIiwiT2JqZWN0Iiwia2V5cyIsImFzc2V0cyIsInNvdXJjZSIsIkJ1ZmZlciIsInR5cGUiLCJiYXNlNjRjb250ZW50IiwidG9TdHJpbmciLCJ1cGRhdGVGaWxlIiwiZmlsZVBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImNhY2hlRmlsZSIsImNvbnRlbnQiLCJKU09OIiwicGFyc2UiLCJkaXJuYW1lIiwic3RyaW5naWZ5IiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJtb2RlIiwibG9nZ2VyIiwid2l0aFByZWZpeCIsImV4dHJhY3QiLCJnZW5lcmF0b3JTb3VyY2UiLCJnZnYiLCJkZXBzSGFzaCIsInJlc291cmNlc0RpcmVjdG9yeSIsIkVycm9yIiwiZ2V0Q2FjaGVGaWxlUGF0aCIsInZlcnNpb24iLCJhc3NldFBhdGgiLCJjb250ZW50RWxlbWVudCIsImpvaW4iLCJmcm9tIiwiZXhpc3RzIiwiQnVpbGRDYWNoZU1vZGUiLCJEaXNhYmxlZCIsIkZvcmNlVXBkYXRlIiwiY2FjaGVkRmlsZVBhdGgiLCJleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkIiwidW5kZWZpbmVkIiwic2V0Q29udGVudCIsImZpbGVOYW1lIiwiZmlsZUNvbnRlbnQiLCJjYWNoZUZpbGVQYXRoIiwiY3JlYXRlV2VicGFja1BsdWdpbiIsIlJlYWRPbmx5IiwiZ2VuZXJhdG9yVmVyc2lvbiIsImxvZyIsInJlc3BvbnNlIiwiYmFzZW5hbWUiLCJzdGF0dXMiLCJidWZmZXIiLCJlcnJvciIsImUiXSwibWFw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Q0UsTUFBVCxDQUFnQjdDLFFBQWhCLEVBQTJCLEVBQTFFOztBQUNBLFlBQUkyQyxRQUFRLENBQUNFLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekIsZ0JBQU0sd0JBQVUzQyxRQUFWLEVBQW9CLE1BQU15QyxRQUFRLENBQUNHLE1BQVQsRUFBMUIsRUFBNkMsT0FBN0MsQ0FBTjtBQUNBLGlCQUFPNUMsUUFBUDtBQUNILFNBSEQsTUFHTztBQUNILGNBQUl5QyxRQUFRLENBQUNFLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekIsaUJBQUsvQixNQUFMLENBQVlpQyxLQUFaLENBQWtCLDJDQUFsQjtBQUNILFdBRkQsTUFFTztBQUNILGlCQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUNLLHNCQUFxQkosUUFBUSxDQUFDRSxNQUFPLDZDQUQxQztBQUdIOztBQUNELGlCQUFPWCxTQUFQO0FBQ0g7QUFDSixPQWpCRCxDQWlCRSxPQUFPYyxDQUFQLEVBQVU7QUFDUixhQUFLbEMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQix1Q0FBbEI7QUFDQSxhQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQix5Q0FBbEI7QUFDQSxhQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQkMsQ0FBbEI7QUFDQSxlQUFPZCxTQUFQO0FBQ0g7QUFDSjtBQUNKOztBQXhIbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciwgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG1kNSBmcm9tIFwibWQ1XCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgd2VicGFjayBmcm9tIFwid2VicGFja1wiO1xuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5cbmltcG9ydCB7IEdlbmVyYXRvclNvdXJjZSB9IGZyb20gXCIuLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZU1vZGUgfSBmcm9tIFwiLi4vQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9CdWlsZENhY2hlTW9kZVwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW50ZXJmYWNlIENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucyB7XG4gICAgY2FjaGVGaWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIHtcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgbW9kZTogQnVpbGRDYWNoZU1vZGU7XG4gICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nO1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGRlcHNIYXNoOiBzdHJpbmc7XG59XG5cbmNvbnN0IHNpbmdsZUxpbWl0ID0gcExpbWl0KDEpO1xuXG5pbnRlcmZhY2UgQnVpbGRSZXN1bHRzU2VyaWFsaXplZCB7XG4gICAgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHsgdHlwZTogXCJCdWZmZXJcIjsgYmFzZTY0Y29udGVudDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBDYWNoZUFzc2V0c1BsdWdpbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnM7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFwcGx5KGNvbXBpbGVyOiB3ZWJwYWNrLkNvbXBpbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbXBpbGVyLmhvb2tzLmVtaXQudGFwUHJvbWlzZShcIkNhY2hlQXNzZXRzUGx1Z2luXCIsIGNvbXBpbGF0aW9uID0+XG4gICAgICAgICAgICBzaW5nbGVMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGVJdGVtczogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IHt9O1xuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhc3NldE5hbWUgb2YgT2JqZWN0LmtleXMoY29tcGlsYXRpb24uYXNzZXRzKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2U6IHN0cmluZyB8IEJ1ZmZlciA9IGNvbXBpbGF0aW9uLmFzc2V0c1thc3NldE5hbWVdPy5zb3VyY2UoKSA/PyByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0geyB0eXBlOiBcIkJ1ZmZlclwiLCBiYXNlNjRjb250ZW50OiBzb3VyY2UudG9TdHJpbmcoXCJiYXNlNjRcIikgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlSXRlbXNbYXNzZXROYW1lXSA9IHNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUZpbGUoY2FjaGVJdGVtcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlRmlsZShjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMub3B0aW9ucy5jYWNoZUZpbGUpO1xuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSlcbiAgICAgICAgICAgID8gLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgXCJ1dGYtOFwiKSlcbiAgICAgICAgICAgIDoge307XG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgLi4uY2FjaGVJdGVtcyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLCBcInV0Zi04XCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1aWxkQ2FjaGUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kZTogQnVpbGRDYWNoZU1vZGU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IElMb2dnZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZmFybURpcmVjdG9yeTogc3RyaW5nLCBtb2RlOiBCdWlsZENhY2hlTW9kZSkge1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBmYXJtRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJCVUlMRF9DQUNIRVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXh0cmFjdChcbiAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBHZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICBkZXBzSGFzaDogc3RyaW5nLFxuICAgICAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZ1xuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiR2VuZXJhdG9yU291cmNlc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2NhbCBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydHMgY2FjaGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICBjb25zdCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGF3YWl0IHJlYWRGaWxlKHRoaXMuZ2V0Q2FjaGVGaWxlUGF0aChnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaCksIFwidXRmLThcIilcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBhc3NldFBhdGggb2YgT2JqZWN0LmtleXMoY29udGVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gY29udGVudFthc3NldFBhdGhdID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBhc3NldFBhdGgpO1xuICAgICAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50RWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgY29udGVudEVsZW1lbnQsIFwidXRmOFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBCdWZmZXIuZnJvbShjb250ZW50RWxlbWVudC5iYXNlNjRjb250ZW50LCBcImJhc2U2NFwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhpc3RzKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlLCBnZnY6IHN0cmluZywgZGVwc0hhc2g6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiR2VuZXJhdG9yU291cmNlc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2NhbCBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydHMgY2FjaGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSBCdWlsZENhY2hlTW9kZS5EaXNhYmxlZCB8fCB0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkZvcmNlVXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSBhd2FpdCB0aGlzLmV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQoZ2Z2LCBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbiwgZGVwc0hhc2gpO1xuICAgICAgICByZXR1cm4gY2FjaGVkRmlsZVBhdGggIT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDb250ZW50KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHN0cmluZyxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlQ29udGVudDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNhY2hlRmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgoZ2Z2LCBnZW5lcmF0b3JTb3VyY2UsIGRlcHNIYXNoKTtcbiAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhjYWNoZUZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlUGF0aCwgXCJ1dGYtOFwiKSk7XG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgW2ZpbGVOYW1lXTogZmlsZUNvbnRlbnQsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoY2FjaGVGaWxlUGF0aCkpO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoY2FjaGVGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29udGVudCksIFwidXRmLThcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZVdlYnBhY2tQbHVnaW4ob3B0aW9uczogRm9ybUJ1aWxkQ2FjaGVPcHRpb25zKTogUHJvbWlzZTxDYWNoZUFzc2V0c1BsdWdpbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09PSBCdWlsZENhY2hlTW9kZS5EaXNhYmxlZCB8fCBvcHRpb25zLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLlJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhY2hlZEZpbGVQYXRoID0gdGhpcy5nZXRDYWNoZUZpbGVQYXRoKG9wdGlvbnMuZ2Z2LCBvcHRpb25zLmdlbmVyYXRvclZlcnNpb24sIG9wdGlvbnMuZGVwc0hhc2gpO1xuICAgICAgICByZXR1cm4gbmV3IENhY2hlQXNzZXRzUGx1Z2luKHtcbiAgICAgICAgICAgIGNhY2hlRmlsZTogY2FjaGVkRmlsZVBhdGgsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2FjaGVGaWxlUGF0aChnZnY6IHN0cmluZywgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nLCBkZXBzSGFzaDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHttZDUoZ2Z2KX0tJHttZDUoZ2VuZXJhdG9yVmVyc2lvbil9LSR7ZGVwc0hhc2h9LnppcGA7XG4gICAgICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcIi5idWlsZC1jYWNoZVwiLCBcImNvbXBpbGVcIiwgZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZXhpc3RzRmlsZUNhY2hlT3JEb3dubG9hZChcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGdlbmVyYXRvclZlcnNpb246IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRDYWNoZUZpbGVQYXRoKGdmdiwgZ2VuZXJhdG9yVmVyc2lvbiwgZGVwc0hhc2gpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYFN0YXJ0IHNlYXJjaCBmaWxlIGluIGxvY2FsICR7ZmlsZVBhdGh9YCk7XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYEZvdW5kIGZpbGUgaW4gbG9jYWwgZGlyZWN0b3J5YCk7XG4gICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIlRoZSBjYWNoZSBmaWxlIHdhcyBub3QgZm91bmQgaW4gdGhlIGxvY2FsIGRpcmVjdG9yeSBJbSBsb29raW5nIGZvciBpdCBpbiBkcml2ZVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL2FwaS5rb250dXIucnUvZHJpdmUvdjEvcHVibGljLyR7cGF0aC5iYXNlbmFtZShmaWxlUGF0aCl9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBEcml2ZSByZXNwb25zZSBzdGF0dXMgY29kZTogJHtyZXNwb25zZS5zdGF0dXMudG9TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBhd2FpdCByZXNwb25zZS5idWZmZXIoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJUaGUgY2FjaGUgZmlsZSBub3QgZm91bmQgaW4gZHJpdmUgc3RvcmFnZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBEcml2ZSBzdG9yYWdlIHNlbmQgJHtyZXNwb25zZS5zdGF0dXN9IHN0YXR1cyBjb2RlLCBJIGRvbid0IHByb2Nlc3MgaXQgaW4gYW55IHdheWBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJEcml2ZSBzdG9yYWdlIHJlc3BvbmRlZCB3aXRoIGFuIGVycm9yXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiVGhlIGJ1aWxkIHdpbGwgY29udGludWUgd2l0aG91dCBhIGNhY2hlXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
195
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW4udHMiXSwibmFtZXMiOlsic2luZ2xlTGltaXQiLCJDYWNoZUFzc2V0c1BsdWdpbiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImFwcGx5IiwiY29tcGlsZXIiLCJob29rcyIsImVtaXQiLCJ0YXBQcm9taXNlIiwiY29tcGlsYXRpb24iLCJjYWNoZUl0ZW1zIiwiYXNzZXROYW1lIiwiT2JqZWN0Iiwia2V5cyIsImFzc2V0cyIsInNvdXJjZSIsIkJ1ZmZlciIsInR5cGUiLCJiYXNlNjRjb250ZW50IiwidG9TdHJpbmciLCJ1cGRhdGVGaWxlIiwiZmlsZVBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImNhY2hlRmlsZSIsImNvbnRlbnQiLCJKU09OIiwicGFyc2UiLCJkaXJuYW1lIiwic3RyaW5naWZ5IiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJtb2RlIiwibG9nZ2VyIiwid2l0aFByZWZpeCIsImV4dHJhY3QiLCJnZW5lcmF0b3JTb3VyY2UiLCJnZnYiLCJkZXBzSGFzaCIsInJlc291cmNlc0RpcmVjdG9yeSIsIkVycm9yIiwiZ2V0Q2FjaGVGaWxlUGF0aCIsInZlcnNpb24iLCJhc3NldFBhdGgiLCJjb250ZW50RWxlbWVudCIsImpvaW4iLCJmcm9tIiwiZXhpc3RzIiwiQnVpbGRDYWNoZU1vZGUiLCJEaXNhYmxlZCIsIkZvcmNlVXBkYXRlIiwiY2FjaGVkRmlsZVBhdGgiLCJleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkIiwidW5kZWZpbmVkIiwic2V0Q29udGVudCIsImZpbGVOYW1lIiwiZmlsZUNvbnRlbnQiLCJjYWNoZUZpbGVQYXRoIiwiY3JlYXRlV2VicGFja1BsdWdpbiIsIlJlYWRPbmx5IiwiZ2VuZXJhdG9yVmVyc2lvbiIsImxvZyIsImZpbGVuYW1lIiwiYmFzZW5hbWUiLCJyZXNwb25zZSIsInN0YXR1cyIsImJ1ZmZlciIsImVycm9y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Q0EsY0FBTUUsUUFBUSxHQUFHLE1BQU0sd0JBQU8seUNBQXdDRixRQUFTLEVBQXhELENBQXZCO0FBQ0EsYUFBSzdCLE1BQUwsQ0FBWTRCLEdBQVosQ0FBaUIsK0JBQThCRyxRQUFRLENBQUNDLE1BQVQsQ0FBZ0I5QyxRQUFoQixFQUEyQixFQUExRTs7QUFDQSxZQUFJNkMsUUFBUSxDQUFDQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3pCLGdCQUFNLHdCQUFVNUMsUUFBVixFQUFvQixNQUFNMkMsUUFBUSxDQUFDRSxNQUFULEVBQTFCLEVBQTZDLE9BQTdDLENBQU47QUFDQSxpQkFBTzdDLFFBQVA7QUFDSCxTQUhELE1BR087QUFDSCxjQUFJMkMsUUFBUSxDQUFDQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3pCLGlCQUFLaEMsTUFBTCxDQUFZa0MsS0FBWixDQUNLLDBDQUF5Q0wsUUFBUyxVQUFTekIsR0FBSSx1QkFBc0J1QixnQkFBaUIsdUJBQXNCdEIsUUFBUyxFQUQxSTtBQUdILFdBSkQsTUFJTztBQUNILGlCQUFLTCxNQUFMLENBQVlrQyxLQUFaLENBQ0ssc0JBQXFCSCxRQUFRLENBQUNDLE1BQU8sNkNBRDFDO0FBR0g7O0FBQ0QsaUJBQU9aLFNBQVA7QUFDSDtBQUNKLE9BcEJELENBb0JFLE9BQU9lLENBQVAsRUFBVTtBQUNSLGFBQUtuQyxNQUFMLENBQVlrQyxLQUFaLENBQWtCLHVDQUFsQjtBQUNBLGFBQUtsQyxNQUFMLENBQVlrQyxLQUFaLENBQWtCLHlDQUFsQjtBQUNBLGFBQUtsQyxNQUFMLENBQVlrQyxLQUFaLENBQWtCQyxDQUFsQjtBQUNBLGVBQU9mLFNBQVA7QUFDSDtBQUNKO0FBQ0o7O0FBNUhtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgZW5zdXJlRGlyLCBwYXRoRXhpc3RzLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbWQ1IGZyb20gXCJtZDVcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB3ZWJwYWNrIGZyb20gXCJ3ZWJwYWNrXCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlTW9kZSB9IGZyb20gXCIuLi9DTElDb21tYW5kcy9CdWlsZEZvcm1zL0J1aWxkQ2FjaGVNb2RlXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuXG5pbnRlcmZhY2UgQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zIHtcbiAgICBjYWNoZUZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQnVpbGRDYWNoZU9wdGlvbnMge1xuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZztcbiAgICBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmc7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZGVwc0hhc2g6IHN0cmluZztcbn1cblxuY29uc3Qgc2luZ2xlTGltaXQgPSBwTGltaXQoMSk7XG5cbmludGVyZmFjZSBCdWlsZFJlc3VsdHNTZXJpYWxpemVkIHtcbiAgICBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgeyB0eXBlOiBcIkJ1ZmZlclwiOyBiYXNlNjRjb250ZW50OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGNsYXNzIENhY2hlQXNzZXRzUGx1Z2luIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXBwbHkoY29tcGlsZXI6IHdlYnBhY2suQ29tcGlsZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29tcGlsZXIuaG9va3MuZW1pdC50YXBQcm9taXNlKFwiQ2FjaGVBc3NldHNQbHVnaW5cIiwgY29tcGlsYXRpb24gPT5cbiAgICAgICAgICAgIHNpbmdsZUxpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0ge307XG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFzc2V0TmFtZSBvZiBPYmplY3Qua2V5cyhjb21waWxhdGlvbi5hc3NldHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZTogc3RyaW5nIHwgQnVmZmVyID0gY29tcGlsYXRpb24uYXNzZXRzW2Fzc2V0TmFtZV0/LnNvdXJjZSgpID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUl0ZW1zW2Fzc2V0TmFtZV0gPSB7IHR5cGU6IFwiQnVmZmVyXCIsIGJhc2U2NGNvbnRlbnQ6IHNvdXJjZS50b1N0cmluZyhcImJhc2U2NFwiKSB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0gc291cmNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlRmlsZShjYWNoZUl0ZW1zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVGaWxlKGNhY2hlSXRlbXM6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5vcHRpb25zLmNhY2hlRmlsZSk7XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKVxuICAgICAgICAgICAgPyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpKVxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAuLi5jYWNoZUl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29udGVudCksIFwidXRmLThcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnVpbGRDYWNoZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogSUxvZ2dlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcsIG1vZGU6IEJ1aWxkQ2FjaGVNb2RlKSB7XG4gICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkJVSUxEX0NBQ0hFXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleHRyYWN0KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGNvbnN0IGNvbnRlbnQ6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgYXdhaXQgcmVhZEZpbGUodGhpcy5nZXRDYWNoZUZpbGVQYXRoKGdmdiwgZ2VuZXJhdG9yU291cmNlLnZlcnNpb24sIGRlcHNIYXNoKSwgXCJ1dGYtOFwiKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGFzc2V0UGF0aCBvZiBPYmplY3Qua2V5cyhjb250ZW50KSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnQgPSBjb250ZW50W2Fzc2V0UGF0aF0gPz8gcmVqZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIGFzc2V0UGF0aCk7XG4gICAgICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRFbGVtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBjb250ZW50RWxlbWVudCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEJ1ZmZlci5mcm9tKGNvbnRlbnRFbGVtZW50LmJhc2U2NGNvbnRlbnQsIFwiYmFzZTY0XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGlzdHMoZ2VuZXJhdG9yU291cmNlOiBHZW5lcmF0b3JTb3VyY2UsIGdmdjogc3RyaW5nLCBkZXBzSGFzaDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IHRoaXMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuRm9yY2VVcGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYWNoZWRGaWxlUGF0aCA9IGF3YWl0IHRoaXMuZXhpc3RzRmlsZUNhY2hlT3JEb3dubG9hZChnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBjYWNoZWRGaWxlUGF0aCAhPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENvbnRlbnQoXG4gICAgICAgIGdlbmVyYXRvclNvdXJjZTogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZyxcbiAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVDb250ZW50OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FjaGVGaWxlUGF0aCA9IHRoaXMuZ2V0Q2FjaGVGaWxlUGF0aChnZnYsIGdlbmVyYXRvclNvdXJjZSwgZGVwc0hhc2gpO1xuICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGNhY2hlRmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGVQYXRoLCBcInV0Zi04XCIpKTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICBbZmlsZU5hbWVdOiBmaWxlQ29udGVudCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShjYWNoZUZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShjb250ZW50KSwgXCJ1dGYtOFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlV2VicGFja1BsdWdpbihvcHRpb25zOiBGb3JtQnVpbGRDYWNoZU9wdGlvbnMpOiBQcm9taXNlPENhY2hlQXNzZXRzUGx1Z2luIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IG9wdGlvbnMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgob3B0aW9ucy5nZnYsIG9wdGlvbnMuZ2VuZXJhdG9yVmVyc2lvbiwgb3B0aW9ucy5kZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBuZXcgQ2FjaGVBc3NldHNQbHVnaW4oe1xuICAgICAgICAgICAgY2FjaGVGaWxlOiBjYWNoZWRGaWxlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYWNoZUZpbGVQYXRoKGdmdjogc3RyaW5nLCBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmcsIGRlcHNIYXNoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke21kNShnZnYpfS0ke21kNShnZW5lcmF0b3JWZXJzaW9uKX0tJHtkZXBzSGFzaH0uemlwYDtcbiAgICAgICAgcmV0dXJuIHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwiLmJ1aWxkLWNhY2hlXCIsIFwiY29tcGlsZVwiLCBmaWxlTmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nLFxuICAgICAgICBkZXBzSGFzaDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgoZ2Z2LCBnZW5lcmF0b3JWZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgU3RhcnQgc2VhcmNoIGZpbGUgbG9jYWxseTogJHtmaWxlUGF0aH1gKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIkZvdW5kIGZpbGUgaW4gbG9jYWwgZGlyZWN0b3J5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYENhY2hlIGZpbGUgd2FzIG5vdCBmb3VuZCBsb2NhbGx5OiAke2ZpbGVQYXRofWApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgTG9va2luZyBmb3IgY2FjaGUgaW4gZHJpdmUgc3RvcmFnZTogJHtmaWxlbmFtZX1gKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL2FwaS5rb250dXIucnUvZHJpdmUvdjEvcHVibGljLyR7ZmlsZW5hbWV9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBEcml2ZSByZXNwb25zZSBzdGF0dXMgY29kZTogJHtyZXNwb25zZS5zdGF0dXMudG9TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBhd2FpdCByZXNwb25zZS5idWZmZXIoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYENhY2hlIGZpbGUgbm90IGZvdW5kIGluIGRyaXZlIHN0b3JhZ2U6ICR7ZmlsZW5hbWV9LiBHRlY6ICR7Z2Z2fSwgR2VuZXJhdG9yVmVyc2lvbjogJHtnZW5lcmF0b3JWZXJzaW9ufSwgRGVwZW5kZW5jaWVzSGFzaDogJHtkZXBzSGFzaH1gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYERyaXZlIHN0b3JhZ2Ugc2VudCAke3Jlc3BvbnNlLnN0YXR1c30gc3RhdHVzIGNvZGUsIEkgZG9uJ3QgcHJvY2VzcyBpdCBpbiBhbnkgd2F5YFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcIkRyaXZlIHN0b3JhZ2UgcmVzcG9uZGVkIHdpdGggYW4gZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJUaGUgYnVpbGQgd2lsbCBjb250aW51ZSB3aXRob3V0IGEgY2FjaGVcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|