@kontur.candy/tools 2.176.0 → 2.176.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ <a name="2.176.1"></a>
2
+ ## [2.176.1](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.176.0...release/tools/v2.176.1) (2024-03-11)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * **Tools:** Исправлена медленная сборка форм ([72d9783](https://git.skbkontur.ru/ke/candy-utils/commit/72d9783))
8
+
1
9
  <a name="2.176.0"></a>
2
10
  # [2.176.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.175.0...release/tools/v2.176.0) (2024-03-10)
3
11
 
@@ -41,9 +41,9 @@ function getGeneratorVersion(generatorSource) {
41
41
  async function runBuildForms(context, options, farmDirectory, resourcesDirectory, engineDirectory, candyModulesDirectory, hlFarmDirectoryPath) {
42
42
  const buildOptions = options;
43
43
  const pickListsChain = _Observe.Observe.files(_path.default.join(farmDirectory, "picklists"), "*.json").do(x => _FSTask.FSTask.copyRecursively(context.logger.withPrefix("PICKLISTS"), x, _path.default.join(resourcesDirectory, "picklists")));
44
- const formGlobs = await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(buildOptions.formGlobs, farmDirectory), farmDirectory);
44
+ await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(buildOptions.formGlobs, farmDirectory);
45
+ const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(buildOptions.formGlobs, farmDirectory);
45
46
  const staticResourcesForProductionChain = _Observe.Observe.files(_path.default.join(__dirname, "..", "..", "StaticFilesForProductionResourcesDir"), "*.js", "*.js.map").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("STATICS"), x, _path.default.join(resourcesDirectory, "public", "scripts")));
46
- const resourcesNuSpecChain = _Observe.Observe.files(_path.default.join(farmDirectory), "*.nuspec").do(x => _FSTask.FSTask.copyByMasks((0, _StaticLogger.getLogger)().withPrefix("NUSPEC"), x, ["*.nuspec"], _path.default.join(resourcesDirectory)));
47
47
 
