oxygen-cli 1.32.1 → 1.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.loadModuleFromClass = loadModuleFromClass;
7
7
  exports.loadModulesFromFile = loadModulesFromFile;
8
+ exports.newFileAttachment = newFileAttachment;
8
9
 
9
10
  require("source-map-support/register");
10
11
 
@@ -14,6 +15,10 @@ var _path = _interopRequireDefault(require("path"));
14
15
 
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17
 
18
+ const {
19
+ v1
20
+ } = require('uuid');
21
+
17
22
  function loadModuleFromClass(moduleName, moduleClass, moduleLogger, oxModulesDirPath, args) {
18
23
  if (moduleClass.default) {
19
24
  moduleClass = moduleClass.default;
@@ -46,6 +51,17 @@ function loadModulesFromFile(moduleName, moduleFileName, moduleLogger, oxModules
46
51
  return module;
47
52
  }
48
53
 
54
+ function newFileAttachment(filePath) {
55
+ const fileName = _path.default.basename(filePath);
56
+
57
+ return {
58
+ id: v1(),
59
+ fileName,
60
+ filePath,
61
+ type: 'other'
62
+ };
63
+ }
64
+
49
65
  function applyThisInHelpers(module) {
50
66
  if (module.helpers || module._this && module._this.helpers) {
51
67
  const helpers = module.helpers || module._this.helpers;
@@ -71,4 +87,4 @@ function addCommandsToPrototype(cmdDirPath, moduleName, moduleClass) {
71
87
  }
72
88
  }
73
89
  }
74
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3V0aWxzLmpzIl0sIm5hbWVzIjpbImxvYWRNb2R1bGVGcm9tQ2xhc3MiLCJtb2R1bGVOYW1lIiwibW9kdWxlQ2xhc3MiLCJtb2R1bGVMb2dnZXIiLCJveE1vZHVsZXNEaXJQYXRoIiwiYXJncyIsImRlZmF1bHQiLCJjbWREaXJQYXRoIiwicGF0aCIsImpvaW4iLCJhZGRDb21tYW5kc1RvUHJvdG90eXBlIiwibW9kdWxlIiwib3B0cyIsImN0eCIsInJlc3VsdFN0b3JlIiwibW9kdWxlcyIsInNlcnZpY2VzIiwibmFtZSIsImFwcGx5VGhpc0luSGVscGVycyIsImxvYWRNb2R1bGVzRnJvbUZpbGUiLCJtb2R1bGVGaWxlTmFtZSIsInJlcXVpcmUiLCJoZWxwZXJzIiwiX3RoaXMiLCJmdW5jTmFtZSIsImJpbmQiLCJmcyIsImV4aXN0c1N5bmMiLCJjb21tYW5kcyIsImNtZE5hbWUiLCJjbWRGdW5jIiwiT2JqZWN0IiwiZW50cmllcyIsInByb3RvdHlwZSIsImUiLCJFcnJvciIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUVPLFNBQVNBLG1CQUFULENBQTZCQyxVQUE3QixFQUF5Q0MsV0FBekMsRUFBc0RDLFlBQXRELEVBQW9FQyxnQkFBcEUsRUFBc0ZDLElBQXRGLEVBQTRGO0FBQy9GLE1BQUlILFdBQVcsQ0FBQ0ksT0FBaEIsRUFBeUI7QUFDckJKLElBQUFBLFdBQVcsR0FBR0EsV0FBVyxDQUFDSSxPQUExQjtBQUNIOztBQUVELFFBQU1DLFVBQVUsR0FBR0gsZ0JBQWdCLEdBQUdJLGNBQUtDLElBQUwsQ0FBVUwsZ0JBQVYsRUFBNEIsWUFBWUgsVUFBeEMsRUFBb0QsVUFBcEQsQ0FBSCxHQUFxRSxJQUF4RztBQUNBUyxFQUFBQSxzQkFBc0IsQ0FBQ0gsVUFBRCxFQUFhTixVQUFiLEVBQXlCQyxXQUF6QixDQUF0QjtBQUVBLFFBQU1TLE1BQU0sR0FBRyxJQUFJVCxXQUFKLENBQWdCRyxJQUFJLENBQUNPLElBQXJCLEVBQTJCUCxJQUFJLENBQUNRLEdBQWhDLEVBQXFDUixJQUFJLENBQUNTLFdBQTFDLEVBQXVEWCxZQUF2RCxFQUFxRUUsSUFBSSxDQUFDVSxPQUExRSxFQUFtRlYsSUFBSSxDQUFDVyxRQUF4RixDQUFmOztBQUNBLE1BQUksQ0FBQ0wsTUFBTSxDQUFDTSxJQUFaLEVBQWtCO0FBQ2ROLElBQUFBLE1BQU0sQ0FBQ00sSUFBUCxHQUFjaEIsVUFBZDtBQUNIOztBQUVEaUIsRUFBQUEsa0JBQWtCLENBQUNQLE1BQUQsQ0FBbEI7QUFDQSxTQUFPQSxNQUFQO0FBQ0g7O0FBRU0sU0FBU1EsbUJBQVQsQ0FBNkJsQixVQUE3QixFQUF5Q21CLGNBQXpDLEVBQXlEakIsWUFBekQsRUFBdUVDLGdCQUF2RSxFQUF5RkMsSUFBekYsRUFBK0Y7QUFDbEcsUUFBTUgsV0FBVyxHQUFHbUIsT0FBTyxDQUFDYixjQUFLQyxJQUFMLENBQVVMLGdCQUFWLEVBQTRCZ0IsY0FBNUIsQ0FBRCxDQUEzQjs7QUFFQSxRQUFNYixVQUFVLEdBQUdILGdCQUFnQixHQUFHSSxjQUFLQyxJQUFMLENBQVVMLGdCQUFWLEVBQTRCLFlBQVlILFVBQXhDLEVBQW9ELFVBQXBELENBQUgsR0FBcUUsSUFBeEc7QUFDQVMsRUFBQUEsc0JBQXNCLENBQUNILFVBQUQsRUFBYU4sVUFBYixFQUF5QkMsV0FBekIsQ0FBdEI7QUFFQSxRQUFNUyxNQUFNLEdBQUcsSUFBSVQsV0FBSixDQUFnQkcsSUFBSSxDQUFDTyxJQUFyQixFQUEyQlAsSUFBSSxDQUFDUSxHQUFoQyxFQUFxQ1IsSUFBSSxDQUFDUyxXQUExQyxFQUF1RFgsWUFBdkQsRUFBcUVFLElBQUksQ0FBQ1UsT0FBMUUsRUFBbUZWLElBQUksQ0FBQ1csUUFBeEYsQ0FBZjs7QUFDQSxNQUFJLENBQUNMLE1BQU0sQ0FBQ00sSUFBWixFQUFrQjtBQUNkTixJQUFBQSxNQUFNLENBQUNNLElBQVAsR0FBY2hCLFVBQWQ7QUFDSDs7QUFFRGlCLEVBQUFBLGtCQUFrQixDQUFDUCxNQUFELENBQWxCO0FBQ0EsU0FBT0EsTUFBUDtBQUNIOztBQUVELFNBQVNPLGtCQUFULENBQTRCUCxNQUE1QixFQUFvQztBQUNoQyxNQUFJQSxNQUFNLENBQUNXLE9BQVAsSUFBbUJYLE1BQU0sQ0FBQ1ksS0FBUCxJQUFnQlosTUFBTSxDQUFDWSxLQUFQLENBQWFELE9BQXBELEVBQThEO0FBQzFELFVBQU1BLE9BQU8sR0FBR1gsTUFBTSxDQUFDVyxPQUFQLElBQWtCWCxNQUFNLENBQUNZLEtBQVAsQ0FBYUQsT0FBL0M7O0FBQ0EsU0FBSyxJQUFJRSxRQUFULElBQXFCRixPQUFyQixFQUE4QjtBQUMxQixVQUFJLE9BQU9BLE9BQU8sQ0FBQ0UsUUFBRCxDQUFkLEtBQTZCLFVBQWpDLEVBQTZDO0FBQ3pDRixRQUFBQSxPQUFPLENBQUNFLFFBQUQsQ0FBUCxHQUFvQkYsT0FBTyxDQUFDRSxRQUFELENBQVAsQ0FBa0JDLElBQWxCLENBQXVCZCxNQUFNLENBQUNZLEtBQVAsSUFBZ0JaLE1BQXZDLENBQXBCO0FBQ0g7QUFDSjtBQUNKO0FBQ0o7O0FBRUQsU0FBU0Qsc0JBQVQsQ0FBZ0NILFVBQWhDLEVBQTRDTixVQUE1QyxFQUF3REMsV0FBeEQsRUFBcUU7QUFDakUsTUFBSUssVUFBVSxJQUFJbUIsWUFBR0MsVUFBSCxDQUFjcEIsVUFBZCxDQUFsQixFQUE2QztBQUN6QyxRQUFJO0FBQ0EsWUFBTXFCLFFBQVEsR0FBR1AsT0FBTyxDQUFDZCxVQUFELENBQXhCOztBQUNBLFdBQUssTUFBTSxDQUFDc0IsT0FBRCxFQUFVQyxPQUFWLENBQVgsSUFBaUNDLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlSixRQUFmLENBQWpDLEVBQTJEO0FBQ3ZEMUIsUUFBQUEsV0FBVyxDQUFDK0IsU0FBWixDQUFzQkosT0FBdEIsSUFBaUNDLE9BQWpDO0FBQ0g7QUFDSixLQUxELENBS0UsT0FBT0ksQ0FBUCxFQUFVO0FBQ1IsWUFBTSxJQUFJQyxLQUFKLENBQVcsNkNBQTRDbEMsVUFBVyxLQUF4RCxHQUErRGlDLENBQUMsQ0FBQ0UsT0FBM0UsQ0FBTjtBQUNIO0FBQ0o7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRNb2R1bGVGcm9tQ2xhc3MobW9kdWxlTmFtZSwgbW9kdWxlQ2xhc3MsIG1vZHVsZUxvZ2dlciwgb3hNb2R1bGVzRGlyUGF0aCwgYXJncykge1xyXG4gICAgaWYgKG1vZHVsZUNsYXNzLmRlZmF1bHQpIHtcclxuICAgICAgICBtb2R1bGVDbGFzcyA9IG1vZHVsZUNsYXNzLmRlZmF1bHQ7XHJcbiAgICB9XHJcbiAgICAvLyBjaGVjayBpZiBtb2R1bGUgY29udGFpbnMgZXh0ZXJuYWwgXCJjb21tYW5kc1wiIGZvbGRlciBhbmQgaWYgc28gbG9hZCBhbGwgdGhlIGNvbW1hbmRzXHJcbiAgICBjb25zdCBjbWREaXJQYXRoID0gb3hNb2R1bGVzRGlyUGF0aCA/IHBhdGguam9pbihveE1vZHVsZXNEaXJQYXRoLCAnbW9kdWxlLScgKyBtb2R1bGVOYW1lLCAnY29tbWFuZHMnKSA6IG51bGw7XHJcbiAgICBhZGRDb21tYW5kc1RvUHJvdG90eXBlKGNtZERpclBhdGgsIG1vZHVsZU5hbWUsIG1vZHVsZUNsYXNzKTtcclxuICAgIC8vIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kdWxlIFxyXG4gICAgY29uc3QgbW9kdWxlID0gbmV3IG1vZHVsZUNsYXNzKGFyZ3Mub3B0cywgYXJncy5jdHgsIGFyZ3MucmVzdWx0U3RvcmUsIG1vZHVsZUxvZ2dlciwgYXJncy5tb2R1bGVzLCBhcmdzLnNlcnZpY2VzKTtcclxuICAgIGlmICghbW9kdWxlLm5hbWUpIHtcclxuICAgICAgICBtb2R1bGUubmFtZSA9IG1vZHVsZU5hbWU7XHJcbiAgICB9XHJcbiAgICAvLyBhcHBseSB0aGlzIGZvciBmdW5jdGlvbnMgaW5zaWRlICdoZWxwZXJzJyBtZXRob2RzIGNvbGxlY3Rpb24gaWYgZm91bmRcclxuICAgIGFwcGx5VGhpc0luSGVscGVycyhtb2R1bGUpO1xyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRNb2R1bGVzRnJvbUZpbGUobW9kdWxlTmFtZSwgbW9kdWxlRmlsZU5hbWUsIG1vZHVsZUxvZ2dlciwgb3hNb2R1bGVzRGlyUGF0aCwgYXJncykge1xyXG4gICAgY29uc3QgbW9kdWxlQ2xhc3MgPSByZXF1aXJlKHBhdGguam9pbihveE1vZHVsZXNEaXJQYXRoLCBtb2R1bGVGaWxlTmFtZSkpO1xyXG4gICAgLy8gY2hlY2sgaWYgbW9kdWxlIGNvbnRhaW5zIGV4dGVybmFsIFwiY29tbWFuZHNcIiBmb2xkZXIgYW5kIGlmIHNvIGxvYWQgYWxsIHRoZSBjb21tYW5kc1xyXG4gICAgY29uc3QgY21kRGlyUGF0aCA9IG94TW9kdWxlc0RpclBhdGggPyBwYXRoLmpvaW4ob3hNb2R1bGVzRGlyUGF0aCwgJ21vZHVsZS0nICsgbW9kdWxlTmFtZSwgJ2NvbW1hbmRzJykgOiBudWxsO1xyXG4gICAgYWRkQ29tbWFuZHNUb1Byb3RvdHlwZShjbWREaXJQYXRoLCBtb2R1bGVOYW1lLCBtb2R1bGVDbGFzcyk7XHJcbiAgICAvLyBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIG1vZHVsZSBcclxuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBtb2R1bGVDbGFzcyhhcmdzLm9wdHMsIGFyZ3MuY3R4LCBhcmdzLnJlc3VsdFN0b3JlLCBtb2R1bGVMb2dnZXIsIGFyZ3MubW9kdWxlcywgYXJncy5zZXJ2aWNlcyk7XHJcbiAgICBpZiAoIW1vZHVsZS5uYW1lKSB7XHJcbiAgICAgICAgbW9kdWxlLm5hbWUgPSBtb2R1bGVOYW1lO1xyXG4gICAgfVxyXG4gICAgLy8gYXBwbHkgdGhpcyBmb3IgZnVuY3Rpb25zIGluc2lkZSAnaGVscGVycycgbWV0aG9kcyBjb2xsZWN0aW9uIGlmIGZvdW5kXHJcbiAgICBhcHBseVRoaXNJbkhlbHBlcnMobW9kdWxlKTtcclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwcGx5VGhpc0luSGVscGVycyhtb2R1bGUpIHtcclxuICAgIGlmIChtb2R1bGUuaGVscGVycyB8fCAobW9kdWxlLl90aGlzICYmIG1vZHVsZS5fdGhpcy5oZWxwZXJzKSkge1xyXG4gICAgICAgIGNvbnN0IGhlbHBlcnMgPSBtb2R1bGUuaGVscGVycyB8fCBtb2R1bGUuX3RoaXMuaGVscGVycztcclxuICAgICAgICBmb3IgKHZhciBmdW5jTmFtZSBpbiBoZWxwZXJzKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaGVscGVyc1tmdW5jTmFtZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIGhlbHBlcnNbZnVuY05hbWVdID0gaGVscGVyc1tmdW5jTmFtZV0uYmluZChtb2R1bGUuX3RoaXMgfHwgbW9kdWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gYWRkQ29tbWFuZHNUb1Byb3RvdHlwZShjbWREaXJQYXRoLCBtb2R1bGVOYW1lLCBtb2R1bGVDbGFzcykge1xyXG4gICAgaWYgKGNtZERpclBhdGggJiYgZnMuZXhpc3RzU3luYyhjbWREaXJQYXRoKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbW1hbmRzID0gcmVxdWlyZShjbWREaXJQYXRoKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBbY21kTmFtZSwgY21kRnVuY10gb2YgT2JqZWN0LmVudHJpZXMoY29tbWFuZHMpKSB7XHJcbiAgICAgICAgICAgICAgICBtb2R1bGVDbGFzcy5wcm90b3R5cGVbY21kTmFtZV0gPSBjbWRGdW5jO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBsb2FkIGV4dGVybmFsIGNvbW1hbmRzIGZvciBtb2R1bGUgXCIke21vZHVsZU5hbWV9XCI6IGAgKyBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3V0aWxzLmpzIl0sIm5hbWVzIjpbInYxIiwicmVxdWlyZSIsImxvYWRNb2R1bGVGcm9tQ2xhc3MiLCJtb2R1bGVOYW1lIiwibW9kdWxlQ2xhc3MiLCJtb2R1bGVMb2dnZXIiLCJveE1vZHVsZXNEaXJQYXRoIiwiYXJncyIsImRlZmF1bHQiLCJjbWREaXJQYXRoIiwicGF0aCIsImpvaW4iLCJhZGRDb21tYW5kc1RvUHJvdG90eXBlIiwibW9kdWxlIiwib3B0cyIsImN0eCIsInJlc3VsdFN0b3JlIiwibW9kdWxlcyIsInNlcnZpY2VzIiwibmFtZSIsImFwcGx5VGhpc0luSGVscGVycyIsImxvYWRNb2R1bGVzRnJvbUZpbGUiLCJtb2R1bGVGaWxlTmFtZSIsIm5ld0ZpbGVBdHRhY2htZW50IiwiZmlsZVBhdGgiLCJmaWxlTmFtZSIsImJhc2VuYW1lIiwiaWQiLCJ0eXBlIiwiaGVscGVycyIsIl90aGlzIiwiZnVuY05hbWUiLCJiaW5kIiwiZnMiLCJleGlzdHNTeW5jIiwiY29tbWFuZHMiLCJjbWROYW1lIiwiY21kRnVuYyIsIk9iamVjdCIsImVudHJpZXMiLCJwcm90b3R5cGUiLCJlIiwiRXJyb3IiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOzs7O0FBQ0EsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVNDLE9BQU8sQ0FBQyxNQUFELENBQXRCOztBQUVPLFNBQVNDLG1CQUFULENBQTZCQyxVQUE3QixFQUF5Q0MsV0FBekMsRUFBc0RDLFlBQXRELEVBQW9FQyxnQkFBcEUsRUFBc0ZDLElBQXRGLEVBQTRGO0FBQy9GLE1BQUlILFdBQVcsQ0FBQ0ksT0FBaEIsRUFBeUI7QUFDckJKLElBQUFBLFdBQVcsR0FBR0EsV0FBVyxDQUFDSSxPQUExQjtBQUNIOztBQUVELFFBQU1DLFVBQVUsR0FBR0gsZ0JBQWdCLEdBQUdJLGNBQUtDLElBQUwsQ0FBVUwsZ0JBQVYsRUFBNEIsWUFBWUgsVUFBeEMsRUFBb0Qs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QUgsQ0FBY3pCLFVBQWQsQ0FBbEIsRUFBNkM7QUFDekMsUUFBSTtBQUNBLFlBQU0wQixRQUFRLEdBQUdsQyxPQUFPLENBQUNRLFVBQUQsQ0FBeEI7O0FBQ0EsV0FBSyxNQUFNLENBQUMyQixPQUFELEVBQVVDLE9BQVYsQ0FBWCxJQUFpQ0MsTUFBTSxDQUFDQyxPQUFQLENBQWVKLFFBQWYsQ0FBakMsRUFBMkQ7QUFDdkQvQixRQUFBQSxXQUFXLENBQUNvQyxTQUFaLENBQXNCSixPQUF0QixJQUFpQ0MsT0FBakM7QUFDSDtBQUNKLEtBTEQsQ0FLRSxPQUFPSSxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlDLEtBQUosQ0FBVyw2Q0FBNEN2QyxVQUFXLEtBQXhELEdBQStEc0MsQ0FBQyxDQUFDRSxPQUEzRSxDQUFOO0FBQ0g7QUFDSjtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XHJcbmNvbnN0IHsgdjEgfSA9IHJlcXVpcmUoJ3V1aWQnKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkTW9kdWxlRnJvbUNsYXNzKG1vZHVsZU5hbWUsIG1vZHVsZUNsYXNzLCBtb2R1bGVMb2dnZXIsIG94TW9kdWxlc0RpclBhdGgsIGFyZ3MpIHtcclxuICAgIGlmIChtb2R1bGVDbGFzcy5kZWZhdWx0KSB7XHJcbiAgICAgICAgbW9kdWxlQ2xhc3MgPSBtb2R1bGVDbGFzcy5kZWZhdWx0O1xyXG4gICAgfVxyXG4gICAgLy8gY2hlY2sgaWYgbW9kdWxlIGNvbnRhaW5zIGV4dGVybmFsIFwiY29tbWFuZHNcIiBmb2xkZXIgYW5kIGlmIHNvIGxvYWQgYWxsIHRoZSBjb21tYW5kc1xyXG4gICAgY29uc3QgY21kRGlyUGF0aCA9IG94TW9kdWxlc0RpclBhdGggPyBwYXRoLmpvaW4ob3hNb2R1bGVzRGlyUGF0aCwgJ21vZHVsZS0nICsgbW9kdWxlTmFtZSwgJ2NvbW1hbmRzJykgOiBudWxsO1xyXG4gICAgYWRkQ29tbWFuZHNUb1Byb3RvdHlwZShjbWREaXJQYXRoLCBtb2R1bGVOYW1lLCBtb2R1bGVDbGFzcyk7XHJcbiAgICAvLyBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIG1vZHVsZSBcclxuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBtb2R1bGVDbGFzcyhhcmdzLm9wdHMsIGFyZ3MuY3R4LCBhcmdzLnJlc3VsdFN0b3JlLCBtb2R1bGVMb2dnZXIsIGFyZ3MubW9kdWxlcywgYXJncy5zZXJ2aWNlcyk7XHJcbiAgICBpZiAoIW1vZHVsZS5uYW1lKSB7XHJcbiAgICAgICAgbW9kdWxlLm5hbWUgPSBtb2R1bGVOYW1lO1xyXG4gICAgfVxyXG4gICAgLy8gYXBwbHkgdGhpcyBmb3IgZnVuY3Rpb25zIGluc2lkZSAnaGVscGVycycgbWV0aG9kcyBjb2xsZWN0aW9uIGlmIGZvdW5kXHJcbiAgICBhcHBseVRoaXNJbkhlbHBlcnMobW9kdWxlKTtcclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkTW9kdWxlc0Zyb21GaWxlKG1vZHVsZU5hbWUsIG1vZHVsZUZpbGVOYW1lLCBtb2R1bGVMb2dnZXIsIG94TW9kdWxlc0RpclBhdGgsIGFyZ3MpIHtcclxuICAgIGNvbnN0IG1vZHVsZUNsYXNzID0gcmVxdWlyZShwYXRoLmpvaW4ob3hNb2R1bGVzRGlyUGF0aCwgbW9kdWxlRmlsZU5hbWUpKTtcclxuICAgIC8vIGNoZWNrIGlmIG1vZHVsZSBjb250YWlucyBleHRlcm5hbCBcImNvbW1hbmRzXCIgZm9sZGVyIGFuZCBpZiBzbyBsb2FkIGFsbCB0aGUgY29tbWFuZHNcclxuICAgIGNvbnN0IGNtZERpclBhdGggPSBveE1vZHVsZXNEaXJQYXRoID8gcGF0aC5qb2luKG94TW9kdWxlc0RpclBhdGgsICdtb2R1bGUtJyArIG1vZHVsZU5hbWUsICdjb21tYW5kcycpIDogbnVsbDtcclxuICAgIGFkZENvbW1hbmRzVG9Qcm90b3R5cGUoY21kRGlyUGF0aCwgbW9kdWxlTmFtZSwgbW9kdWxlQ2xhc3MpO1xyXG4gICAgLy8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBtb2R1bGUgXHJcbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgbW9kdWxlQ2xhc3MoYXJncy5vcHRzLCBhcmdzLmN0eCwgYXJncy5yZXN1bHRTdG9yZSwgbW9kdWxlTG9nZ2VyLCBhcmdzLm1vZHVsZXMsIGFyZ3Muc2VydmljZXMpO1xyXG4gICAgaWYgKCFtb2R1bGUubmFtZSkge1xyXG4gICAgICAgIG1vZHVsZS5uYW1lID0gbW9kdWxlTmFtZTtcclxuICAgIH1cclxuICAgIC8vIGFwcGx5IHRoaXMgZm9yIGZ1bmN0aW9ucyBpbnNpZGUgJ2hlbHBlcnMnIG1ldGhvZHMgY29sbGVjdGlvbiBpZiBmb3VuZFxyXG4gICAgYXBwbHlUaGlzSW5IZWxwZXJzKG1vZHVsZSk7XHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbmV3RmlsZUF0dGFjaG1lbnQoZmlsZVBhdGgpIHtcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGlkOiB2MSgpLFxyXG4gICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICAgIGZpbGVQYXRoLFxyXG4gICAgICAgIHR5cGU6ICdvdGhlcicsXHJcbiAgICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBhcHBseVRoaXNJbkhlbHBlcnMobW9kdWxlKSB7XHJcbiAgICBpZiAobW9kdWxlLmhlbHBlcnMgfHwgKG1vZHVsZS5fdGhpcyAmJiBtb2R1bGUuX3RoaXMuaGVscGVycykpIHtcclxuICAgICAgICBjb25zdCBoZWxwZXJzID0gbW9kdWxlLmhlbHBlcnMgfHwgbW9kdWxlLl90aGlzLmhlbHBlcnM7XHJcbiAgICAgICAgZm9yICh2YXIgZnVuY05hbWUgaW4gaGVscGVycykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGhlbHBlcnNbZnVuY05hbWVdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBoZWxwZXJzW2Z1bmNOYW1lXSA9IGhlbHBlcnNbZnVuY05hbWVdLmJpbmQobW9kdWxlLl90aGlzIHx8IG1vZHVsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZENvbW1hbmRzVG9Qcm90b3R5cGUoY21kRGlyUGF0aCwgbW9kdWxlTmFtZSwgbW9kdWxlQ2xhc3MpIHtcclxuICAgIGlmIChjbWREaXJQYXRoICYmIGZzLmV4aXN0c1N5bmMoY21kRGlyUGF0aCkpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBjb21tYW5kcyA9IHJlcXVpcmUoY21kRGlyUGF0aCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2NtZE5hbWUsIGNtZEZ1bmNdIG9mIE9iamVjdC5lbnRyaWVzKGNvbW1hbmRzKSkge1xyXG4gICAgICAgICAgICAgICAgbW9kdWxlQ2xhc3MucHJvdG90eXBlW2NtZE5hbWVdID0gY21kRnVuYztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbG9hZCBleHRlcm5hbCBjb21tYW5kcyBmb3IgbW9kdWxlIFwiJHttb2R1bGVOYW1lfVwiOiBgICsgZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -12,7 +12,7 @@ exports.getEnvironments = getEnvironments;
12
12
  exports.getConfigurations = getConfigurations;
13
13
  exports.getCommandLineOptions = getCommandLineOptions;
14
14
  exports.processTargetPath = processTargetPath;
15
- exports.OXYGEN_PAGE_OBJECT_FILE_NAME = exports.OXYGEN_ENV_FILE_NAME = exports.OXYGEN_CONFIG_FILE_NAME = void 0;
15
+ exports.DEFAULT_REPORTER = exports.OXYGEN_PAGE_OBJECT_FILE_NAME = exports.OXYGEN_ENV_FILE_NAME = exports.OXYGEN_CONFIG_FILE_NAME = void 0;
16
16
 
17
17
  require("source-map-support/register");
18
18
 
@@ -34,6 +34,8 @@ const OXYGEN_ENV_FILE_NAME = 'oxygen.env';
34
34
  exports.OXYGEN_ENV_FILE_NAME = OXYGEN_ENV_FILE_NAME;
35
35
  const OXYGEN_PAGE_OBJECT_FILE_NAME = 'oxygen.po';
36
36
  exports.OXYGEN_PAGE_OBJECT_FILE_NAME = OXYGEN_PAGE_OBJECT_FILE_NAME;
37
+ const DEFAULT_REPORTER = 'html';
38
+ exports.DEFAULT_REPORTER = DEFAULT_REPORTER;
37
39
 
38
40
  async function generateTestOptions(config, argv) {
39
41
  const options = { ...config
@@ -194,7 +196,7 @@ function getConfigurations(target, argv) {
194
196
  collectAppiumLogs: false,
195
197
  collectBrowserLogs: false,
196
198
  reporting: {
197
- reporters: ['html']
199
+ reporters: [DEFAULT_REPORTER]
198
200
  },
199
201
  parameters: {
200
202
  file: null,
@@ -233,7 +235,7 @@ function getConfigurations(target, argv) {
233
235
  projConfigOpts.reporting = {};
234
236
  }
235
237
 
236
- projConfigOpts.reporting.reporters = ['html'];
238
+ projConfigOpts.reporting.reporters = [DEFAULT_REPORTER];
237
239
  }
238
240
 
239
241
  let name = cmdOpts.name || projConfigOpts.name || null;
@@ -350,4 +352,4 @@ function processTargetPath(targetPath, cwd) {
350
352
  extension: _path.default.extname(targetPath)
351
353
  };
352
354
  }
353
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLXV0aWwuanMiXSwibmFtZXMiOlsiT1hZR0VOX0NPTkZJR19GSUxFX05BTUUiLCJPWFlHRU5fRU5WX0ZJTEVfTkFNRSIsIk9YWUdFTl9QQUdFX09CSkVDVF9GSUxFX05BTUUiLCJnZW5lcmF0ZVRlc3RPcHRpb25zIiwiY29uZmlnIiwiYXJndiIsIm9wdGlvbnMiLCJlbnYiLCJsb2FkRW52aXJvbm1lbnRWYXJpYWJsZXMiLCJwbyIsImdldFBhZ2VPYmplY3RGaWxlUGF0aCIsInN1aXRlcyIsImxvYWRTdWl0ZXMiLCJmcmFtZXdvcmsiLCJ0b0xvd2VyQ2FzZSIsInRhcmdldCIsImlzQ29uZmlnRmlsZSIsIm5hbWUiLCJpbmRleE9mIiwiZXh0ZW5zaW9uIiwicHVzaCIsIm94dXRpbCIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpTRmlsZSIsInBhdGgiLCJwYXJhbWV0ZXJzIiwiZmlsZSIsIm1vZGUiLCJpdGVyYXRpb25zIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbkZpbGUiLCJzdWl0ZURlZnMiLCJBcnJheSIsImlzQXJyYXkiLCJzdWl0ZXNGb2xkZXIiLCJqb2luIiwiY3dkIiwiZnMiLCJleGlzdHNTeW5jIiwibG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInN1aXRlRGVmIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbiIsInNlbGVjdGVkU3VpdGVOYW1lcyIsInNwbGl0IiwiZmlsdGVyIiwieCIsImluY2x1ZGVzIiwiZm9sZGVyUGF0aCIsImZpbGVzIiwicmVhZGRpclN5bmMiLCJleHRuYW1lIiwiZnVsbFBhdGgiLCJwb0ZpbGVOYW1lIiwicHJvY2VzcyIsInBvRmlsZVBhdGgiLCJyZXNvbHZlIiwiZSIsImVyciIsIkVycm9yIiwibWVzc2FnZSIsInN0YWNrIiwiZW52TmFtZSIsImVudmlyb25tZW50IiwiZGVmYXVsdEVudkZpbGUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZWRpY2F0ZWRFbnZGaWxlSnMiLCJkZWRpY2F0ZWRFbnZGaWxlSnNvbiIsImdldEVudmlyb25tZW50cyIsInRhcmdldEN3ZCIsImdldENvbmZpZ3VyYXRpb25zIiwiREVGQVVMVF9PUFRTIiwiYnJvd3Nlck5hbWUiLCJzZWxlbml1bVVybCIsImFwcGl1bVVybCIsInJlb3BlblNlc3Npb24iLCJyZVJ1bk9uRmFpbGVkIiwiZGVidWdQb3J0IiwiZGVsYXkiLCJjb2xsZWN0RGV2aWNlTG9ncyIsImNvbGxlY3RBcHBpdW1Mb2dzIiwiY29sbGVjdEJyb3dzZXJMb2dzIiwicmVwb3J0aW5nIiwicmVwb3J0ZXJzIiwiY21kT3B0cyIsImdldENvbW1hbmRMaW5lT3B0aW9ucyIsInByb2pDb25maWdPcHRzIiwiZW52cyIsImlzQ21kT3B0c1JlcG9ydEZvcm1hdCIsImlzQ29uZmlnUmVwb3J0Rm9ybWF0IiwiYmFzZU5hbWUiLCJvcHRzIiwiYiIsImJyb3dzZXIiLCJzIiwic2VydmVyIiwicmVvcGVuIiwiaSIsInBhcnNlSW50IiwiaXRlciIsImRiZ3BvcnQiLCJkIiwicmYiLCJsZW5ndGgiLCJyZXBvcnRGb3JtYXRzIiwicm8iLCJvdXRwdXREaXIiLCJwIiwicGFyYW0iLCJwbSIsInNwZWNzIiwibW9kdWxlcyIsImRlbGV0ZU51bGxQcm9wZXJ0aWVzIiwib2JqIiwiY2xvbmUiLCJrZXlzIiwia2V5IiwidW5kZWZpbmVkIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJ0YXJnZXRQYXRoIiwicmVzb2x2ZVBhdGgiLCJzdGF0cyIsImxzdGF0U3luYyIsImlzRGlyZWN0b3IiLCJpc0RpcmVjdG9yeSIsImNvbmZpZ0ZpbGVQYXRoIiwiZGlybmFtZSIsImdldEZpbGVOYW1lV2l0aG91dEV4dCIsImZ1bGxOYW1lIiwiYmFzZW5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRU8sTUFBTUEsdUJBQXVCLEdB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QUwsRUFBb0M7QUFDaENBLE1BQUFBLGNBQWMsR0FBR3pHLGNBQUtVLElBQUwsQ0FBVXlGLFVBQVYsRUFBc0IxSCx1QkFBdUIsR0FBRyxPQUFoRCxDQUFqQjs7QUFDQSxVQUFJLENBQUNtQyxZQUFHQyxVQUFILENBQWM0RixjQUFkLENBQUwsRUFBb0M7QUFDaEMsZUFBTyxJQUFQO0FBQ0g7QUFDSjs7QUFDRE4sSUFBQUEsVUFBVSxHQUFHTSxjQUFiO0FBQ0g7O0FBQ0QsTUFBSSxDQUFDN0YsWUFBR0MsVUFBSCxDQUFjc0YsVUFBZCxDQUFMLEVBQWdDO0FBQzVCLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU87QUFFSG5HLElBQUFBLElBQUksRUFBRW1HLFVBRkg7QUFJSHhGLElBQUFBLEdBQUcsRUFBRUEsR0FBRyxJQUFJWCxjQUFLMEcsT0FBTCxDQUFhUCxVQUFiLENBSlQ7QUFNSHpHLElBQUFBLElBQUksRUFBRUksY0FBTzZHLHFCQUFQLENBQTZCUixVQUE3QixDQU5IO0FBUUhTLElBQUFBLFFBQVEsRUFBRTVHLGNBQUs2RyxRQUFMLENBQWNWLFVBQWQsQ0FSUDtBQVVIN0IsSUFBQUEsUUFBUSxFQUFFdEUsY0FBSzZHLFFBQUwsQ0FBYzdHLGNBQUswRyxPQUFMLENBQWFQLFVBQWIsQ0FBZCxDQVZQO0FBWUh2RyxJQUFBQSxTQUFTLEVBQUVJLGNBQUs0QixPQUFMLENBQWF1RSxVQUFiO0FBWlIsR0FBUDtBQWNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XHJcbmltcG9ydCBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCBveHV0aWwgZnJvbSAnLi91dGlsJztcclxuaW1wb3J0IHsgZm9yRWFjaCB9IGZyb20gJ2FzeW5jJztcclxuaW1wb3J0IG1vZHVsZVJlcXVpcmUgZnJvbSAnLi9tb2R1bGVSZXF1aXJlJztcclxuXHJcbmV4cG9ydCBjb25zdCBPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSA9ICdveHlnZW4uY29uZic7XHJcbmV4cG9ydCBjb25zdCBPWFlHRU5fRU5WX0ZJTEVfTkFNRSA9ICdveHlnZW4uZW52JztcclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9QQUdFX09CSkVDVF9GSUxFX05BTUUgPSAnb3h5Z2VuLnBvJztcclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4uY29uZmlnIH07XHJcbiAgICBvcHRpb25zLmVudiA9IGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlcyhjb25maWcsIGFyZ3YpO1xyXG4gICAgb3B0aW9ucy5wbyA9IGdldFBhZ2VPYmplY3RGaWxlUGF0aChjb25maWcsIGFyZ3YpO1xyXG4gICAgb3B0aW9ucy5zdWl0ZXMgPSBhd2FpdCBsb2FkU3VpdGVzKGNvbmZpZywgYXJndik7XHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRTdWl0ZXMoY29uZmlnLCBhcmd2KSB7XHJcbiAgICBpZiAoY29uZmlnLmZyYW1ld29yayAmJiB0eXBlb2YgY29uZmlnLmZyYW1ld29yayA9PT0gJ3N0cmluZycgJiYgY29uZmlnLmZyYW1ld29yay50b0xvd2VyQ2FzZSgpICE9PSAnb3h5Z2VuJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBjb25maWc7XHJcbiAgICBjb25zdCBpc0NvbmZpZ0ZpbGUgPSB0YXJnZXQgJiYgdGFyZ2V0Lm5hbWUgJiYgdGFyZ2V0Lm5hbWUuaW5kZXhPZihPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSkgPT09IDA7XHJcbiAgICBsZXQgc3VpdGVzID0gW107XHJcbiAgICAvLyBpZiBhbiBpbmRpdmlkdWFsIHNjcmlwdCBvciBzdWl0ZSBmaWxlIHdhcyBwYXNzZWRcclxuICAgIGlmICghaXNDb25maWdGaWxlKSB7XHJcbiAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzJykge1xyXG4gICAgICAgICAgICBzdWl0ZXMucHVzaChhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSlNGaWxlKHRhcmdldC5wYXRoLCBjb25maWcucGFyYW1ldGVycy5maWxlLCBjb25maWcucGFyYW1ldGVycy5tb2RlLCBmYWxzZSwgY29uZmlnLml0ZXJhdGlvbnMgfHwgMSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmV4dGVuc2lvbiA9PT0gJy5qc29uJykge1xyXG4gICAgICAgICAgICBzdWl0ZXMucHVzaChhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbkZpbGUodGFyZ2V0LnBhdGgsIGNvbmZpZy5wYXJhbWV0ZXJzLmZpbGUsIGNvbmZpZy5wYXJhbWV0ZXJzLm1vZGUsIGNvbmZpZykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGlmIGEgZm9sZGVyIG9yIGEgY29uZmlndXJhdGlvbiBmaWxlIHdhcyBwYXNzZWRcclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzdWl0ZURlZnMgPSBbXTtcclxuICAgICAgICBpZiAoY29uZmlnLnN1aXRlcyAmJiBBcnJheS5pc0FycmF5KGNvbmZpZy5zdWl0ZXMpKSB7XHJcbiAgICAgICAgICAgIHN1aXRlRGVmcyA9IGNvbmZpZy5zdWl0ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoZWNrIGlmIG1vcmUgc3VpdGVzIGFyZSBkZWZpbmVkIGluIHRoZSAnc3VpdGVzJyBmb2xkZXJcclxuICAgICAgICBjb25zdCBzdWl0ZXNGb2xkZXIgPSBwYXRoLmpvaW4odGFyZ2V0LmN3ZCwgJ3N1aXRlcycpO1xyXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHN1aXRlc0ZvbGRlcikpIHtcclxuICAgICAgICAgICAgc3VpdGVEZWZzID0gW1xyXG4gICAgICAgICAgICAgICAgLi4uc3VpdGVEZWZzLFxyXG4gICAgICAgICAgICAgICAgLi4ubG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyKHN1aXRlc0ZvbGRlcilcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbWVyZ2Ugc3VpdGVzIGNvbmZpZ3VyZWQgaW4gdGhlIHByb2plY3QgY29uZmlnIGZpbGUgYW5kIHRob3NlIGZvdW5kIGluICdzdWl0ZXMnIGZvbGRlclxyXG4gICAgICAgIHN1aXRlcyA9IGF3YWl0IFByb21pc2UuYWxsKHN1aXRlRGVmcy5tYXAoYXN5bmMgKHN1aXRlRGVmKSA9PiBhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbihzdWl0ZURlZiwgY29uZmlnKSkpO1xyXG4gICAgfVxyXG4gICAgLy8gZmlsdGVyIG91dCBzdWl0ZXMgaWYgJy0tc3VpdGVzJyBjb21tYW5kIGxpbmUgYXJndW1lbnQgd2FzIHNwZWNpZmllZFxyXG4gICAgaWYgKGFyZ3Yuc3VpdGVzICYmIHR5cGVvZiBhcmd2LnN1aXRlcyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZFN1aXRlTmFtZXMgPSBhcmd2LnN1aXRlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIHN1aXRlcyA9IHN1aXRlcy5maWx0ZXIoeCA9PiBzZWxlY3RlZFN1aXRlTmFtZXMuaW5jbHVkZXMoeC5uYW1lKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VpdGVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyKGZvbGRlclBhdGgpIHtcclxuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMoZm9sZGVyUGF0aCk7XHJcbiAgICBsZXQgc3VpdGVEZWZzID0gW107XHJcbiAgICBmb3JFYWNoKGZpbGVzLCBmaWxlID0+IHtcclxuICAgICAgICBpZiAocGF0aC5leHRuYW1lKGZpbGUpID09PSAnLmpzb24nKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGZvbGRlclBhdGgsIGZpbGUpO1xyXG4gICAgICAgICAgICBzdWl0ZURlZnMucHVzaChtb2R1bGVSZXF1aXJlKGZ1bGxQYXRoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3VpdGVEZWZzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZU9iamVjdEZpbGVQYXRoKGNvbmZpZywgYXJndiA9IHt9KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBjb25maWcudGFyZ2V0IHx8IHt9O1xyXG4gICAgY29uc3QgcG9GaWxlTmFtZSA9IGFyZ3YucG8gfHwgYCR7T1hZR0VOX1BBR0VfT0JKRUNUX0ZJTEVfTkFNRX0uanNgO1xyXG4gICAgY29uc3QgY3dkID0gdGFyZ2V0LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgbGV0IHBvRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoY3dkLCBwb0ZpbGVOYW1lKTtcclxuICAgIHBvRmlsZVBhdGggPSBmcy5leGlzdHNTeW5jKHBvRmlsZVBhdGgpID8gcG9GaWxlUGF0aCA6IG51bGw7XHJcblxyXG4gICAgaWYgKHBvRmlsZVBhdGgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBtb2R1bGVSZXF1aXJlKHBvRmlsZVBhdGgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcG9GaWxlUGF0aDtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHtwb0ZpbGVQYXRofS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlcyhjb25maWcsIGFyZ3YpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGNvbmZpZy50YXJnZXQgfHwge307XHJcbiAgICBjb25zdCBlbnZOYW1lID0gYXJndi5lbnYgfHwgY29uZmlnLmVudmlyb25tZW50IHx8ICdkZWZhdWx0JztcclxuICAgIGNvbnN0IGN3ZCA9IHRhcmdldC5jd2QgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRFbnZGaWxlID0gcGF0aC5qb2luKGN3ZCwgYCR7T1hZR0VOX0VOVl9GSUxFX05BTUV9LmpzYCk7XHJcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhkZWZhdWx0RW52RmlsZSkpIHtcclxuICAgICAgICBjb25zdCBlbnYgPSBtb2R1bGVSZXF1aXJlKGRlZmF1bHRFbnZGaWxlKTtcclxuICAgICAgICBpZiAoZW52ICYmIHR5cGVvZiBlbnYgPT09ICdvYmplY3QnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbnYsIGVudk5hbWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbnZbZW52TmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdHJ5IHRvIHJlc29sdmUgYSBkZWRpY2F0ZWQgZW52aXJvbm1lbnQgZmlsZSBpbiAnZW52JyBzdWIgZm9sZGVyXHJcbiAgICBjb25zdCBkZWRpY2F0ZWRFbnZGaWxlSnMgPSBwYXRoLmpvaW4oY3dkLCAnZW52JywgYCR7ZW52TmFtZX0uanNgKTtcclxuICAgIGNvbnN0IGRlZGljYXRlZEVudkZpbGVKc29uID0gcGF0aC5qb2luKGN3ZCwgJ2VudicsIGAke2Vudk5hbWV9Lmpzb25gKTtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGRlZGljYXRlZEVudkZpbGVKcykpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlUmVxdWlyZShkZWRpY2F0ZWRFbnZGaWxlSnMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZnMuZXhpc3RzU3luYyhkZWRpY2F0ZWRFbnZGaWxlSnNvbikpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlUmVxdWlyZShkZWRpY2F0ZWRFbnZGaWxlSnNvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge307XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnZpcm9ubWVudHModGFyZ2V0KSB7XHJcbiAgICBsZXQgdGFyZ2V0Q3dkID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5jd2QpIHtcclxuICAgICAgICB0YXJnZXRDd2QgPSB0YXJnZXQuY3dkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN3ZCA9IHRhcmdldEN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgY29uc3QgZGVmYXVsdEVudkZpbGUgPSBwYXRoLmpvaW4oY3dkLCBgJHtPWFlHRU5fRU5WX0ZJTEVfTkFNRX0uanNgKTtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGRlZmF1bHRFbnZGaWxlKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZmF1bHRFbnZGaWxlKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHtkZWZhdWx0RW52RmlsZX0uIFJlYXNvbjogJHtlLm1lc3NhZ2V9ICR7ZS5zdGFja31gKTtcclxuICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7fTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ3VyYXRpb25zKHRhcmdldCwgYXJndikge1xyXG4gICAgLy8gcHJvY2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzXHJcbiAgICBsZXQgdGFyZ2V0Q3dkID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5jd2QpIHtcclxuICAgICAgICB0YXJnZXRDd2QgPSB0YXJnZXQuY3dkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IERFRkFVTFRfT1BUUyA9IHtcclxuICAgICAgICBjd2Q6IHRhcmdldCA/ICh0YXJnZXRDd2QgfHwgcHJvY2Vzcy5jd2QoKSkgOiBwcm9jZXNzLmN3ZCgpLFxyXG4gICAgICAgIHRhcmdldDogdGFyZ2V0LFxyXG4gICAgICAgIGJyb3dzZXJOYW1lOiAnY2hyb21lJyxcclxuICAgICAgICBzZWxlbml1bVVybCA6ICdodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViJyxcclxuICAgICAgICBhcHBpdW1VcmwgOiAnaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1YicsXHJcbiAgICAgICAgcmVvcGVuU2Vzc2lvbjogZmFsc2UsXHJcbiAgICAgICAgcmVSdW5PbkZhaWxlZDogZmFsc2UsXHJcbiAgICAgICAgaXRlcmF0aW9ucyA6IDEsXHJcbiAgICAgICAgZGVidWdQb3J0OiBudWxsLFxyXG4gICAgICAgIGRlbGF5OiBudWxsLFxyXG4gICAgICAgIGNvbGxlY3REZXZpY2VMb2dzOiBmYWxzZSxcclxuICAgICAgICBjb2xsZWN0QXBwaXVtTG9nczogZmFsc2UsXHJcbiAgICAgICAgY29sbGVjdEJyb3dzZXJMb2dzOiBmYWxzZSxcclxuICAgICAgICByZXBvcnRpbmc6IHtcclxuICAgICAgICAgICAgcmVwb3J0ZXJzOiBbJ2h0bWwnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFyYW1ldGVycyA6IHtcclxuICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgICAgICAgbW9kZTogJ3NlcSdcclxuICAgICAgICB9LFxyXG4gICAgfTtcclxuICAgIC8vIHJldHJpZXZlIG9wdGlvbnMgcHJvdmlkZWQgdmlhIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuICAgIGNvbnN0IGNtZE9wdHMgPSBnZXRDb21tYW5kTGluZU9wdGlvbnMoYXJndik7XHJcbiAgICAvLyBpZiB0aGUgdGFyZ2V0IGlzIG94eWdlbiBjb25maWcgZmlsZSwgbWVyZ2UgaXRzIGNvbnRlbnQgd2l0aCB0aGUgZGVmYXVsdCBvcHRpb25zXHJcbiAgICBsZXQgcHJvakNvbmZpZ09wdHMgPSB7fTtcclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0Lm5hbWUgPT09IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICYmICh0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzJyB8fCB0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzb24nKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHByb2pDb25maWdPcHRzID0gbW9kdWxlUmVxdWlyZSh0YXJnZXQucGF0aCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkIGZpbGU6ICR7dGFyZ2V0LnBhdGh9LiBSZWFzb246ICR7ZS5tZXNzYWdlfSAke2Uuc3RhY2t9YCk7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbnZzID0gZ2V0RW52aXJvbm1lbnRzKHRhcmdldCk7XHJcblxyXG4gICAgaWYgKHByb2pDb25maWdPcHRzLmVudnMpIHtcclxuICAgICAgICAvLyBtZXJnZSBleHRlcm5hbCBlbnZpcm9ubWVudHMgZGVmaW5pdGlvbiB3aXRoIHRoZSBvbmUgaW4gdGhlIGNvbmZpZyBmaWxlXHJcbiAgICAgICAgcHJvakNvbmZpZ09wdHMuZW52cyA9IHsgLi4ucHJvakNvbmZpZ09wdHMuZW52cywgLi4uZW52cyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcHJvakNvbmZpZ09wdHMgPSB7IC4uLnByb2pDb25maWdPcHRzLCBlbnZzOiBlbnZzIH07XHJcbiAgICB9XHJcbiAgICAvLyBtYWtlIHN1cmUgdG8gc2V0IGRlZmF1bHQgSFRNTCByZXBvcnRlciBpZiByZXBvcnRpbmcgb3B0aW9ucyBhcmUgbm90IHByb3ZpZGVkIGluIG94eWdlbi5jb25mIGZpbGUgYW5kIHZpYSBjb21tYW5kIGxpbmVcclxuICAgIGNvbnN0IGlzQ21kT3B0c1JlcG9ydEZvcm1hdCA9IGNtZE9wdHMucmVwb3J0aW5nICYmIGNtZE9wdHMucmVwb3J0aW5nLnJlcG9ydGVycztcclxuICAgIGNvbnN0IGlzQ29uZmlnUmVwb3J0Rm9ybWF0ID0gcHJvakNvbmZpZ09wdHMucmVwb3J0aW5nICYmIHByb2pDb25maWdPcHRzLnJlcG9ydGluZy5yZXBvcnRlcnM7XHJcbiAgICBpZiAoIWlzQ21kT3B0c1JlcG9ydEZvcm1hdCAmJiAhaXNDb25maWdSZXBvcnRGb3JtYXQpIHtcclxuICAgICAgICBpZiAoIXByb2pDb25maWdPcHRzLnJlcG9ydGluZykge1xyXG4gICAgICAgICAgICBwcm9qQ29uZmlnT3B0cy5yZXBvcnRpbmcgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHJvakNvbmZpZ09wdHMucmVwb3J0aW5nLnJlcG9ydGVycyA9IFsnaHRtbCddO1xyXG4gICAgfVxyXG4gICAgLy8gZGV0ZXJtaW5lIHRlc3QgbmFtZVxyXG4gICAgbGV0IG5hbWUgPSBjbWRPcHRzLm5hbWUgfHwgcHJvakNvbmZpZ09wdHMubmFtZSB8fCBudWxsO1xyXG4gICAgaWYgKCFuYW1lICYmIHRhcmdldCkge1xyXG4gICAgICAgIG5hbWUgPSB0YXJnZXQubmFtZSAhPT0gT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgPyB0YXJnZXQubmFtZSA6IHRhcmdldC5iYXNlTmFtZTtcclxuICAgIH1cclxuICAgIC8vIG1lcmdlIG9wdGlvbnMgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgb3JkZXIgKHRoZSBsYXN0IG9uZSBvdmVycmlkZXMgdGhlIHByZXZpb3VzIG9uZSk6XHJcbiAgICAvLyBkZWZhdWx0IG9wdGlvbnMsIHByb2plY3QgY29uZmlnIGZpbGUsIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuICAgIHJldHVybiB7IC4uLkRFRkFVTFRfT1BUUywgLi4ucHJvakNvbmZpZ09wdHMsIC4uLmNtZE9wdHMsIG5hbWU6IG5hbWUgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1hbmRMaW5lT3B0aW9ucyhhcmd2KSB7XHJcbiAgICBjb25zdCBvcHRzID0ge1xyXG4gICAgICAgIC8vIHN3aXRjaDogLS1uYW1lIFxyXG4gICAgICAgIG5hbWU6IGFyZ3YubmFtZSB8fCBudWxsLFxyXG4gICAgICAgIC8vIHN3aXRjaDogLWIgb3IgLS1icm93c2VyXHJcbiAgICAgICAgYnJvd3Nlck5hbWUgOiBhcmd2LmIgfHwgYXJndi5icm93c2VyIHx8IG51bGwsXHJcbiAgICAgICAgc2VsZW5pdW1VcmwgOiBhcmd2LnMgfHwgYXJndi5zZXJ2ZXIgfHwgbnVsbCxcclxuICAgICAgICBhcHBpdW1VcmwgOiBhcmd2LnMgfHwgYXJndi5zZXJ2ZXIgfHwgbnVsbCxcclxuICAgICAgICByZW9wZW5TZXNzaW9uOiBhcmd2LnJlb3BlbiA/IGFyZ3YucmVvcGVuID09PSAndHJ1ZScgOiBudWxsLFxyXG4gICAgICAgIGl0ZXJhdGlvbnMgOiBhcmd2LmkgPyBwYXJzZUludChhcmd2LmkpIDogKGFyZ3YuaXRlciA/IHBhcnNlSW50KGFyZ3YuaXRlcikgOiBudWxsKSxcclxuICAgICAgICBkZWJ1Z1BvcnQ6IGFyZ3YuZGJncG9ydCB8fCBudWxsLFxyXG4gICAgICAgIGRlbGF5OiBhcmd2LmQgfHwgYXJndi5kZWxheSB8fCBudWxsLFxyXG4gICAgfTtcclxuICAgIC8vIHN3aXRjaDogLS1yZiBmbGFnXHJcbiAgICBpZiAoYXJndi5yZiAmJiB0eXBlb2YgYXJndi5yZiA9PT0gJ3N0cmluZycgJiYgYXJndi5yZi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgcmVwb3J0Rm9ybWF0cyA9IGFyZ3YucmYuc3BsaXQoJywnKTtcclxuICAgICAgICBvcHRzLnJlcG9ydGluZyA9IHtcclxuICAgICAgICAgICAgcmVwb3J0ZXJzOiByZXBvcnRGb3JtYXRzXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBzd2l0Y2g6IC0tcm8gLSBzZXQgcmVwb3J0ZXIgb3V0cHV0IGRpcmVjdG9yeSBpZiBzZXQgYnkgdXNlciB0aHJvdWdoIGNvbW5hbmQgbGluZVxyXG4gICAgICAgIC8vIE5PVEU6IC0tcm8gc3dpdGNoIG11c3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggLS1yZlxyXG4gICAgICAgIGlmIChhcmd2LnJvICYmIHR5cGVvZiBhcmd2LnJvID09PSAnc3RyaW5nJyAmJiBhcmd2LnJvLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgb3B0cy5yZXBvcnRpbmcub3V0cHV0RGlyID0gYXJndi5ybztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBvcHRpb246IC1wIG9yIC0tcGFyYW0gYW5kIC0tcG1cclxuICAgIGlmIChhcmd2LnAgfHwgYXJndi5wYXJhbSkge1xyXG4gICAgICAgIG9wdHMucGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgZmlsZTogYXJndi5wIHx8IGFyZ3YucGFyYW0gfHwgbnVsbCxcclxuICAgICAgICAgICAgbW9kZTogYXJndi5wbSB8fCAnc2VxJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc3dpdGNoOiAtLXNwZWNzIC0gc2V0IHNwZWNzIGlmIHNldCBieSB1c2VyIHRocm91Z2ggY29tbmFuZCBsaW5lXHJcbiAgICBpZiAoYXJndi5zcGVjcyAmJiB0eXBlb2YgYXJndi5zcGVjcyA9PT0gJ3N0cmluZycgJiYgYXJndi5zcGVjcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3Qgc3BlY3MgPSBhcmd2LnNwZWNzLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgb3B0cy5zcGVjcyA9IHNwZWNzO1xyXG4gICAgfVxyXG4gICAgLy8gc3dpdGNoOiAtLW1vZHVsZXMgLSBzZXQgYSBsaXN0IG9mIG1vZHVsZXMgdG8gYmUgbG9hZGVkLCBpZiBzZXQgYnkgdXNlciB0aHJvdWdoIGNvbW5hbmQgbGluZVxyXG4gICAgaWYgKGFyZ3YubW9kdWxlcyAmJiB0eXBlb2YgYXJndi5tb2R1bGVzID09PSAnc3RyaW5nJyAmJiBhcmd2Lm1vZHVsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSBhcmd2Lm1vZHVsZXMuc3BsaXQoJywnKTtcclxuICAgICAgICBvcHRzLm1vZHVsZXMgPSBtb2R1bGVzO1xyXG4gICAgfVxyXG4gICAgLy8gcmVtb3ZlIGFueSBwcm9wZXJ0eSB3aXRoIG51bGwgdmFsdWUgKHNvIGl0IHdvbid0IG92ZXJyaWRlIGRlZmF1bHQgdmFsdWVzIGlmIGl0J3MgbnVsbClcclxuICAgIHJldHVybiBkZWxldGVOdWxsUHJvcGVydGllcyhvcHRzKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVsZXRlTnVsbFByb3BlcnRpZXMob2JqKSB7XHJcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2xvbmUgPSB7IC4uLm9iaiB9O1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XHJcbiAgICBmb3JFYWNoIChrZXlzLCBrZXkgPT4ge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpICYmIChvYmpba2V5XSA9PSBudWxsIHx8IG9ialtrZXldID09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIGNsb25lW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzVGFyZ2V0UGF0aCh0YXJnZXRQYXRoLCBjd2QpIHtcclxuICAgIC8vIGdldCBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlmIHVzZXIgaGFzIG5vdCBwcm92aWRlZCBwYXRoXHJcbiAgICBpZiAodHlwZW9mKHRhcmdldFBhdGgpID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHRhcmdldFBhdGggPSBjd2QgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIH1cclxuICAgIC8vIHVzZXIncyBwYXRoIG1pZ2h0IGJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IC0gbWFrZSBzdXJlIHRoZSByZWxhdGl2ZSBwYXRoIHdpbGwgd29ya1xyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdGFyZ2V0UGF0aCA9IG94dXRpbC5yZXNvbHZlUGF0aCh0YXJnZXRQYXRoLCBjd2QgfHwgcHJvY2Vzcy5jd2QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhcmdldFBhdGgpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RhdHMgPSBmcy5sc3RhdFN5bmModGFyZ2V0UGF0aCk7XHJcbiAgICBjb25zdCBpc0RpcmVjdG9yID0gc3RhdHMuaXNEaXJlY3RvcnkoKTtcclxuICAgIGlmIChpc0RpcmVjdG9yKSB7XHJcbiAgICAgICAgLy8gYXBwZW5kIG94eWdlbiBjb25maWcgZmlsZSBuYW1lIHRvIHRoZSBkaXJlY3RvcnksIGlmIG5vIHRlc3QgY2FzZSBmaWxlIHdhcyBwcm92aWRlZFxyXG4gICAgICAgIGxldCBjb25maWdGaWxlUGF0aCA9IHBhdGguam9pbih0YXJnZXRQYXRoLCBPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSArICcuanMnKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZ0ZpbGVQYXRoID0gcGF0aC5qb2luKHRhcmdldFBhdGgsIE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICsgJy5qc29uJyk7XHJcbiAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhcmdldFBhdGggPSBjb25maWdGaWxlUGF0aDtcclxuICAgIH1cclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0YXJnZXRQYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAvLyBwYXRoIHRvIHRoZSBjb25maWcgb3IgLmpzIGZpbGVcclxuICAgICAgICBwYXRoOiB0YXJnZXRQYXRoLFxyXG4gICAgICAgIC8vIHdvcmtpbmcgZGlyZWN0b3J5XHJcbiAgICAgICAgY3dkOiBjd2QgfHwgcGF0aC5kaXJuYW1lKHRhcmdldFBhdGgpLFxyXG4gICAgICAgIC8vIG5hbWUgb2YgdGhlIHRhcmdldCBmaWxlIHdpdGhvdXQgZXh0ZW5zaW9uXHJcbiAgICAgICAgbmFtZTogb3h1dGlsLmdldEZpbGVOYW1lV2l0aG91dEV4dCh0YXJnZXRQYXRoKSxcclxuICAgICAgICAvLyBuYW1lIGluY2x1ZGluZyBleHRlbnNpb25cclxuICAgICAgICBmdWxsTmFtZTogcGF0aC5iYXNlbmFtZSh0YXJnZXRQYXRoKSxcclxuICAgICAgICAvLyBwYXJlbnQgZm9sZGVyJ3MgbmFtZVxyXG4gICAgICAgIGJhc2VOYW1lOiBwYXRoLmJhc2VuYW1lKHBhdGguZGlybmFtZSh0YXJnZXRQYXRoKSksXHJcbiAgICAgICAgLy8gdGFyZ2V0IGZpbGUgZXh0ZW5zaW9uXHJcbiAgICAgICAgZXh0ZW5zaW9uOiBwYXRoLmV4dG5hbWUodGFyZ2V0UGF0aClcclxuICAgIH07XHJcbn0iXX0=
355
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLXV0aWwuanMiXSwibmFtZXMiOlsiT1hZR0VOX0NPTkZJR19GSUxFX05BTUUiLCJPWFlHRU5fRU5WX0ZJTEVfTkFNRSIsIk9YWUdFTl9QQUdFX09CSkVDVF9GSUxFX05BTUUiLCJERUZBVUxUX1JFUE9SVEVSIiwiZ2VuZXJhdGVUZXN0T3B0aW9ucyIsImNvbmZpZyIsImFyZ3YiLCJvcHRpb25zIiwiZW52IiwibG9hZEVudmlyb25tZW50VmFyaWFibGVzIiwicG8iLCJnZXRQYWdlT2JqZWN0RmlsZVBhdGgiLCJzdWl0ZXMiLCJsb2FkU3VpdGVzIiwiZnJhbWV3b3JrIiwidG9Mb3dlckNhc2UiLCJ0YXJnZXQiLCJpc0NvbmZpZ0ZpbGUiLCJuYW1lIiwiaW5kZXhPZiIsImV4dGVuc2lvbiIsInB1c2giLCJveHV0aWwiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21KU0ZpbGUiLCJwYXRoIiwicGFyYW1ldGVycyIsImZpbGUiLCJtb2RlIiwiaXRlcmF0aW9ucyIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpzb25GaWxlIiwic3VpdGVEZWZzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VpdGVzRm9sZGVyIiwiam9pbiIsImN3ZCIsImZzIiwiZXhpc3RzU3luYyIsImxvYWRTdWl0ZURlZmluaXRpb25zRnJvbUZvbGRlciIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJzdWl0ZURlZiIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpzb24iLCJzZWxlY3RlZFN1aXRlTmFtZXMiLCJzcGxpdCIsImZpbHRlciIsIngiLCJpbmNsdWRlcyIsImZvbGRlclBhdGgiLCJmaWxlcyIsInJlYWRkaXJTeW5jIiwiZXh0bmFtZSIsImZ1bGxQYXRoIiwicG9GaWxlTmFtZSIsInByb2Nlc3MiLCJwb0ZpbGVQYXRoIiwicmVzb2x2ZSIsImUiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsImVudk5hbWUiLCJlbnZpcm9ubWVudCIsImRlZmF1bHRFbnZGaWxlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVkaWNhdGVkRW52RmlsZUpzIiwiZGVkaWNhdGVkRW52RmlsZUpzb24iLCJnZXRFbnZpcm9ubWVudHMiLCJ0YXJnZXRDd2QiLCJnZXRDb25maWd1cmF0aW9ucyIsIkRFRkFVTFRfT1BUUyIsImJyb3dzZXJOYW1lIiwic2VsZW5pdW1VcmwiLCJhcHBpdW1VcmwiLCJyZW9wZW5TZXNzaW9uIiwicmVSdW5PbkZhaWxlZCIsImRlYnVnUG9ydCIsImRlbGF5IiwiY29sbGVjdERldmljZUxvZ3MiLCJjb2xsZWN0QXBwaXVtTG9ncyIsImNvbGxlY3RCcm93c2VyTG9ncyIsInJlcG9ydGluZyIsInJlcG9ydGVycyIsImNtZE9wdHMiLCJnZXRDb21tYW5kTGluZU9wdGlvbnMiLCJwcm9qQ29uZmlnT3B0cyIsImVudnMiLCJpc0NtZE9wdHNSZXBvcnRGb3JtYXQiLCJpc0NvbmZpZ1JlcG9ydEZvcm1hdCIsImJhc2VOYW1lIiwib3B0cyIsImIiLCJicm93c2VyIiwicyIsInNlcnZlciIsInJlb3BlbiIsImkiLCJwYXJzZUludCIsIml0ZXIiLCJkYmdwb3J0IiwiZCIsInJmIiwibGVuZ3RoIiwicmVwb3J0Rm9ybWF0cyIsInJvIiwib3V0cHV0RGlyIiwicCIsInBhcmFtIiwicG0iLCJzcGVjcyIsIm1vZHVsZXMiLCJkZWxldGVOdWxsUHJvcGVydGllcyIsIm9iaiIsImNsb25lIiwia2V5cyIsImtleSIsInVuZGVmaW5lZCIsInByb2Nlc3NUYXJnZXRQYXRoIiwidGFyZ2V0UGF0aCIsInJlc29sdmVQYXRoIiwic3RhdHMiLCJsc3RhdFN5bmMiLCJpc0RpcmVjdG9yIiwiaXNEaXJlY3RvcnkiLCJjb25maWdGaWxlUGF0aCIsImRpcm5hbWUiLCJnZXRGaWxlTmFtZVdpdGhvdXRFeHQiLCJmdWxsTmFtZSIsImJhc2VuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztB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LEtBQWhELENBQXJCOztBQUNBLFFBQUksQ0FBQ29DLFlBQUdDLFVBQUgsQ0FBYzRGLGNBQWQsQ0FBTCxFQUFvQztBQUNoQ0EsTUFBQUEsY0FBYyxHQUFHekcsY0FBS1UsSUFBTCxDQUFVeUYsVUFBVixFQUFzQjNILHVCQUF1QixHQUFHLE9BQWhELENBQWpCOztBQUNBLFVBQUksQ0FBQ29DLFlBQUdDLFVBQUgsQ0FBYzRGLGNBQWQsQ0FBTCxFQUFvQztBQUNoQyxlQUFPLElBQVA7QUFDSDtBQUNKOztBQUNETixJQUFBQSxVQUFVLEdBQUdNLGNBQWI7QUFDSDs7QUFDRCxNQUFJLENBQUM3RixZQUFHQyxVQUFILENBQWNzRixVQUFkLENBQUwsRUFBZ0M7QUFDNUIsV0FBTyxJQUFQO0FBQ0g7O0FBQ0QsU0FBTztBQUVIbkcsSUFBQUEsSUFBSSxFQUFFbUcsVUFGSDtBQUlIeEYsSUFBQUEsR0FBRyxFQUFFQSxHQUFHLElBQUlYLGNBQUswRyxPQUFMLENBQWFQLFVBQWIsQ0FKVDtBQU1IekcsSUFBQUEsSUFBSSxFQUFFSSxjQUFPNkcscUJBQVAsQ0FBNkJSLFVBQTdCLENBTkg7QUFRSFMsSUFBQUEsUUFBUSxFQUFFNUcsY0FBSzZHLFFBQUwsQ0FBY1YsVUFBZCxDQVJQO0FBVUg3QixJQUFBQSxRQUFRLEVBQUV0RSxjQUFLNkcsUUFBTCxDQUFjN0csY0FBSzBHLE9BQUwsQ0FBYVAsVUFBYixDQUFkLENBVlA7QUFZSHZHLElBQUFBLFNBQVMsRUFBRUksY0FBSzRCLE9BQUwsQ0FBYXVFLFVBQWI7QUFaUixHQUFQO0FBY0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IG94dXRpbCBmcm9tICcuL3V0aWwnO1xyXG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSAnYXN5bmMnO1xyXG5pbXBvcnQgbW9kdWxlUmVxdWlyZSBmcm9tICcuL21vZHVsZVJlcXVpcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FID0gJ294eWdlbi5jb25mJztcclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9FTlZfRklMRV9OQU1FID0gJ294eWdlbi5lbnYnO1xyXG5leHBvcnQgY29uc3QgT1hZR0VOX1BBR0VfT0JKRUNUX0ZJTEVfTkFNRSA9ICdveHlnZW4ucG8nO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVBPUlRFUiA9ICdodG1sJztcclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4uY29uZmlnIH07XHJcbiAgICBvcHRpb25zLmVudiA9IGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlcyhjb25maWcsIGFyZ3YpO1xyXG4gICAgb3B0aW9ucy5wbyA9IGdldFBhZ2VPYmplY3RGaWxlUGF0aChjb25maWcsIGFyZ3YpO1xyXG4gICAgb3B0aW9ucy5zdWl0ZXMgPSBhd2FpdCBsb2FkU3VpdGVzKGNvbmZpZywgYXJndik7XHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRTdWl0ZXMoY29uZmlnLCBhcmd2KSB7XHJcbiAgICBpZiAoY29uZmlnLmZyYW1ld29yayAmJiB0eXBlb2YgY29uZmlnLmZyYW1ld29yayA9PT0gJ3N0cmluZycgJiYgY29uZmlnLmZyYW1ld29yay50b0xvd2VyQ2FzZSgpICE9PSAnb3h5Z2VuJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBjb25maWc7XHJcbiAgICBjb25zdCBpc0NvbmZpZ0ZpbGUgPSB0YXJnZXQgJiYgdGFyZ2V0Lm5hbWUgJiYgdGFyZ2V0Lm5hbWUuaW5kZXhPZihPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSkgPT09IDA7XHJcbiAgICBsZXQgc3VpdGVzID0gW107XHJcbiAgICAvLyBpZiBhbiBpbmRpdmlkdWFsIHNjcmlwdCBvciBzdWl0ZSBmaWxlIHdhcyBwYXNzZWRcclxuICAgIGlmICghaXNDb25maWdGaWxlKSB7XHJcbiAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzJykge1xyXG4gICAgICAgICAgICBzdWl0ZXMucHVzaChhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSlNGaWxlKHRhcmdldC5wYXRoLCBjb25maWcucGFyYW1ldGVycy5maWxlLCBjb25maWcucGFyYW1ldGVycy5tb2RlLCBmYWxzZSwgY29uZmlnLml0ZXJhdGlvbnMgfHwgMSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmV4dGVuc2lvbiA9PT0gJy5qc29uJykge1xyXG4gICAgICAgICAgICBzdWl0ZXMucHVzaChhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbkZpbGUodGFyZ2V0LnBhdGgsIGNvbmZpZy5wYXJhbWV0ZXJzLmZpbGUsIGNvbmZpZy5wYXJhbWV0ZXJzLm1vZGUsIGNvbmZpZykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGlmIGEgZm9sZGVyIG9yIGEgY29uZmlndXJhdGlvbiBmaWxlIHdhcyBwYXNzZWRcclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzdWl0ZURlZnMgPSBbXTtcclxuICAgICAgICBpZiAoY29uZmlnLnN1aXRlcyAmJiBBcnJheS5pc0FycmF5KGNvbmZpZy5zdWl0ZXMpKSB7XHJcbiAgICAgICAgICAgIHN1aXRlRGVmcyA9IGNvbmZpZy5zdWl0ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoZWNrIGlmIG1vcmUgc3VpdGVzIGFyZSBkZWZpbmVkIGluIHRoZSAnc3VpdGVzJyBmb2xkZXJcclxuICAgICAgICBjb25zdCBzdWl0ZXNGb2xkZXIgPSBwYXRoLmpvaW4odGFyZ2V0LmN3ZCwgJ3N1aXRlcycpO1xyXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHN1aXRlc0ZvbGRlcikpIHtcclxuICAgICAgICAgICAgc3VpdGVEZWZzID0gW1xyXG4gICAgICAgICAgICAgICAgLi4uc3VpdGVEZWZzLFxyXG4gICAgICAgICAgICAgICAgLi4ubG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyKHN1aXRlc0ZvbGRlcilcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbWVyZ2Ugc3VpdGVzIGNvbmZpZ3VyZWQgaW4gdGhlIHByb2plY3QgY29uZmlnIGZpbGUgYW5kIHRob3NlIGZvdW5kIGluICdzdWl0ZXMnIGZvbGRlclxyXG4gICAgICAgIHN1aXRlcyA9IGF3YWl0IFByb21pc2UuYWxsKHN1aXRlRGVmcy5tYXAoYXN5bmMgKHN1aXRlRGVmKSA9PiBhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbihzdWl0ZURlZiwgY29uZmlnKSkpO1xyXG4gICAgfVxyXG4gICAgLy8gZmlsdGVyIG91dCBzdWl0ZXMgaWYgJy0tc3VpdGVzJyBjb21tYW5kIGxpbmUgYXJndW1lbnQgd2FzIHNwZWNpZmllZFxyXG4gICAgaWYgKGFyZ3Yuc3VpdGVzICYmIHR5cGVvZiBhcmd2LnN1aXRlcyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZFN1aXRlTmFtZXMgPSBhcmd2LnN1aXRlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIHN1aXRlcyA9IHN1aXRlcy5maWx0ZXIoeCA9PiBzZWxlY3RlZFN1aXRlTmFtZXMuaW5jbHVkZXMoeC5uYW1lKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VpdGVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyKGZvbGRlclBhdGgpIHtcclxuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMoZm9sZGVyUGF0aCk7XHJcbiAgICBsZXQgc3VpdGVEZWZzID0gW107XHJcbiAgICBmb3JFYWNoKGZpbGVzLCBmaWxlID0+IHtcclxuICAgICAgICBpZiAocGF0aC5leHRuYW1lKGZpbGUpID09PSAnLmpzb24nKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGZvbGRlclBhdGgsIGZpbGUpO1xyXG4gICAgICAgICAgICBzdWl0ZURlZnMucHVzaChtb2R1bGVSZXF1aXJlKGZ1bGxQYXRoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3VpdGVEZWZzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZU9iamVjdEZpbGVQYXRoKGNvbmZpZywgYXJndiA9IHt9KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBjb25maWcudGFyZ2V0IHx8IHt9O1xyXG4gICAgY29uc3QgcG9GaWxlTmFtZSA9IGFyZ3YucG8gfHwgYCR7T1hZR0VOX1BBR0VfT0JKRUNUX0ZJTEVfTkFNRX0uanNgO1xyXG4gICAgY29uc3QgY3dkID0gdGFyZ2V0LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgbGV0IHBvRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoY3dkLCBwb0ZpbGVOYW1lKTtcclxuICAgIHBvRmlsZVBhdGggPSBmcy5leGlzdHNTeW5jKHBvRmlsZVBhdGgpID8gcG9GaWxlUGF0aCA6IG51bGw7XHJcblxyXG4gICAgaWYgKHBvRmlsZVBhdGgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBtb2R1bGVSZXF1aXJlKHBvRmlsZVBhdGgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcG9GaWxlUGF0aDtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHtwb0ZpbGVQYXRofS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlcyhjb25maWcsIGFyZ3YpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGNvbmZpZy50YXJnZXQgfHwge307XHJcbiAgICBjb25zdCBlbnZOYW1lID0gYXJndi5lbnYgfHwgY29uZmlnLmVudmlyb25tZW50IHx8ICdkZWZhdWx0JztcclxuICAgIGNvbnN0IGN3ZCA9IHRhcmdldC5jd2QgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRFbnZGaWxlID0gcGF0aC5qb2luKGN3ZCwgYCR7T1hZR0VOX0VOVl9GSUxFX05BTUV9LmpzYCk7XHJcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhkZWZhdWx0RW52RmlsZSkpIHtcclxuICAgICAgICBjb25zdCBlbnYgPSBtb2R1bGVSZXF1aXJlKGRlZmF1bHRFbnZGaWxlKTtcclxuICAgICAgICBpZiAoZW52ICYmIHR5cGVvZiBlbnYgPT09ICdvYmplY3QnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbnYsIGVudk5hbWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbnZbZW52TmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdHJ5IHRvIHJlc29sdmUgYSBkZWRpY2F0ZWQgZW52aXJvbm1lbnQgZmlsZSBpbiAnZW52JyBzdWIgZm9sZGVyXHJcbiAgICBjb25zdCBkZWRpY2F0ZWRFbnZGaWxlSnMgPSBwYXRoLmpvaW4oY3dkLCAnZW52JywgYCR7ZW52TmFtZX0uanNgKTtcclxuICAgIGNvbnN0IGRlZGljYXRlZEVudkZpbGVKc29uID0gcGF0aC5qb2luKGN3ZCwgJ2VudicsIGAke2Vudk5hbWV9Lmpzb25gKTtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGRlZGljYXRlZEVudkZpbGVKcykpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlUmVxdWlyZShkZWRpY2F0ZWRFbnZGaWxlSnMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZnMuZXhpc3RzU3luYyhkZWRpY2F0ZWRFbnZGaWxlSnNvbikpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlUmVxdWlyZShkZWRpY2F0ZWRFbnZGaWxlSnNvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge307XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnZpcm9ubWVudHModGFyZ2V0KSB7XHJcbiAgICBsZXQgdGFyZ2V0Q3dkID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5jd2QpIHtcclxuICAgICAgICB0YXJnZXRDd2QgPSB0YXJnZXQuY3dkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN3ZCA9IHRhcmdldEN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgY29uc3QgZGVmYXVsdEVudkZpbGUgPSBwYXRoLmpvaW4oY3dkLCBgJHtPWFlHRU5fRU5WX0ZJTEVfTkFNRX0uanNgKTtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGRlZmF1bHRFbnZGaWxlKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZmF1bHRFbnZGaWxlKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHtkZWZhdWx0RW52RmlsZX0uIFJlYXNvbjogJHtlLm1lc3NhZ2V9ICR7ZS5zdGFja31gKTtcclxuICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7fTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ3VyYXRpb25zKHRhcmdldCwgYXJndikge1xyXG4gICAgLy8gcHJvY2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzXHJcbiAgICBsZXQgdGFyZ2V0Q3dkID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5jd2QpIHtcclxuICAgICAgICB0YXJnZXRDd2QgPSB0YXJnZXQuY3dkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IERFRkFVTFRfT1BUUyA9IHtcclxuICAgICAgICBjd2Q6IHRhcmdldCA/ICh0YXJnZXRDd2QgfHwgcHJvY2Vzcy5jd2QoKSkgOiBwcm9jZXNzLmN3ZCgpLFxyXG4gICAgICAgIHRhcmdldDogdGFyZ2V0LFxyXG4gICAgICAgIGJyb3dzZXJOYW1lOiAnY2hyb21lJyxcclxuICAgICAgICBzZWxlbml1bVVybCA6ICdodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViJyxcclxuICAgICAgICBhcHBpdW1VcmwgOiAnaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1YicsXHJcbiAgICAgICAgcmVvcGVuU2Vzc2lvbjogZmFsc2UsXHJcbiAgICAgICAgcmVSdW5PbkZhaWxlZDogZmFsc2UsXHJcbiAgICAgICAgaXRlcmF0aW9ucyA6IDEsXHJcbiAgICAgICAgZGVidWdQb3J0OiBudWxsLFxyXG4gICAgICAgIGRlbGF5OiBudWxsLFxyXG4gICAgICAgIGNvbGxlY3REZXZpY2VMb2dzOiBmYWxzZSxcclxuICAgICAgICBjb2xsZWN0QXBwaXVtTG9nczogZmFsc2UsXHJcbiAgICAgICAgY29sbGVjdEJyb3dzZXJMb2dzOiBmYWxzZSxcclxuICAgICAgICByZXBvcnRpbmc6IHtcclxuICAgICAgICAgICAgcmVwb3J0ZXJzOiBbREVGQVVMVF9SRVBPUlRFUl1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhcmFtZXRlcnMgOiB7XHJcbiAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICAgIG1vZGU6ICdzZXEnXHJcbiAgICAgICAgfSxcclxuICAgIH07XHJcbiAgICAvLyByZXRyaWV2ZSBvcHRpb25zIHByb3ZpZGVkIHZpYSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXHJcbiAgICBjb25zdCBjbWRPcHRzID0gZ2V0Q29tbWFuZExpbmVPcHRpb25zKGFyZ3YpO1xyXG4gICAgLy8gaWYgdGhlIHRhcmdldCBpcyBveHlnZW4gY29uZmlnIGZpbGUsIG1lcmdlIGl0cyBjb250ZW50IHdpdGggdGhlIGRlZmF1bHQgb3B0aW9uc1xyXG4gICAgbGV0IHByb2pDb25maWdPcHRzID0ge307XHJcbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5uYW1lID09PSBPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSAmJiAodGFyZ2V0LmV4dGVuc2lvbiA9PT0gJy5qcycgfHwgdGFyZ2V0LmV4dGVuc2lvbiA9PT0gJy5qc29uJykpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBwcm9qQ29uZmlnT3B0cyA9IG1vZHVsZVJlcXVpcmUodGFyZ2V0LnBhdGgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke3RhcmdldC5wYXRofS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZW52cyA9IGdldEVudmlyb25tZW50cyh0YXJnZXQpO1xyXG5cclxuICAgIGlmIChwcm9qQ29uZmlnT3B0cy5lbnZzKSB7XHJcbiAgICAgICAgLy8gbWVyZ2UgZXh0ZXJuYWwgZW52aXJvbm1lbnRzIGRlZmluaXRpb24gd2l0aCB0aGUgb25lIGluIHRoZSBjb25maWcgZmlsZVxyXG4gICAgICAgIHByb2pDb25maWdPcHRzLmVudnMgPSB7IC4uLnByb2pDb25maWdPcHRzLmVudnMsIC4uLmVudnMgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHByb2pDb25maWdPcHRzID0geyAuLi5wcm9qQ29uZmlnT3B0cywgZW52czogZW52cyB9O1xyXG4gICAgfVxyXG4gICAgLy8gbWFrZSBzdXJlIHRvIHNldCBkZWZhdWx0IEhUTUwgcmVwb3J0ZXIgaWYgcmVwb3J0aW5nIG9wdGlvbnMgYXJlIG5vdCBwcm92aWRlZCBpbiBveHlnZW4uY29uZiBmaWxlIGFuZCB2aWEgY29tbWFuZCBsaW5lXHJcbiAgICBjb25zdCBpc0NtZE9wdHNSZXBvcnRGb3JtYXQgPSBjbWRPcHRzLnJlcG9ydGluZyAmJiBjbWRPcHRzLnJlcG9ydGluZy5yZXBvcnRlcnM7XHJcbiAgICBjb25zdCBpc0NvbmZpZ1JlcG9ydEZvcm1hdCA9IHByb2pDb25maWdPcHRzLnJlcG9ydGluZyAmJiBwcm9qQ29uZmlnT3B0cy5yZXBvcnRpbmcucmVwb3J0ZXJzO1xyXG4gICAgaWYgKCFpc0NtZE9wdHNSZXBvcnRGb3JtYXQgJiYgIWlzQ29uZmlnUmVwb3J0Rm9ybWF0KSB7XHJcbiAgICAgICAgaWYgKCFwcm9qQ29uZmlnT3B0cy5yZXBvcnRpbmcpIHtcclxuICAgICAgICAgICAgcHJvakNvbmZpZ09wdHMucmVwb3J0aW5nID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByb2pDb25maWdPcHRzLnJlcG9ydGluZy5yZXBvcnRlcnMgPSBbREVGQVVMVF9SRVBPUlRFUl07XHJcbiAgICB9XHJcbiAgICAvLyBkZXRlcm1pbmUgdGVzdCBuYW1lXHJcbiAgICBsZXQgbmFtZSA9IGNtZE9wdHMubmFtZSB8fCBwcm9qQ29uZmlnT3B0cy5uYW1lIHx8IG51bGw7XHJcbiAgICBpZiAoIW5hbWUgJiYgdGFyZ2V0KSB7XHJcbiAgICAgICAgbmFtZSA9IHRhcmdldC5uYW1lICE9PSBPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSA/IHRhcmdldC5uYW1lIDogdGFyZ2V0LmJhc2VOYW1lO1xyXG4gICAgfVxyXG4gICAgLy8gbWVyZ2Ugb3B0aW9ucyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBvcmRlciAodGhlIGxhc3Qgb25lIG92ZXJyaWRlcyB0aGUgcHJldmlvdXMgb25lKTpcclxuICAgIC8vIGRlZmF1bHQgb3B0aW9ucywgcHJvamVjdCBjb25maWcgZmlsZSwgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xyXG4gICAgcmV0dXJuIHsgLi4uREVGQVVMVF9PUFRTLCAuLi5wcm9qQ29uZmlnT3B0cywgLi4uY21kT3B0cywgbmFtZTogbmFtZSB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbWFuZExpbmVPcHRpb25zKGFyZ3YpIHtcclxuICAgIGNvbnN0IG9wdHMgPSB7XHJcbiAgICAgICAgLy8gc3dpdGNoOiAtLW5hbWUgXHJcbiAgICAgICAgbmFtZTogYXJndi5uYW1lIHx8IG51bGwsXHJcbiAgICAgICAgLy8gc3dpdGNoOiAtYiBvciAtLWJyb3dzZXJcclxuICAgICAgICBicm93c2VyTmFtZSA6IGFyZ3YuYiB8fCBhcmd2LmJyb3dzZXIgfHwgbnVsbCxcclxuICAgICAgICBzZWxlbml1bVVybCA6IGFyZ3YucyB8fCBhcmd2LnNlcnZlciB8fCBudWxsLFxyXG4gICAgICAgIGFwcGl1bVVybCA6IGFyZ3YucyB8fCBhcmd2LnNlcnZlciB8fCBudWxsLFxyXG4gICAgICAgIHJlb3BlblNlc3Npb246IGFyZ3YucmVvcGVuID8gYXJndi5yZW9wZW4gPT09ICd0cnVlJyA6IG51bGwsXHJcbiAgICAgICAgaXRlcmF0aW9ucyA6IGFyZ3YuaSA/IHBhcnNlSW50KGFyZ3YuaSkgOiAoYXJndi5pdGVyID8gcGFyc2VJbnQoYXJndi5pdGVyKSA6IG51bGwpLFxyXG4gICAgICAgIGRlYnVnUG9ydDogYXJndi5kYmdwb3J0IHx8IG51bGwsXHJcbiAgICAgICAgZGVsYXk6IGFyZ3YuZCB8fCBhcmd2LmRlbGF5IHx8IG51bGwsXHJcbiAgICB9O1xyXG4gICAgLy8gc3dpdGNoOiAtLXJmIGZsYWdcclxuICAgIGlmIChhcmd2LnJmICYmIHR5cGVvZiBhcmd2LnJmID09PSAnc3RyaW5nJyAmJiBhcmd2LnJmLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCByZXBvcnRGb3JtYXRzID0gYXJndi5yZi5zcGxpdCgnLCcpO1xyXG4gICAgICAgIG9wdHMucmVwb3J0aW5nID0ge1xyXG4gICAgICAgICAgICByZXBvcnRlcnM6IHJlcG9ydEZvcm1hdHNcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIHN3aXRjaDogLS1ybyAtIHNldCByZXBvcnRlciBvdXRwdXQgZGlyZWN0b3J5IGlmIHNldCBieSB1c2VyIHRocm91Z2ggY29tbmFuZCBsaW5lXHJcbiAgICAgICAgLy8gTk9URTogLS1ybyBzd2l0Y2ggbXVzdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCAtLXJmXHJcbiAgICAgICAgaWYgKGFyZ3Yucm8gJiYgdHlwZW9mIGFyZ3Yucm8gPT09ICdzdHJpbmcnICYmIGFyZ3Yucm8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBvcHRzLnJlcG9ydGluZy5vdXRwdXREaXIgPSBhcmd2LnJvO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG9wdGlvbjogLXAgb3IgLS1wYXJhbSBhbmQgLS1wbVxyXG4gICAgaWYgKGFyZ3YucCB8fCBhcmd2LnBhcmFtKSB7XHJcbiAgICAgICAgb3B0cy5wYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICBmaWxlOiBhcmd2LnAgfHwgYXJndi5wYXJhbSB8fCBudWxsLFxyXG4gICAgICAgICAgICBtb2RlOiBhcmd2LnBtIHx8ICdzZXEnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzd2l0Y2g6IC0tc3BlY3MgLSBzZXQgc3BlY3MgaWYgc2V0IGJ5IHVzZXIgdGhyb3VnaCBjb21uYW5kIGxpbmVcclxuICAgIGlmIChhcmd2LnNwZWNzICYmIHR5cGVvZiBhcmd2LnNwZWNzID09PSAnc3RyaW5nJyAmJiBhcmd2LnNwZWNzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBzcGVjcyA9IGFyZ3Yuc3BlY3Muc3BsaXQoJywnKTtcclxuICAgICAgICBvcHRzLnNwZWNzID0gc3BlY3M7XHJcbiAgICB9XHJcbiAgICAvLyBzd2l0Y2g6IC0tbW9kdWxlcyAtIHNldCBhIGxpc3Qgb2YgbW9kdWxlcyB0byBiZSBsb2FkZWQsIGlmIHNldCBieSB1c2VyIHRocm91Z2ggY29tbmFuZCBsaW5lXHJcbiAgICBpZiAoYXJndi5tb2R1bGVzICYmIHR5cGVvZiBhcmd2Lm1vZHVsZXMgPT09ICdzdHJpbmcnICYmIGFyZ3YubW9kdWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgbW9kdWxlcyA9IGFyZ3YubW9kdWxlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIG9wdHMubW9kdWxlcyA9IG1vZHVsZXM7XHJcbiAgICB9XHJcbiAgICAvLyByZW1vdmUgYW55IHByb3BlcnR5IHdpdGggbnVsbCB2YWx1ZSAoc28gaXQgd29uJ3Qgb3ZlcnJpZGUgZGVmYXVsdCB2YWx1ZXMgaWYgaXQncyBudWxsKVxyXG4gICAgcmV0dXJuIGRlbGV0ZU51bGxQcm9wZXJ0aWVzKG9wdHMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkZWxldGVOdWxsUHJvcGVydGllcyhvYmopIHtcclxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjbG9uZSA9IHsgLi4ub2JqIH07XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcclxuICAgIGZvckVhY2ggKGtleXMsIGtleSA9PiB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkgJiYgKG9ialtrZXldID09IG51bGwgfHwgb2JqW2tleV0gPT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICAgICAgICBkZWxldGUgY2xvbmVba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjbG9uZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NUYXJnZXRQYXRoKHRhcmdldFBhdGgsIGN3ZCkge1xyXG4gICAgLy8gZ2V0IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaWYgdXNlciBoYXMgbm90IHByb3ZpZGVkIHBhdGhcclxuICAgIGlmICh0eXBlb2YodGFyZ2V0UGF0aCkgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgdGFyZ2V0UGF0aCA9IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgfVxyXG4gICAgLy8gdXNlcidzIHBhdGggbWlnaHQgYmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgLSBtYWtlIHN1cmUgdGhlIHJlbGF0aXZlIHBhdGggd2lsbCB3b3JrXHJcbiAgICBlbHNlIHtcclxuICAgICAgICB0YXJnZXRQYXRoID0gb3h1dGlsLnJlc29sdmVQYXRoKHRhcmdldFBhdGgsIGN3ZCB8fCBwcm9jZXNzLmN3ZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGFyZ2V0UGF0aCkpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGF0cyA9IGZzLmxzdGF0U3luYyh0YXJnZXRQYXRoKTtcclxuICAgIGNvbnN0IGlzRGlyZWN0b3IgPSBzdGF0cy5pc0RpcmVjdG9yeSgpO1xyXG4gICAgaWYgKGlzRGlyZWN0b3IpIHtcclxuICAgICAgICAvLyBhcHBlbmQgb3h5Z2VuIGNvbmZpZyBmaWxlIG5hbWUgdG8gdGhlIGRpcmVjdG9yeSwgaWYgbm8gdGVzdCBjYXNlIGZpbGUgd2FzIHByb3ZpZGVkXHJcbiAgICAgICAgbGV0IGNvbmZpZ0ZpbGVQYXRoID0gcGF0aC5qb2luKHRhcmdldFBhdGgsIE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICsgJy5qcycpO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCkpIHtcclxuICAgICAgICAgICAgY29uZmlnRmlsZVBhdGggPSBwYXRoLmpvaW4odGFyZ2V0UGF0aCwgT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgKyAnLmpzb24nKTtcclxuICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGNvbmZpZ0ZpbGVQYXRoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGFyZ2V0UGF0aCA9IGNvbmZpZ0ZpbGVQYXRoO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhcmdldFBhdGgpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC8vIHBhdGggdG8gdGhlIGNvbmZpZyBvciAuanMgZmlsZVxyXG4gICAgICAgIHBhdGg6IHRhcmdldFBhdGgsXHJcbiAgICAgICAgLy8gd29ya2luZyBkaXJlY3RvcnlcclxuICAgICAgICBjd2Q6IGN3ZCB8fCBwYXRoLmRpcm5hbWUodGFyZ2V0UGF0aCksXHJcbiAgICAgICAgLy8gbmFtZSBvZiB0aGUgdGFyZ2V0IGZpbGUgd2l0aG91dCBleHRlbnNpb25cclxuICAgICAgICBuYW1lOiBveHV0aWwuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KHRhcmdldFBhdGgpLFxyXG4gICAgICAgIC8vIG5hbWUgaW5jbHVkaW5nIGV4dGVuc2lvblxyXG4gICAgICAgIGZ1bGxOYW1lOiBwYXRoLmJhc2VuYW1lKHRhcmdldFBhdGgpLFxyXG4gICAgICAgIC8vIHBhcmVudCBmb2xkZXIncyBuYW1lXHJcbiAgICAgICAgYmFzZU5hbWU6IHBhdGguYmFzZW5hbWUocGF0aC5kaXJuYW1lKHRhcmdldFBhdGgpKSxcclxuICAgICAgICAvLyB0YXJnZXQgZmlsZSBleHRlbnNpb25cclxuICAgICAgICBleHRlbnNpb246IHBhdGguZXh0bmFtZSh0YXJnZXRQYXRoKVxyXG4gICAgfTtcclxufSJdfQ==