48
48
  /** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources
49
49
  * Реализуется только при общем билде форм: candy build *
@@ -197,7 +197,6 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
197
197
  const stopObserve1 = await pickListsChain.observe();
198
198
  const stopObserve2 = await buildFormsChain.observe();
199
199
  const stopObserve3 = await staticResourcesForProductionChain.observe();
200
- const stopObserve4 = await resourcesNuSpecChain.observe();
201
200
  const stopObserve5 = await resourcesExternalConvertersChain.observe();
202
201
  await context.waitForExit();
203
202
  if (stopObserve3 != undefined) {
@@ -219,7 +218,6 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
219
218
  }
220
219
  await pickListsChain.currentValue;
221
220
  await staticResourcesForProductionChain.currentValue;
222
- await resourcesNuSpecChain.currentValue;
223
221
  await resourcesExternalConvertersChain.currentValue;
224
222
  await buildFormsChain.currentValue;
225
223
  // eslint-disable-next-line no-console
@@ -236,4 +234,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
236
234
  await (0, _fsExtra.emptyDir)(resourcesDirectory);
237
235
  logger.log("Resource directory clean");
238
236
  }
239
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX2ZzRXh0cmEiLCJfbm9kZU5vdGlmaWVyIiwiX0FjcXVpcmVGb3JtRW5naW5lIiwiX0VuZ2luZVNvdXJjZSIsIl9Db21waWxlRm9ybSIsIl9HZW5lcmF0ZUZvcm0iLCJfTnVsbEZvcm1HZW5lcmF0b3IiLCJfV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIl9GU1Rhc2siLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Xcml0ZUZvcm1NZXRhIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9PYnNlcnZlIiwiX1NpbmdsZVZhbHVlUHJvZHVjZXIiLCJfVGltaW5nVXRpbHMiLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJfVHlwaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJnZXRHZW5lcmF0b3JWZXJzaW9uIiwiZ2VuZXJhdG9yU291cmNlIiwidHlwZSIsInZlcnNpb24iLCJFcnJvciIsInJ1bkJ1aWxkRm9ybXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiYnVpbGRPcHRpb25zIiwicGlja0xpc3RzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJmb3JtR2xvYnMiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwiZ2V0TG9nZ2VyIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsInJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluIiwiZW1wdHkiLCJjb3BpZWRFbmdpbmVzIiwiU2V0IiwicmVwb3NpdG9yeVJvb3QiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZm9ybURpcmVjdG9yaWVzIiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZm9ybVJlbGF0aXZlUGF0aCIsImdmdiIsImV4dHJhY3RHZnZGcm9tRm9ybVBhdGgiLCJmb3JtRGlyUGF0aCIsInBhdGhFeGlzdHMiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJ3YXJuaW5nIiwidmFsdWUiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJybmdTY2hlbWFNYXNrIiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwicmVzb2x2ZUdlbmVyYXRvclZlcnNpb24iLCJlbmdpbmVTb3VyY2UiLCJyZXNvbHZlRW5naW5lVmVyc2lvbiIsImF0dGFjaCIsIlNpbmdsZVZhbHVlUHJvZHVjZXIiLCJOdWxsRm9ybUdlbmVyYXRvciIsImdlbmVyYXRvckZhY3RvcnkiLCJ1c2VWZXJzaW9uRnJvbUNhY2hlIiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImVuZ2luZUZhY3RvcnkiLCJoYXMiLCJnZXRFbmdpbmVTb3VyY2VLZXkiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImJ1aWxkQ2FjaGVFeGlzdCIsImV4aXN0cyIsIl9maSRkZXBlbmRlbmNpZXNIYXNoIiwibG9nIiwiZ2VuZXJhdGVGb3JtIiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsInJlc291cmNlc0hhc2giLCJfZmkkZGVwZW5kZW5jaWVzSGFzaDIiLCJfZmkkZGVwZW5kZW5jaWVzSGFzaDMiLCJleHRyYWN0IiwiYnVpbGRDYWNoZU9wdGlvbnMiLCJkZXBzSGFzaCIsImNvbXBpbGVGb3JtIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJyZWplY3QiLCJ3cml0ZUZvcm1NZXRhIiwid3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJ3YXRjaCIsIm5vdGlmaWVyIiwibm90aWZ5IiwidGl0bGUiLCJtZXNzYWdlIiwiY2xlYW4iLCJjbGVhblRhcmdldERpcmVjdG9yeSIsInN0b3BPYnNlcnZlMSIsIm9ic2VydmUiLCJzdG9wT2JzZXJ2ZTIiLCJzdG9wT2JzZXJ2ZTMiLCJzdG9wT2JzZXJ2ZTQiLCJzdG9wT2JzZXJ2ZTUiLCJ3YWl0Rm9yRXhpdCIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJub3ciLCJjdXJyZW50VmFsdWUiLCJjb25zb2xlIiwiY2hhbGsiLCJncmVlbkJyaWdodCIsInRvdGFsVGltZSIsInByaW50VGltZSIsImVtcHR5RGlyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkRm9ybXMvUnVuQnVpbGRGb3Jtcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBlbXB0eURpciwgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG5vdGlmaWVyIGZyb20gXCJub2RlLW5vdGlmaWVyXCI7XG5cbmltcG9ydCB7IGVuZ2luZUZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvQWNxdWlyZUZvcm1FbmdpbmVcIjtcbmltcG9ydCB7IGdldEVuZ2luZVNvdXJjZUtleSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9FbmdpbmVTb3VyY2VcIjtcbmltcG9ydCB7IGNvbXBpbGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Db21waWxlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IE51bGxGb3JtR2VuZXJhdG9yIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9OdWxsRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQge1xuICAgIGdlbmVyYXRvckZhY3RvcnksXG4gICAgR2VuZXJhdG9yU291cmNlLFxuICAgIGdldEdlbmVyYXRvclNvdXJjZUtleSxcbn0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyByZXNvbHZlRW5naW5lVmVyc2lvbiwgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEZvcm1CdWlsZE1vZGUsIHJlc29sdmVGb3JtSW5mbyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgd3JpdGVGb3JtTWV0YSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1dyaXRlRm9ybU1ldGFcIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL09ic2VydmVcIjtcbmltcG9ydCB7IFNpbmdsZVZhbHVlUHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvU2luZ2xlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgcHJpbnRUaW1lIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGltaW5nVXRpbHNcIjtcbmltcG9ydCB7IEJ1aWxkQ2FjaGUgfSBmcm9tIFwiLi4vLi4vRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL0NhY2hlQXNzZXRzUGx1Z2luXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlQXR0YWNobWVudFBhdGhGaWxlc1wiO1xuaW1wb3J0IHsgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBFbXB0eVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0VtcHR5UHJvZHVjZXJcIjtcbmltcG9ydCB7IGdldFJuZ1NjaGVtYUZpbGVuYW1lIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9nZXRSbmdTY2hlbWFGaWxlbmFtZVwiO1xuaW1wb3J0IHsgZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vRm9ybVBhdGhVdGlsc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmltcG9ydCB7IEJ1aWxkRm9ybXNPcHRpb25zIH0gZnJvbSBcIi4vQnVpbGRGb3Jtc09wdGlvbnNcIjtcblxuZnVuY3Rpb24gZ2V0R2VuZXJhdG9yVmVyc2lvbihnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKGdlbmVyYXRvclNvdXJjZS50eXBlID09PSBcIlB1Ymxpc2hlZEdlbmVyYXRvclwiKSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkJ1aWxkRm9ybXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBCdWlsZEZvcm1zT3B0aW9ucyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0oXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhidWlsZE9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSxcbiAgICAgICAgZmFybURpcmVjdG9yeVxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uXCIsIFwiLi5cIiwgXCJTdGF0aWNGaWxlc0ZvclByb2R1Y3Rpb25SZXNvdXJjZXNEaXJcIiksXG4gICAgICAgIFwiKi5qc1wiLFxuICAgICAgICBcIiouanMubWFwXCJcbiAgICApLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU1RBVElDU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwdWJsaWNcIiwgXCJzY3JpcHRzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCByZXNvdXJjZXNOdVNwZWNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnkpLCBcIioubnVzcGVjXCIpLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlCeU1hc2tzKGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOVVNQRUNcIiksIHgsIFtcIioubnVzcGVjXCJdLCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICApO1xuXG4gICAgLyoqINCa0L7QvdCy0LXRgNGC0LXRgNGLINC+0L/QuNGB0Lgg0LTQu9GPINGE0L7RgNC8LCDQutC+0YLQvtGA0YvQtSDQv9C+0LrQsCDQvdC1INGA0LXQsNC70LjQt9C+0LLQsNC90Ysg0L3QsCDQutC10L3QtNC4LCDRgdCw0LzQsCDQvNC10YXQsNC90LjQutCwINC+0L/QuNGB0Lgg0L/QtdGA0LXQvdC10YHQtdC90LAg0LIg0YTQvtGA0LzRiyDQsiDQutC10L3QtNC4INCw0L/QuCwg0L/QvtGN0YLQvtC80YMg0L7QvdC4INC00L7Qu9C20L3RiyDQsdGL0YLRjCDQsiBjYW5keS5yZXNvdXJjZXNcbiAgICAgKiAg0KDQtdCw0LvQuNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0L/RgNC4INC+0LHRidC10Lwg0LHQuNC70LTQtSDRhNC+0YDQvDogY2FuZHkgYnVpbGQgKlxuICAgICAqICovXG4gICAgbGV0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZz4gfCBFbXB0eVByb2R1Y2VyID0gT2JzZXJ2ZS5lbXB0eSgpO1xuICAgIGlmIChmb3JtR2xvYnNbMF0gPT09IFwiKlwiKSB7XG4gICAgICAgIHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJleHRlcm5hbENvbnZlcnRlcnNcIiksIFwiKi54c2x0XCIpLmRvKFxuICAgICAgICAgICAgeCA9PlxuICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFWFRFUk5BTC1DT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY29waWVkRW5naW5lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgY29uc3QgcmVwb3NpdG9yeVJvb3QgPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCIuLlwiKTtcbiAgICBjb25zdCBidWlsZENhY2hlID0gbmV3IEJ1aWxkQ2FjaGUoZmFybURpcmVjdG9yeSwgb3B0aW9ucy5idWlsZENhY2hlTW9kZSk7XG4gICAgY29uc3QgYnVpbGRGb3Jtc0NoYWluID0gT2JzZXJ2ZS5mb3JtRGlyZWN0b3JpZXMocmVwb3NpdG9yeVJvb3QsIGZvcm1HbG9icykuc3BsaXRUb1BhcmFsbGVsQ2hhaW5zKFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgYXN5bmMgZm9ybVJlbGF0aXZlUGF0aCA9PiB7XG4gICAgICAgICAgICBjb25zdCBnZnYgPSBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoKGZvcm1SZWxhdGl2ZVBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1SZWxhdGl2ZVBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSkpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmb3JtU2NoZW1hc0RpclBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwic2NoZW1hc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHJuZ1NjaGVtYU1hc2sgPSBgKiR7Z2V0Um5nU2NoZW1hRmlsZW5hbWUoZm9ybVNjaGVtYXNEaXJQYXRoLCBnZnYpfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZW5naW5lVmVyc2lvbiBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChnZnYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IGF3YWl0IHJlc29sdmVFbmdpbmVWZXJzaW9uKGZpLmVuZ2luZVZlcnNpb24sIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKG5ldyBOdWxsRm9ybUdlbmVyYXRvcigpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvckZhY3RvcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVZlcnNpb25Gcm9tQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJOdWxsRm9ybUdlbmVyYXRvclwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5lbmdpbmVTb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihcIk51bGxFbmdpbmVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5naW5lRmFjdG9yeShmaS5lbmdpbmVTb3VyY2UsIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlKS5kbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyB4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3BpZWRFbmdpbmVzLmhhcyhnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVOR0lORVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkRW5naW5lcy5hZGQoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZmksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IChmaS5lbmdpbmVTb3VyY2UgIT0gdW5kZWZpbmVkID8gZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkgOiBcIk51bGxFbmdpbmVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL3hzbHRUZW1wbGF0ZXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9qc0hlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSAhPT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBmaS5nZW5lcmF0b3Iuc3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYnVpbGRDYWNoZUV4aXN0OiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCAmJiBmaS5nZW5lcmF0b3JTb3VyY2UgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlRXhpc3QgPSBhd2FpdCBidWlsZENhY2hlLmV4aXN0cyhmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZUV4aXN0OiBidWlsZENhY2hlRXhpc3QsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuYnVpbGRDYWNoZUV4aXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBHRU5FUkFURToke2dmdn1gKS5sb2coXCJTa2lwcGVkIGR1ZSBidWlsZCBjYWNoZSBleGl0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCA/PyBcIlVuZGVmaW5lZFJlc291cmNlc0hhc2hcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkICYmIGZpLmJ1aWxkQ2FjaGVFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgQ09NUElMRToke2dmdn1gKS5sb2coXCJTa2lwcGVkIGR1ZSBidWlsZCBjYWNoZSBleGlzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBidWlsZENhY2hlLmV4dHJhY3QoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gsIHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNvbXBpbGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZvcm1NZXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5idWlsZENhY2hlRXhpc3RcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Db3B5TGVnYWN5UHJlYnVpbHRSZXNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibGVnYWN5LXByZWJ1aWx0XCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJMRUdBQ1ktUFJFQlVJTFRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwic2NoZW1hc1wiKSwgcm5nU2NoZW1hTWFzaykuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWVyZ2Vyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1FUkdFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1lcmdlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kaWZpZXIgPSAoY29udGVudDogc3RyaW5nKTogc3RyaW5nID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnJlcGxhY2UoLzx4OmluY2x1ZGUgaHJlZj1cIlsuL10rL2csICc8eDppbmNsdWRlIGhyZWY9XCInKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLm1vZGlmeUZpbGVzQ29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRklYLVhTTFQtSU5DTFVERVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqLyoueHNsdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCIuLlwiLCBcIi4uXCIsIFwieHNsdFRlbXBsYXRlc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlhTTFQtVEVNUExBVEVTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIsIFwieHNsdFRlbXBsYXRlc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllci5ub3RpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBgJHtmaS5mb3JtTmFtZX06INGB0LHQvtGA0LrQsCDQt9Cw0LLQtdGA0YjQtdC90LBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBFbmdpbmU6ICR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSA9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJbTm9FbmdpbmVdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnR5cGUgPT09IFwiTG9jYWxFbmdpbmVTb3VyY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJsb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS52ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeSwgY29udGV4dC5sb2dnZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMSA9IGF3YWl0IHBpY2tMaXN0c0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRGb3Jtc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU0ID0gYXdhaXQgcmVzb3VyY2VzTnVTcGVjQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlMyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RvcE9ic2VydmU1ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU1KCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUyKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeSwgY29udGV4dC5sb2dnZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgcGlja0xpc3RzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHJlc291cmNlc051U3BlY0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW5CcmlnaHQoXCJCdWlsZCBzdWNjZXNzXCIpKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFRvdGFsIHRpbWU6ICR7cHJpbnRUaW1lKHRvdGFsVGltZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLCBsb2dnZXI6IElMb2dnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIubG9nKFwiQ2xlYW5pbmcgcmVzb3VyY2UgZGlyZWN0b3J5LiBcIiArIHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgYXdhaXQgZW1wdHlEaXIocmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBsb2dnZXIubG9nKFwiUmVzb3VyY2UgZGlyZWN0b3J5IGNsZWFuXCIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUksa0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGtCQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyw2QkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsT0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcscUJBQUEsR0FBQVgsT0FBQTtBQUtBLElBQUFZLHNCQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxnQkFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsY0FBQSxHQUFBZCxPQUFBO0FBRUEsSUFBQWUsZUFBQSxHQUFBZixPQUFBO0FBRUEsSUFBQWdCLGFBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIsUUFBQSxHQUFBakIsT0FBQTtBQUNBLElBQUFrQixvQkFBQSxHQUFBbEIsT0FBQTtBQUNBLElBQUFtQixZQUFBLEdBQUFuQixPQUFBO0FBQ0EsSUFBQW9CLGtCQUFBLEdBQUFwQixPQUFBO0FBQ0EsSUFBQXFCLFlBQUEsR0FBQXJCLE9BQUE7QUFDQSxJQUFBc0IseUJBQUEsR0FBQXRCLE9BQUE7QUFHQSxJQUFBdUIscUJBQUEsR0FBQXZCLE9BQUE7QUFDQSxJQUFBd0IsY0FBQSxHQUFBeEIsT0FBQTtBQUNBLElBQUF5QixxQkFBQSxHQUFBekIsT0FBQTtBQUlBLFNBQVMwQixtQkFBbUJBLENBQUNDLGVBQWdDLEVBQVU7RUFDbkUsSUFBSUEsZUFBZSxDQUFDQyxJQUFJLEtBQUssb0JBQW9CLEVBQUU7SUFDL0MsT0FBT0QsZUFBZSxDQUFDRSxPQUFPO0VBQ2xDLENBQUMsTUFBTTtJQUNILE1BQU0sSUFBSUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO0VBQzFDO0FBQ0o7QUFFTyxlQUFlQyxhQUFhQSxDQUMvQkMsT0FBa0MsRUFDbENDLE9BQTBCLEVBQzFCQyxhQUFxQixFQUNyQkMsa0JBQTBCLEVBQzFCQyxlQUF1QixFQUN2QkMscUJBQTZCLEVBQzdCQyxtQkFBMkIsRUFDZDtFQUNiLE1BQU1DLFlBQVksR0FBR04sT0FBTztFQUU1QixNQUFNTyxjQUFjLEdBQUdDLGdCQUFPLENBQUNDLEtBQUssQ0FBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUNWLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQ1csRUFBRSxDQUFDQyxDQUFDLElBQ3RGQyxjQUFNLENBQUNDLGVBQWUsQ0FBQ2hCLE9BQU8sQ0FBQ2lCLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFSixDQUFDLEVBQUVILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxXQUFXLENBQUMsQ0FDaEgsQ0FBQztFQUVELE1BQU1nQixTQUFTLEdBQUcsTUFBTUMseUJBQVMsQ0FBQ0Msc0NBQXNDLENBQ3BFLE1BQU1ELHlCQUFTLENBQUNFLGlCQUFpQixDQUFDZixZQUFZLENBQUNZLFNBQVMsRUFBRWpCLGFBQWEsQ0FBQyxFQUN4RUEsYUFDSixDQUFDO0VBRUQsTUFBTXFCLGlDQUFpQyxHQUFHZCxnQkFBTyxDQUFDQyxLQUFLLENBQ25EQyxhQUFJLENBQUNDLElBQUksQ0FBQ1ksU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsc0NBQXNDLENBQUMsRUFDeEUsTUFBTSxFQUNOLFVBQ0osQ0FBQyxDQUFDWCxFQUFFLENBQUNDLENBQUMsSUFDRkMsY0FBTSxDQUFDQyxlQUFlLENBQUMsSUFBQVMsdUJBQVMsRUFBQyxDQUFDLENBQUNQLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRUosQ0FBQyxFQUFFSCxhQUFJLENBQUNDLElBQUksQ0FBQ1Qsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUNuSCxDQUFDO0VBRUQsTUFBTXVCLG9CQUFvQixHQUFHakIsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ1YsYUFBYSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUNXLEVBQUUsQ0FBQ0MsQ0FBQyxJQUNqRkMsY0FBTSxDQUFDWSxXQUFXLENBQUMsSUFBQUYsdUJBQVMsRUFBQyxDQUFDLENBQUNQLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRUosQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUVILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsQ0FBQyxDQUN2RyxDQUFDOztFQUVEO0FBQ0o7QUFDQTtFQUNJLElBQUl5QixnQ0FBZ0YsR0FBR25CLGdCQUFPLENBQUNvQixLQUFLLENBQUMsQ0FBQztFQUN0RyxJQUFJVixTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0lBQ3RCUyxnQ0FBZ0MsR0FBR25CLGdCQUFPLENBQUNDLEtBQUssQ0FBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUNWLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDVyxFQUFFLENBQ3pHQyxDQUFDLElBQ0dDLGNBQU0sQ0FBQ0MsZUFBZSxDQUNsQixJQUFBUyx1QkFBUyxFQUFDLENBQUMsQ0FBQ1AsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQzdDSixDQUFDLEVBQ0RILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxZQUFZLENBQzlDLENBQ1IsQ0FBQztFQUNMO0VBRUEsTUFBTTJCLGFBQWEsR0FBRyxJQUFJQyxHQUFHLENBQVMsQ0FBQztFQUV2QyxNQUFNQyxjQUFjLEdBQUdyQixhQUFJLENBQUNDLElBQUksQ0FBQ1YsYUFBYSxFQUFFLElBQUksQ0FBQztFQUNyRCxNQUFNK0IsVUFBVSxHQUFHLElBQUlDLDZCQUFVLENBQUNoQyxhQUFhLEVBQUVELE9BQU8sQ0FBQ2tDLGNBQWMsQ0FBQztFQUN4RSxNQUFNQyxlQUFlLEdBQUczQixnQkFBTyxDQUFDNEIsZUFBZSxDQUFDTCxjQUFjLEVBQUViLFNBQVMsQ0FBQyxDQUFDbUIscUJBQXFCLENBQzVGeEIsQ0FBQyxJQUFJQSxDQUFDLEVBQ05BLENBQUMsSUFBSUEsQ0FBQyxFQUNOLE1BQU15QixnQkFBZ0IsSUFBSTtJQUN0QixNQUFNQyxHQUFHLEdBQUcsSUFBQUMscUNBQXNCLEVBQUNGLGdCQUFnQixDQUFDO0lBQ3BELE1BQU1HLFdBQVcsR0FBRy9CLGFBQUksQ0FBQ0MsSUFBSSxDQUFDb0IsY0FBYyxFQUFFTyxnQkFBZ0IsQ0FBQztJQUUvRCxJQUFJLEVBQUUsTUFBTSxJQUFBSSxtQkFBVSxFQUFDaEMsYUFBSSxDQUFDQyxJQUFJLENBQUM4QixXQUFXLEVBQUVFLDBDQUFvQixDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUNwRjdDLE9BQU8sQ0FBQ2lCLE1BQU0sQ0FBQzZCLE9BQU8sQ0FDakIsUUFBT04sR0FBSSxvRkFDaEIsQ0FBQztNQUNELE9BQU8vQixnQkFBTyxDQUFDc0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCO0lBQ0EsTUFBTUMsa0JBQWtCLEdBQUdyQyxhQUFJLENBQUNDLElBQUksQ0FBQzhCLFdBQVcsRUFBRSxTQUFTLENBQUM7SUFDNUQsTUFBTU8sYUFBYSxHQUFJLElBQUcsSUFBQUMsMENBQW9CLEVBQUNGLGtCQUFrQixFQUFFUixHQUFHLENBQUUsRUFBQztJQUV6RSxPQUFPL0IsZ0JBQU8sQ0FBQzBDLElBQUksQ0FBQ3hDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDOEIsV0FBVyxFQUFFRSwwQ0FBb0IsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQyxDQUM3RU8sU0FBUyxDQUFDQyxZQUFZLElBQ25CLElBQUFDLGdDQUFlLEVBQ1hELFlBQVksRUFDWlgsV0FBVyxFQUNYdEMsZUFBZSxFQUNmSixPQUFPLENBQUNpQixNQUFNLENBQUNDLFVBQVUsQ0FBRSxRQUFPc0IsR0FBSSxFQUFDLENBQUMsRUFDeEN2QyxPQUFPLENBQUNzRCxlQUFlLEVBQ3ZCdEQsT0FBTyxDQUFDdUQsb0JBQW9CLEVBQzVCdkQsT0FBTyxDQUFDd0Qsb0JBQ1osQ0FDSixDQUFDLENBQ0FMLFNBQVMsQ0FBQyxNQUFNTSxFQUFFLElBQUk7TUFDbkIsSUFBSUEsRUFBRSxDQUFDQyxJQUFJLEtBQUtDLDhCQUFhLENBQUNDLFdBQVcsRUFBRTtRQUN2QyxJQUFJSCxFQUFFLENBQUNJLGdCQUFnQixJQUFJQyxTQUFTLEVBQUU7VUFDbEMsTUFBTSxJQUFJakUsS0FBSyxDQUFDLGlDQUFpQyxDQUFDO1FBQ3REO1FBQ0EsSUFBSTRELEVBQUUsQ0FBQ00sYUFBYSxJQUFJRCxTQUFTLEVBQUU7VUFDL0IsTUFBTSxJQUFJakUsS0FBSyxDQUFDLDhCQUE4QixDQUFDO1FBQ25EO1FBQ0EsT0FBTztVQUNILEdBQUc0RCxFQUFFO1VBQ0wvRCxlQUFlLEVBQUUsTUFBTSxJQUFBc0UsOENBQXVCLEVBQzFDUCxFQUFFLENBQUNJLGdCQUFnQixFQUNuQjlELE9BQU8sQ0FBQ2lCLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDc0IsR0FBRyxDQUNqQyxDQUFDO1VBQ0QwQixZQUFZLEVBQUUsTUFBTSxJQUFBQywyQ0FBb0IsRUFBQ1QsRUFBRSxDQUFDTSxhQUFhLEVBQUVoRSxPQUFPLENBQUNpQixNQUFNLENBQUNDLFVBQVUsQ0FBQ3NCLEdBQUcsQ0FBQztRQUM3RixDQUFDO01BQ0wsQ0FBQyxNQUFNO1FBQ0gsT0FBTztVQUNILEdBQUdrQixFQUFFO1VBQ0wvRCxlQUFlLEVBQUVvRSxTQUFTO1VBQzFCRyxZQUFZLEVBQUVIO1FBQ2xCLENBQUM7TUFDTDtJQUNKLENBQUMsQ0FBQyxDQUNESyxNQUFNLENBQ0gsTUFBTVYsRUFBRSxJQUFJO01BQ1IsSUFBSUEsRUFBRSxDQUFDL0QsZUFBZSxJQUFJb0UsU0FBUyxFQUFFO1FBQ2pDLE9BQU8sSUFBSU0sd0NBQW1CLENBQUMsSUFBSUMsb0NBQWlCLENBQUMsQ0FBQyxDQUFDO01BQzNELENBQUMsTUFBTTtRQUNILE9BQU8sSUFBQUMsc0NBQWdCLEVBQ25CYixFQUFFLENBQUMvRCxlQUFlLEVBQ2xCVSxxQkFBcUIsRUFDckJKLE9BQU8sQ0FBQ3VFLG1CQUNaLENBQUM7TUFDTDtJQUNKLENBQUMsRUFDRCxPQUFPZCxFQUFFLEVBQUVlLENBQUMsTUFBTTtNQUFFLEdBQUdmLEVBQUU7TUFBRWdCLFNBQVMsRUFBRUQ7SUFBRSxDQUFDLENBQUMsRUFDMUMsTUFBTWYsRUFBRSxJQUNKQSxFQUFFLENBQUMvRCxlQUFlLElBQUlvRSxTQUFTLEdBQ3pCLElBQUFZLDJDQUFxQixFQUFDakIsRUFBRSxDQUFDL0QsZUFBZSxDQUFDLEdBQ3pDLG1CQUNkLENBQUMsQ0FDQXlFLE1BQU0sQ0FDSCxNQUFNVixFQUFFLElBQUk7TUFDUixJQUFJQSxFQUFFLENBQUNRLFlBQVksS0FBS0gsU0FBUyxFQUFFO1FBQy9CLE9BQU8sSUFBSU0sd0NBQW1CLENBQUMsWUFBWSxDQUFDO01BQ2hEO01BQ0EsT0FBTyxJQUFBTyxnQ0FBYSxFQUFDbEIsRUFBRSxDQUFDUSxZQUFZLEVBQUU3RCxxQkFBcUIsRUFBRUosT0FBTyxDQUFDdUUsbUJBQW1CLENBQUMsQ0FBQzNELEVBQUUsQ0FDeEYsTUFBTUMsQ0FBQyxJQUFJO1FBQ1AsSUFBSSxDQUFDZ0IsYUFBYSxDQUFDK0MsR0FBRyxDQUFDLElBQUFDLGdDQUFrQixFQUFDcEIsRUFBRSxDQUFDUSxZQUFZLENBQUMsQ0FBQyxFQUFFO1VBQ3pELE1BQU1uRCxjQUFNLENBQUNDLGVBQWUsQ0FDeEIsSUFBQVMsdUJBQVMsRUFBQyxDQUFDLENBQUNQLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFDaENKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFFBQVEsQ0FDMUMsQ0FBQztVQUNEMkIsYUFBYSxDQUFDaUQsR0FBRyxDQUFDLElBQUFELGdDQUFrQixFQUFDcEIsRUFBRSxDQUFDUSxZQUFZLENBQUMsQ0FBQztRQUMxRDtNQUNKLENBQ0osQ0FBQztJQUNMLENBQUMsRUFDRCxNQUFNUixFQUFFLElBQUlBLEVBQUUsRUFDZCxNQUFNQSxFQUFFLElBQUtBLEVBQUUsQ0FBQ1EsWUFBWSxJQUFJSCxTQUFTLEdBQUcsSUFBQWUsZ0NBQWtCLEVBQUNwQixFQUFFLENBQUNRLFlBQVksQ0FBQyxHQUFHLFlBQ3RGLENBQUMsQ0FDQUUsTUFBTSxDQUFDLE1BQU1WLEVBQUUsSUFDWmpELGdCQUFPLENBQUNDLEtBQUssQ0FDVGdELEVBQUUsQ0FBQ3NCLGVBQWUsRUFDbEIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsY0FBYyxFQUNkLFlBQVksRUFDWixlQUFlLEVBQ2YsZUFBZSxFQUNmLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsbUJBQ0osQ0FDSixDQUFDLENBQ0E1QixTQUFTLENBQUMsTUFBTU0sRUFBRSxJQUFJO01BQ25CLElBQUl1QixnQkFBb0M7TUFDeEMsSUFBSXZCLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLQyw4QkFBYSxDQUFDQyxXQUFXLEVBQUU7UUFDdkMsT0FBTztVQUNILEdBQUdILEVBQUU7VUFDTHVCLGdCQUFnQixFQUFFbEI7UUFDdEIsQ0FBQztNQUNMO01BQ0EsSUFBSSxNQUFNTCxFQUFFLENBQUNnQixTQUFTLENBQUNRLDhCQUE4QixDQUFDLENBQUMsRUFBRTtRQUNyREQsZ0JBQWdCLEdBQUcsTUFBTXZCLEVBQUUsQ0FBQ2dCLFNBQVMsQ0FBQ1Msc0JBQXNCLENBQ3hEekMsV0FBVyxFQUNYeEMsYUFBYSxFQUNiSSxtQkFDSixDQUFDO01BQ0w7TUFDQSxPQUFPO1FBQ0gsR0FBR29ELEVBQUU7UUFDTHVCLGdCQUFnQixFQUFFQTtNQUN0QixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQ0Q3QixTQUFTLENBQUMsTUFBTU0sRUFBRSxJQUFJO01BQ25CLElBQUkwQixlQUF3QixHQUFHLEtBQUs7TUFDcEMsSUFBSTFCLEVBQUUsQ0FBQ3VCLGdCQUFnQixJQUFJbEIsU0FBUyxJQUFJTCxFQUFFLENBQUMvRCxlQUFlLElBQUlvRSxTQUFTLEVBQUU7UUFDckVxQixlQUFlLEdBQUcsTUFBTW5ELFVBQVUsQ0FBQ29ELE1BQU0sQ0FBQzNCLEVBQUUsQ0FBQy9ELGVBQWUsRUFBRTZDLEdBQUcsRUFBRWtCLEVBQUUsQ0FBQ3VCLGdCQUFnQixDQUFDO01BQzNGO01BQ0EsT0FBTztRQUNILEdBQUd2QixFQUFFO1FBQ0wwQixlQUFlLEVBQUVBO01BQ3JCLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDRHZFLEVBQUUsQ0FBQyxNQUFNNkMsRUFBRSxJQUFJO01BQUEsSUFBQTRCLG9CQUFBO01BQ1osSUFBSTVCLEVBQUUsQ0FBQy9ELGVBQWUsSUFBSW9FLFNBQVMsRUFBRTtRQUNqQyxPQUFPQSxTQUFTO01BQ3BCO01BQ0EsSUFBSUwsRUFBRSxDQUFDMEIsZUFBZSxFQUFFO1FBQ3BCcEYsT0FBTyxDQUFDaUIsTUFBTSxDQUFDQyxVQUFVLENBQUUsWUFBV3NCLEdBQUksRUFBQyxDQUFDLENBQUMrQyxHQUFHLENBQUMsK0JBQStCLENBQUM7UUFDakYsT0FBT3hCLFNBQVM7TUFDcEI7TUFFQSxPQUFPLElBQUF5QiwwQkFBWSxFQUNmOUIsRUFBRSxDQUFDc0IsZUFBZSxFQUNsQjlFLGFBQWEsRUFDYkksbUJBQW1CLEVBQ25Cb0QsRUFBRSxDQUFDZ0IsU0FBUyxFQUNaWCxTQUFTLEVBQ1Q7UUFDSTBCLG9CQUFvQixFQUFFeEYsT0FBTyxDQUFDeUYsNkJBQTZCO1FBQzNEQyxhQUFhLEdBQUFMLG9CQUFBLEdBQUU1QixFQUFFLENBQUN1QixnQkFBZ0IsY0FBQUssb0JBQUEsY0FBQUEsb0JBQUEsR0FBSTtNQUMxQyxDQUNKLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDRGxCLE1BQU0sQ0FBQyxNQUFNVixFQUFFLElBQUlqRCxnQkFBTyxDQUFDQyxLQUFLLENBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDOEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQ3pFN0IsRUFBRSxDQUFDLE1BQU02QyxFQUFFLElBQUk7TUFBQSxJQUFBa0MscUJBQUEsRUFBQUMscUJBQUE7TUFDWixJQUFJbkMsRUFBRSxDQUFDL0QsZUFBZSxJQUFJb0UsU0FBUyxFQUFFO1FBQ2pDO01BQ0o7TUFDQSxJQUFJTCxFQUFFLENBQUN1QixnQkFBZ0IsSUFBSWxCLFNBQVMsSUFBSUwsRUFBRSxDQUFDMEIsZUFBZSxFQUFFO1FBQ3hEcEYsT0FBTyxDQUFDaUIsTUFBTSxDQUFDQyxVQUFVLENBQUUsV0FBVXNCLEdBQUksRUFBQyxDQUFDLENBQUMrQyxHQUFHLENBQUMsZ0NBQWdDLENBQUM7UUFDakYsTUFBTXRELFVBQVUsQ0FBQzZELE9BQU8sQ0FBQ3BDLEVBQUUsQ0FBQy9ELGVBQWUsRUFBRTZDLEdBQUcsRUFBRWtCLEVBQUUsQ0FBQ3VCLGdCQUFnQixFQUFFOUUsa0JBQWtCLENBQUM7UUFDMUY7TUFDSjtNQUNBLE1BQU00RixpQkFBaUIsR0FDbkJyQyxFQUFFLENBQUN1QixnQkFBZ0IsSUFBSWxCLFNBQVMsR0FDMUI7UUFDSWlDLFFBQVEsRUFBRXRDLEVBQUUsQ0FBQ3VCLGdCQUFnQjtRQUM3Qm5CLGdCQUFnQixFQUFFcEUsbUJBQW1CLENBQUNnRSxFQUFFLENBQUMvRCxlQUFlLENBQUM7UUFDekQ2QyxHQUFHLEVBQUVBLEdBQUc7UUFDUm1CLElBQUksRUFBRTFELE9BQU8sQ0FBQ2tDLGNBQWM7UUFDNUJqQyxhQUFhLEVBQUVBO01BQ25CLENBQUMsR0FDRDZELFNBQVM7TUFFbkIsTUFBTSxJQUFBa0Msd0JBQVcsRUFDYnZDLEVBQUUsQ0FBQ3dDLFFBQVEsRUFDWHhDLEVBQUUsQ0FBQ3lDLE1BQU0sRUFDVGpHLGFBQWEsRUFDYndDLFdBQVcsRUFDWHZDLGtCQUFrQixHQUFBeUYscUJBQUEsR0FDbEJsQyxFQUFFLENBQUN1QixnQkFBZ0IsY0FBQVcscUJBQUEsY0FBQUEscUJBQUEsR0FDZixJQUFBUSxtQkFBTSxFQUNGLDRGQUNKLENBQUMsRUFDTCxLQUFLLEVBQ0xyQyxTQUFTLEVBQ1RnQyxpQkFDSixDQUFDO01BRUQsTUFBTSxJQUFBTSw0QkFBYSxFQUNmbEcsa0JBQWtCLEVBQ2xCcUMsR0FBRyxFQUNIa0IsRUFBRSxDQUFDUSxZQUFZLEdBQUEyQixxQkFBQSxHQUNmbkMsRUFBRSxDQUFDdUIsZ0JBQWdCLGNBQUFZLHFCQUFBLGNBQUFBLHFCQUFBLEdBQ2YsSUFBQU8sbUJBQU0sRUFDRiw0RkFDSixDQUFDLEVBQ0wxQyxFQUFFLENBQUN5QyxNQUFNLEVBQ1RsRSxVQUFVLEVBQ1Y4RCxpQkFDSixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQ0RsRixFQUFFLENBQUMsTUFBTTZDLEVBQUUsSUFBSTtNQUNaLElBQUlBLEVBQUUsQ0FBQy9ELGVBQWUsSUFBSW9FLFNBQVMsRUFBRTtRQUNqQztNQUNKO01BQ0EsTUFBTWdDLGlCQUFpQixHQUNuQnJDLEVBQUUsQ0FBQ3VCLGdCQUFnQixJQUFJbEIsU0FBUyxHQUMxQjtRQUNJaUMsUUFBUSxFQUFFdEMsRUFBRSxDQUFDdUIsZ0JBQWdCO1FBQzdCbkIsZ0JBQWdCLEVBQUVwRSxtQkFBbUIsQ0FBQ2dFLEVBQUUsQ0FBQy9ELGVBQWUsQ0FBQztRQUN6RDZDLEdBQUcsRUFBRUEsR0FBRztRQUNSbUIsSUFBSSxFQUFFMUQsT0FBTyxDQUFDa0MsY0FBYztRQUM1QmpDLGFBQWEsRUFBRUE7TUFDbkIsQ0FBQyxHQUNENkQsU0FBUztNQUNuQixNQUFNLElBQUF1QywwREFBNEIsRUFDOUI1QyxFQUFFLENBQUN3QyxRQUFRLEVBQ1hoRyxhQUFhLEVBQ2J3QyxXQUFXLEVBQ1h2QyxrQkFBa0IsRUFDbEI0RCxTQUFTLEVBQ1Q5QixVQUFVLEVBQ1Y4RCxpQkFBaUIsRUFDakJyQyxFQUFFLENBQUMwQixlQUNQLENBQUM7TUFDRCxNQUFNLElBQUFtQixrREFBd0IsRUFDMUI3QyxFQUFFLENBQUN3QyxRQUFRLEVBQ1hoRyxhQUFhLEVBQ2J3QyxXQUFXLEVBQ1h2QyxrQkFBa0IsRUFDbEI0RCxTQUFTLEVBQ1Q5QixVQUFVLEVBQ1Y4RCxpQkFDSixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQ0QzQixNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUFJO01BQ2hCLElBQUlBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLQyw4QkFBYSxDQUFDNEMsMkJBQTJCLEVBQUU7UUFDdkQsT0FBTy9GLGdCQUFPLENBQUNDLEtBQUssQ0FBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUM4QyxFQUFFLENBQUNzQixlQUFlLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQ25FLEVBQUUsQ0FBQ0MsQ0FBQyxJQUM1RUMsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFTLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFDekNKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixDQUNoQyxDQUNKLENBQUM7TUFDTCxDQUFDLE1BQU07UUFDSCxPQUFPLElBQUlrRSx3Q0FBbUIsQ0FBQyxFQUFFLENBQUM7TUFDdEM7SUFDSixDQUFDLENBQUMsQ0FDREQsTUFBTSxDQUFDLE1BQU1WLEVBQUUsSUFDWmpELGdCQUFPLENBQUNDLEtBQUssQ0FBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUM4QyxFQUFFLENBQUNzQixlQUFlLEVBQUUsU0FBUyxDQUFDLEVBQUUvQixhQUFhLENBQUMsQ0FBQ3BDLEVBQUUsQ0FBQ0MsQ0FBQyxJQUN2RUMsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFTLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQ2pDSixDQUFDLEVBQ0RILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxTQUFTLENBQzNDLENBQ0osQ0FDSixDQUFDLENBQ0FpRSxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNaakQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQzhDLEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxZQUFZLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQ25FLEVBQUUsQ0FBQ0MsQ0FBQyxJQUNoRUMsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFTLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQ3BDSixDQUFDLEVBQ0RILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxZQUFZLENBQzlDLENBQ0osQ0FDSixDQUFDLENBQ0FpRSxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNaakQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQzhDLEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQ25FLEVBQUUsQ0FBQ0MsQ0FBQyxJQUM3REMsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFTLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQ2pDSixDQUFDLEVBQ0RILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxTQUFTLENBQzNDLENBQ0osQ0FDSixDQUFDLENBQ0FpRSxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUFJO01BQ2hCLE1BQU0rQyxRQUFRLEdBQUlDLE9BQWUsSUFDN0JBLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLHlCQUF5QixFQUFFLG1CQUFtQixDQUFDO01BQ25FLE9BQU9sRyxnQkFBTyxDQUFDQyxLQUFLLENBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDOEMsRUFBRSxDQUFDc0IsZUFBZSxFQUFFLFlBQVksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDbkUsRUFBRSxDQUFDQyxDQUFDLElBQ3ZFQyxjQUFNLENBQUM2RixrQkFBa0IsQ0FDckIsSUFBQW5GLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFDMUNKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFlBQVksQ0FBQyxFQUMzQyxXQUFXLEVBQ1hzRyxRQUNKLENBQ0osQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUNEckMsTUFBTSxDQUFDLE1BQU1WLEVBQUUsSUFDWmpELGdCQUFPLENBQUNDLEtBQUssQ0FBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUM4QyxFQUFFLENBQUNzQixlQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQ25FLEVBQUUsQ0FBQ0MsQ0FBQyxJQUMvRUMsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFTLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFDeENKLENBQUMsRUFDREgsYUFBSSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixFQUFFLFlBQVksRUFBRSxlQUFlLENBQy9ELENBQ0osQ0FDSixDQUFDLENBQ0FpRSxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNaakQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQzhDLEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxXQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQ25FLEVBQUUsQ0FBQ0MsQ0FBQyxJQUNuRUMsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFTLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQ25DSixDQUFDLEVBQ0RILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxXQUFXLENBQzdDLENBQ0osQ0FDSixDQUFDLENBQ0FpRSxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNaakQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQzhDLEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQ25FLEVBQUUsQ0FBQ0MsQ0FBQyxJQUNoRUMsY0FBTSxDQUFDQyxlQUFlLENBQ2xCLElBQUFTLHVCQUFTLEVBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQy9CSixDQUFDLEVBQ0RILGFBQUksQ0FBQ0MsSUFBSSxDQUFDVCxrQkFBa0IsRUFBRSxPQUFPLENBQ3pDLENBQ0osQ0FDSixDQUFDLENBQ0FpRSxNQUFNLENBQUMsTUFBTVYsRUFBRSxJQUNaakQsZ0JBQU8sQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQzhDLEVBQUUsQ0FBQ3NCLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQ25FLEVBQUUsQ0FBQ0MsQ0FBQyxJQUM3REMsY0FBTSxDQUFDQyxlQUFlLENBQUMsSUFBQVMsdUJBQVMsRUFBQyxDQUFDLENBQUNQLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRUosQ0FBQyxFQUFFSCxhQUFJLENBQUNDLElBQUksQ0FBQ1Qsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQ2pHLENBQ0osQ0FBQyxDQUNBaUUsTUFBTSxDQUFDLE1BQU1WLEVBQUUsSUFDWmpELGdCQUFPLENBQUNDLEtBQUssQ0FBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUM4QyxFQUFFLENBQUNzQixlQUFlLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUNuRSxFQUFFLENBQUNDLENBQUMsSUFDL0RDLGNBQU0sQ0FBQ0MsZUFBZSxDQUNsQixJQUFBUyx1QkFBUyxFQUFDLENBQUMsQ0FBQ1AsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUMvQkosQ0FBQyxFQUNESCxhQUFJLENBQUNDLElBQUksQ0FBQ1Qsa0JBQWtCLEVBQUUsT0FBTyxDQUN6QyxDQUNKLENBQ0osQ0FBQyxDQUNBVSxFQUFFLENBQUMsTUFBTTZDLEVBQUUsSUFBSTtNQUNaLElBQUluRCxZQUFZLENBQUNzRyxLQUFLLEVBQUU7UUFDcEJDLHFCQUFRLENBQUNDLE1BQU0sQ0FBQztVQUNaQyxLQUFLLEVBQUcsR0FBRXRELEVBQUUsQ0FBQ3dDLFFBQVMsb0JBQW1CO1VBQ3pDZSxPQUFPLEVBQUcsV0FDTnZELEVBQUUsQ0FBQ1EsWUFBWSxJQUFJSCxTQUFTLEdBQ3RCLFlBQVksR0FDWkwsRUFBRSxDQUFDUSxZQUFZLENBQUN0RSxJQUFJLEtBQUssb0JBQW9CLEdBQzdDLE9BQU8sR0FDUDhELEVBQUUsQ0FBQ1EsWUFBWSxDQUFDckUsT0FDekI7UUFDTCxDQUFDLENBQUM7TUFDTjtJQUNKLENBQUMsQ0FBQztFQUNWLENBQ0osQ0FBQztFQUVELElBQUlVLFlBQVksQ0FBQ3NHLEtBQUssRUFBRTtJQUNwQixJQUFJNUcsT0FBTyxDQUFDaUgsS0FBSyxFQUFFO01BQ2YsTUFBTUMsb0JBQW9CLENBQUNoSCxrQkFBa0IsRUFBRUgsT0FBTyxDQUFDaUIsTUFBTSxDQUFDO0lBQ2xFO0lBQ0EsTUFBTW1HLFlBQVksR0FBRyxNQUFNNUcsY0FBYyxDQUFDNkcsT0FBTyxDQUFDLENBQUM7SUFDbkQsTUFBTUMsWUFBWSxHQUFHLE1BQU1sRixlQUFlLENBQUNpRixPQUFPLENBQUMsQ0FBQztJQUNwRCxNQUFNRSxZQUFZLEdBQUcsTUFBTWhHLGlDQUFpQyxDQUFDOEYsT0FBTyxDQUFDLENBQUM7SUFDdEUsTUFBTUcsWUFBWSxHQUFHLE1BQU05RixvQkFBb0IsQ0FBQzJGLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELE1BQU1JLFlBQVksR0FBRyxNQUFNN0YsZ0NBQWdDLENBQUN5RixPQUFPLENBQUMsQ0FBQztJQUNyRSxNQUFNckgsT0FBTyxDQUFDMEgsV0FBVyxDQUFDLENBQUM7SUFDM0IsSUFBSUgsWUFBWSxJQUFJeEQsU0FBUyxFQUFFO01BQzNCLE1BQU13RCxZQUFZLENBQUMsQ0FBQztJQUN4QjtJQUNBLElBQUlDLFlBQVksSUFBSXpELFNBQVMsRUFBRTtNQUMzQixNQUFNeUQsWUFBWSxDQUFDLENBQUM7SUFDeEI7SUFDQSxJQUFJQyxZQUFZLElBQUkxRCxTQUFTLEVBQUU7TUFDM0IsTUFBTTBELFlBQVksQ0FBQyxDQUFDO0lBQ3hCO0lBQ0EsTUFBTUgsWUFBWSxDQUFDLENBQUM7SUFDcEIsTUFBTUYsWUFBWSxDQUFDLENBQUM7RUFDeEIsQ0FBQyxNQUFNO0lBQ0gsTUFBTU8sU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUk7TUFDQSxJQUFJNUgsT0FBTyxDQUFDaUgsS0FBSyxFQUFFO1FBQ2YsTUFBTUMsb0JBQW9CLENBQUNoSCxrQkFBa0IsRUFBRUgsT0FBTyxDQUFDaUIsTUFBTSxDQUFDO01BQ2xFO01BQ0EsTUFBTVQsY0FBYyxDQUFDc0gsWUFBWTtNQUNqQyxNQUFNdkcsaUNBQWlDLENBQUN1RyxZQUFZO01BQ3BELE1BQU1wRyxvQkFBb0IsQ0FBQ29HLFlBQVk7TUFDdkMsTUFBTWxHLGdDQUFnQyxDQUFDa0csWUFBWTtNQUNuRCxNQUFNMUYsZUFBZSxDQUFDMEYsWUFBWTtNQUNsQztNQUNBQyxPQUFPLENBQUN4QyxHQUFHLENBQUN5QyxjQUFLLENBQUNDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDLFNBQVM7TUFDTixNQUFNQyxTQUFTLEdBQUdOLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBR0YsU0FBUztNQUN4QztNQUNBSSxPQUFPLENBQUN4QyxHQUFHLENBQUUsZUFBYyxJQUFBNEMsc0JBQVMsRUFBQ0QsU0FBUyxDQUFFLEVBQUMsQ0FBQztJQUN0RDtFQUNKO0FBQ0o7QUFFQSxlQUFlZixvQkFBb0JBLENBQUNoSCxrQkFBMEIsRUFBRWMsTUFBZSxFQUFpQjtFQUM1RkEsTUFBTSxDQUFDc0UsR0FBRyxDQUFDLCtCQUErQixHQUFHcEYsa0JBQWtCLENBQUM7RUFDaEUsTUFBTSxJQUFBaUksaUJBQVEsRUFBQ2pJLGtCQUFrQixDQUFDO0VBQ2xDYyxNQUFNLENBQUNzRSxHQUFHLENBQUMsMEJBQTBCLENBQUM7QUFDMUMifQ==
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX2ZzRXh0cmEiLCJfbm9kZU5vdGlmaWVyIiwiX0FjcXVpcmVGb3JtRW5naW5lIiwiX0VuZ2luZVNvdXJjZSIsIl9Db21waWxlRm9ybSIsIl9HZW5lcmF0ZUZvcm0iLCJfTnVsbEZvcm1HZW5lcmF0b3IiLCJfV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIl9GU1Rhc2siLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Xcml0ZUZvcm1NZXRhIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9PYnNlcnZlIiwiX1NpbmdsZVZhbHVlUHJvZHVjZXIiLCJfVGltaW5nVXRpbHMiLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJfVHlwaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJnZXRHZW5lcmF0b3JWZXJzaW9uIiwiZ2VuZXJhdG9yU291cmNlIiwidHlwZSIsInZlcnNpb24iLCJFcnJvciIsInJ1bkJ1aWxkRm9ybXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiYnVpbGRPcHRpb25zIiwicGlja0xpc3RzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwiZ2V0TG9nZ2VyIiwicmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4iLCJlbXB0eSIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJyZXBvc2l0b3J5Um9vdCIsImJ1aWxkQ2FjaGUiLCJCdWlsZENhY2hlIiwiYnVpbGRDYWNoZU1vZGUiLCJidWlsZEZvcm1zQ2hhaW4iLCJmb3JtRGlyZWN0b3JpZXMiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJmb3JtUmVsYXRpdmVQYXRoIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1EaXJQYXRoIiwicGF0aEV4aXN0cyIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsIndhcm5pbmciLCJ2YWx1ZSIsImZvcm1TY2hlbWFzRGlyUGF0aCIsInJuZ1NjaGVtYU1hc2siLCJnZXRSbmdTY2hlbWFGaWxlbmFtZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJyZXNvbHZlRm9ybUluZm8iLCJ1cGdyYWRlRm9ybUpzb24iLCJ1c2VMYXN0U3RhYmxlVmVyc2lvbiIsInVzZVByZXJlbGVhc2VWZXJzaW9uIiwiZmkiLCJtb2RlIiwiRm9ybUJ1aWxkTW9kZSIsIk5vcm1hbEJ1aWxkIiwiZ2VuZXJhdG9yVmVyc2lvbiIsInVuZGVmaW5lZCIsImVuZ2luZVZlcnNpb24iLCJyZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVNvdXJjZSIsInJlc29sdmVFbmdpbmVWZXJzaW9uIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwiZ2VuZXJhdG9yRmFjdG9yeSIsInVzZVZlcnNpb25Gcm9tQ2FjaGUiLCJ5IiwiZ2VuZXJhdG9yIiwiZ2V0R2VuZXJhdG9yU291cmNlS2V5IiwiZW5naW5lRmFjdG9yeSIsImhhcyIsImdldEVuZ2luZVNvdXJjZUtleSIsImFkZCIsImZvcm1Tb3VyY2VzUGF0aCIsImRlcGVuZGVuY2llc0hhc2giLCJzdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24iLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwiYnVpbGRDYWNoZUV4aXN0IiwiZXhpc3RzIiwiX2ZpJGRlcGVuZGVuY2llc0hhc2giLCJsb2ciLCJnZW5lcmF0ZUZvcm0iLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwicmVzb3VyY2VzSGFzaCIsIl9maSRkZXBlbmRlbmNpZXNIYXNoMiIsIl9maSRkZXBlbmRlbmNpZXNIYXNoMyIsImV4dHJhY3QiLCJidWlsZENhY2hlT3B0aW9ucyIsImRlcHNIYXNoIiwiY29tcGlsZUZvcm0iLCJmb3JtTmFtZSIsInRoZW1lcyIsInJlamVjdCIsIndyaXRlRm9ybU1ldGEiLCJ3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwid3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzIiwibW9kaWZpZXIiLCJjb250ZW50IiwicmVwbGFjZSIsIm1vZGlmeUZpbGVzQ29udGVudCIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNSIsIndhaXRGb3JFeGl0Iiwic3RvcE9ic2VydmU0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIiwicHJpbnRUaW1lIiwiZW1wdHlEaXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9SdW5CdWlsZEZvcm1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGVtcHR5RGlyLCBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbm90aWZpZXIgZnJvbSBcIm5vZGUtbm90aWZpZXJcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgZ2V0RW5naW5lU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0VuZ2luZVNvdXJjZVwiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgTnVsbEZvcm1HZW5lcmF0b3IgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL051bGxGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7XG4gICAgZ2VuZXJhdG9yRmFjdG9yeSxcbiAgICBHZW5lcmF0b3JTb3VyY2UsXG4gICAgZ2V0R2VuZXJhdG9yU291cmNlS2V5LFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uLCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkTW9kZSwgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgU2luZ2xlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9TaW5nbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IEVtcHR5UHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvRW1wdHlQcm9kdWNlclwiO1xuaW1wb3J0IHsgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuXG4gICAgYXdhaXQgRm9ybUdsb2JzLmVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtKGJ1aWxkT3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhidWlsZE9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUHJvZHVjdGlvblJlc291cmNlc0RpclwiKSxcbiAgICAgICAgXCIqLmpzXCIsXG4gICAgICAgIFwiKi5qcy5tYXBcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIC8qKiDQmtC+0L3QstC10YDRgtC10YDRiyDQvtC/0LjRgdC4INC00LvRjyDRhNC+0YDQvCwg0LrQvtGC0L7RgNGL0LUg0L/QvtC60LAg0L3QtSDRgNC10LDQu9C40LfQvtCy0LDQvdGLINC90LAg0LrQtdC90LTQuCwg0YHQsNC80LAg0LzQtdGF0LDQvdC40LrQsCDQvtC/0LjRgdC4INC/0LXRgNC10L3QtdGB0LXQvdCwINCyINGE0L7RgNC80Ysg0LIg0LrQtdC90LTQuCDQsNC/0LgsINC/0L7RjdGC0L7QvNGDINC+0L3QuCDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LIgY2FuZHkucmVzb3VyY2VzXG4gICAgICogINCg0LXQsNC70LjQt9GD0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0YDQuCDQvtCx0YnQtdC8INCx0LjQu9C00LUg0YTQvtGA0Lw6IGNhbmR5IGJ1aWxkICpcbiAgICAgKiAqL1xuICAgIGxldCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbjogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxzdHJpbmc+IHwgRW1wdHlQcm9kdWNlciA9IE9ic2VydmUuZW1wdHkoKTtcbiAgICBpZiAoZm9ybUdsb2JzWzBdID09PSBcIipcIikge1xuICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZXh0ZXJuYWxDb252ZXJ0ZXJzXCIpLCBcIioueHNsdFwiKS5kbyhcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRVhURVJOQUwtQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IHJlcG9zaXRvcnlSb290ID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIik7XG4gICAgY29uc3QgYnVpbGRDYWNoZSA9IG5ldyBCdWlsZENhY2hlKGZhcm1EaXJlY3RvcnksIG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUpO1xuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZm9ybURpcmVjdG9yaWVzKHJlcG9zaXRvcnlSb290LCBmb3JtR2xvYnMpLnNwbGl0VG9QYXJhbGxlbENoYWlucyhcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIGFzeW5jIGZvcm1SZWxhdGl2ZVBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gZXh0cmFjdEdmdkZyb21Gb3JtUGF0aChmb3JtUmVsYXRpdmVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtUmVsYXRpdmVQYXRoKTtcblxuICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKSkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53YXJuaW5nKFxuICAgICAgICAgICAgICAgICAgICBgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb24gZmlsZS4gVG8gaW5jbHVkZSB0aGlzIGZvcm0gdG8gYnVpbGQgcHJvY2VzcyByZXN0YXJ0IGJ1aWxkYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUudmFsdWUoe30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybVNjaGVtYXNEaXJQYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcInNjaGVtYXNcIik7XG4gICAgICAgICAgICBjb25zdCBybmdTY2hlbWFNYXNrID0gYCoke2dldFJuZ1NjaGVtYUZpbGVuYW1lKGZvcm1TY2hlbWFzRGlyUGF0aCwgZ2Z2KX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSkpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUZvcm1JbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUpzb25GaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGdyYWRlRm9ybUpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZUxhc3RTdGFibGVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VQcmVyZWxlYXNlVmVyc2lvblxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5lbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImVuZ2luZVZlcnNpb24gaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi94c2x0VGVtcGxhdGVzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vanNIZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgIT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgZmkuZ2VuZXJhdG9yLnN1cHBvcnRzRGVwZW5kZW5jaWVzRXh0cmFjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoID0gYXdhaXQgZmkuZ2VuZXJhdG9yLmdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJ1aWxkQ2FjaGVFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQgJiYgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZUV4aXN0ID0gYXdhaXQgYnVpbGRDYWNoZS5leGlzdHMoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVFeGlzdDogYnVpbGRDYWNoZUV4aXN0LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmJ1aWxkQ2FjaGVFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgR0VORVJBVEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCAmJiBmaS5idWlsZENhY2hlRXhpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRDYWNoZS5leHRyYWN0KGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoLCByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGb3JtTWV0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuYnVpbGRDYWNoZUV4aXN0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImxlZ2FjeS1wcmVidWlsdFwiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTEVHQUNZLVBSRUJVSUxUXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIHJuZ1NjaGVtYU1hc2spLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1lcmdlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNRVJHRVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtZXJnZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5yZXBsYWNlKC88eDppbmNsdWRlIGhyZWY9XCJbLi9dKy9nLCAnPHg6aW5jbHVkZSBocmVmPVwiJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5tb2RpZnlGaWxlc0NvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkZJWC1YU0xULUlOQ0xVREVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKi8qLnhzbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiLi5cIiwgXCIuLlwiLCBcInhzbHRUZW1wbGF0ZXNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJYU0xULVRFTVBMQVRFU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiLCBcInhzbHRUZW1wbGF0ZXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubm90aWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7ZmkuZm9ybU5hbWV9OiDRgdCx0L7RgNC60LAg0LfQsNCy0LXRgNGI0LXQvdCwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRW5naW5lOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UgPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiW05vRW5naW5lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS50eXBlID09PSBcIkxvY2FsRW5naW5lU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNSA9IGF3YWl0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuICAgICAgICBpZiAoc3RvcE9ic2VydmUzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlNCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdB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
@@ -35,7 +35,8 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
35
35
  const staticResourcesChain = _Observe.Observe.files(_path.default.join(__dirname, "..", "..", "StaticFilesForResourcesDir"), "*.js").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("STATICS"), x, _path.default.join(resourcesDirectory, "public", "scripts")));
36
36
  const pickListsChain = _Observe.Observe.files(_path.default.join(farmDirectory, "picklists"), "*.json").do(x => _FSTask.FSTask.copyRecursively(context.logger.withPrefix("PICKLISTS"), x, _path.default.join(resourcesDirectory, "picklists")));
37
37
  const repositoryRoot = _path.default.join(farmDirectory, "..");
38
- const formGlobs = await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
38
+ await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
39
+ const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
39
40
 
40
41
  /** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources
41
42
  * Реализуется только при общем билде форм: candy build *
@@ -102,4 +103,4 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
102
103
  console.log(`${_chalk.default.greenBright("Build success")} Total time: ${(0, _TimingUtils.printTime)(totalTime)}`);
103
104
  }
104
105
  }
105
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX0J1aWxkQ2xpZW50SnNUYXNrIiwiX0J1aWxkTG9jYWxFbmdpbmVUYXNrIiwiX0VuZ2luZVN0cnVjdHVyZVV0aWxzIiwiX0NvbXBpbGVGb3JtIiwiX0dlbmVyYXRlRm9ybSIsIl9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwiX0ZTVGFzayIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX1dyaXRlRm9ybU1ldGEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX09ic2VydmUiLCJfVGltaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRFbmdpbmVDaGFpbiIsImNoYWluV2l0aCIsInAiLCJCdWlsZExvY2FsRW5naW5lVGFzayIsImJ1aWxkRGVidWdPbmx5IiwiY2xpZW50V2VicGFja0NvbmZpZ1Rhc2siLCJjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkQ2xpZW50SnNDaGFpbiIsIkJ1aWxkQ2xpZW50SnNUYXNrIiwic3RhdGljUmVzb3VyY2VzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImdldExvZ2dlciIsIndpdGhQcmVmaXgiLCJwaWNrTGlzdHNDaGFpbiIsImxvZ2dlciIsInJlcG9zaXRvcnlSb290IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwiZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0iLCJyZXNvbHZlU3BlY2lmaWVycyIsInJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluIiwiZW1wdHkiLCJidWlsZEZvcm1zQ2hhaW4iLCJmb3JtRGlyZWN0b3JpZXMiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJmb3JtUmVsYXRpdmVQYXRoIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1EaXJQYXRoIiwiZm9ybVNjaGVtYXNEaXJQYXRoIiwicm5nU2NoZW1hTWFzayIsImdldFJuZ1NjaGVtYUZpbGVuYW1lIiwiZmlsZSIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsInRyYW5zZm9ybSIsImZvcm1Kc29uRmlsZSIsInJlc29sdmVGb3JtSW5mbyIsImdlbmVyYXRvclNvdXJjZSIsInJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSIsImVuZ2luZVNvdXJjZSIsInJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSIsImF0dGFjaCIsImZpIiwiZ2VuZXJhdG9yRmFjdG9yeSIsInVuZGVmaW5lZCIsInkiLCJnZW5lcmF0b3IiLCJnZXRHZW5lcmF0b3JTb3VyY2VLZXkiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsInNraXBHZW5lcmF0aW9uIiwiZ2VuZXJhdGVGb3JtIiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsInJlc291cmNlc0hhc2giLCJjb21waWxlRm9ybSIsImZvcm1OYW1lIiwidGhlbWVzIiwid3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsIndyaXRlRm9ybU1ldGEiLCJ3YXRjaCIsInN0b3BPYnNlcnZlMSIsIm9ic2VydmUiLCJzdG9wT2JzZXJ2ZTIiLCJzdG9wT2JzZXJ2ZTMiLCJzdG9wT2JzZXJ2ZTQiLCJzdG9wT2JzZXJ2ZTUiLCJzdG9wT2JzZXJ2ZTYiLCJ3YWl0Rm9yRXhpdCIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJub3ciLCJQcm9taXNlIiwiYWxsIiwiY3VycmVudFZhbHVlIiwiZSIsImNvbnRpbnVlT25FcnJvciIsImVycm9yIiwidG90YWxUaW1lIiwiY29uc29sZSIsImxvZyIsImNoYWxrIiwiZ3JlZW5CcmlnaHQiLCJwcmludFRpbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvRGV2QnVpbGQvUnVuRGV2QnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBCdWlsZENsaWVudEpzVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0NsaWVudEpTL0J1aWxkQ2xpZW50SnNUYXNrXCI7XG5pbXBvcnQgeyBCdWlsZExvY2FsRW5naW5lVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9CdWlsZExvY2FsRW5naW5lVGFza1wiO1xuaW1wb3J0IHsgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2ssIGNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lU3RydWN0dXJlVXRpbHNcIjtcbmltcG9ydCB7IGNvbXBpbGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Db21waWxlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHsgZ2VuZXJhdG9yRmFjdG9yeSwgZ2V0R2VuZXJhdG9yU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UsIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgcHJpbnRUaW1lIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGltaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IEVtcHR5UHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvRW1wdHlQcm9kdWNlclwiO1xuaW1wb3J0IHsgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMgfSBmcm9tIFwiLi9EZXZCdWlsZE9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRldkJ1aWxkKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGV2QnVpbGRPcHRpb25zID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGVuZ2luZVdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZEVuZ2luZUNoYWluID0gZW5naW5lV2VicGFja0NvbmZpZ1Rhc2suY2hhaW5XaXRoKFxuICAgICAgICBwID0+IG5ldyBCdWlsZExvY2FsRW5naW5lVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNsaWVudFdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZENsaWVudEpzQ2hhaW4gPSBjbGllbnRXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgocCA9PiBuZXcgQnVpbGRDbGllbnRKc1Rhc2socCwgcmVzb3VyY2VzRGlyZWN0b3J5KSk7XG5cbiAgICBjb25zdCBzdGF0aWNSZXNvdXJjZXNDaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHBpY2tMaXN0c0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiksIFwiKi5qc29uXCIpLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KFwiUElDS0xJU1RTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVwb3NpdG9yeVJvb3QgPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCIuLlwiKTtcbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0oXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgLyoqINCa0L7QvdCy0LXRgNGC0LXRgNGLINC+0L/QuNGB0Lgg0LTQu9GPINGE0L7RgNC8LCDQutC+0YLQvtGA0YvQtSDQv9C+0LrQsCDQvdC1INGA0LXQsNC70LjQt9C+0LLQsNC90Ysg0L3QsCDQutC10L3QtNC4LCDRgdCw0LzQsCDQvNC10YXQsNC90LjQutCwINC+0L/QuNGB0Lgg0L/QtdGA0LXQvdC10YHQtdC90LAg0LIg0YTQvtGA0LzRiyDQsiDQutC10L3QtNC4INCw0L/QuCwg0L/QvtGN0YLQvtC80YMg0L7QvdC4INC00L7Qu9C20L3RiyDQsdGL0YLRjCDQsiBjYW5keS5yZXNvdXJjZXNcbiAgICAgKiAg0KDQtdCw0LvQuNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0L/RgNC4INC+0LHRidC10Lwg0LHQuNC70LTQtSDRhNC+0YDQvDogY2FuZHkgYnVpbGQgKlxuICAgICAqICovXG4gICAgbGV0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZz4gfCBFbXB0eVByb2R1Y2VyID0gT2JzZXJ2ZS5lbXB0eSgpO1xuICAgIGlmIChmb3JtR2xvYnNbMF0gPT09IFwiKlwiKSB7XG4gICAgICAgIHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJleHRlcm5hbENvbnZlcnRlcnNcIiksIFwiKi54c2x0XCIpLmRvKFxuICAgICAgICAgICAgeCA9PlxuICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFWFRFUk5BTC1DT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRGb3Jtc0NoYWluID0gT2JzZXJ2ZS5mb3JtRGlyZWN0b3JpZXMocmVwb3NpdG9yeVJvb3QsIGZvcm1HbG9icykuc3BsaXRUb1BhcmFsbGVsQ2hhaW5zKFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgYXN5bmMgZm9ybVJlbGF0aXZlUGF0aCA9PiB7XG4gICAgICAgICAgICBjb25zdCBnZnYgPSBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoKGZvcm1SZWxhdGl2ZVBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1SZWxhdGl2ZVBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZm9ybVNjaGVtYXNEaXJQYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcInNjaGVtYXNcIik7XG4gICAgICAgICAgICBjb25zdCBybmdTY2hlbWFNYXNrID0gYCoke2dldFJuZ1NjaGVtYUZpbGVuYW1lKGZvcm1TY2hlbWFzRGlyUGF0aCwgZ2Z2KX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSkpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT4gcmVzb2x2ZUZvcm1JbmZvKGZvcm1Kc29uRmlsZSwgZm9ybURpclBhdGgsIGVuZ2luZURpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyB4ID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogcmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlKGVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlKGVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2VuZXJhdG9yRmFjdG9yeShmaS5nZW5lcmF0b3JTb3VyY2UsIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNjaGVtYXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdWdhci8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXV0b2NhbGMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsaWRhdGlvbnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsb2NhbGl6YXRpb24vKiovKlwiXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogYXdhaXQgZmkuZ2VuZXJhdG9yLmdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2tpcEdlbmVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgY29tcGlsZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWxkRGVidWdPbmx5XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMoZmkuZm9ybU5hbWUsIGZhcm1EaXJlY3RvcnksIGZvcm1EaXJQYXRoLCByZXNvdXJjZXNEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PiB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMoZmkuZm9ybU5hbWUsIGZhcm1EaXJlY3RvcnksIGZvcm1EaXJQYXRoLCByZXNvdXJjZXNEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PiB3cml0ZUZvcm1NZXRhKHJlc291cmNlc0RpcmVjdG9yeSwgZ2Z2LCBmaS5lbmdpbmVTb3VyY2UsIGZpLmRlcGVuZGVuY2llc0hhc2gsIGZpLnRoZW1lcykpXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwic2NoZW1hc1wiKSwgcm5nU2NoZW1hTWFzaykuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWVyZ2Vyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1FUkdFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1lcmdlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChkZXZCdWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgYnVpbGRFbmdpbmVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkQ2xpZW50SnNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU0ID0gYXdhaXQgYnVpbGRGb3Jtc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU1ID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTYgPSBhd2FpdCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5vYnNlcnZlKCk7XG5cbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuXG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMSgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU2KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgYnVpbGRFbmdpbmVDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBidWlsZENsaWVudEpzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgc3RhdGljUmVzb3VyY2VzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCksXG4gICAgICAgIF0pO1xuICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIil9IFRvdGFsIHRpbWU6ICR7cHJpbnRUaW1lKHRvdGFsVGltZSl9YCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsa0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHFCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxxQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sNkJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLE9BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLHFCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxzQkFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsZ0JBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLGNBQUEsR0FBQVosT0FBQTtBQUVBLElBQUFhLGVBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLGFBQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFlLFFBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixZQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLHlCQUFBLEdBQUFqQixPQUFBO0FBR0EsSUFBQWtCLHFCQUFBLEdBQUFsQixPQUFBO0FBQ0EsSUFBQW1CLGNBQUEsR0FBQW5CLE9BQUE7QUFDQSxJQUFBb0IscUJB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
106
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX0J1aWxkQ2xpZW50SnNUYXNrIiwiX0J1aWxkTG9jYWxFbmdpbmVUYXNrIiwiX0VuZ2luZVN0cnVjdHVyZVV0aWxzIiwiX0NvbXBpbGVGb3JtIiwiX0dlbmVyYXRlRm9ybSIsIl9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwiX0ZTVGFzayIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX1dyaXRlRm9ybU1ldGEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX09ic2VydmUiLCJfVGltaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRFbmdpbmVDaGFpbiIsImNoYWluV2l0aCIsInAiLCJCdWlsZExvY2FsRW5naW5lVGFzayIsImJ1aWxkRGVidWdPbmx5IiwiY2xpZW50V2VicGFja0NvbmZpZ1Rhc2siLCJjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkQ2xpZW50SnNDaGFpbiIsIkJ1aWxkQ2xpZW50SnNUYXNrIiwic3RhdGljUmVzb3VyY2VzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImdldExvZ2dlciIsIndpdGhQcmVmaXgiLCJwaWNrTGlzdHNDaGFpbiIsImxvZ2dlciIsInJlcG9zaXRvcnlSb290IiwiRm9ybUdsb2JzIiwiZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0iLCJmb3JtR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsInJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluIiwiZW1wdHkiLCJidWlsZEZvcm1zQ2hhaW4iLCJmb3JtRGlyZWN0b3JpZXMiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJmb3JtUmVsYXRpdmVQYXRoIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1EaXJQYXRoIiwiZm9ybVNjaGVtYXNEaXJQYXRoIiwicm5nU2NoZW1hTWFzayIsImdldFJuZ1NjaGVtYUZpbGVuYW1lIiwiZmlsZSIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsInRyYW5zZm9ybSIsImZvcm1Kc29uRmlsZSIsInJlc29sdmVGb3JtSW5mbyIsImdlbmVyYXRvclNvdXJjZSIsInJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSIsImVuZ2luZVNvdXJjZSIsInJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSIsImF0dGFjaCIsImZpIiwiZ2VuZXJhdG9yRmFjdG9yeSIsInVuZGVmaW5lZCIsInkiLCJnZW5lcmF0b3IiLCJnZXRHZW5lcmF0b3JTb3VyY2VLZXkiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsInNraXBHZW5lcmF0aW9uIiwiZ2VuZXJhdGVGb3JtIiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsInJlc291cmNlc0hhc2giLCJjb21waWxlRm9ybSIsImZvcm1OYW1lIiwidGhlbWVzIiwid3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsIndyaXRlRm9ybU1ldGEiLCJ3YXRjaCIsInN0b3BPYnNlcnZlMSIsIm9ic2VydmUiLCJzdG9wT2JzZXJ2ZTIiLCJzdG9wT2JzZXJ2ZTMiLCJzdG9wT2JzZXJ2ZTQiLCJzdG9wT2JzZXJ2ZTUiLCJzdG9wT2JzZXJ2ZTYiLCJ3YWl0Rm9yRXhpdCIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJub3ciLCJQcm9taXNlIiwiYWxsIiwiY3VycmVudFZhbHVlIiwiZSIsImNvbnRpbnVlT25FcnJvciIsImVycm9yIiwidG90YWxUaW1lIiwiY29uc29sZSIsImxvZyIsImNoYWxrIiwiZ3JlZW5CcmlnaHQiLCJwcmludFRpbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvRGV2QnVpbGQvUnVuRGV2QnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBCdWlsZENsaWVudEpzVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0NsaWVudEpTL0J1aWxkQ2xpZW50SnNUYXNrXCI7XG5pbXBvcnQgeyBCdWlsZExvY2FsRW5naW5lVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9CdWlsZExvY2FsRW5naW5lVGFza1wiO1xuaW1wb3J0IHsgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2ssIGNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lU3RydWN0dXJlVXRpbHNcIjtcbmltcG9ydCB7IGNvbXBpbGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Db21waWxlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHsgZ2VuZXJhdG9yRmFjdG9yeSwgZ2V0R2VuZXJhdG9yU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UsIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgcHJpbnRUaW1lIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGltaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IEVtcHR5UHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvRW1wdHlQcm9kdWNlclwiO1xuaW1wb3J0IHsgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMgfSBmcm9tIFwiLi9EZXZCdWlsZE9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRldkJ1aWxkKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGV2QnVpbGRPcHRpb25zID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGVuZ2luZVdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZEVuZ2luZUNoYWluID0gZW5naW5lV2VicGFja0NvbmZpZ1Rhc2suY2hhaW5XaXRoKFxuICAgICAgICBwID0+IG5ldyBCdWlsZExvY2FsRW5naW5lVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNsaWVudFdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZENsaWVudEpzQ2hhaW4gPSBjbGllbnRXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgocCA9PiBuZXcgQnVpbGRDbGllbnRKc1Rhc2socCwgcmVzb3VyY2VzRGlyZWN0b3J5KSk7XG5cbiAgICBjb25zdCBzdGF0aWNSZXNvdXJjZXNDaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHBpY2tMaXN0c0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiksIFwiKi5qc29uXCIpLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KFwiUElDS0xJU1RTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVwb3NpdG9yeVJvb3QgPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCIuLlwiKTtcbiAgICBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0ob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG5cbiAgICAvKiog0JrQvtC90LLQtdGA0YLQtdGA0Ysg0L7Qv9C40YHQuCDQtNC70Y8g0YTQvtGA0LwsINC60L7RgtC+0YDRi9C1INC/0L7QutCwINC90LUg0YDQtdCw0LvQuNC30L7QstCw0L3RiyDQvdCwINC60LXQvdC00LgsINGB0LDQvNCwINC80LXRhdCw0L3QuNC60LAg0L7Qv9C40YHQuCDQv9C10YDQtdC90LXRgdC10L3QsCDQsiDRhNC+0YDQvNGLINCyINC60LXQvdC00Lgg0LDQv9C4LCDQv9C+0Y3RgtC+0LzRgyDQvtC90Lgg0LTQvtC70LbQvdGLINCx0YvRgtGMINCyIGNhbmR5LnJlc291cmNlc1xuICAgICAqICDQoNC10LDQu9C40LfRg9C10YLRgdGPINGC0L7Qu9GM0LrQviDQv9GA0Lgg0L7QsdGJ0LXQvCDQsdC40LvQtNC1INGE0L7RgNC8OiBjYW5keSBidWlsZCAqXG4gICAgICogKi9cbiAgICBsZXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW46IENoYWluYWJsZVZhbHVlUHJvZHVjZXI8c3RyaW5nPiB8IEVtcHR5UHJvZHVjZXIgPSBPYnNlcnZlLmVtcHR5KCk7XG4gICAgaWYgKGZvcm1HbG9ic1swXSA9PT0gXCIqXCIpIHtcbiAgICAgICAgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImV4dGVybmFsQ29udmVydGVyc1wiKSwgXCIqLnhzbHRcIikuZG8oXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVYVEVSTkFMLUNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmZvcm1EaXJlY3RvcmllcyhyZXBvc2l0b3J5Um9vdCwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBmb3JtUmVsYXRpdmVQYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5Um9vdCwgZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtU2NoZW1hc0RpclBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwic2NoZW1hc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHJuZ1NjaGVtYU1hc2sgPSBgKiR7Z2V0Um5nU2NoZW1hRmlsZW5hbWUoZm9ybVNjaGVtYXNEaXJQYXRoLCBnZnYpfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PiByZXNvbHZlRm9ybUluZm8oZm9ybUpzb25GaWxlLCBmb3JtRGlyUGF0aCwgZW5naW5lRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZW5lcmF0b3JGYWN0b3J5KGZpLmdlbmVyYXRvclNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBmYWxzZSwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5za2lwR2VuZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgZm9ybURpclBhdGgsIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgZm9ybURpclBhdGgsIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlRm9ybU1ldGEocmVzb3VyY2VzRGlyZWN0b3J5LCBnZnYsIGZpLmVuZ2luZVNvdXJjZSwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgZmkudGhlbWVzKSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBybmdTY2hlbWFNYXNrKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGRldkJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBidWlsZEVuZ2luZUNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRDbGllbnRKc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNiA9IGF3YWl0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLm9ic2VydmUoKTtcblxuICAgICAgICBhd2FpdCBjb250ZXh0LndhaXRGb3JFeGl0KCk7XG5cbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTMoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU0KCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNSgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTYoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBidWlsZEVuZ2luZUNoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIGJ1aWxkQ2xpZW50SnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBzdGF0aWNSZXNvdXJjZXNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVlT25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKX0gVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxrQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcscUJBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyw2QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsT0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMscUJBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLHNCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxnQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksY0FBQSxHQUFBWixPQUFBO0FBRUEsSUFBQWEsZUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsYUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsUUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLFlBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIseUJBQUEsR0FBQWpCLE9BQUE7QUFHQSxJQUFBa0IscUJBQUEsR0FBQWxCLE9BQUE7QUFDQSxJQUFBbUIsY0FBQSxHQUFBbkIsT0FBQTtBQUNBLElBQUFvQixxQkFB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
@@ -11,7 +11,8 @@ var _FormGlobsUtils = require("../../Commons/FormGlobsUtils");
11
11
  var _IterableUtils = require("../../../../Common/IterableUtils");
12
12
  var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
13
13
  async function runFormStats(context, options, farmDirectory) {
14
- const formGlobs = await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
14
+ await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
15
+ const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
15
16
  const engineToGfvMap = {};
16
17
  for (const {
17
18
  gfv,
@@ -46,4 +47,4 @@ async function runFormStats(context, options, farmDirectory) {
46
47
  context.logger.log(` ${gfvs.join(", ")}`);
47
48
  }
48
49
  }
49
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9JdGVyYWJsZVV0aWxzIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwicnVuRm9ybVN0YXRzIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwiZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0iLCJyZXNvbHZlU3BlY2lmaWVycyIsImVuZ2luZVRvR2Z2TWFwIiwiZ2Z2IiwiZm9ybVBhdGgiLCJyZXNvbHZlR2Z2R2xvYnMiLCJfZW5naW5lVG9HZnZNYXAkZW5naW4iLCJfZW5naW5lVG9HZnZNYXAkZW5naW4yIiwiZm9ybUpzb25Db250ZW50IiwicmVhZEZvcm1Db25maWciLCJwYXRoIiwiam9pbiIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsImxvZ2dlciIsImVuZ2luZUJyYW5jaCIsIm1vZGUiLCJfZm9ybUpzb25Db250ZW50JGRlcGUiLCJfZm9ybUpzb25Db250ZW50JGRlcGUyIiwiZGVwZW5kZW5jaWVzIiwiZW5naW5lIiwicHVzaCIsImUiLCJlbmdpbmVHZnZzIiwiaXRlcmF0ZUVudHJpZXMiLCJsb2ciLCJsZW5ndGgiLCJnZnZzIiwiT2JqZWN0IiwiZW50cmllcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9Gb3JtU3RhdHMvUnVuRm9ybVN0YXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBpdGVyYXRlRW50cmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vSXRlcmFibGVVdGlsc1wiO1xuXG5pbXBvcnQgeyBGb3JtU3RhdHNPcHRpb25zIH0gZnJvbSBcIi4vRm9ybVN0YXRzT3B0aW9uc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Gb3JtU3RhdHMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBGb3JtU3RhdHNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLmVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpLFxuICAgICAgICBmYXJtRGlyZWN0b3J5XG4gICAgKTtcblxuICAgIGNvbnN0IGVuZ2luZVRvR2Z2TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHsgZ2Z2LCBmb3JtUGF0aCB9IG9mIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlR2Z2R2xvYnMoZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZm9ybUpzb25Db250ZW50ID0gYXdhaXQgcmVhZEZvcm1Db25maWcoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKGZvcm1QYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSxcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxldCBlbmdpbmVCcmFuY2g6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChmb3JtSnNvbkNvbnRlbnQubW9kZSA9PT0gXCJjb3B5LWxlZ2FjeS1wcmVidWlsdC1yZXNvdXJjZXNcIikge1xuICAgICAgICAgICAgICAgIGVuZ2luZUJyYW5jaCA9IFwiTGVnYWN5Q29weVByZWJ1aWx0XCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1Kc29uQ29udGVudC5tb2RlID09PSBcIm5vLWVkaXRvclwiKSB7XG4gICAgICAgICAgICAgICAgZW5naW5lQnJhbmNoID0gXCJOb0VkaXRvclwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbmdpbmVCcmFuY2ggPSBmb3JtSnNvbkNvbnRlbnQuZGVwZW5kZW5jaWVzPy5lbmdpbmUgPz8gXCJVbmtub3duXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbmdpbmVUb0dmdk1hcFtlbmdpbmVCcmFuY2hdID0gZW5naW5lVG9HZnZNYXBbZW5naW5lQnJhbmNoXSA/PyBbXTtcbiAgICAgICAgICAgIGVuZ2luZVRvR2Z2TWFwW2VuZ2luZUJyYW5jaF0/LnB1c2goZ2Z2KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZW5naW5lVG9HZnZNYXBbXCJVbmtub3duXCJdID0gZW5naW5lVG9HZnZNYXBbXCJVbmtub3duXCJdIHx8IFtdO1xuICAgICAgICAgICAgZW5naW5lVG9HZnZNYXBbXCJVbmtub3duXCJdLnB1c2goZ2Z2KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2VuZ2luZSwgZW5naW5lR2Z2c10gb2YgaXRlcmF0ZUVudHJpZXMoZW5naW5lVG9HZnZNYXApKSB7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLmxvZyhlbmdpbmUpO1xuICAgICAgICBjb250ZXh0LmxvZ2dlci5sb2coYCAgJHtlbmdpbmVHZnZzLmxlbmd0aH0gZm9ybXNgKTtcbiAgICB9XG4gICAgY29udGV4dC5sb2dnZXIubG9nKFwiXCIpO1xuICAgIGZvciAoY29uc3QgW2VuZ2luZSwgZ2Z2c10gb2YgT2JqZWN0LmVudHJpZXMoZW5naW5lVG9HZnZNYXApKSB7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLmxvZyhlbmdpbmUpO1xuICAgICAgICBjb250ZXh0LmxvZ2dlci5sb2coYCAgJHtnZnZzLmpvaW4oXCIsIFwiKX1gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxnQkFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsZUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUVPLGVBQWVLLFlBQVlBLENBQzlCQyxPQUFrQyxFQUNsQ0MsT0FBeUIsRUFDekJDLGFBQXFCLEVBQ1I7RUFDYixNQUFNQyxTQUFTLEdBQUcsTUFBTUMseUJBQVMsQ0FBQ0Msc0NBQXNDLENBQ3BFLE1BQU1ELHlCQUFTLENBQUNFLGlCQUFpQixDQUFDTCxPQUFPLENBQUNFLFNBQVMsRUFBRUQsYUFBYSxDQUFDLEVBQ25FQSxhQUNKLENBQUM7RUFFRCxNQUFNSyxjQUF3QyxHQUFHLENBQUMsQ0FBQztFQUNuRCxLQUFLLE1BQU07SUFBRUMsR0FBRztJQUFFQztFQUFTLENBQUMsSUFBSSxNQUFNTCx5QkFBUyxDQUFDTSxlQUFlLENBQUNQLFNBQVMsRUFBRUQsYUFBYSxDQUFDLEVBQUU7SUFDdkYsSUFBSTtNQUFBLElBQUFTLHFCQUFBLEVBQUFDLHNCQUFBO01BQ0EsTUFBTUMsZUFBZSxHQUFHLE1BQU0sSUFBQUMsK0JBQWMsRUFDeENDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDUCxRQUFRLEVBQUVRLDBDQUFvQixDQUFDQyxnQkFBZ0IsQ0FBQyxFQUMxRGxCLE9BQU8sQ0FBQ21CLE1BQ1osQ0FBQztNQUNELElBQUlDLFlBQW9CO01BQ3hCLElBQUlQLGVBQWUsQ0FBQ1EsSUFBSSxLQUFLLGdDQUFnQyxFQUFFO1FBQzNERCxZQUFZLEdBQUcsb0JBQW9CO01BQ3ZDLENBQUMsTUFBTSxJQUFJUCxlQUFlLENBQUNRLElBQUksS0FBSyxXQUFXLEVBQUU7UUFDN0NELFlBQVksR0FBRyxVQUFVO01BQzdCLENBQUMsTUFBTTtRQUFBLElBQUFFLHFCQUFBLEVBQUFDLHNCQUFBO1FBQ0hILFlBQVksSUFBQUUscUJBQUEsSUFBQUMsc0JBQUEsR0FBR1YsZUFBZSxDQUFDVyxZQUFZLGNBQUFELHNCQUFBLHVCQUE1QkEsc0JBQUEsQ0FBOEJFLE1BQU0sY0FBQUgscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxTQUFTO01BQ3BFO01BQ0FmLGNBQWMsQ0FBQ2EsWUFBWSxDQUFDLElBQUFULHFCQUFBLEdBQUdKLGNBQWMsQ0FBQ2EsWUFBWSxDQUFDLGNBQUFULHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksRUFBRTtNQUNqRSxDQUFBQyxzQkFBQSxHQUFBTCxjQUFjLENBQUNhLFlBQVksQ0FBQyxjQUFBUixzQkFBQSx1QkFBNUJBLHNCQUFBLENBQThCYyxJQUFJLENBQUNsQixHQUFHLENBQUM7SUFDM0MsQ0FBQyxDQUFDLE9BQU9tQixDQUFDLEVBQUU7TUFDUnBCLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBR0EsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7TUFDM0RBLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQ21CLElBQUksQ0FBQ2xCLEdBQUcsQ0FBQztJQUN2QztFQUNKO0VBRUEsS0FBSyxNQUFNLENBQUNpQixNQUFNLEVBQUVHLFVBQVUsQ0FBQyxJQUFJLElBQUFDLDZCQUFjLEVBQUN0QixjQUFjLENBQUMsRUFBRTtJQUMvRFAsT0FBTyxDQUFDbUIsTUFBTSxDQUFDVyxHQUFHLENBQUNMLE1BQU0sQ0FBQztJQUMxQnpCLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFFLEtBQUlGLFVBQVUsQ0FBQ0csTUFBTyxRQUFPLENBQUM7RUFDdEQ7RUFDQS9CLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFDLEVBQUUsQ0FBQztFQUN0QixLQUFLLE1BQU0sQ0FBQ0wsTUFBTSxFQUFFTyxJQUFJLENBQUMsSUFBSUMsTUFBTSxDQUFDQyxPQUFPLENBQUMzQixjQUFjLENBQUMsRUFBRTtJQUN6RFAsT0FBTyxDQUFDbUIsTUFBTSxDQUFDVyxHQUFHLENBQUNMLE1BQU0sQ0FBQztJQUMxQnpCLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFFLEtBQUlFLElBQUksQ0FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUUsRUFBQyxDQUFDO0VBQzlDO0FBQ0oifQ==
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9JdGVyYWJsZVV0aWxzIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwicnVuRm9ybVN0YXRzIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwiRm9ybUdsb2JzIiwiZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0iLCJmb3JtR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsImVuZ2luZVRvR2Z2TWFwIiwiZ2Z2IiwiZm9ybVBhdGgiLCJyZXNvbHZlR2Z2R2xvYnMiLCJfZW5naW5lVG9HZnZNYXAkZW5naW4iLCJfZW5naW5lVG9HZnZNYXAkZW5naW4yIiwiZm9ybUpzb25Db250ZW50IiwicmVhZEZvcm1Db25maWciLCJwYXRoIiwiam9pbiIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsImxvZ2dlciIsImVuZ2luZUJyYW5jaCIsIm1vZGUiLCJfZm9ybUpzb25Db250ZW50JGRlcGUiLCJfZm9ybUpzb25Db250ZW50JGRlcGUyIiwiZGVwZW5kZW5jaWVzIiwiZW5naW5lIiwicHVzaCIsImUiLCJlbmdpbmVHZnZzIiwiaXRlcmF0ZUVudHJpZXMiLCJsb2ciLCJsZW5ndGgiLCJnZnZzIiwiT2JqZWN0IiwiZW50cmllcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9Gb3JtU3RhdHMvUnVuRm9ybVN0YXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBpdGVyYXRlRW50cmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vSXRlcmFibGVVdGlsc1wiO1xuXG5pbXBvcnQgeyBGb3JtU3RhdHNPcHRpb25zIH0gZnJvbSBcIi4vRm9ybVN0YXRzT3B0aW9uc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Gb3JtU3RhdHMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBGb3JtU3RhdHNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgRm9ybUdsb2JzLmVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtKG9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KTtcbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuXG4gICAgY29uc3QgZW5naW5lVG9HZnZNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVHZnZHbG9icyhmb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtSnNvbkNvbnRlbnQgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpLFxuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGV0IGVuZ2luZUJyYW5jaDogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKGZvcm1Kc29uQ29udGVudC5tb2RlID09PSBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiKSB7XG4gICAgICAgICAgICAgICAgZW5naW5lQnJhbmNoID0gXCJMZWdhY3lDb3B5UHJlYnVpbHRcIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybUpzb25Db250ZW50Lm1vZGUgPT09IFwibm8tZWRpdG9yXCIpIHtcbiAgICAgICAgICAgICAgICBlbmdpbmVCcmFuY2ggPSBcIk5vRWRpdG9yXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVuZ2luZUJyYW5jaCA9IGZvcm1Kc29uQ29udGVudC5kZXBlbmRlbmNpZXM/LmVuZ2luZSA/PyBcIlVua25vd25cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVuZ2luZVRvR2Z2TWFwW2VuZ2luZUJyYW5jaF0gPSBlbmdpbmVUb0dmdk1hcFtlbmdpbmVCcmFuY2hdID8/IFtdO1xuICAgICAgICAgICAgZW5naW5lVG9HZnZNYXBbZW5naW5lQnJhbmNoXT8ucHVzaChnZnYpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBlbmdpbmVUb0dmdk1hcFtcIlVua25vd25cIl0gPSBlbmdpbmVUb0dmdk1hcFtcIlVua25vd25cIl0gfHwgW107XG4gICAgICAgICAgICBlbmdpbmVUb0dmdk1hcFtcIlVua25vd25cIl0ucHVzaChnZnYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbZW5naW5lLCBlbmdpbmVHZnZzXSBvZiBpdGVyYXRlRW50cmllcyhlbmdpbmVUb0dmdk1hcCkpIHtcbiAgICAgICAgY29udGV4dC5sb2dnZXIubG9nKGVuZ2luZSk7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLmxvZyhgICAke2VuZ2luZUdmdnMubGVuZ3RofSBmb3Jtc2ApO1xuICAgIH1cbiAgICBjb250ZXh0LmxvZ2dlci5sb2coXCJcIik7XG4gICAgZm9yIChjb25zdCBbZW5naW5lLCBnZnZzXSBvZiBPYmplY3QuZW50cmllcyhlbmdpbmVUb0dmdk1hcCkpIHtcbiAgICAgICAgY29udGV4dC5sb2dnZXIubG9nKGVuZ2luZSk7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLmxvZyhgICAke2dmdnMuam9pbihcIiwgXCIpfWApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLGdCQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFHQSxJQUFBSSxxQkFBQSxHQUFBSixPQUFBO0FBRU8sZUFBZUssWUFBWUEsQ0FDOUJDLE9BQWtDLEVBQ2xDQyxPQUF5QixFQUN6QkMsYUFBcUIsRUFDUjtFQUNiLE1BQU1DLHlCQUFTLENBQUNDLHNDQUFzQyxDQUFDSCxPQUFPLENBQUNJLFNBQVMsRUFBRUgsYUFBYSxDQUFDO0VBQ3hGLE1BQU1HLFNBQVMsR0FBRyxNQUFNRix5QkFBUyxDQUFDRyxpQkFBaUIsQ0FBQ0wsT0FBTyxDQUFDSSxTQUFTLEVBQUVILGFBQWEsQ0FBQztFQUVyRixNQUFNSyxjQUF3QyxHQUFHLENBQUMsQ0FBQztFQUNuRCxLQUFLLE1BQU07SUFBRUMsR0FBRztJQUFFQztFQUFTLENBQUMsSUFBSSxNQUFNTix5QkFBUyxDQUFDTyxlQUFlLENBQUNMLFNBQVMsRUFBRUgsYUFBYSxDQUFDLEVBQUU7SUFDdkYsSUFBSTtNQUFBLElBQUFTLHFCQUFBLEVBQUFDLHNCQUFBO01BQ0EsTUFBTUMsZUFBZSxHQUFHLE1BQU0sSUFBQUMsK0JBQWMsRUFDeENDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDUCxRQUFRLEVBQUVRLDBDQUFvQixDQUFDQyxnQkFBZ0IsQ0FBQyxFQUMxRGxCLE9BQU8sQ0FBQ21CLE1BQ1osQ0FBQztNQUNELElBQUlDLFlBQW9CO01BQ3hCLElBQUlQLGVBQWUsQ0FBQ1EsSUFBSSxLQUFLLGdDQUFnQyxFQUFFO1FBQzNERCxZQUFZLEdBQUcsb0JBQW9CO01BQ3ZDLENBQUMsTUFBTSxJQUFJUCxlQUFlLENBQUNRLElBQUksS0FBSyxXQUFXLEVBQUU7UUFDN0NELFlBQVksR0FBRyxVQUFVO01BQzdCLENBQUMsTUFBTTtRQUFBLElBQUFFLHFCQUFBLEVBQUFDLHNCQUFBO1FBQ0hILFlBQVksSUFBQUUscUJBQUEsSUFBQUMsc0JBQUEsR0FBR1YsZUFBZSxDQUFDVyxZQUFZLGNBQUFELHNCQUFBLHVCQUE1QkEsc0JBQUEsQ0FBOEJFLE1BQU0sY0FBQUgscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxTQUFTO01BQ3BFO01BQ0FmLGNBQWMsQ0FBQ2EsWUFBWSxDQUFDLElBQUFULHFCQUFBLEdBQUdKLGNBQWMsQ0FBQ2EsWUFBWSxDQUFDLGNBQUFULHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksRUFBRTtNQUNqRSxDQUFBQyxzQkFBQSxHQUFBTCxjQUFjLENBQUNhLFlBQVksQ0FBQyxjQUFBUixzQkFBQSx1QkFBNUJBLHNCQUFBLENBQThCYyxJQUFJLENBQUNsQixHQUFHLENBQUM7SUFDM0MsQ0FBQyxDQUFDLE9BQU9tQixDQUFDLEVBQUU7TUFDUnBCLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBR0EsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7TUFDM0RBLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQ21CLElBQUksQ0FBQ2xCLEdBQUcsQ0FBQztJQUN2QztFQUNKO0VBRUEsS0FBSyxNQUFNLENBQUNpQixNQUFNLEVBQUVHLFVBQVUsQ0FBQyxJQUFJLElBQUFDLDZCQUFjLEVBQUN0QixjQUFjLENBQUMsRUFBRTtJQUMvRFAsT0FBTyxDQUFDbUIsTUFBTSxDQUFDVyxHQUFHLENBQUNMLE1BQU0sQ0FBQztJQUMxQnpCLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFFLEtBQUlGLFVBQVUsQ0FBQ0csTUFBTyxRQUFPLENBQUM7RUFDdEQ7RUFDQS9CLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFDLEVBQUUsQ0FBQztFQUN0QixLQUFLLE1BQU0sQ0FBQ0wsTUFBTSxFQUFFTyxJQUFJLENBQUMsSUFBSUMsTUFBTSxDQUFDQyxPQUFPLENBQUMzQixjQUFjLENBQUMsRUFBRTtJQUN6RFAsT0FBTyxDQUFDbUIsTUFBTSxDQUFDVyxHQUFHLENBQUNMLE1BQU0sQ0FBQztJQUMxQnpCLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQ1csR0FBRyxDQUFFLEtBQUlFLElBQUksQ0FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUUsRUFBQyxDQUFDO0VBQzlDO0FBQ0oifQ==
@@ -10,7 +10,8 @@ var _FormGlobsUtils = require("../../Commons/FormGlobsUtils");
10
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
11
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
12
  async function runRenameFiles(context, options, resourcesDirectory, farmDirectory) {
13
- const formGlobs = await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
13
+ await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
14
+ const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
14
15
  for (const {
15
16
  gfv,
16
17
  formPath
@@ -47,4 +48,4 @@ async function renameFiles(farmDirectory, gfv, formPath, logger) {
47
48
  logger.log(`Rename "${rngXmlFileName}" in "${newRngXmlFileName}".`);
48
49
  await (0, _fsExtra.rename)(fileDirPath, newFileDirPath);
49
50
  }
50
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwicnVuUmVuYW1lRmlsZXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsInJlc291cmNlc0RpcmVjdG9yeSIsImZhcm1EaXJlY3RvcnkiLCJmb3JtR2xvYnMiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsInJlc29sdmVTcGVjaWZpZXJzIiwiZ2Z2IiwiZm9ybVBhdGgiLCJyZXNvbHZlR2Z2R2xvYnMiLCJpc05hTiIsIk51bWJlciIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJyZW5hbWVGaWxlcyIsIl9tYXhTdWJ2ZXJzaW9uIiwicHJlc2VudGF0aW9uc0ZpbGUiLCJqb2luIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJqc29uIiwicmVhZEpzb24iLCJtYXhTdWJ2ZXJzaW9uIiwiaXRlbSIsInVuZGVmaW5lZCIsInJuZ1htbEZpbGVOYW1lIiwibmV3Um5nWG1sRmlsZU5hbWUiLCJmaWxlRGlyUGF0aCIsIm5ld0ZpbGVEaXJQYXRoIiwibG9nIiwicmVuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL1JlbmFtZUZpbGVzL1J1blJlbmFtZUZpbGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cywgcmVhZEpzb24sIHJlbmFtZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5cbmltcG9ydCB7IFJlbmFtZUZpbGVzT3B0aW9ucyB9IGZyb20gXCIuL1JlbmFtZUZpbGVzT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUmVuYW1lRmlsZXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBSZW5hbWVGaWxlc09wdGlvbnMsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0oXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVHZnZHbG9icyhmb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpKSB7XG4gICAgICAgIGlmICghaXNOYU4oTnVtYmVyKGdmdikpKSB7XG4gICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApO1xuICAgICAgICAgICAgYXdhaXQgcmVuYW1lRmlsZXMoZmFybURpcmVjdG9yeSwgZ2Z2LCBmb3JtUGF0aCwgbG9nZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVuYW1lRmlsZXMoZmFybURpcmVjdG9yeTogc3RyaW5nLCBnZnY6IHN0cmluZywgZm9ybVBhdGg6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJlc2VudGF0aW9uc0ZpbGUgPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMocHJlc2VudGF0aW9uc0ZpbGUpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSBwcmVzZW50YXRpb25zLmpzb24uYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QganNvbiA9IGF3YWl0IHJlYWRKc29uKHByZXNlbnRhdGlvbnNGaWxlKTtcbiAgICBsZXQgbWF4U3VidmVyc2lvbiA9IDA7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGpzb24pIHtcbiAgICAgICAgaWYgKGl0ZW1bXCJNYXhWZXJzaW9uXCJdICE9PSB1bmRlZmluZWQgJiYgaXRlbVtcIk1heFZlcnNpb25cIl0pIHtcbiAgICAgICAgICAgIG1heFN1YnZlcnNpb24gPSBpdGVtW1wiTWF4VmVyc2lvblwiXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBtYXhTdWJ2ZXJzaW9uID0gbWF4U3VidmVyc2lvbiA/PyAwO1xuICAgIGNvbnN0IHJuZ1htbEZpbGVOYW1lID0gYCR7Z2Z2fS5ybmcueG1sYDtcbiAgICBjb25zdCBuZXdSbmdYbWxGaWxlTmFtZSA9IGAke2dmdn0uJHttYXhTdWJ2ZXJzaW9ufS5ybmcueG1sYDtcbiAgICBjb25zdCBmaWxlRGlyUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgXCJzY2hlbWFzXCIsIHJuZ1htbEZpbGVOYW1lKTtcbiAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGZpbGVEaXJQYXRoKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoYEZvcm0gJHtnZnZ9IGRvZXMgbm90IGhhdmUgJHtybmdYbWxGaWxlTmFtZX0uYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3RmlsZURpclBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFwic2NoZW1hc1wiLCBuZXdSbmdYbWxGaWxlTmFtZSk7XG4gICAgbG9nZ2VyLmxvZyhgUmVuYW1lIFwiJHtybmdYbWxGaWxlTmFtZX1cIiBpbiBcIiR7bmV3Um5nWG1sRmlsZU5hbWV9XCIuYCk7XG4gICAgYXdhaXQgcmVuYW1lKGZpbGVEaXJQYXRoLCBuZXdGaWxlRGlyUGF0aCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLGVBQUEsR0FBQUYsT0FBQTtBQUF5RCxTQUFBRyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBTCx3QkFBQVMsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFB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
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwicnVuUmVuYW1lRmlsZXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsInJlc291cmNlc0RpcmVjdG9yeSIsImZhcm1EaXJlY3RvcnkiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwiZ2Z2IiwiZm9ybVBhdGgiLCJyZXNvbHZlR2Z2R2xvYnMiLCJpc05hTiIsIk51bWJlciIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJyZW5hbWVGaWxlcyIsIl9tYXhTdWJ2ZXJzaW9uIiwicHJlc2VudGF0aW9uc0ZpbGUiLCJqb2luIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJqc29uIiwicmVhZEpzb24iLCJtYXhTdWJ2ZXJzaW9uIiwiaXRlbSIsInVuZGVmaW5lZCIsInJuZ1htbEZpbGVOYW1lIiwibmV3Um5nWG1sRmlsZU5hbWUiLCJmaWxlRGlyUGF0aCIsIm5ld0ZpbGVEaXJQYXRoIiwibG9nIiwicmVuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL1JlbmFtZUZpbGVzL1J1blJlbmFtZUZpbGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cywgcmVhZEpzb24sIHJlbmFtZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5cbmltcG9ydCB7IFJlbmFtZUZpbGVzT3B0aW9ucyB9IGZyb20gXCIuL1JlbmFtZUZpbGVzT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUmVuYW1lRmlsZXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBSZW5hbWVGaWxlc09wdGlvbnMsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0ob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG4gICAgZm9yIChjb25zdCB7IGdmdiwgZm9ybVBhdGggfSBvZiBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZUdmdkdsb2JzKGZvcm1HbG9icywgZmFybURpcmVjdG9yeSkpIHtcbiAgICAgICAgaWYgKCFpc05hTihOdW1iZXIoZ2Z2KSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCk7XG4gICAgICAgICAgICBhd2FpdCByZW5hbWVGaWxlcyhmYXJtRGlyZWN0b3J5LCBnZnYsIGZvcm1QYXRoLCBsb2dnZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZW5hbWVGaWxlcyhmYXJtRGlyZWN0b3J5OiBzdHJpbmcsIGdmdjogc3RyaW5nLCBmb3JtUGF0aDogc3RyaW5nLCBsb2dnZXI6IElMb2dnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcmVzZW50YXRpb25zRmlsZSA9IHBhdGguam9pbihmb3JtUGF0aCwgXCJwcmVzZW50YXRpb25zLmpzb25cIik7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwcmVzZW50YXRpb25zRmlsZSkpKSB7XG4gICAgICAgIGxvZ2dlci53YXJuaW5nKGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIHByZXNlbnRhdGlvbnMuanNvbi5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBqc29uID0gYXdhaXQgcmVhZEpzb24ocHJlc2VudGF0aW9uc0ZpbGUpO1xuICAgIGxldCBtYXhTdWJ2ZXJzaW9uID0gMDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YganNvbikge1xuICAgICAgICBpZiAoaXRlbVtcIk1heFZlcnNpb25cIl0gIT09IHVuZGVmaW5lZCAmJiBpdGVtW1wiTWF4VmVyc2lvblwiXSkge1xuICAgICAgICAgICAgbWF4U3VidmVyc2lvbiA9IGl0ZW1bXCJNYXhWZXJzaW9uXCJdO1xuICAgICAgICB9XG4gICAgfVxuICAgIG1heFN1YnZlcnNpb24gPSBtYXhTdWJ2ZXJzaW9uID8/IDA7XG4gICAgY29uc3Qgcm5nWG1sRmlsZU5hbWUgPSBgJHtnZnZ9LnJuZy54bWxgO1xuICAgIGNvbnN0IG5ld1JuZ1htbEZpbGVOYW1lID0gYCR7Z2Z2fS4ke21heFN1YnZlcnNpb259LnJuZy54bWxgO1xuICAgIGNvbnN0IGZpbGVEaXJQYXRoID0gcGF0aC5qb2luKGZvcm1QYXRoLCBcInNjaGVtYXNcIiwgcm5nWG1sRmlsZU5hbWUpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZmlsZURpclBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSAke3JuZ1htbEZpbGVOYW1lfS5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdGaWxlRGlyUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgXCJzY2hlbWFzXCIsIG5ld1JuZ1htbEZpbGVOYW1lKTtcbiAgICBsb2dnZXIubG9nKGBSZW5hbWUgXCIke3JuZ1htbEZpbGVOYW1lfVwiIGluIFwiJHtuZXdSbmdYbWxGaWxlTmFtZX1cIi5gKTtcbiAgICBhd2FpdCByZW5hbWUoZmlsZURpclBhdGgsIG5ld0ZpbGVEaXJQYXRoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsZUFBQSxHQUFBRixPQUFBO0FBQXlELFNBQUFHLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFMLHdCQUFBUyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYsR0FBQSxVQUFBRyxLQUFBLEdBQUFS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
@@ -15,7 +15,8 @@ var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
15
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
17
  async function runUpgradeForm(context, options, resourcesDirectory, farmDirectory) {
18
- const formGlobs = await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
18
+ await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
19
+ const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
19
20
  for (const {
20
21
  gfv,
21
22
  formPath
@@ -140,4 +141,4 @@ async function upgradeFormPrerelease(farmDirectory, gfv, formPath, preid, logger
140
141
  throw new Error(`Версии ${preid} не существует.`);
141
142
  }
142
143
  }
143
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJfVmVyc2lvbiIsIl9XZWxsS25vd25EaXJlY3RvcmllcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJydW5VcGdyYWRlRm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9icyIsIkZvcm1HbG9icyIsImVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJnZnYiLCJmb3JtUGF0aCIsInJlc29sdmVHZnZHbG9icyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ1c2VDaUJ1aWxkIiwibG9nIiwidXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlIiwiZW5naW5lIiwidW5kZWZpbmVkIiwidXBncmFkZUZvcm1FbmdpbmUiLCJza2lwUHJlVmVyc2lvbnMiLCJwcmVpZCIsInVwZ3JhZGVGb3JtUHJlcmVsZWFzZSIsImVuZ2luZVZlcnNpb24iLCJmb3JtSnNvblBhdGgiLCJqb2luIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMiLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMyIiwiZGVwZW5kZW5jaWVzIiwiZ2VuZXJhdG9yIiwiX2Zvcm1Db25maWckZGVwZW5kZW5jMyIsIl9mb3JtQ29uZmlnJGRlcGVuZGVuYzQiLCJlbmdpbmVWZXJzaW9uU3BlYyIsInBhcnNlQ2FuZHlWZXJzaW9uU3BlYyIsImdlbmVyYXRvclZlcnNpb25TcGVjIiwidHlwZSIsInRlc3QiLCJ2ZXJzaW9uIiwibW9kZSIsImdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uIiwiZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24iLCJ3cml0ZUpzb24iLCJzcGFjZXMiLCJpc0VuZ2luZVZlcnNpb25FeGlzdHMiLCJFcnJvciIsImdlbmVyYXRlZEZvcm1EaXJlY3RvcnkiLCJpc05ld0Zvcm1Kc29uRm9ybWF0IiwiZ2V0TG9nZ2VyIiwiYnVpbGQiLCJyZW1vdmUiLCJmb3JtR2l0SWdub3JlUGF0aCIsImdpdElnbm9yZUNvbnRlbnQiLCJyZWFkRmlsZSIsInNwbGl0IiwiaW5jbHVkZXMiLCJ3cml0ZUZpbGUiLCJ0cmltUmlnaHQiLCJwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uIiwiZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9VcGdyYWRlRm9ybS9SdW5VcGdyYWRlRm9ybS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMsIHJlYWRGaWxlLCByZW1vdmUsIHdyaXRlRmlsZSwgd3JpdGVKc29uIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7XG4gICAgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24sXG4gICAgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24sXG4gICAgZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbiAgICBpc0VuZ2luZVZlcnNpb25FeGlzdHMsXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgaXNOZXdGb3JtSnNvbkZvcm1hdCwgcmVhZEZvcm1Db25maWcgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBwYXJzZUNhbmR5VmVyc2lvblNwZWMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9WZXJzaW9uXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgVXBncmFkZUZvcm1PcHRpb25zIH0gZnJvbSBcIi4vVXBncmFkZUZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5VcGdyYWRlRm9ybShcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IFVwZ3JhZGVGb3JtT3B0aW9ucyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5lbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybShcbiAgICAgICAgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVTcGVjaWZpZXJzKG9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSxcbiAgICAgICAgZmFybURpcmVjdG9yeVxuICAgICk7XG4gICAgZm9yIChjb25zdCB7IGdmdiwgZm9ybVBhdGggfSBvZiBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZUdmdkdsb2JzKGZvcm1HbG9icywgZmFybURpcmVjdG9yeSkpIHtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgRk9STToke2dmdn1gKTtcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlQ2lCdWlsZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBidWlsZCBtb2RlXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlKHJlc291cmNlc0RpcmVjdG9yeSwgZmFybURpcmVjdG9yeSwgZ2Z2LCBmb3JtUGF0aCwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJGaW5pc2ggdXBncmFkaW5nIGJ1aWxkIG1vZGVcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZW5naW5lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgICAgIGF3YWl0IHVwZ3JhZGVGb3JtRW5naW5lKGZhcm1EaXJlY3RvcnksIGdmdiwgZm9ybVBhdGgsIG9wdGlvbnMuZW5naW5lLCBvcHRpb25zLnNraXBQcmVWZXJzaW9ucywgbG9nZ2VyKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJGaW5pc2ggdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLnByZWlkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgICAgIGF3YWl0IHVwZ3JhZGVGb3JtUHJlcmVsZWFzZShmYXJtRGlyZWN0b3J5LCBnZnYsIGZvcm1QYXRoLCBvcHRpb25zLnByZWlkLCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtRW5naW5lKFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBmb3JtUGF0aDogc3RyaW5nLFxuICAgIGVuZ2luZVZlcnNpb246IHN0cmluZyxcbiAgICBza2lwUHJlVmVyc2lvbnM6IGJvb2xlYW4sXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUpzb25QYXRoKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoXCJGb3JtIGRvZXMgbm90IGhhdmUgZm9ybS5qc29uOiBVcGdyYWRlIHNraXBwZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aCwgbG9nZ2VyKTtcbiAgICBpZiAoc2tpcFByZVZlcnNpb25zKSB7XG4gICAgICAgIGlmIChmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lICE9IHVuZGVmaW5lZCAmJiBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZ2VuZXJhdG9yICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgZW5naW5lVmVyc2lvblNwZWMgPSBwYXJzZUNhbmR5VmVyc2lvblNwZWMoZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXM/LmVuZ2luZSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3JWZXJzaW9uU3BlYyA9IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uU3BlYy50eXBlID09PSBcInByZVwiIHx8XG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvblNwZWMudHlwZSA9PT0gXCJwcmVcIiB8fFxuICAgICAgICAgICAgICAgIChlbmdpbmVWZXJzaW9uU3BlYy50eXBlID09PSBcInZlcnNpb25cIiAmJiAvW2EtekEtWl0vLnRlc3QoZW5naW5lVmVyc2lvblNwZWMudmVyc2lvbikpIHx8XG4gICAgICAgICAgICAgICAgKGdlbmVyYXRvclZlcnNpb25TcGVjLnR5cGUgPT09IFwidmVyc2lvblwiICYmIC9bYS16QS1aXS8udGVzdChnZW5lcmF0b3JWZXJzaW9uU3BlYy52ZXJzaW9uKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5sb2coXG4gICAgICAgICAgICAgICAgICAgIFwiRm9ybSB2ZXJzaW9uIGhhcyBwcmVyZWxlYXNlIHZlcnNpb246IFVwZ3JhZGUgc2tpcHBlZCBkdWUgdG8gZmxhZyBza2lwUHJlVmVyc2lvbnMgKC0tc2tpcC1wcmUtdmVyc2lvbnMpIHNwZWNpZmllZFwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZvcm1Db25maWcubW9kZSA9PT0gXCJuby1lZGl0b3JcIikge1xuICAgICAgICBsb2dnZXIubG9nKFwiRm9ybSBkb2VzIG5vdCBoYXZlIGVkaXRvcjogVXBncmFkZSBza2lwcGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChmb3JtQ29uZmlnLm1vZGUgPT09IFwiY29weS1sZWdhY3ktcHJlYnVpbHQtcmVzb3VyY2VzXCIpIHtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBlZGl0b3I6IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZW5naW5lVmVyc2lvbiA9PT0gXCJsYXRlc3RcIikge1xuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHtcbiAgICAgICAgICAgIGVuZ2luZTogYXdhaXQgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24oKSxcbiAgICAgICAgICAgIGdlbmVyYXRvcjogYXdhaXQgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24oKSxcbiAgICAgICAgfTtcbiAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byBsYXN0IHN0YWJsZSB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXdhaXQgaXNFbmdpbmVWZXJzaW9uRXhpc3RzKGVuZ2luZVZlcnNpb24pKSB7XG4gICAgICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHsgZW5naW5lOiBlbmdpbmVWZXJzaW9uLCBnZW5lcmF0b3I6IGVuZ2luZVZlcnNpb24gfTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coYFVwZGF0ZWQgdG8gdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDQktC10YDRgdC40LggJHtlbmdpbmVWZXJzaW9ufSDQvdC1INGB0YPRidC10YHRgtCy0YPQtdGCLmApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB1cGdyYWRlRm9ybVRvQ2lCdWlsZE1vZGUoXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGdmdjogc3RyaW5nLFxuICAgIGZvcm1QYXRoOiBzdHJpbmcsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUpzb25QYXRoKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoXCJmb3JtLmpzb24gZG9lcyBub3QgZXhpc3RzLiBVcGdyYWRlIHNraXBwZWQuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGdlbmVyYXRlZEZvcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFwiZm9ybVwiKTtcbiAgICBpZiAoIWlzTmV3Rm9ybUpzb25Gb3JtYXQoZm9ybUpzb25QYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcItCk0LDQudC7IGZvcm0uanNvbiDRhNC+0YDQvNGLINC00L7Qu9C20LXQvSDQuNC80LXRgtGMINC90L7QstGL0Lkg0YTQvtGA0LzQsNGCINC30LDQstC40YHQuNC80L7RgdGC0LguINCe0LHRgNCw0YLQuNGC0LXRgdGMINC6INGA0LDRgdC30YDQsNCx0L7RgtGH0LjQutCw0Lwg0LfQsCDRgNCw0LfRitGP0YHQvdC10L3QuNGP0LzQuC5cIlxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBnZXRMb2dnZXIoKSk7XG4gICAgaWYgKGZvcm1Db25maWcuYnVpbGQgIT09IFwiY2lcIikge1xuICAgICAgICBmb3JtQ29uZmlnLmJ1aWxkID0gXCJjaVwiO1xuICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIlVwZGF0ZWQgZm9ybS5qc29uXCIpO1xuICAgIH1cbiAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhnZW5lcmF0ZWRGb3JtRGlyZWN0b3J5KSkge1xuICAgICAgICBhd2FpdCByZW1vdmUoZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSk7XG4gICAgICAgIGxvZ2dlci5sb2coXCJSZW1vdmVkIGZvcm0gZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgICBjb25zdCBmb3JtR2l0SWdub3JlUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgXCIuZ2l0aWdub3JlXCIpO1xuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZvcm1HaXRJZ25vcmVQYXRoKSkge1xuICAgICAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgaWYgKCFnaXRJZ25vcmVDb250ZW50LnNwbGl0KFwiXFxuXCIpLmluY2x1ZGVzKFwiZm9ybVwiKSkge1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZvcm1HaXRJZ25vcmVQYXRoLCBnaXRJZ25vcmVDb250ZW50LnRyaW1SaWdodCgpICsgXCJcXG5cIiArIFwiZm9ybVxcblwiKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJVcGRhdGVkIC5naXRpZ25vcmVcIik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIFwiZm9ybVxcblwiKTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIkNyZWF0ZWQgLmdpdGlnbm9yZVwiKTtcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtUHJlcmVsZWFzZShcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZ2Z2OiBzdHJpbmcsXG4gICAgZm9ybVBhdGg6IHN0cmluZyxcbiAgICBwcmVpZDogc3RyaW5nLFxuICAgIGxvZ2dlcjogSUxvZ2dlclxuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9ybUpzb25QYXRoID0gcGF0aC5qb2luKGZvcm1QYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKTtcbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBsb2dnZXIpO1xuICAgIGNvbnN0IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gPSBhd2FpdCBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uKHByZWlkKTtcblxuICAgIGlmIChwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHsgZW5naW5lOiBwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLCBnZW5lcmF0b3I6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gfTtcbiAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byBwcmVyZWxlYXNlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihg0JLQtdGA0YHQuNC4ICR7cHJlaWR9INC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuYCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxzQkFBQSxHQUFBRixPQUFBO0FBTUEsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLGVBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLHFCQUFBLEdBQUFQLE9BQUE7QUFBK0UsU0FBQVEseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVYsd0JBQUFjLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxvQkFBQUEsR0FBQSx3QkFBQUEsR0FBQSw0QkFBQUUsT0FBQSxFQUFBRixHQUFBLFVBQUFHLEtBQUEsR0FBQVIsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBTyxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBSixHQUFBLFlBQUFHLEtBQUEsQ0FBQUUsR0FBQSxDQUFBTCxHQUFBLFNBQUFNLE1BQUEsV0FBQUMscUJBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsR0FBQSxJQUFBWCxHQUFBLFFBQUFXLEdBQUEsa0JBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWQsR0FBQSxFQUFBVyxH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
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJfVmVyc2lvbiIsIl9XZWxsS25vd25EaXJlY3RvcmllcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJydW5VcGdyYWRlRm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsIkZvcm1HbG9icyIsImVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtIiwiZm9ybUdsb2JzIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJnZnYiLCJmb3JtUGF0aCIsInJlc29sdmVHZnZHbG9icyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ1c2VDaUJ1aWxkIiwibG9nIiwidXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlIiwiZW5naW5lIiwidW5kZWZpbmVkIiwidXBncmFkZUZvcm1FbmdpbmUiLCJza2lwUHJlVmVyc2lvbnMiLCJwcmVpZCIsInVwZ3JhZGVGb3JtUHJlcmVsZWFzZSIsImVuZ2luZVZlcnNpb24iLCJmb3JtSnNvblBhdGgiLCJqb2luIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMiLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMyIiwiZGVwZW5kZW5jaWVzIiwiZ2VuZXJhdG9yIiwiX2Zvcm1Db25maWckZGVwZW5kZW5jMyIsIl9mb3JtQ29uZmlnJGRlcGVuZGVuYzQiLCJlbmdpbmVWZXJzaW9uU3BlYyIsInBhcnNlQ2FuZHlWZXJzaW9uU3BlYyIsImdlbmVyYXRvclZlcnNpb25TcGVjIiwidHlwZSIsInRlc3QiLCJ2ZXJzaW9uIiwibW9kZSIsImdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uIiwiZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24iLCJ3cml0ZUpzb24iLCJzcGFjZXMiLCJpc0VuZ2luZVZlcnNpb25FeGlzdHMiLCJFcnJvciIsImdlbmVyYXRlZEZvcm1EaXJlY3RvcnkiLCJpc05ld0Zvcm1Kc29uRm9ybWF0IiwiZ2V0TG9nZ2VyIiwiYnVpbGQiLCJyZW1vdmUiLCJmb3JtR2l0SWdub3JlUGF0aCIsImdpdElnbm9yZUNvbnRlbnQiLCJyZWFkRmlsZSIsInNwbGl0IiwiaW5jbHVkZXMiLCJ3cml0ZUZpbGUiLCJ0cmltUmlnaHQiLCJwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uIiwiZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9VcGdyYWRlRm9ybS9SdW5VcGdyYWRlRm9ybS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMsIHJlYWRGaWxlLCByZW1vdmUsIHdyaXRlRmlsZSwgd3JpdGVKc29uIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7XG4gICAgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24sXG4gICAgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24sXG4gICAgZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbiAgICBpc0VuZ2luZVZlcnNpb25FeGlzdHMsXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgaXNOZXdGb3JtSnNvbkZvcm1hdCwgcmVhZEZvcm1Db25maWcgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBwYXJzZUNhbmR5VmVyc2lvblNwZWMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9WZXJzaW9uXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgVXBncmFkZUZvcm1PcHRpb25zIH0gZnJvbSBcIi4vVXBncmFkZUZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5VcGdyYWRlRm9ybShcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IFVwZ3JhZGVGb3JtT3B0aW9ucyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IEZvcm1HbG9icy5lbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybShvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVTcGVjaWZpZXJzKG9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KTtcbiAgICBmb3IgKGNvbnN0IHsgZ2Z2LCBmb3JtUGF0aCB9IG9mIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlR2Z2R2xvYnMoZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSkge1xuICAgICAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApO1xuICAgICAgICBpZiAob3B0aW9ucy51c2VDaUJ1aWxkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGJ1aWxkIG1vZGVcIik7XG4gICAgICAgICAgICBhd2FpdCB1cGdyYWRlRm9ybVRvQ2lCdWlsZE1vZGUocmVzb3VyY2VzRGlyZWN0b3J5LCBmYXJtRGlyZWN0b3J5LCBnZnYsIGZvcm1QYXRoLCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgYnVpbGQgbW9kZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5lbmdpbmUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1FbmdpbmUoZmFybURpcmVjdG9yeSwgZ2Z2LCBmb3JtUGF0aCwgb3B0aW9ucy5lbmdpbmUsIG9wdGlvbnMuc2tpcFByZVZlcnNpb25zLCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucHJlaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1QcmVyZWxlYXNlKGZhcm1EaXJlY3RvcnksIGdmdiwgZm9ybVBhdGgsIG9wdGlvbnMucHJlaWQsIGxvZ2dlcik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiRmluaXNoIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1FbmdpbmUoXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGdmdjogc3RyaW5nLFxuICAgIGZvcm1QYXRoOiBzdHJpbmcsXG4gICAgZW5naW5lVmVyc2lvbjogc3RyaW5nLFxuICAgIHNraXBQcmVWZXJzaW9uczogYm9vbGVhbixcbiAgICBsb2dnZXI6IElMb2dnZXJcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb246IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBsb2dnZXIpO1xuICAgIGlmIChza2lwUHJlVmVyc2lvbnMpIHtcbiAgICAgICAgaWYgKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkICYmIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uU3BlYyA9IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lKTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvclZlcnNpb25TcGVjID0gcGFyc2VDYW5keVZlcnNpb25TcGVjKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwicHJlXCIgfHxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uU3BlYy50eXBlID09PSBcInByZVwiIHx8XG4gICAgICAgICAgICAgICAgKGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwidmVyc2lvblwiICYmIC9bYS16QS1aXS8udGVzdChlbmdpbmVWZXJzaW9uU3BlYy52ZXJzaW9uKSkgfHxcbiAgICAgICAgICAgICAgICAoZ2VuZXJhdG9yVmVyc2lvblNwZWMudHlwZSA9PT0gXCJ2ZXJzaW9uXCIgJiYgL1thLXpBLVpdLy50ZXN0KGdlbmVyYXRvclZlcnNpb25TcGVjLnZlcnNpb24pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgXCJGb3JtIHZlcnNpb24gaGFzIHByZXJlbGVhc2UgdmVyc2lvbjogVXBncmFkZSBza2lwcGVkIGR1ZSB0byBmbGFnIHNraXBQcmVWZXJzaW9ucyAoLS1za2lwLXByZS12ZXJzaW9ucykgc3BlY2lmaWVkXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZm9ybUNvbmZpZy5tb2RlID09PSBcIm5vLWVkaXRvclwiKSB7XG4gICAgICAgIGxvZ2dlci5sb2coXCJGb3JtIGRvZXMgbm90IGhhdmUgZWRpdG9yOiBVcGdyYWRlIHNraXBwZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZvcm1Db25maWcubW9kZSA9PT0gXCJjb3B5LWxlZ2FjeS1wcmVidWlsdC1yZXNvdXJjZXNcIikge1xuICAgICAgICBsb2dnZXIubG9nKFwiRm9ybSBkb2VzIG5vdCBoYXZlIGVkaXRvcjogVXBncmFkZSBza2lwcGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlbmdpbmVWZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgZW5naW5lOiBhd2FpdCBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbigpLFxuICAgICAgICAgICAgZ2VuZXJhdG9yOiBhd2FpdCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbigpLFxuICAgICAgICB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIGxhc3Qgc3RhYmxlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhd2FpdCBpc0VuZ2luZVZlcnNpb25FeGlzdHMoZW5naW5lVmVyc2lvbikpIHtcbiAgICAgICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IGVuZ2luZVZlcnNpb24sIGdlbmVyYXRvcjogZW5naW5lVmVyc2lvbiB9O1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYNCS0LXRgNGB0LjQuCAke2VuZ2luZVZlcnNpb259INC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtVG9DaUJ1aWxkTW9kZShcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZ2Z2OiBzdHJpbmcsXG4gICAgZm9ybVBhdGg6IHN0cmluZyxcbiAgICBsb2dnZXI6IElMb2dnZXJcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhcImZvcm0uanNvbiBkb2VzIG5vdCBleGlzdHMuIFVwZ3JhZGUgc2tpcHBlZC5cIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSA9IHBhdGguam9pbihmb3JtUGF0aCwgXCJmb3JtXCIpO1xuICAgIGlmICghaXNOZXdGb3JtSnNvbkZvcm1hdChmb3JtSnNvblBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwi0KTQsNC50LsgZm9ybS5qc29uINGE0L7RgNC80Ysg0LTQvtC70LbQtdC9INC40LzQtdGC0Ywg0L3QvtCy0YvQuSDRhNC+0YDQvNCw0YIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuC4g0J7QsdGA0LDRgtC40YLQtdGB0Ywg0Log0YDQsNGB0LfRgNCw0LHQvtGC0YfQuNC60LDQvCDQt9CwINGA0LDQt9GK0Y/RgdC90LXQvdC40Y/QvNC4LlwiXG4gICAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGdldExvZ2dlcigpKTtcbiAgICBpZiAoZm9ybUNvbmZpZy5idWlsZCAhPT0gXCJjaVwiKSB7XG4gICAgICAgIGZvcm1Db25maWcuYnVpbGQgPSBcImNpXCI7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICBsb2dnZXIubG9nKFwiVXBkYXRlZCBmb3JtLmpzb25cIik7XG4gICAgfVxuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGdlbmVyYXRlZEZvcm1EaXJlY3RvcnkpKSB7XG4gICAgICAgIGF3YWl0IHJlbW92ZShnZW5lcmF0ZWRGb3JtRGlyZWN0b3J5KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIlJlbW92ZWQgZm9ybSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1HaXRJZ25vcmVQYXRoID0gcGF0aC5qb2luKGZvcm1QYXRoLCBcIi5naXRpZ25vcmVcIik7XG4gICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUdpdElnbm9yZVBhdGgpKSB7XG4gICAgICAgIGNvbnN0IGdpdElnbm9yZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmb3JtR2l0SWdub3JlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICBpZiAoIWdpdElnbm9yZUNvbnRlbnQuc3BsaXQoXCJcXG5cIikuaW5jbHVkZXMoXCJmb3JtXCIpKSB7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIGdpdElnbm9yZUNvbnRlbnQudHJpbVJpZ2h0KCkgKyBcIlxcblwiICsgXCJmb3JtXFxuXCIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIlVwZGF0ZWQgLmdpdGlnbm9yZVwiKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShmb3JtR2l0SWdub3JlUGF0aCwgXCJmb3JtXFxuXCIpO1xuICAgICAgICBsb2dnZXIubG9nKFwiQ3JlYXRlZCAuZ2l0aWdub3JlXCIpO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1QcmVyZWxlYXNlKFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBmb3JtUGF0aDogc3RyaW5nLFxuICAgIHByZWlkOiBzdHJpbmcsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGxvZ2dlcik7XG4gICAgY29uc3QgcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiA9IGF3YWl0IGdldFByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24ocHJlaWQpO1xuXG4gICAgaWYgKHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sIGdlbmVyYXRvcjogcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIHByZXJlbGVhc2UgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDQktC10YDRgdC40LggJHtwcmVpZH0g0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgi5gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLHNCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksZUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQUErRSxTQUFBUSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBVix3QkFBQWMsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBRSxHQUFBLENBQUFMLEdBQUEsU0FBQU0sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxHQUFBLElBQUFYLEdBQUEsUUFBQVcsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZCxHQUFBLEVBQUFXLEdB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
@@ -16,70 +16,60 @@ class FormGlobs {
16
16
  static async enumerateFormsInRepository(...repositoryRoots) {
17
17
  const result = [];
18
18
  for (const repositoryRoot of repositoryRoots) {
19
- for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.farm/forms/**/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
19
+ for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.farm/forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
20
20
  cwd: repositoryRoot
21
21
  })) {
22
- if (await (0, _fsExtra.pathExists)(_path.default.join(repositoryRoot, formJsonPath))) {
23
- const formPath = _path.default.dirname(formJsonPath);
24
- const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
25
- result.push({
26
- gfv: gfv,
27
- formPath: _path.default.join(repositoryRoot, formPath),
28
- formRelativePath: formPath
29
- });
30
- }
22
+ const formPath = _path.default.dirname(formJsonPath);
23
+ const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
24
+ result.push({
25
+ gfv: gfv,
26
+ formPath: _path.default.join(repositoryRoot, formPath),
27
+ formRelativePath: formPath
28
+ });
31
29
  }
32
- for (const formJsonPath of await (0, _FsUtils.globAsync)(`${_WellKnownDirectories.WellKnownDirectories.TestFarmDir}/forms/**/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
30
+ for (const formJsonPath of await (0, _FsUtils.globAsync)(`${_WellKnownDirectories.WellKnownDirectories.TestFarmDir}/forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
33
31
  cwd: repositoryRoot
34
32
  })) {
35
- if (await (0, _fsExtra.pathExists)(_path.default.join(repositoryRoot, formJsonPath))) {
36
- const formPath = _path.default.dirname(formJsonPath);
37
- const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
38
- result.push({
39
- gfv: gfv,
40
- formPath: _path.default.join(repositoryRoot, formPath),
41
- formRelativePath: formPath
42
- });
43
- }
33
+ const formPath = _path.default.dirname(formJsonPath);
34
+ const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
35
+ result.push({
36
+ gfv: gfv,
37
+ formPath: _path.default.join(repositoryRoot, formPath),
38
+ formRelativePath: formPath
39
+ });
44
40
  }
45
- for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.rpn.farm/forms/**/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
41
+ for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.rpn.farm/forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
46
42
  cwd: repositoryRoot
47
43
  })) {
48
- if (await (0, _fsExtra.pathExists)(_path.default.join(repositoryRoot, formJsonPath))) {
49
- const formPath = _path.default.dirname(formJsonPath);
50
- const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
51
- result.push({
52
- gfv: gfv,
53
- formPath: _path.default.join(repositoryRoot, formPath),
54
- formRelativePath: formPath
55
- });
56
- }
44
+ const formPath = _path.default.dirname(formJsonPath);
45
+ const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
46
+ result.push({
47
+ gfv: gfv,
48
+ formPath: _path.default.join(repositoryRoot, formPath),
49
+ formRelativePath: formPath
50
+ });
57
51
  }
58
- for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.diadoc.farm/forms/**/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
52
+ for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.diadoc.farm/forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
59
53
  cwd: repositoryRoot
60
54
  })) {
61
- if (await (0, _fsExtra.pathExists)(_path.default.join(repositoryRoot, formJsonPath))) {
62
- const formPath = _path.default.dirname(formJsonPath);
63
- const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
64
- result.push({
65
- gfv: gfv,
66
- formPath: _path.default.join(repositoryRoot, formPath),
67
- formRelativePath: formPath
68
- });
69
- }
55
+ const formPath = _path.default.dirname(formJsonPath);
56
+ const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
57
+ result.push({
58
+ gfv: gfv,
59
+ formPath: _path.default.join(repositoryRoot, formPath),
60
+ formRelativePath: formPath
61
+ });
70
62
  }
71
- for (const formJsonPath of await (0, _FsUtils.globAsync)(`forms/**/*/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
72
- cwd: repositoryRoot
63
+ for (const formJsonPath of await (0, _FsUtils.globAsync)(`**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
64
+ cwd: _path.default.join(repositoryRoot, "forms")
73
65
  })) {
74
- if (await (0, _fsExtra.pathExists)(_path.default.join(repositoryRoot, formJsonPath))) {
75
- const formPath = _path.default.dirname(formJsonPath);
76
- const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
77
- result.push({
78
- gfv: gfv,
79
- formPath: _path.default.join(repositoryRoot, formPath),
80
- formRelativePath: formPath
81
- });
82
- }
66
+ const formPath = _path.default.dirname(formJsonPath);
67
+ const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
68
+ result.push({
69
+ gfv: gfv,
70
+ formPath: _path.default.join(repositoryRoot, "forms", formPath),
71
+ formRelativePath: formPath
72
+ });
83
73
  }
84
74
  }
85
75
  return result;
@@ -144,4 +134,4 @@ class FormGlobs {
144
134
  }
145
135
  }
146
136
  exports.FormGlobs = FormGlobs;
147
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJfRnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJGb3JtR2xvYnMiLCJlbnVtZXJhdGVGb3Jtc0luUmVwb3NpdG9yeSIsInJlcG9zaXRvcnlSb290cyIsInJlc3VsdCIsInJlcG9zaXRvcnlSb290IiwiZm9ybUpzb25QYXRoIiwiZ2xvYkFzeW5jIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwiY3dkIiwicGF0aEV4aXN0cyIsInBhdGgiLCJqb2luIiwiZm9ybVBhdGgiLCJkaXJuYW1lIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsInB1c2giLCJmb3JtUmVsYXRpdmVQYXRoIiwiVGVzdEZhcm1EaXIiLCJDYW5keVN1YmRpcmVjdG9yeU5hbWUiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsImZhcm1EaXJlY3RvcnkiLCJmb3JtR2xvYiIsInJlc29sdmVkR2Z2cyIsInJlc29sdmVHZnZHbG9icyIsImxlbmd0aCIsIkVycm9yIiwiTWFwIiwibm9ybWFsaXplIiwiaXNGb3JtTWF0Y2hUb0dsb2IiLCJzZXQiLCJlbnRyaWVzIiwibWFwIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJmb3JtR2xvYnNXaXRoU3BlY2lmaWVycyIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsIiwieCIsInJlc29sdmVPbmx5Rm9ybUdsb2JTcGVjaWZpZXJzIiwiZmxhdCIsImdmdlJlZ2V4cCIsIlJlZ0V4cCIsInJlcGxhY2UiLCJ0ZXN0IiwiaW5jbHVkZXMiLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJOdWxsTG9nZ2VyIiwiYnVpbGQiLCJlbmRzV2l0aCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQ29tbW9ucy9Gb3JtR2xvYnNVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4vRnNVdGlsc1wiO1xuaW1wb3J0IHsgTnVsbExvZ2dlciB9IGZyb20gXCIuL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBGb3JtTG9jYXRpb25JbmZvIH0gZnJvbSBcIi4vRm9ybUxvY2F0aW9uSW5mb1wiO1xuXG5leHBvcnQgY2xhc3MgRm9ybUdsb2JzIHtcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAuLi5yZXBvc2l0b3J5Um9vdHM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJlcG9zaXRvcnlSb290IG9mIHJlcG9zaXRvcnlSb290cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtSnNvblBhdGggb2YgYXdhaXQgZ2xvYkFzeW5jKFxuICAgICAgICAgICAgICAgIGBjYW5keS5mYXJtL2Zvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAgeyBjd2Q6IHJlcG9zaXRvcnlSb290IH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5kaXJuYW1lKGZvcm1Kc29uUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1SZWxhdGl2ZVBhdGg6IGZvcm1QYXRoLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCR7V2VsbEtub3duRGlyZWN0b3JpZXMuVGVzdEZhcm1EaXJ9L2Zvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5kaXJuYW1lKGZvcm1Kc29uUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1SZWxhdGl2ZVBhdGg6IGZvcm1QYXRoLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LnJwbi5mYXJtL2Zvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5kaXJuYW1lKGZvcm1Kc29uUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1SZWxhdGl2ZVBhdGg6IGZvcm1QYXRoLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LmRpYWRvYy5mYXJtL2Zvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5kaXJuYW1lKGZvcm1Kc29uUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1SZWxhdGl2ZVBhdGg6IGZvcm1QYXRoLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGZvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWV9LyR7V2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZX1gLFxuICAgICAgICAgICAgICAgIHsgY3dkOiByZXBvc2l0b3J5Um9vdCB9XG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZnYgPSBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoKGZvcm1QYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUGF0aDogcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtUGF0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUmVsYXRpdmVQYXRoOiBmb3JtUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyBlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybShcbiAgICAgICAgZm9ybUdsb2JzOiBzdHJpbmdbXSxcbiAgICAgICAgZmFybURpcmVjdG9yeTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZvcm1HbG9iIG9mIGZvcm1HbG9icykge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRHZnZzID0gYXdhaXQgdGhpcy5yZXNvbHZlR2Z2R2xvYnMoW2Zvcm1HbG9iXSwgZmFybURpcmVjdG9yeSk7XG4gICAgICAgICAgICBpZiAocmVzb2x2ZWRHZnZzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg0KTQvtGA0Lwg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNGFICR7Zm9ybUdsb2J9INC90LUg0L3QsNC50LTQtdC90L4uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1HbG9icztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlc29sdmVHZnZHbG9icyhmb3JtR2xvYnM6IHN0cmluZ1tdLCBmYXJtRGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPEZvcm1Mb2NhdGlvbkluZm9bXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCB7IGdmdiwgZm9ybVBhdGggfSBvZiBhd2FpdCBGb3JtR2xvYnMuZW51bWVyYXRlRm9ybXNJblJlcG9zaXRvcnkoXG4gICAgICAgICAgICBwYXRoLm5vcm1hbGl6ZShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCIuLlwiKSlcbiAgICAgICAgKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtR2xvYiBvZiBmb3JtR2xvYnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgRm9ybUdsb2JzLmlzRm9ybU1hdGNoVG9HbG9iKGZvcm1HbG9iLCBnZnYsIGZvcm1QYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGdmdiwgZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbLi4ucmVzdWx0LmVudHJpZXMoKV0ubWFwKChbZ2Z2LCBmb3JtUGF0aF0pID0+ICh7IGdmdjogZ2Z2LCBmb3JtUGF0aDogZm9ybVBhdGggfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgcmVzb2x2ZVNwZWNpZmllcnMoZm9ybUdsb2JzV2l0aFNwZWNpZmllcnM6IHN0cmluZ1tdLCBmYXJtRGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzLm1hcCh4ID0+IHRoaXMucmVzb2x2ZU9ubHlGb3JtR2xvYlNwZWNpZmllcnMoeCwgZmFybURpcmVjdG9yeSkpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiByZXN1bHRzLmZsYXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBpc0Zvcm1NYXRjaFRvR2xvYihmb3JtR2xvYjogc3RyaW5nLCBnZnY6IHN0cmluZywgZm9ybVBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCBnZnZSZWdleHAgPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgXCJeXCIgK1xuICAgICAgICAgICAgICAgIGZvcm1HbG9iXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiOndpdGgtdWktdGVzdHNcIiwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCI6d2l0aC1jaS1idWlsZFwiLCBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFwqL2dpLCBcIlxcXFxkKlwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFw/L2dpLCBcIlxcXFxkXCIpICtcbiAgICAgICAgICAgICAgICBcIiRcIlxuICAgICAgICApO1xuICAgICAgICBpZiAoZ2Z2UmVnZXhwLnRlc3QoZ2Z2KSkge1xuICAgICAgICAgICAgaWYgKGZvcm1HbG9iLmluY2x1ZGVzKFwiOndpdGgtdWktdGVzdHNcIikpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtUGF0aCwgXCJ0ZXN0c1wiKSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybUdsb2IuaW5jbHVkZXMoXCI6d2l0aC1jaS1idWlsZFwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aCwgbmV3IE51bGxMb2dnZXIoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1Db25maWcuYnVpbGQgIT09IFwiY2lcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIHJlc29sdmVPbmx5Rm9ybUdsb2JTcGVjaWZpZXJzKGZvcm1HbG9iOiBzdHJpbmcsIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgaWYgKGZvcm1HbG9iLmVuZHNXaXRoKFwiOndpdGgtdWktdGVzdHNcIikpIHtcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5yZXNvbHZlR2Z2R2xvYnMoW2Zvcm1HbG9iXSwgZmFybURpcmVjdG9yeSkpLm1hcCh4ID0+IHguZ2Z2KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybUdsb2IuZW5kc1dpdGgoXCI6d2l0aC1jaS1idWlsZFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnJlc29sdmVHZnZHbG9icyhbZm9ybUdsb2JdLCBmYXJtRGlyZWN0b3J5KSkubWFwKHggPT4geC5nZnYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbZm9ybUdsb2JdO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxxQkFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBR08sTUFBTU8sU0FBUyxDQUFDO0VBQ25CLGFBQW9CQywwQkFBMEJBLENBQzFDLEdBQUdDLGVBQXlCLEVBQytDO0lBQzNFLE1BQU1DLE1BQTBFLEdBQUcsRUFBRTtJQUVyRixLQUFLLE1BQU1DLGNBQWMsSUFBSUYsZUFBZSxFQUFFO01BQzFDLEtBQUssTUFBTUcsWUFBWSxJQUFJLE1BQU0sSUFBQUMsa0JBQVMsRUFDckMseUJBQXdCQywwQ0FBb0IsQ0FBQ0MsZ0JBQWlCLEVBQUMsRUFDaEU7UUFBRUMsR0FBRyxFQUFFTDtNQUFlLENBQzFCLENBQUMsRUFBRTtRQUNDLElBQUksTUFBTSxJQUFBTSxtQkFBVSxFQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ1IsY0FBYyxFQUFFQyxZQUFZLENBQUMsQ0FBQyxFQUFFO1VBQzNELE1BQU1RLFFBQVEsR0FBR0YsYUFBSSxDQUFDRyxPQUFPLENBQUNULFlBQVksQ0FBQztVQUMzQyxNQUFNVSxHQUFHLEdBQUcsSUFBQUMscUNBQXNCLEVBQUNILFFBQVEsQ0FBQztVQUM1Q1YsTUFBTSxDQUFDYyxJQUFJLENBQUM7WUFDUkYsR0FBRyxFQUFFQSxHQUFHO1lBQ1JGLFFBQVEsRUFBRUYsYUFBSSxDQUFDQyxJQUFJLENBQUNSLGNBQWMsRUFBRVMsUUFBUSxDQUFDO1lBQzdDSyxnQkFBZ0IsRUFBRUw7VUFDdEIsQ0FBQyxDQUFDO1FBQ047TUFDSjtNQUNBLEtBQUssTUFBTVIsWUFBWSxJQUFJLE1BQU0sSUFBQUMsa0JBQVMsRUFDckMsR0FBRUMsMENBQW9CLENBQUNZLFdBQVksZUFBY1osMENBQW9CLENBQUNDLGdCQUFpQixFQUFDLEVBQ3pGO1FBQ0lDLEdBQUcsRUFBRUw7TUFDVCxDQUNKLENBQUMsRUFBRTtRQUNDLElBQUksTUFBTSxJQUFBTSxtQkFBVSxFQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ1IsY0FBYyxFQUFFQyxZQUFZLENBQUMsQ0FBQyxFQUFFO1VBQzNELE1BQU1RLFFBQVEsR0FBR0YsYUFBSSxDQUFDRyxPQUFPLENBQUNULFlBQVksQ0FBQztVQUMzQyxNQUFNVSxHQUFHLEdBQUcsSUFBQUMscUNBQXNCLEVBQUNILFFBQVEsQ0FBQztVQUM1Q1YsTUFBTSxDQUFDYyxJQUFJLENBQUM7WUFDUkYsR0FBRyxFQUFFQSxHQUFHO1lBQ1JGLFFBQVEsRUFBRUYsYUFBSSxDQUFDQyxJQUFJLENBQUNSLGNBQWMsRUFBRVMsUUFBUSxDQUFDO1lBQzdDSyxnQkFBZ0IsRUFBRUw7VUFDdEIsQ0FBQyxDQUFDO1FBQ047TUFDSjtNQUNBLEtBQUssTUFBTVIsWUFBWSxJQUFJLE1BQU0sSUFBQUMsa0JBQVMsRUFDckMsNkJBQTRCQywwQ0FBb0IsQ0FBQ0MsZ0JBQWlCLEVBQUMsRUFDcEU7UUFDSUMsR0FBRyxFQUFFTDtNQUNULENBQ0osQ0FBQyxFQUFFO1FBQ0MsSUFBSSxNQUFNLElBQUFNLG1CQUFVLEVBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDUixjQUFjLEVBQUVDLFlBQVksQ0FBQyxDQUFDLEVBQUU7VUFDM0QsTUFBTVEsUUFBUSxHQUFHRixhQUFJLENBQUNHLE9BQU8sQ0FBQ1QsWUFBWSxDQUFDO1VBQzNDLE1BQU1VLEdBQUcsR0FBRyxJQUFBQyxxQ0FBc0IsRUFBQ0gsUUFBUSxDQUFDO1VBQzVDVixNQUFNLENBQUNjLElBQUksQ0FBQztZQUNSRixHQUFHLEVBQUVBLEdBQUc7WUFDUkYsUUFBUSxFQUFFRixhQUFJLENBQUNDLElBQUksQ0FBQ1IsY0FBYyxFQUFFUyxRQUFRLENBQUM7WUFDN0NLLGdCQUFnQixFQUFFTDtVQUN0QixDQUFDLENBQUM7UUFDTjtNQUNKO01BQ0EsS0FBSyxNQUFNUixZQUFZLElBQUksTUFBTSxJQUFBQyxrQkFBUyxFQUNyQyxnQ0FBK0JDLDBDQUFvQixDQUFDQyxnQkFBaUIsRUFBQyxFQUN2RTtRQUNJQyxHQUFHLEVBQUVMO01BQ1QsQ0FDSixDQUFDLEVBQUU7UUFDQyxJQUFJLE1BQU0sSUFBQU0sbUJBQVUsRUFBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUNSLGNBQWMsRUFBRUMsWUFBWSxDQUFDLENBQUMsRUFBRTtVQUMzRCxNQUFNUSxRQUFRLEdBQUdGLGFBQUksQ0FBQ0csT0FBTyxDQUFDVCxZQUFZLENBQUM7VUFDM0MsTUFBTVUsR0FBRyxHQUFHLElBQUFDLHFDQUFzQixFQUFDSCxRQUFRLENBQUM7VUFDNUNWLE1BQU0sQ0FBQ2MsSUFBSSxDQUFDO1lBQ1JGLEdBQUcsRUFBRUEsR0FBRztZQUNSRixRQUFRLEVBQUVGLGFBQUksQ0FBQ0MsSUFBSSxDQUFDUixjQUFjLEVBQUVTLFFBQVEsQ0FBQztZQUM3Q0ssZ0JBQWdCLEVBQUVMO1VBQ3RCLENBQUMsQ0FBQztRQUNOO01BQ0o7TUFDQSxLQUFLLE1BQU1SLFlBQVksSUFBSSxNQUFNLElBQUFDLGtCQUFTLEVBQ3JDLGNBQWFDLDBDQUFvQixDQUFDYSxxQkFBc0IsSUFBR2IsMENBQW9CLENBQUNDLGdCQUFpQixFQUFDLEVBQ25HO1FBQUVDLEdBQUcsRUFBRUw7TUFBZSxDQUMxQixDQUFDLEVBQUU7UUFDQyxJQUFJLE1BQU0sSUFBQU0sbUJBQVUsRUFBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUNSLGNBQWMsRUFBRUMsWUFBWSxDQUFDLENBQUMsRUFBRTtVQUMzRCxNQUFNUSxRQUFRLEdBQUdGLGFBQUksQ0FBQ0csT0FBTyxDQUFDVCxZQUFZLENBQUM7VUFDM0MsTUFBTVUsR0FBRyxHQUFHLElBQUFDLHFDQUFzQixFQUFDSCxRQUFRLENBQUM7VUFDNUNWLE1BQU0sQ0FBQ2MsSUFBSSxDQUFDO1lBQ1JGLEdBQUcsRUFBRUEsR0FBRztZQUNSRixRQUFRLEVBQUVGLGFBQUksQ0FBQ0MsSUFBSSxDQUFDUixjQUFjLEVBQUVTLFFBQVEsQ0FBQztZQUM3Q0ssZ0JBQWdCLEVBQUVMO1VBQ3RCLENBQUMsQ0FBQztRQUNOO01BQ0o7SUFDSjtJQUNBLE9BQU9WLE1BQU07RUFDakI7RUFFQSxhQUFvQmtCLHNDQUFzQ0EsQ0FDdERDLFNBQW1CLEVBQ25CQyxhQUFxQixFQUNKO0lBQ2pCLEtBQUssTUFBTUMsUUFBUSxJQUFJRixTQUFTLEVBQUU7TUFDOUIsTUFBTUcsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQ0YsUUFBUSxDQUFDLEVBQUVELGFBQWEsQ0FBQztNQUMxRSxJQUFJRSxZQUFZLENBQUNFLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDM0IsTUFBTSxJQUFJQyxLQUFLLENBQUUsd0JBQXVCSixRQUFTLGNBQWEsQ0FBQztNQUNuRTtJQUNKO0lBQ0EsT0FBT0YsU0FBUztFQUNwQjtFQUVBLGFBQW9CSSxlQUFlQSxDQUFDSixTQUFtQixFQUFFQyxhQUFxQixFQUErQjtJQUN6RyxNQUFNcEIsTUFBMkIsR0FBRyxJQUFJMEIsR0FBRyxDQUFDLENBQUM7SUFFN0MsS0FBSyxNQUFNO01BQUVkLEdBQUc7TUFBRUY7SUFBUyxDQUFDLElBQUksTUFBTWIsU0FBUyxDQUFDQywwQkFBMEIsQ0FDdEVVLGFBQUksQ0FBQ21CLFNBQVMsQ0FBQ25CLGFBQUksQ0FBQ0MsSUFBSSxDQUFDVyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQ2pELENBQUMsRUFBRTtNQUNDLEtBQUssTUFBTUMsUUFBUSxJQUFJRixTQUFTLEVBQUU7UUFDOUIsSUFBSSxNQUFNdEIsU0FBUyxDQUFDK0IsaUJBQWlCLENBQUNQLFFBQVEsRUFBRVQsR0FBRyxFQUFFRixRQUFRLENBQUMsRUFBRTtVQUM1RFYsTUFBTSxDQUFDNkIsR0FBRyxDQUFDakIsR0FBRyxFQUFFRixRQUFRLENBQUM7UUFDN0I7TUFDSjtJQUNKO0lBRUEsT0FBTyxDQUFDLEdBQUdWLE1BQU0sQ0FBQzhCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDLENBQUMsQ0FBQ25CLEdBQUcsRUFBRUYsUUFBUSxDQUFDLE1BQU07TUFBRUUsR0FBRyxFQUFFQSxHQUFHO01BQUVGLFFBQVEsRUFBRUE7SUFBUyxDQUFDLENBQUMsQ0FBQztFQUM3RjtFQUVBLGFBQW9Cc0IsaUJBQWlCQSxDQUFDQyx1QkFBaUMsRUFBRWIsYUFBcUIsRUFBcUI7SUFDL0csTUFBTWMsT0FBTyxHQUFHLE1BQU1DLE9BQU8sQ0FBQ0MsR0FBRyxDQUM3QkgsdUJBQXVCLENBQUNGLEdBQUcsQ0FBQ00sQ0FBQyxJQUFJLElBQUksQ0FBQ0MsNkJBQTZCLENBQUNELENBQUMsRUFBRWpCLGFBQWEsQ0FBQyxDQUN6RixDQUFDO0lBQ0QsT0FBT2MsT0FBTyxDQUFDSyxJQUFJLENBQUMsQ0FBQztFQUN6QjtFQUVBLGFBQXFCWCxpQkFBaUJBLENBQUNQLFFBQWdCLEVBQUVULEdBQVcsRUFBRUYsUUFBZ0IsRUFBRTtJQUNwRixNQUFNOEIsU0FBUyxHQUFHLElBQUlDLE1BQU0sQ0FDeEIsR0FBRyxHQUNDcEIsUUFBUSxDQUNIcUIsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUM3QkEsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUM3QkEsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FDdkJBLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQzNCLEdBQ1IsQ0FBQztJQUNELElBQUlGLFNBQVMsQ0FBQ0csSUFBSSxDQUFDL0IsR0FBRyxDQUFDLEVBQUU7TUFDckIsSUFBSVMsUUFBUSxDQUFDdUIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDckMsSUFBSSxFQUFFLE1BQU0sSUFBQXJDLG1CQUFVLEVBQUNDLGFBQUksQ0FBQ0MsSUFBSSxDQUFDQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1VBQ25ELE9BQU8sS0FBSztRQUNoQjtNQUNKO01BQ0EsSUFBSVcsUUFBUSxDQUFDdUIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDckMsTUFBTTFDLFlBQVksR0FBR00sYUFBSSxDQUFDQyxJQUFJLENBQUNDLFFBQVEsRUFBRU4sMENBQW9CLENBQUNDLGdCQUFnQixDQUFDO1FBQy9FLE1BQU13QyxVQUFVLEdBQUcsTUFBTSxJQUFBQywrQkFBYyxFQUFDNUMsWUFBWSxFQUFFLElBQUk2Qyx3QkFBVSxDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJRixVQUFVLENBQUNHLEtBQUssS0FBSyxJQUFJLEVBQUU7VUFDM0IsT0FBTyxLQUFLO1FBQ2hCO01BQ0o7TUFDQSxPQUFPLElBQUk7SUFDZjtJQUNBLE9BQU8sS0FBSztFQUNoQjtFQUVBLGFBQXFCViw2QkFBNkJBLENBQUNqQixRQUFnQixFQUFFRCxhQUFxQixFQUFxQjtJQUMzRyxJQUFJQyxRQUFRLENBQUM0QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtNQUNyQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMxQixlQUFlLENBQUMsQ0FBQ0YsUUFBUSxDQUFDLEVBQUVELGFBQWEsQ0FBQyxFQUFFVyxHQUFHLENBQUNNLENBQUMsSUFBSUEsQ0FBQyxDQUFDekIsR0FBRyxDQUFDO0lBQ2xGO0lBQ0EsSUFBSVMsUUFBUSxDQUFDNEIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7TUFDckMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDMUIsZUFBZSxDQUFDLENBQUNGLFFBQVEsQ0FBQyxFQUFFRCxhQUFhLENBQUMsRUFBRVcsR0FBRyxDQUFDTSxDQUFDLElBQUlBLENBQUMsQ0FBQ3pCLEdBQUcsQ0FBQztJQUNsRjtJQUNBLE9BQU8sQ0FBQ1MsUUFBUSxDQUFDO0VBQ3JCO0FBQ0o7QUFBQzZCLE9BQUEsQ0FBQXJELFNBQUEsR0FBQUEsU0FBQSJ9
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJfRnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJGb3JtR2xvYnMiLCJlbnVtZXJhdGVGb3Jtc0luUmVwb3NpdG9yeSIsInJlcG9zaXRvcnlSb290cyIsInJlc3VsdCIsInJlcG9zaXRvcnlSb290IiwiZm9ybUpzb25QYXRoIiwiZ2xvYkFzeW5jIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwiY3dkIiwiZm9ybVBhdGgiLCJwYXRoIiwiZGlybmFtZSIsImdmdiIsImV4dHJhY3RHZnZGcm9tRm9ybVBhdGgiLCJwdXNoIiwiam9pbiIsImZvcm1SZWxhdGl2ZVBhdGgiLCJUZXN0RmFybURpciIsIkNhbmR5U3ViZGlyZWN0b3J5TmFtZSIsImVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtIiwiZm9ybUdsb2JzIiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9iIiwicmVzb2x2ZWRHZnZzIiwicmVzb2x2ZUdmdkdsb2JzIiwibGVuZ3RoIiwiRXJyb3IiLCJNYXAiLCJub3JtYWxpemUiLCJpc0Zvcm1NYXRjaFRvR2xvYiIsInNldCIsImVudHJpZXMiLCJtYXAiLCJyZXNvbHZlU3BlY2lmaWVycyIsImZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJ4IiwicmVzb2x2ZU9ubHlGb3JtR2xvYlNwZWNpZmllcnMiLCJmbGF0IiwiZ2Z2UmVnZXhwIiwiUmVnRXhwIiwicmVwbGFjZSIsInRlc3QiLCJpbmNsdWRlcyIsInBhdGhFeGlzdHMiLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJOdWxsTG9nZ2VyIiwiYnVpbGQiLCJlbmRzV2l0aCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQ29tbW9ucy9Gb3JtR2xvYnNVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4vRnNVdGlsc1wiO1xuaW1wb3J0IHsgTnVsbExvZ2dlciB9IGZyb20gXCIuL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBGb3JtTG9jYXRpb25JbmZvIH0gZnJvbSBcIi4vRm9ybUxvY2F0aW9uSW5mb1wiO1xuXG5leHBvcnQgY2xhc3MgRm9ybUdsb2JzIHtcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAuLi5yZXBvc2l0b3J5Um9vdHM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJlcG9zaXRvcnlSb290IG9mIHJlcG9zaXRvcnlSb290cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtSnNvblBhdGggb2YgYXdhaXQgZ2xvYkFzeW5jKGBjYW5keS5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsIHtcbiAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCR7V2VsbEtub3duRGlyZWN0b3JpZXMuVGVzdEZhcm1EaXJ9L2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LnJwbi5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LmRpYWRvYy5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWV9YCxcbiAgICAgICAgICAgICAgICB7IGN3ZDogcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBcImZvcm1zXCIpIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIFwiZm9ybXNcIiwgZm9ybVBhdGgpLFxuICAgICAgICAgICAgICAgICAgICBmb3JtUmVsYXRpdmVQYXRoOiBmb3JtUGF0aCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0oXG4gICAgICAgIGZvcm1HbG9iczogc3RyaW5nW10sXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgZm9yIChjb25zdCBmb3JtR2xvYiBvZiBmb3JtR2xvYnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkR2Z2cyA9IGF3YWl0IHRoaXMucmVzb2x2ZUdmdkdsb2JzKFtmb3JtR2xvYl0sIGZhcm1EaXJlY3RvcnkpO1xuICAgICAgICAgICAgaWYgKHJlc29sdmVkR2Z2cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYNCk0L7RgNC8INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjRhSAke2Zvcm1HbG9ifSDQvdC1INC90LDQudC00LXQvdC+LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtR2xvYnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyByZXNvbHZlR2Z2R2xvYnMoZm9ybUdsb2JzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxGb3JtTG9jYXRpb25JbmZvW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgYXdhaXQgRm9ybUdsb2JzLmVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAgICAgcGF0aC5ub3JtYWxpemUocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIikpXG4gICAgICAgICkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm9ybUdsb2Igb2YgZm9ybUdsb2JzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF3YWl0IEZvcm1HbG9icy5pc0Zvcm1NYXRjaFRvR2xvYihmb3JtR2xvYiwgZ2Z2LCBmb3JtUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChnZnYsIGZvcm1QYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWy4uLnJlc3VsdC5lbnRyaWVzKCldLm1hcCgoW2dmdiwgZm9ybVBhdGhdKSA9PiAoeyBnZnY6IGdmdiwgZm9ybVBhdGg6IGZvcm1QYXRoIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlc29sdmVTcGVjaWZpZXJzKGZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBmb3JtR2xvYnNXaXRoU3BlY2lmaWVycy5tYXAoeCA9PiB0aGlzLnJlc29sdmVPbmx5Rm9ybUdsb2JTcGVjaWZpZXJzKHgsIGZhcm1EaXJlY3RvcnkpKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5mbGF0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgaXNGb3JtTWF0Y2hUb0dsb2IoZm9ybUdsb2I6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGZvcm1QYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZ2Z2UmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgIFwiXlwiICtcbiAgICAgICAgICAgICAgICBmb3JtR2xvYlxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIjp3aXRoLXVpLXRlc3RzXCIsIFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiOndpdGgtY2ktYnVpbGRcIiwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKi9naSwgXCJcXFxcZCpcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcPy9naSwgXCJcXFxcZFwiKSArXG4gICAgICAgICAgICAgICAgXCIkXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGdmdlJlZ2V4cC50ZXN0KGdmdikpIHtcbiAgICAgICAgICAgIGlmIChmb3JtR2xvYi5pbmNsdWRlcyhcIjp3aXRoLXVpLXRlc3RzXCIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybVBhdGgsIFwidGVzdHNcIikpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZvcm1HbG9iLmluY2x1ZGVzKFwiOndpdGgtY2ktYnVpbGRcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIG5ldyBOdWxsTG9nZ2VyKCkpO1xuICAgICAgICAgICAgICAgIGlmIChmb3JtQ29uZmlnLmJ1aWxkICE9PSBcImNpXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyByZXNvbHZlT25seUZvcm1HbG9iU3BlY2lmaWVycyhmb3JtR2xvYjogc3RyaW5nLCBmYXJtRGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGlmIChmb3JtR2xvYi5lbmRzV2l0aChcIjp3aXRoLXVpLXRlc3RzXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMucmVzb2x2ZUdmdkdsb2JzKFtmb3JtR2xvYl0sIGZhcm1EaXJlY3RvcnkpKS5tYXAoeCA9PiB4Lmdmdik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1HbG9iLmVuZHNXaXRoKFwiOndpdGgtY2ktYnVpbGRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5yZXNvbHZlR2Z2R2xvYnMoW2Zvcm1HbG9iXSwgZmFybURpcmVjdG9yeSkpLm1hcCh4ID0+IHguZ2Z2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2Zvcm1HbG9iXTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFHQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUdPLE1BQU1PLFNBQVMsQ0FBQztFQUNuQixhQUFvQkMsMEJBQTBCQSxDQUMxQyxHQUFHQyxlQUF5QixFQUMrQztJQUMz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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kontur.candy/tools",
3
- "version": "2.176.0",
3
+ "version": "2.176.1",
4
4
  "description": "",
5
5
  "files": [
6
6
  "candy.js",