@kontur.candy/tools 2.143.0 → 2.145.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +26 -4
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +2 -2
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
<a name="2.145.0"></a>
|
|
2
|
+
# [2.145.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.144.0...release/tools/v2.145.0) (2023-01-27)
|
|
3
|
+
|
|
4
|
+
<a name="2.144.0"></a>
|
|
5
|
+
# [2.144.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.143.0...release/tools/v2.144.0) (2023-01-27)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **Tools:** Исправлена регулярка поиска пререлизной версии при обновлении движка ([ebb13e1](https://git.skbkontur.ru/ke/candy-utils/commit/ebb13e1))
|
|
11
|
+
|
|
1
12
|
<a name="2.143.0"></a>
|
|
2
13
|
# [2.143.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.142.0...release/tools/v2.143.0) (2023-01-26)
|
|
3
14
|
|
|
@@ -37,13 +37,13 @@ var _PathPattern = require("../../../Commons/PathPattern");
|
|
|
37
37
|
|
|
38
38
|
var _TypingUtils = require("../../../../../Common/TypingUtils");
|
|
39
39
|
|
|
40
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _class;
|
|
40
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _class;
|
|
41
41
|
|
|
42
42
|
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); }
|
|
43
43
|
|
|
44
44
|
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; }
|
|
45
45
|
|
|
46
|
-
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs", _Results.httpReturn.Json), _dec2 = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText), _dec3 = (0, _Methods.httpGet)("/picklists/:picklistFilename", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("picklistFilename", _Params.httpType.String)), _dec4 = (0, _Methods.httpGet)("/converters", _Results.httpReturn.PlainText), _dec5 = (0, _Methods.httpGet)("/converters/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec6 = (0, _Methods.httpGet)("/
|
|
46
|
+
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs", _Results.httpReturn.Json), _dec2 = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText), _dec3 = (0, _Methods.httpGet)("/picklists/:picklistFilename", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("picklistFilename", _Params.httpType.String)), _dec4 = (0, _Methods.httpGet)("/converters", _Results.httpReturn.PlainText), _dec5 = (0, _Methods.httpGet)("/converters/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec6 = (0, _Methods.httpGet)("/mergers", _Results.httpReturn.PlainText), _dec7 = (0, _Methods.httpGet)("/mergers/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec8 = (0, _Methods.httpGet)("/schemas", _Results.httpReturn.PlainText), _dec9 = (0, _Methods.httpGet)("/schemas/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec10 = (0, _Methods.httpGet)("/presentations", _Results.httpReturn.PlainText), _dec11 = (0, _Methods.httpGet)("/presentations/:gfv.presentations.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec12 = (0, _Methods.httpGet)("/normalize", _Results.httpReturn.PlainText), _dec13 = (0, _Methods.httpGet)("/normalize/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec14 = (0, _Methods.httpGet)("/normalize/:gfv.normalize", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec15 = (0, _Methods.httpGet)("/attachmentpaths", _Results.httpReturn.PlainText), _dec16 = (0, _Methods.httpGet)("/attachmentpaths/:gfv.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec17 = (0, _Methods.httpGet)("/unmap", _Results.httpReturn.PlainText), _dec18 = (0, _Methods.httpGet)("/unmap/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec19 = (0, _Methods.httpGet)("/map", _Results.httpReturn.PlainText), _dec20 = (0, _Methods.httpGet)("/map/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec21 = (0, _Methods.httpGet)("/patch", _Results.httpReturn.PlainText), _dec22 = (0, _Methods.httpGet)("/patch/:gfv.xslt", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), (_class = class BuildServerBackendResourcesController extends _SingletonController.SingletonController {
|
|
47
47
|
constructor(allFarmConfig, flangNormalizationSourcesProvider) {
|
|
48
48
|
super();
|
|
49
49
|
this.allFarmConfig = void 0;
|
|
@@ -107,6 +107,28 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs
|
|
|
107
107
|
throw new _NotFoundWebError.NotFoundWebError("File not found", false);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
async getAllMergersFiles() {
|
|
111
|
+
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/mergers/*", {
|
|
112
|
+
cwd: path.join(i.farmDirectory)
|
|
113
|
+
}));
|
|
114
|
+
const files = (await Promise.all(promises)).flat();
|
|
115
|
+
return files.map(x => path.basename(x)).join("\n");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async getMergerFile(filename) {
|
|
119
|
+
const allFarmDirectories = this.allFarmConfig.map(i => i.farmDirectory).flat();
|
|
120
|
+
const formDirPath = allFarmDirectories.map(pth => path.join(pth));
|
|
121
|
+
const possibleFilePaths = formDirPath.map(i => (0, _ExtractGfvsFromFileName.extractGfvsFromFileName)(filename).map(gfv => path.join(i, `forms/${gfv}/mergers/${filename}`))).flat();
|
|
122
|
+
|
|
123
|
+
for (const filePath of possibleFilePaths) {
|
|
124
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
125
|
+
return new _StreamResultHandler.FileStreamResult(filePath);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
throw new _NotFoundWebError.NotFoundWebError("File not found", false);
|
|
130
|
+
}
|
|
131
|
+
|
|
110
132
|
async getAllSchemasFiles() {
|
|
111
133
|
if (this.allSchemasFiles === undefined) {
|
|
112
134
|
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/schemas/*", {
|
|
@@ -250,6 +272,6 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs
|
|
|
250
272
|
throw Error(`not found unmap ${gfv}.xml`);
|
|
251
273
|
}
|
|
252
274
|
|
|
253
|
-
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllGfvs", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllGfvs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPicklists", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllConvertersFiles", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getConverterFile", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "
|
|
275
|
+
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllGfvs", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllGfvs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPicklists", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllConvertersFiles", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getConverterFile", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMergersFiles", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMergersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMergerFile", [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, "getMergerFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllSchemasFiles", [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, "getAllSchemasFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormSchemas", [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, "getFormSchemas"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllFormPresentations", [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormPresentations", [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, "getFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllNormalizeFiles", [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, "getAllNormalizeFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getNormalizeFile", [_dec13], Object.getOwnPropertyDescriptor(_class.prototype, "getNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFLangNormalizeFile", [_dec14], Object.getOwnPropertyDescriptor(_class.prototype, "getFLangNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllAttachmentPathsFileNames", [_dec15], Object.getOwnPropertyDescriptor(_class.prototype, "getAllAttachmentPathsFileNames"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAttachmentPathFile", [_dec16], Object.getOwnPropertyDescriptor(_class.prototype, "getAttachmentPathFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllUnmapFiles", [_dec17], Object.getOwnPropertyDescriptor(_class.prototype, "getAllUnmapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getUnmapFile", [_dec18], Object.getOwnPropertyDescriptor(_class.prototype, "getUnmapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMapFiles", [_dec19], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMapFile", [_dec20], Object.getOwnPropertyDescriptor(_class.prototype, "getMapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPatchFiles", [_dec21], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPatchFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPatchFile", [_dec22], Object.getOwnPropertyDescriptor(_class.prototype, "getPatchFile"), _class.prototype)), _class));
|
|
254
276
|
exports.BuildServerBackendResourcesController = BuildServerBackendResourcesController;
|
|
255
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiSnNvbiIsIlBsYWluVGV4dCIsIlN0cmVhbVdpdGhNaW1lIiwiaHR0cFR5cGUiLCJTdHJpbmciLCJTdHJlYW0iLCJTaW5nbGV0b25Db250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJhbGxGYXJtQ29uZmlnIiwiZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIiwiZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciIsImFsbFNjaGVtYXNGaWxlcyIsInJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQiLCJ1bmRlZmluZWQiLCJnZXRBbGxHZnZzIiwicHJvbWlzZXMiLCJtYXAiLCJpIiwiY3dkIiwicGF0aCIsImpvaW4iLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2cyIsIlByb21pc2UiLCJhbGwiLCJmbGF0IiwieCIsInJlcGxhY2UiLCJnZXRBbGxQaWNrbGlzdHMiLCJmaWxlcyIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsU2NoZW1hc0ZpbGVzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJmaWxlUGF0dGVybiIsIlBhdGhQYXR0ZXJuIiwiZXhlY1N0cmljdCIsImZpbGUiLCJnZXRBbGxGb3JtUHJlc2VudGF0aW9ucyIsImdldEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0QWxsTm9ybWFsaXplRmlsZXMiLCJmbGFuZ0ZpbGVzIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsImdldE5vcm1hbGl6ZUZpbGUiLCJnZXRGTGFuZ05vcm1hbGl6ZUZpbGUiLCJTdHJlYW1SZXN1bHQiLCJnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQiLCJnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMiLCJnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcyIsImdldEF0dGFjaG1lbnRQYXRoRmlsZSIsImdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50IiwiZ2V0QWxsVW5tYXBGaWxlcyIsImdldFVubWFwRmlsZSIsImdldEFsbE1hcEZpbGVzIiwiZ2V0TWFwRmlsZSIsImdldEFsbFBhdGNoRmlsZXMiLCJnZXRQYXRjaEZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0lBSWFBLHFDLFdBbUJSLHNCQUFRLE9BQVIsRUFBaUJDLG9CQUFXQyxJQUE1QixDLFVBT0Esc0JBQVEsWUFBUixFQUFzQkQsb0JBQVdFLFNBQWpDLEMsVUFPQSxzQkFDRyw4QkFESCxFQUVHRixvQkFBV0csY0FBWCxDQUEwQixrQkFBMUIsQ0FGSCxFQUdHLDBCQUFhLGtCQUFiLEVBQWlDQyxpQkFBU0MsTUFBMUMsQ0FISCxDLFVBZUEsc0JBQVEsYUFBUixFQUF1Qkwsb0JBQVdFLFNBQWxDLEMsVUFTQSxzQkFBUSx1QkFBUixFQUFpQ0Ysb0JBQVdNLE1BQTVDLEVBQW9ELDBCQUFhLFVBQWIsRUFBeUJGLGlCQUFTQyxNQUFsQyxDQUFwRCxDLFVBZ0JBLHNCQUFRLFVBQVIsRUFBb0JMLG9CQUFXRSxTQUEvQixD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QUNyQyx3QkFBVSxzQkFBVixFQUFrQztBQUFFQyxNQUFBQSxHQUFHLEVBQUVDLElBQUksQ0FBQ0MsSUFBTCxDQUFVSCxDQUFDLENBQUNJLGFBQVo7QUFBUCxLQUFsQyxDQURhLENBQWpCO0FBR0EsVUFBTVEsS0FBSyxHQUFHLENBQUMsTUFBTU4sT0FBTyxDQUFDQyxHQUFSLENBQVlULFFBQVosQ0FBUCxFQUE4QlUsSUFBOUIsRUFBZDtBQUNBLFdBQU9JLEtBQUssQ0FBQ2IsR0FBTixDQUFVVSxDQUFDLElBQUlQLElBQUksQ0FBQ2lCLFFBQUwsQ0FBY1YsQ0FBZCxDQUFmLEVBQWlDTixJQUFqQyxDQUFzQyxJQUF0QyxDQUFQO0FBQ0g7O0FBR3dCLFFBQVptRCxZQUFZLENBQUM1QixHQUFELEVBQXlDO0FBQzlELFVBQU1YLFdBQVcsR0FBRyxLQUFLeEIsYUFBTCxDQUFtQlEsR0FBbkIsQ0FBdUJDLENBQUMsSUFDeENFLElBQUksQ0FBQ0MsSUFBTCxDQUFVSCxDQUFDLENBQUNJLGFBQVosRUFBMkIsT0FBM0IsRUFBb0NzQixHQUFwQyxFQUF5QyxPQUF6QyxFQUFtRCxHQUFFQSxHQUFJLE9BQXpELENBRGdCLENBQXBCOztBQUdBLFNBQUssTUFBTVYsUUFBWCxJQUF1QkQsV0FBdkIsRUFBb0M7QUFDaEMsVUFBSSxNQUFNLHlCQUFXQyxRQUFYLENBQVYsRUFBZ0M7QUFDNUIsZUFBTyxJQUFJWSxxQ0FBSixDQUFxQlosUUFBckIsQ0FBUDtBQUNIO0FBQ0o7O0FBQ0QsVUFBTUMsS0FBSyxDQUFFLG1CQUFrQlMsR0FBSSxNQUF4QixDQUFYO0FBQ0g7O0FBOU4wRSxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSwgUmVhZFN0cmVhbSB9IGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXywgeyBkZWJvdW5jZSB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvRXh0cmFjdEdmdnNGcm9tRmlsZU5hbWVcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGh0dHBHZXQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTWV0aG9kc1wiO1xuaW1wb3J0IHsgTm90Rm91bmRXZWJFcnJvciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9Ob3RGb3VuZFdlYkVycm9yXCI7XG5pbXBvcnQgeyBodHRwVHlwZSwgaHR0cFVybFBhcmFtIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1BhcmFtc1wiO1xuaW1wb3J0IHsgaHR0cFJldHVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzXCI7XG5pbXBvcnQge1xuICAgIEZpbGVTdHJlYW1SZXN1bHQsXG4gICAgU3RyZWFtUmVzdWx0LFxufSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0cy9TdHJlYW1SZXN1bHRIYW5kbGVyXCI7XG5pbXBvcnQgeyBTaW5nbGV0b25Db250cm9sbGVyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9FeHByZXNzV3JhcHBlci9TaW5nbGV0b25Db250cm9sbGVyXCI7XG5pbXBvcnQgeyBQYXRoUGF0dGVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL1BhdGhQYXR0ZXJuXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5cbmltcG9ydCB7IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIH0gZnJvbSBcIi4vSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyO1xuXG4gICAgcHJpdmF0ZSBhbGxTY2hlbWFzRmlsZXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQ6ICgpID0+IHZvaWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXSxcbiAgICAgICAgZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgPSBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9LCA1MDAwKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9nZnZzXCIsIGh0dHBSZXR1cm4uSnNvbilcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsR2Z2cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IGdsb2JBc3luYyhcImZvcm1zLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pKTtcbiAgICAgICAgY29uc3QgZ2Z2cyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGdmdnMubWFwKHggPT4geC5yZXBsYWNlKFwiZm9ybXMvXCIsIFwiXCIpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9waWNrbGlzdHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBpY2tsaXN0cygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBnbG9iQXN5bmMoXCJwaWNrbGlzdHMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHgucmVwbGFjZShcInBpY2tsaXN0cy9cIiwgXCJcIikpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3BpY2tsaXN0cy86cGlja2xpc3RGaWxlbmFtZVwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwicGlja2xpc3RGaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQaWNrbGlzdHMocGlja2xpc3RGaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZWFkU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIsIHBpY2tsaXN0RmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgcGlja2xpc3RGaWxlbmFtZSAke3BpY2tsaXN0RmlsZW5hbWV9YCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvY29udmVydGVyc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQ29udmVydGVyc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRDb252ZXJ0ZXJGaWxlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmFybURpcmVjdG9yaWVzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IGkuZmFybURpcmVjdG9yeSkuZmxhdCgpO1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IGFsbEZhcm1EaXJlY3Rvcmllcy5tYXAocHRoID0+IHBhdGguam9pbihwdGgpKTtcblxuICAgICAgICBjb25zdCBwb3NzaWJsZUZpbGVQYXRocyA9IGZvcm1EaXJQYXRoXG4gICAgICAgICAgICAubWFwKGkgPT4gZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUoZmlsZW5hbWUpLm1hcChnZnYgPT4gcGF0aC5qb2luKGksIGBmb3Jtcy8ke2dmdn0vY29udmVydGVycy8ke2ZpbGVuYW1lfWApKSlcbiAgICAgICAgICAgIC5mbGF0KCk7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgcG9zc2libGVGaWxlUGF0aHMpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsU2NoZW1hc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLmFsbFNjaGVtYXNGaWxlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovc2NoZW1hcy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxTY2hlbWFzRmlsZXM7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hcy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY2hlbWFzKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdHRlcm4gPSBuZXcgUGF0aFBhdHRlcm4oXCJ7Z2Z2fS4qLnhtbFwiKTtcbiAgICAgICAgY29uc3QgZ2Z2OiBzdHJpbmcgPSBmaWxlUGF0dGVybi5leGVjU3RyaWN0KGZpbGVuYW1lKS5nZnYgPz8gcmVqZWN0KCk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnXG4gICAgICAgICAgICAubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwic2NoZW1hc1wiLCBmaWxlbmFtZSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1QcmVzZW50YXRpb25zKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJmb3Jtcy9cIiwgXCJcIikucmVwbGFjZShcIi9cIiwgXCIuXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnMvOmdmdi5wcmVzZW50YXRpb25zLmpzb25cIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtUHJlc2VudGF0aW9ucyhnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJwcmVzZW50YXRpb25zLmpzb25cIikpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZVwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXplRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZmxhbmdGaWxlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBbLi4uZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSksIC4uLmZsYW5nRmlsZXNdLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9ybWFsaXplRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibm9ybWFsaXplXCIsIGAke2dmdn0ueG1sYClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemUvOmdmdi5ub3JtYWxpemVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGTGFuZ05vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2F0dGFjaG1lbnRwYXRoc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQXR0YWNobWVudFBhdGhzRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMoKTtcbiAgICAgICAgcmV0dXJuIGZsYW5nRmlsZXMuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHMvOmdmdi5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudFBhdGhGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxVbm1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3VubWFwLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRVbm1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInVubWFwXCIsIGAke2dmdn0ueG1sYClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL21hcC8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcC86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibWFwXCIsIGAke2dmdn0ueG1sYCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQYXRjaEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3BhdGNoLyoueHNsdFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoLzpnZnYueHNsdFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldFBhdGNoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicGF0Y2hcIiwgYCR7Z2Z2fS54c2x0YClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG59XG4iXX0=
|
|
277
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiSnNvbiIsIlBsYWluVGV4dCIsIlN0cmVhbVdpdGhNaW1lIiwiaHR0cFR5cGUiLCJTdHJpbmciLCJTdHJlYW0iLCJTaW5nbGV0b25Db250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJhbGxGYXJtQ29uZmlnIiwiZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIiwiZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciIsImFsbFNjaGVtYXNGaWxlcyIsInJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQiLCJ1bmRlZmluZWQiLCJnZXRBbGxHZnZzIiwicHJvbWlzZXMiLCJtYXAiLCJpIiwiY3dkIiwicGF0aCIsImpvaW4iLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2cyIsIlByb21pc2UiLCJhbGwiLCJmbGF0IiwieCIsInJlcGxhY2UiLCJnZXRBbGxQaWNrbGlzdHMiLCJmaWxlcyIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsTWVyZ2Vyc0ZpbGVzIiwiZ2V0TWVyZ2VyRmlsZSIsImdldEFsbFNjaGVtYXNGaWxlcyIsImdldEZvcm1TY2hlbWFzIiwiZmlsZVBhdHRlcm4iLCJQYXRoUGF0dGVybiIsImV4ZWNTdHJpY3QiLCJmaWxlIiwiZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMiLCJnZXRGb3JtUHJlc2VudGF0aW9ucyIsImdldEFsbE5vcm1hbGl6ZUZpbGVzIiwiZmxhbmdGaWxlcyIsImdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMiLCJnZXROb3JtYWxpemVGaWxlIiwiZ2V0RkxhbmdOb3JtYWxpemVGaWxlIiwiU3RyZWFtUmVzdWx0IiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiZ2V0QWxsQXR0YWNobWVudFBhdGhzRmlsZU5hbWVzIiwiZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMiLCJnZXRBdHRhY2htZW50UGF0aEZpbGUiLCJnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudCIsImdldEFsbFVubWFwRmlsZXMiLCJnZXRVbm1hcEZpbGUiLCJnZXRBbGxNYXBGaWxlcyIsImdldE1hcEZpbGUiLCJnZXRBbGxQYXRjaEZpbGVzIiwiZ2V0UGF0Y2hGaWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOztBQUNBOzs7Ozs7OztJQUlhQSxxQyxXQW1CUixzQkFBUSxPQUFSLEVBQWlCQyxvQkFBV0MsSUFBNUIsQyxVQU9BLHNCQUFRLFlBQVIsRUFBc0JELG9CQUFXRSxTQUFqQyxDLFVBT0Esc0JBQ0csOEJBREgsRUFFR0Ysb0JBQVdHLGNBQVgsQ0FBMEIsa0JBQTFCLENBRkgsRUFHRywwQkFBYSxrQkFBYixFQUFpQ0MsaUJBQVNDLE1BQTFDLENBSEgsQyxVQWVBLHNCQUFRLGFBQVIsRUFBdUJMLG9CQUFXRSxTQUFsQyxDLFVBU0Esc0JBQVEsdUJBQVIsRUFBaUNGLG9CQUFXTSxNQUE1QyxFQUFvRCwwQkFBYSxVQUFiLEVBQXlCRixpQkFBU0MsTUFBbEMsQ0FBcEQsQyxV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WixRQUFyQixDQUFQO0FBQ0g7QUFDSjs7QUFDRCxVQUFNQyxLQUFLLENBQUUsbUJBQWtCUyxHQUFJLE1BQXhCLENBQVg7QUFDSDs7QUF2UDBFLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBSZWFkU3RyZWFtIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBfLCB7IGRlYm91bmNlIH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgRmFybUNvbmZpZyB9IGZyb20gXCJUb29scy9zcmMvQ2FuZHlDTElcIjtcblxuaW1wb3J0IHsgZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9FeHRyYWN0R2Z2c0Zyb21GaWxlTmFtZVwiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBOb3RGb3VuZFdlYkVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL05vdEZvdW5kV2ViRXJyb3JcIjtcbmltcG9ydCB7IGh0dHBUeXBlLCBodHRwVXJsUGFyYW0gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7XG4gICAgRmlsZVN0cmVhbVJlc3VsdCxcbiAgICBTdHJlYW1SZXN1bHQsXG59IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzL1N0cmVhbVJlc3VsdEhhbmRsZXJcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IFBhdGhQYXR0ZXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvUGF0aFBhdHRlcm5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcblxuaW1wb3J0IHsgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgfSBmcm9tIFwiLi9JR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlcjogSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI7XG5cbiAgICBwcml2YXRlIGFsbFNjaGVtYXNGaWxlczogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZDogKCkgPT4gdm9pZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdLFxuICAgICAgICBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciA9IGZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlcjtcbiAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnID0gYWxsRmFybUNvbmZpZztcbiAgICAgICAgdGhpcy5yZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIDUwMDApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2dmdnNcIiwgaHR0cFJldHVybi5Kc29uKVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gZ2xvYkFzeW5jKFwiZm9ybXMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSkpO1xuICAgICAgICBjb25zdCBnZnZzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZ2Z2cy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJmb3Jtcy9cIiwgXCJcIikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BpY2tsaXN0c1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGlja2xpc3RzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IGdsb2JBc3luYyhcInBpY2tsaXN0cy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4geC5yZXBsYWNlKFwicGlja2xpc3RzL1wiLCBcIlwiKSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvcGlja2xpc3RzLzpwaWNrbGlzdEZpbGVuYW1lXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJwaWNrbGlzdEZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldFBpY2tsaXN0cyhwaWNrbGlzdEZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlYWRTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiwgcGlja2xpc3RGaWxlbmFtZSkpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVhZFN0cmVhbShwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCBwaWNrbGlzdEZpbGVuYW1lICR7cGlja2xpc3RGaWxlbmFtZX1gKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9jb252ZXJ0ZXJzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxDb252ZXJ0ZXJzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovY29udmVydGVycy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvY29udmVydGVycy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldENvbnZlcnRlckZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGYXJtRGlyZWN0b3JpZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gaS5mYXJtRGlyZWN0b3J5KS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gYWxsRmFybURpcmVjdG9yaWVzLm1hcChwdGggPT4gcGF0aC5qb2luKHB0aCkpO1xuXG4gICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZVBhdGhzID0gZm9ybURpclBhdGhcbiAgICAgICAgICAgIC5tYXAoaSA9PiBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZShmaWxlbmFtZSkubWFwKGdmdiA9PiBwYXRoLmpvaW4oaSwgYGZvcm1zLyR7Z2Z2fS9jb252ZXJ0ZXJzLyR7ZmlsZW5hbWV9YCkpKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBwb3NzaWJsZUZpbGVQYXRocykge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tZXJnZXJzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNZXJnZXJzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovbWVyZ2Vycy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWVyZ2Vycy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1lcmdlckZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGYXJtRGlyZWN0b3JpZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gaS5mYXJtRGlyZWN0b3J5KS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gYWxsRmFybURpcmVjdG9yaWVzLm1hcChwdGggPT4gcGF0aC5qb2luKHB0aCkpO1xuXG4gICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZVBhdGhzID0gZm9ybURpclBhdGhcbiAgICAgICAgICAgIC5tYXAoaSA9PiBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZShmaWxlbmFtZSkubWFwKGdmdiA9PiBwYXRoLmpvaW4oaSwgYGZvcm1zLyR7Z2Z2fS9tZXJnZXJzLyR7ZmlsZW5hbWV9YCkpKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBwb3NzaWJsZUZpbGVQYXRocykge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9zY2hlbWFzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxTY2hlbWFzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKHRoaXMuYWxsU2NoZW1hc0ZpbGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9zY2hlbWFzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgICAgICB0aGlzLmFsbFNjaGVtYXNGaWxlcyA9IGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbFNjaGVtYXNGaWxlcztcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9zY2hlbWFzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVNjaGVtYXMoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBmaWxlUGF0dGVybiA9IG5ldyBQYXRoUGF0dGVybihcIntnZnZ9LioueG1sXCIpO1xuICAgICAgICBjb25zdCBnZnY6IHN0cmluZyA9IGZpbGVQYXR0ZXJuLmV4ZWNTdHJpY3QoZmlsZW5hbWUpLmdmdiA/PyByZWplY3QoKTtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWdcbiAgICAgICAgICAgIC5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJzY2hlbWFzXCIsIGZpbGVuYW1lKSlcbiAgICAgICAgICAgIC5mbGF0KCk7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9uc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovcHJlc2VudGF0aW9ucy5qc29uXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHgucmVwbGFjZShcImZvcm1zL1wiLCBcIlwiKS5yZXBsYWNlKFwiL1wiLCBcIi5cIikpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9ucy86Z2Z2LnByZXNlbnRhdGlvbnMuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1QcmVzZW50YXRpb25zKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInByZXNlbnRhdGlvbnMuanNvblwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemVGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9ub3JtYWxpemUvKi54bWxcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICBjb25zdCBmbGFuZ0ZpbGVzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTtcbiAgICAgICAgcmV0dXJuIFsuLi5maWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKSwgLi4uZmxhbmdGaWxlc10uam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemUvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXROb3JtYWxpemVGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJub3JtYWxpemVcIiwgYCR7Z2Z2fS54bWxgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2Lm5vcm1hbGl6ZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZMYW5nTm9ybWFsaXplRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQoZ2Z2KSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvYXR0YWNobWVudHBhdGhzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZmxhbmdGaWxlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gZmxhbmdGaWxlcy5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2F0dGFjaG1lbnRwYXRocy86Z2Z2Lmpzb25cIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50UGF0aEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQoZ2Z2KSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFVubWFwRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovdW5tYXAvKi54bWxcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi91bm1hcC86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldFVubWFwRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwidW5tYXBcIiwgYCR7Z2Z2fS54bWxgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTWFwRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovbWFwLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWFwLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWFwRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJtYXBcIiwgYCR7Z2Z2fS54bWxgKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGF0Y2hcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBhdGNoRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovcGF0Y2gvKi54c2x0XCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGF0Y2gvOmdmdi54c2x0XCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGF0Y2hGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJwYXRjaFwiLCBgJHtnZnZ9LnhzbHRgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -35,7 +35,7 @@ let BuildServerBackendResourcesUpdatesController = (_dec = (0, _Methods.httpGet)
|
|
|
35
35
|
this.farmWatchers = void 0;
|
|
36
36
|
this.resourcesWatcher = void 0;
|
|
37
37
|
this.allFarmConfig = void 0;
|
|
38
|
-
this.farmWatchingRegexps = ["forms/*/schemas/*.rng.xml", "forms/*/converters/*", // NOTE Тут такое дело: почему-то иногда (иногда, то есть не всегда!), когда нам приходит запрос на
|
|
38
|
+
this.farmWatchingRegexps = ["forms/*/schemas/*.rng.xml", "forms/*/converters/*", "forms/*/mergers/*", // NOTE Тут такое дело: почему-то иногда (иногда, то есть не всегда!), когда нам приходит запрос на
|
|
39
39
|
// forms/*/presentations.json в этом классе возникает событие об измении этого файла и мы генерим очень много
|
|
40
40
|
// лишних событий об измении ресурсов и CandyApi зависает. Я пока не смог разобраться почему это так.
|
|
41
41
|
// "forms/*/presentations.json",
|
|
@@ -100,4 +100,4 @@ class Monitor {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlci50cyJdLCJuYW1lcyI6WyJCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciIsImh0dHBSZXR1cm4iLCJQbGFpblRleHQiLCJodHRwVHlwZSIsIk51bWJlciIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJsYXN0VXBkYXRlVGltZSIsInVwZGF0ZU1vbml0b3IiLCJNb25pdG9yIiwiZmFybVdhdGNoZXJzIiwicmVzb3VyY2VzV2F0Y2hlciIsImZhcm1XYXRjaGluZ1JlZ2V4cHMiLCJtYXAiLCJnbG9iVG9SZWdleHAiLCJoYW5kbGVGYXJtRlNVcGRhdGUiLCJldmVudFR5cGUiLCJmaWxlUGF0aCIsInNvbWUiLCJ4IiwidGVzdCIsIkRhdGUiLCJub3ciLCJwdWxzZUFsbCIsImJlZm9yZVN0YXJ0IiwiY29uZmlnIiwiZmFybURpcmVjdG9yeSIsInJlY3Vyc2l2ZSIsIl8iLCJkZWJvdW5jZSIsImdldExhc3RVcGRhdGVUaW1lIiwicHJldkxhc3RVcGRhdGVUaW1lIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJQcm9taXNlIiwicmFjZSIsIndhaXQiLCJhZnRlclN0b3AiLCJpIiwiY2xvc2UiLCJhd2FpdGVycyIsIndhaXRQcm9taXNlSGFuZGxlciIsInJlc29sdmUiLCJwdXNoIiwiYXdhaXRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztJQUVhQSw0QyxXQW1DUixzQkFDRywrQ0FESCxFQUVHQyxvQkFBV0MsU0FGZCxFQUdHLDRCQUFlLGdCQUFmLEVBQWlDQyxpQkFBU0MsTUFBMUMsQ0FISCxD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RUFBZ0M7QUFDNUJJLE1BQUFBLE9BQU87QUFDVjtBQUNKOztBQWJTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRlNXYXRjaGVyLCB3YXRjaCB9IGZyb20gXCJmc1wiO1xuXG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQXN5bmNVdGlsc1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBodHRwUXVlcnlQYXJhbSwgaHR0cFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcblxuaW1wb3J0IHsgZ2xvYlRvUmVnZXhwIH0gZnJvbSBcIi4vR2xvYlRvUmVnZXhwXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgbGFzdFVwZGF0ZVRpbWUgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlTW9uaXRvcjogTW9uaXRvciA9IG5ldyBNb25pdG9yKCk7XG4gICAgcHJpdmF0ZSBmYXJtV2F0Y2hlcnM/OiBGU1dhdGNoZXJbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlc1dhdGNoZXI/OiBGU1dhdGNoZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtV2F0Y2hpbmdSZWdleHBzID0gW1xuICAgICAgICBcImZvcm1zLyovc2NoZW1hcy8qLnJuZy54bWxcIixcbiAgICAgICAgXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLFxuICAgICAgICBcImZvcm1zLyovbWVyZ2Vycy8qXCIsXG4gICAgICAgIC8vIE5PVEUg0KLRg9GCINGC0LDQutC+0LUg0LTQtdC70L46INC/0L7Rh9C10LzRgy3RgtC+INC40L3QvtCz0LTQsCAo0LjQvdC+0LPQtNCwLCDRgtC+INC10YHRgtGMINC90LUg0LLRgdC10LPQtNCwISksINC60L7Qs9C00LAg0L3QsNC8INC/0YDQuNGF0L7QtNC40YIg0LfQsNC/0YDQvtGBINC90LBcbiAgICAgICAgLy8gZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb24g0LIg0Y3RgtC+0Lwg0LrQu9Cw0YHRgdC1INCy0L7Qt9C90LjQutCw0LXRgiDRgdC+0LHRi9GC0LjQtSDQvtCxINC40LfQvNC10L3QuNC4INGN0YLQvtCz0L4g0YTQsNC50LvQsCDQuCDQvNGLINCz0LXQvdC10YDQuNC8INC+0YfQtdC90Ywg0LzQvdC+0LPQvlxuICAgICAgICAvLyDQu9C40YjQvdC40YUg0YHQvtCx0YvRgtC40Lkg0L7QsSDQuNC30LzQtdC90LjQuCDRgNC10YHRg9GA0YHQvtCyINC4IENhbmR5QXBpINC30LDQstC40YHQsNC10YIuINCvINC/0L7QutCwINC90LUg0YHQvNC+0LMg0YDQsNC30L7QsdGA0LDRgtGM0YHRjyDQv9C+0YfQtdC80YMg0Y3RgtC+INGC0LDQui5cbiAgICAgICAgLy8gXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLFxuICAgICAgICBcImZvcm1zLyovZm9ybS5qc29uXCIsXG4gICAgICAgIFwiZm9ybXMvKi9zdWdhci8qLnhtbFwiLFxuICAgICAgICBcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi91bm1hcC8qLnhtbFwiLFxuICAgICAgICBcImZvcm1zLyovbWFwLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi9wYXRjaC8qLnhzbHRcIixcbiAgICAgICAgXCJwaWNrbGlzdHMvKlwiLFxuICAgIF0ubWFwKGdsb2JUb1JlZ2V4cCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMubGFzdFVwZGF0ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBiZWZvcmVTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mYXJtV2F0Y2hlcnMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGNvbmZpZyA9PlxuICAgICAgICAgICAgd2F0Y2goY29uZmlnLmZhcm1EaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0sIF8uZGVib3VuY2UodGhpcy5oYW5kbGVGYXJtRlNVcGRhdGUsIDIwMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3VwZGF0ZXMtb2JzZXJ2ZXIvY2hlY2stbGFzdC11cGRhdGUtbG9uZy1wb2xsXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uUGxhaW5UZXh0LFxuICAgICAgICBodHRwUXVlcnlQYXJhbShcInByZXZMYXN0VXBkYXRlXCIsIGh0dHBUeXBlLk51bWJlcilcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldExhc3RVcGRhdGVUaW1lKHByZXZMYXN0VXBkYXRlVGltZT86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmIChwcmV2TGFzdFVwZGF0ZVRpbWUgPT0gdW5kZWZpbmVkIHx8IHByZXZMYXN0VXBkYXRlVGltZSA8IHRoaXMubGFzdFVwZGF0ZVRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3RVcGRhdGVUaW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFt0aGlzLnVwZGF0ZU1vbml0b3Iud2FpdCgpLCBkZWxheSg2MDAwMCldKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFVwZGF0ZVRpbWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZhcm1XYXRjaGVycz8ubWFwKGkgPT4gaS5jbG9zZSgpKTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZXNXYXRjaGVyPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRmFybUZTVXBkYXRlID0gKGV2ZW50VHlwZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZhcm1XYXRjaGluZ1JlZ2V4cHMuc29tZSh4ID0+IHgudGVzdChmaWxlUGF0aCkpKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RVcGRhdGVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9uaXRvci5wdWxzZUFsbCgpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuY2xhc3MgTW9uaXRvciB7XG4gICAgcHJpdmF0ZSBhd2FpdGVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICAgIHB1YmxpYyB3YWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGhpcy53YWl0UHJvbWlzZUhhbmRsZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdWxzZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXdhaXRlcnMgPSBbLi4udGhpcy5hd2FpdGVyc107XG4gICAgICAgIHRoaXMuYXdhaXRlcnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhd2FpdGVyIG9mIGF3YWl0ZXJzKSB7XG4gICAgICAgICAgICBhd2FpdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHdhaXRQcm9taXNlSGFuZGxlciA9IChyZXNvbHZlOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYXdhaXRlcnMucHVzaChyZXNvbHZlKTtcbiAgICB9O1xufVxuIl19
|
|
@@ -69,7 +69,7 @@ async function upgradeFormEngine(farmDirectory, gfv, engineVersion, skipPreVersi
|
|
|
69
69
|
const engineVersionSpec = (0, _Version.parseCandyVersionSpec)((_formConfig$dependenc3 = formConfig.dependencies) === null || _formConfig$dependenc3 === void 0 ? void 0 : _formConfig$dependenc3.engine);
|
|
70
70
|
const generatorVersionSpec = (0, _Version.parseCandyVersionSpec)((_formConfig$dependenc4 = formConfig.dependencies) === null || _formConfig$dependenc4 === void 0 ? void 0 : _formConfig$dependenc4.generator);
|
|
71
71
|
|
|
72
|
-
if (engineVersionSpec.type === "pre" || generatorVersionSpec.type === "pre" || engineVersionSpec.type === "version" &&
|
|
72
|
+
if (engineVersionSpec.type === "pre" || generatorVersionSpec.type === "pre" || engineVersionSpec.type === "version" && /[a-zA-Z]/.test(engineVersionSpec.version) || generatorVersionSpec.type === "version" && /[a-zA-Z]/.test(generatorVersionSpec.version)) {
|
|
73
73
|
logger.log("Form version has prerelease version: Upgrade skipped due to flag skipPreVersions (--skip-pre-versions) specified");
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
@@ -175,4 +175,4 @@ async function upgradeFormPrerelease(farmDirectory, gfv, preid, logger) {
|
|
|
175
175
|
throw new Error(`Версии ${preid} не существует.`);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9VcGdyYWRlRm9ybS9SdW5VcGdyYWRlRm9ybS50cyJdLCJuYW1lcyI6WyJydW5VcGdyYWRlRm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9icyIsIkZvcm1HbG9icyIsInZhbGlkYXRlR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsImdmdiIsInJlc29sdmVHbG9ic1RvR2Z2cyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ1c2VDaUJ1aWxkIiwibG9nIiwidXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlIiwiZW5naW5lIiwidW5kZWZpbmVkIiwidXBncmFkZUZvcm1FbmdpbmUiLCJza2lwUHJlVmVyc2lvbnMiLCJwcmVpZCIsInVwZ3JhZGVGb3JtUHJlcmVsZWFzZSIsImVuZ2luZVZlcnNpb24iLCJmb3JtRGlyUGF0aCIsInBhdGgiLCJqb2luIiwiZm9ybUpzb25QYXRoIiwid2FybmluZyIsImZvcm1Db25maWciLCJkZXBlbmRlbmNpZXMiLCJnZW5lcmF0b3IiLCJlbmdpbmVWZXJzaW9uU3BlYyIsImdlbmVyYXRvclZlcnNpb25TcGVjIiwidHlwZSIsInRlc3QiLCJ2ZXJzaW9uIiwibW9kZSIsInNwYWNlcyIsIkVycm9yIiwiZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSIsImJ1aWxkIiwiZm9ybUdpdElnbm9yZVBhdGgiLCJnaXRJZ25vcmVDb250ZW50Iiwic3BsaXQiLCJpbmNsdWRlcyIsInRyaW1SaWdodCIsInByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFNQTs7QUFFQTs7QUFFQTs7QUFDQTs7Ozs7O0FBSU8sZUFBZUEsY0FBZixDQUNIQyxPQURHLEVBRUhDLE9BRkcsRUFHSEMsa0JBSEcsRUFJSEMsYUFKRyxFQUtVO0FBQ2IsUUFBTUMsU0FBUyxHQUFH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MEIseUJBQXlCLElBQUk3QixTQUFqQyxFQUE0QztBQUN4Q1csSUFBQUEsVUFBVSxDQUFDQyxZQUFYLEdBQTBCO0FBQUViLE1BQUFBLE1BQU0sRUFBRThCLHlCQUFWO0FBQXFDaEIsTUFBQUEsU0FBUyxFQUFFZ0I7QUFBaEQsS0FBMUI7QUFDQW5DLElBQUFBLE1BQU0sQ0FBQ0csR0FBUCxDQUFZLGlDQUFnQ2MsVUFBVSxDQUFDQyxZQUFYLENBQXdCYixNQUFPLEVBQTNFO0FBQ0EsVUFBTSx3QkFBVVUsWUFBVixFQUF3QkUsVUFBeEIsRUFBb0M7QUFBRVMsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBcEMsQ0FBTjtBQUNILEdBSkQsTUFJTztBQUNILFVBQU0sSUFBSUMsS0FBSixDQUFXLFVBQVNsQixLQUFNLGlCQUExQixDQUFOO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHJlbW92ZSwgd3JpdGVGaWxlLCB3cml0ZUpzb24gfSBmcm9tIFwiZnMtZXh0cmFcIjtcblxuaW1wb3J0IHtcbiAgICBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbixcbiAgICBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbixcbiAgICBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLFxuICAgIGlzRW5naW5lVmVyc2lvbkV4aXN0cyxcbn0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBpc05ld0Zvcm1Kc29uRm9ybWF0LCByZWFkRm9ybUNvbmZpZyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1ZlcnNpb25cIjtcblxuaW1wb3J0IHsgVXBncmFkZUZvcm1PcHRpb25zIH0gZnJvbSBcIi4vVXBncmFkZUZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5VcGdyYWRlRm9ybShcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IFVwZ3JhZGVGb3JtT3B0aW9ucyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpLFxuICAgICAgICBmYXJtRGlyZWN0b3J5XG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGdmdiBvZiBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZUdsb2JzVG9HZnZzKGZvcm1HbG9icywgZmFybURpcmVjdG9yeSkpIHtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgRk9STToke2dmdn1gKTtcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlQ2lCdWlsZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBidWlsZCBtb2RlXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlKHJlc291cmNlc0RpcmVjdG9yeSwgZmFybURpcmVjdG9yeSwgZ2Z2LCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgYnVpbGQgbW9kZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5lbmdpbmUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1FbmdpbmUoZmFybURpcmVjdG9yeSwgZ2Z2LCBvcHRpb25zLmVuZ2luZSwgb3B0aW9ucy5za2lwUHJlVmVyc2lvbnMsIGxvZ2dlcik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiRmluaXNoIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5wcmVpZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJCZWdpbiB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgICAgICBhd2FpdCB1cGdyYWRlRm9ybVByZXJlbGVhc2UoZmFybURpcmVjdG9yeSwgZ2Z2LCBvcHRpb25zLnByZWlkLCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtRW5naW5lKFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBlbmdpbmVWZXJzaW9uOiBzdHJpbmcsXG4gICAgc2tpcFByZVZlcnNpb25zOiBib29sZWFuLFxuICAgIGxvZ2dlcjogSUxvZ2dlclxuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIik7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb246IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBsb2dnZXIpO1xuICAgIGlmIChza2lwUHJlVmVyc2lvbnMpIHtcbiAgICAgICAgaWYgKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkICYmIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uU3BlYyA9IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lKTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvclZlcnNpb25TcGVjID0gcGFyc2VDYW5keVZlcnNpb25TcGVjKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwicHJlXCIgfHxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uU3BlYy50eXBlID09PSBcInByZVwiIHx8XG4gICAgICAgICAgICAgICAgKGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwidmVyc2lvblwiICYmIC9cXHcvLnRlc3QoZW5naW5lVmVyc2lvblNwZWMudmVyc2lvbikpIHx8XG4gICAgICAgICAgICAgICAgKGdlbmVyYXRvclZlcnNpb25TcGVjLnR5cGUgPT09IFwidmVyc2lvblwiICYmIC9cXHcvLnRlc3QoZ2VuZXJhdG9yVmVyc2lvblNwZWMudmVyc2lvbikpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIubG9nKFxuICAgICAgICAgICAgICAgICAgICBcIkZvcm0gdmVyc2lvbiBoYXMgcHJlcmVsZWFzZSB2ZXJzaW9uOiBVcGdyYWRlIHNraXBwZWQgZHVlIHRvIGZsYWcgc2tpcFByZVZlcnNpb25zICgtLXNraXAtcHJlLXZlcnNpb25zKSBzcGVjaWZpZWRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmb3JtQ29uZmlnLm1vZGUgPT09IFwibm8tZWRpdG9yXCIpIHtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBlZGl0b3I6IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbmZpZy5tb2RlID09PSBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiKSB7XG4gICAgICAgIGxvZ2dlci5sb2coXCJGb3JtIGRvZXMgbm90IGhhdmUgZWRpdG9yOiBVcGdyYWRlIHNraXBwZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT09IFwibGF0ZXN0XCIpIHtcbiAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgPSB7XG4gICAgICAgICAgICBlbmdpbmU6IGF3YWl0IGdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uKCksXG4gICAgICAgICAgICBnZW5lcmF0b3I6IGF3YWl0IGdldExhc3RTdGFibGVHZW5lcmF0b3JWZXJzaW9uKCksXG4gICAgICAgIH07XG4gICAgICAgIGxvZ2dlci5sb2coYFVwZGF0ZWQgdG8gbGFzdCBzdGFibGUgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGF3YWl0IGlzRW5naW5lVmVyc2lvbkV4aXN0cyhlbmdpbmVWZXJzaW9uKSkge1xuICAgICAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgPSB7IGVuZ2luZTogZW5naW5lVmVyc2lvbiwgZ2VuZXJhdG9yOiBlbmdpbmVWZXJzaW9uIH07XG4gICAgICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg0JLQtdGA0YHQuNC4ICR7ZW5naW5lVmVyc2lvbn0g0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgi5gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlKFxuICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBsb2dnZXI6IElMb2dnZXJcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUpzb25QYXRoKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoXCJmb3JtLmpzb24gZG9lcyBub3QgZXhpc3RzLiBVcGdyYWRlIHNraXBwZWQuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGdlbmVyYXRlZEZvcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKTtcbiAgICBpZiAoIWlzTmV3Rm9ybUpzb25Gb3JtYXQoZm9ybUpzb25QYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcItCk0LDQudC7IGZvcm0uanNvbiDRhNC+0YDQvNGLINC00L7Qu9C20LXQvSDQuNC80LXRgtGMINC90L7QstGL0Lkg0YTQvtGA0LzQsNGCINC30LDQstC40YHQuNC80L7RgdGC0LguINCe0LHRgNCw0YLQuNGC0LXRgdGMINC6INGA0LDRgdC30YDQsNCx0L7RgtGH0LjQutCw0Lwg0LfQsCDRgNCw0LfRitGP0YHQvdC10L3QuNGP0LzQuC5cIlxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBnZXRMb2dnZXIoKSk7XG4gICAgaWYgKGZvcm1Db25maWcuYnVpbGQgIT09IFwiY2lcIikge1xuICAgICAgICBmb3JtQ29uZmlnLmJ1aWxkID0gXCJjaVwiO1xuICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIlVwZGF0ZWQgZm9ybS5qc29uXCIpO1xuICAgIH1cbiAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhnZW5lcmF0ZWRGb3JtRGlyZWN0b3J5KSkge1xuICAgICAgICBhd2FpdCByZW1vdmUoZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSk7XG4gICAgICAgIGxvZ2dlci5sb2coXCJSZW1vdmVkIGZvcm0gZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgICBjb25zdCBmb3JtR2l0SWdub3JlUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCIuZ2l0aWdub3JlXCIpO1xuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZvcm1HaXRJZ25vcmVQYXRoKSkge1xuICAgICAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgaWYgKCFnaXRJZ25vcmVDb250ZW50LnNwbGl0KFwiXFxuXCIpLmluY2x1ZGVzKFwiZm9ybVwiKSkge1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZvcm1HaXRJZ25vcmVQYXRoLCBnaXRJZ25vcmVDb250ZW50LnRyaW1SaWdodCgpICsgXCJcXG5cIiArIFwiZm9ybVxcblwiKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJVcGRhdGVkIC5naXRpZ25vcmVcIik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIFwiZm9ybVxcblwiKTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIkNyZWF0ZWQgLmdpdGlnbm9yZVwiKTtcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtUHJlcmVsZWFzZShcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZ2Z2OiBzdHJpbmcsXG4gICAgcHJlaWQ6IHN0cmluZyxcbiAgICBsb2dnZXI6IElMb2dnZXJcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpO1xuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGxvZ2dlcik7XG4gICAgY29uc3QgcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiA9IGF3YWl0IGdldFByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24ocHJlaWQpO1xuXG4gICAgaWYgKHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sIGdlbmVyYXRvcjogcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIHByZXJlbGVhc2UgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDQktC10YDRgdC40LggJHtwcmVpZH0g0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgi5gKTtcbiAgICB9XG59XG4iXX0=
|
|
178
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9VcGdyYWRlRm9ybS9SdW5VcGdyYWRlRm9ybS50cyJdLCJuYW1lcyI6WyJydW5VcGdyYWRlRm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9icyIsIkZvcm1HbG9icyIsInZhbGlkYXRlR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsImdmdiIsInJlc29sdmVHbG9ic1RvR2Z2cyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ1c2VDaUJ1aWxkIiwibG9nIiwidXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlIiwiZW5naW5lIiwidW5kZWZpbmVkIiwidXBncmFkZUZvcm1FbmdpbmUiLCJza2lwUHJlVmVyc2lvbnMiLCJwcmVpZCIsInVwZ3JhZGVGb3JtUHJlcmVsZWFzZSIsImVuZ2luZVZlcnNpb24iLCJmb3JtRGlyUGF0aCIsInBhdGgiLCJqb2luIiwiZm9ybUpzb25QYXRoIiwid2FybmluZyIsImZvcm1Db25maWciLCJkZXBlbmRlbmNpZXMiLCJnZW5lcmF0b3IiLCJlbmdpbmVWZXJzaW9uU3BlYyIsImdlbmVyYXRvclZlcnNpb25TcGVjIiwidHlwZSIsInRlc3QiLCJ2ZXJzaW9uIiwibW9kZSIsInNwYWNlcyIsIkVycm9yIiwiZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSIsImJ1aWxkIiwiZm9ybUdpdElnbm9yZVBhdGgiLCJnaXRJZ25vcmVDb250ZW50Iiwic3BsaXQiLCJpbmNsdWRlcyIsInRyaW1SaWdodCIsInByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFNQTs7QUFFQTs7QUFFQTs7QUFDQTs7Ozs7O0FBSU8sZUFBZUEsY0FBZixDQUNIQyxPQURHLEVBRUhDLE9BRkcsRUFHSEMsa0JBSEcsRUFJSEMsYUFKRyxFQUtVO0FBQ2IsUUFBTUMsU0FBUyxHQUFHLE1BQU1DLDBCQUFVQyxhQUFWLENBQ3BCLE1BQU1ELDBCQUFVRSxpQkFBVixDQUE0Qk4sT0FBTyxDQUFDRyxTQUFwQyxFQUErQ0QsYUFBL0MsQ0FEYyxFQUVwQkEsYUFGb0IsQ0FBeEI7O0FBSUEsT0FBSyxNQUFNSyxHQUFYLElBQWtCLE1BQU1ILDBCQUFVSSxrQkFBVixDQUE2QkwsU0FBN0IsRUFBd0NELGFBQXhDLENBQXhCLEVBQWdGO0FBQzVFLFVBQU1PLE1BQU0sR0FBR1YsT0FBTyxDQUFDVSxNQUFSLENBQWVDLFVBQWYsQ0FBMkIsUUFBT0gsR0FBSSxFQUF0QyxDQUFmOztBQUNBLFFBQUlQLE9BQU8sQ0FBQ1csVUFBWixFQUF3QjtBQUNwQkYsTUFBQUEsTUFBTSxDQUFDRyxHQUFQLENBQVcsNEJBQVg7QUFDQSxZQUFNQyx3QkFBd0IsQ0FBQ1osa0JBQUQsRUFBcUJDLGFBQXJCLEVBQW9DSyxHQUFwQyxFQUF5Q0UsTUFBekMsQ0FBOUI7QUFDQUEsTUFBQUEsTUFBTSxDQUFDRyxHQUFQLENBQVcsNkJBQVg7QUFDSDs7QUFDRCxRQUFJWixPQUFPLENBQUNjLE1BQVIsSUFBa0JDLFNBQXRCLEVBQWlDO0FBQzdCTixNQUFBQSxNQUFNLENBQUNHLEdBQVAsQ0FBVyxnQ0FBWDtBQUNBLFlBQU1JLGlCQUFpQixDQUFDZCxhQUFELEVBQWdCSyxHQUFoQixFQUFxQlAsT0FBTyxDQUFDYyxNQUE3QixFQUFxQ2QsT0FBTyxDQUFDaUIsZUFBN0MsRUFBOERSLE1BQTlELENBQXZCO0FBQ0FBLE1BQUFBLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLGlDQUFYO0FBQ0g7O0FBQ0QsUUFBSVosT0FBTyxDQUFDa0IsS0FBUixJQUFpQkgsU0FBckIsRUFBZ0M7QUFDNUJOLE1BQUFBLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLGdDQUFYO0FBQ0EsWUFBTU8scUJBQXFCLENBQUNqQixhQUFELEVBQWdCSyxHQUFoQixFQUFxQlAsT0FBTyxDQUFDa0IsS0FBN0IsRUFBb0NULE1BQXBDLENBQTNCO0FBQ0FBLE1BQUFBLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLGlDQUFYO0FBQ0g7QUFDSjtBQUNKOztBQUVELGVBQWVJLGlCQUFmLENBQ0lkLGFBREosRUFFSUssR0FGSixFQUdJYSxhQUhKLEVBSUlILGVBSkosRUFLSVIsTUFMSixFQU1pQjtBQUNiLFFBQU1ZLFdBQVcsR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVyQixhQUFWLEVBQXlCLE9BQXpCLEVBQWtDSyxHQUFsQyxDQUFwQjtBQUNBLFFBQU1pQixZQUFZLEdBQUdGLElBQUksQ0FBQ0MsSUFBTCxDQUFVRixXQUFWLEVBQXVCLFdBQXZCLENBQXJCOztBQUNBLE1BQUksRUFBRSxNQUFNLHlCQUFXRyxZQUFYLENBQVIsQ0FBSixFQUF1QztBQUNuQ2YsSUFBQUEsTUFBTSxDQUFDZ0IsT0FBUCxDQUFlLCtDQUFmO0FBQ0E7QUFDSDs7QUFDRCxRQUFNQyxVQUFVLEdBQUcsTUFBTSxxQ0FBZUYsWUFBZixFQUE2QmYsTUFBN0IsQ0FBekI7O0FBQ0EsTUFBSVEsZUFBSixFQUFxQjtBQUFBOztBQUNqQixRQUFJLDBCQUFBUyxVQUFVLENBQUNDLFlBQVgsZ0ZBQXlCYixNQUF6QixLQUFtQ0MsU0FBbkMsSUFBZ0QsMkJBQUFXLFVBQVUsQ0FBQ0MsWUFBWCxrRkFBeUJDLFNBQXpCLEtBQXNDYixTQUExRixFQUFxRztBQUFBOztBQUNqRyxZQUFNYyxpQkFBaUIsR0FBRyw4REFBc0JILFVBQVUsQ0FBQ0MsWUFBakMsMkRBQXNCLHVCQUF5QmIsTUFBL0MsQ0FBMUI7QUFDQSxZQUFNZ0Isb0JBQW9CLEdBQUcsOERBQXNCSixVQUFVLENBQUNDLFlBQWpDLDJEQUFzQix1QkFBeUJDLFNBQS9DLENBQTdCOztBQUNBLFVBQ0lDLGlCQUFpQixDQUFDRSxJQUFsQixLQUEyQixLQUEzQixJQUNBRCxvQkFBb0IsQ0FBQ0MsSUFBckIsS0FBOEIsS0FEOUIsSUFFQ0YsaUJBQWlCLENBQUNFLElBQWxCLEtBQTJCLFNBQTNCLElBQXdDLFdBQVdDLElBQVgsQ0FBZ0JILGlCQUFpQixDQUFDSSxPQUFsQyxDQUZ6QyxJQUdDSCxvQkFBb0IsQ0FBQ0MsSUFBckIsS0FBOEIsU0FBOUIsSUFBMkMsV0FBV0MsSUFBWCxDQUFnQkYsb0JBQW9CLENBQUNHLE9BQXJDLENBSmhELEVBS0U7QUFDRXhCLFFBQUFBLE1BQU0sQ0FBQ0csR0FBUCxDQUNJLGtIQURKO0FBR0E7QUFDSDtBQUNKO0FBQ0o7O0FBQ0QsTUFBSWMsVUFBVSxDQUFDUSxJQUFYLEtBQW9CLFdBQXhCLEVBQXFDO0FBQ2pDekIsSUFBQUEsTUFBTSxDQUFDRyxHQUFQLENBQVcsNENBQVg7QUFDQTtBQUNIOztBQUNELE1BQUljLFVBQVUsQ0FBQ1EsSUFBWCxLQUFvQixnQ0FBeEIsRUFBMEQ7QUFDdER6QixJQUFBQSxNQUFNLENBQUNHLEdBQVAsQ0FBVyw0Q0FBWDtBQUNBO0FBQ0g7O0FBQ0QsTUFBSVEsYUFBYSxLQUFLLFFBQXRCLEVBQWdDO0FBQzVCTSxJQUFBQSxVQUFVLENBQUNDLFlBQVgsR0FBMEI7QUFDdEJiLE1BQUFBLE1BQU0sRUFBRSxNQUFNLHdEQURRO0FBRXRCYyxNQUFBQSxTQUFTLEVBQUUsTUFBTTtBQUZLLEtBQTFCO0FBSUFuQixJQUFBQSxNQUFNLENBQUNHLEdBQVAsQ0FBWSxrQ0FBaUNjLFVBQVUsQ0FBQ0MsWUFBWCxDQUF3QmIsTUFBTyxFQUE1RTtBQUNBLFVBQU0sd0JBQVVVLFlBQVYsRUFBd0JFLFVBQXhCLEVBQW9DO0FBQUVTLE1BQUFBLE1BQU0sRUFBRTtBQUFWLEtBQXBDLENBQU47QUFDSCxHQVBELE1BT087QUFDSCxRQUFJLE1BQU0sa0RBQXNCZixhQUF0QixDQUFWLEVBQWdEO0FBQzVDTSxNQUFBQSxVQUFVLENBQUNDLFlBQVgsR0FBMEI7QUFBRWIsUUFBQUEsTUFBTSxFQUFFTSxhQUFWO0FBQXlCUSxRQUFBQSxTQUFTLEVBQUVSO0FBQXBDLE9BQTFCO0FBQ0FYLE1BQUFBLE1BQU0sQ0FBQ0csR0FBUCxDQUFZLHNCQUFxQmMsVUFBVSxDQUFDQyxZQUFYLENBQXdCYixNQUFPLEVBQWhFO0FBQ0EsWUFBTSx3QkFBVVUsWUFBVixFQUF3QkUsVUFBeEIsRUFBb0M7QUFBRVMsUUFBQUEsTUFBTSxFQUFFO0FBQVYsT0FBcEMsQ0FBTjtBQUNILEtBSkQsTUFJTztBQUNILFlBQU0sSUFBSUMsS0FBSixDQUFXLFVBQVNoQixhQUFjLGlCQUFsQyxDQUFOO0FBQ0g7QUFDSjtBQUNKOztBQUVELGVBQWVQLHdCQUFmLENBQ0laLGtCQURKLEVBRUlDLGFBRkosRUFHSUssR0FISixFQUlJRSxNQUpKLEVBS2lCO0FBQ2IsUUFBTVksV0FBVyxHQUFHQyxJQUFJLENBQUNDLElBQUwsQ0FBVXJCLGFBQVYsRUFBeUIsT0FBekIsRUFBa0NLLEdBQWxDLENBQXBCO0FBQ0EsUUFBTWlCLFlBQVksR0FBR0YsSUFBSSxDQUFDQyxJQUFMLENBQVVGLFdBQVYsRUFBdUIsV0FBdkIsQ0FBckI7O0FBQ0EsTUFBSSxFQUFFLE1BQU0seUJBQVdHLFlBQVgsQ0FBUixDQUFKLEVBQXVDO0FBQ25DZixJQUFBQSxNQUFNLENBQUNnQixPQUFQLENBQWUsNkNBQWY7QUFDQTtBQUNIOztBQUNELFFBQU1ZLHNCQUFzQixHQUFHZixJQUFJLENBQUNDLElBQUwsQ0FBVUYsV0FBVixFQUF1QixNQUF2QixDQUEvQjs7QUFDQSxNQUFJLENBQUMsMENBQW9CRyxZQUFwQixDQUFMLEVBQXdDO0FBQ3BDLFVBQU0sSUFBSVksS0FBSixDQUNGLDJHQURFLENBQU47QUFHSDs7QUFDRCxRQUFNVixVQUFVLEdBQUcsTUFBTSxxQ0FBZUYsWUFBZixFQUE2Qiw4QkFBN0IsQ0FBekI7O0FBQ0EsTUFBSUUsVUFBVSxDQUFDWSxLQUFYLEtBQXFCLElBQXpCLEVBQStCO0FBQzNCWixJQUFBQSxVQUFVLENBQUNZLEtBQVgsR0FBbUIsSUFBbkI7QUFDQSxVQUFNLHdCQUFVZCxZQUFWLEVBQXdCRSxVQUF4QixFQUFvQztBQUFFUyxNQUFBQSxNQUFNLEVBQUU7QUFBVixLQUFwQyxDQUFOO0FBQ0ExQixJQUFBQSxNQUFNLENBQUNHLEdBQVAsQ0FBVyxtQkFBWDtBQUNIOztBQUNELE1BQUksTUFBTSx5QkFBV3lCLHNCQUFYLENBQVYsRUFBOEM7QUFDMUMsVUFBTSxxQkFBT0Esc0JBQVAsQ0FBTjtBQUNBNUIsSUFBQUEsTUFBTSxDQUFDRyxHQUFQLENBQVcsd0JBQVg7QUFDSDs7QUFDRCxRQUFNMkIsaUJBQWlCLEdBQUdqQixJQUFJLENBQUNDLElBQUwsQ0FBVUYsV0FBVixFQUF1QixZQUF2QixDQUExQjs7QUFDQSxNQUFJLE1BQU0seUJBQVdrQixpQkFBWCxDQUFWLEVBQXlDO0FBQ3JDLFVBQU1DLGdCQUFnQixHQUFHLE1BQU0sdUJBQVNELGlCQUFULEVBQTRCLE1BQTVCLENBQS9COztBQUNBLFFBQUksQ0FBQ0MsZ0JBQWdCLENBQUNDLEtBQWpCLENBQXVCLElBQXZCLEVBQTZCQyxRQUE3QixDQUFzQyxNQUF0QyxDQUFMLEVBQW9EO0FBQ2hELFlBQU0sd0JBQVVILGlCQUFWLEVBQTZCQyxnQkFBZ0IsQ0FBQ0csU0FBakIsS0FBK0IsSUFBL0IsR0FBc0MsUUFBbkUsQ0FBTjtBQUNBbEMsTUFBQUEsTUFBTSxDQUFDRyxHQUFQLENBQVcsb0JBQVg7QUFDSDtBQUNKLEdBTkQsTUFNTztBQUNILFVBQU0sd0JBQVUyQixpQkFBVixFQUE2QixRQUE3QixDQUFOO0FBQ0E5QixJQUFBQSxNQUFNLENBQUNHLEdBQVAsQ0FBVyxvQkFBWDtBQUNIO0FBQ0o7O0FBRUQsZUFBZU8scUJBQWYsQ0FDSWpCLGFBREosRUFFSUssR0FGSixFQUdJVyxLQUhKLEVBSUlULE1BSkosRUFLaUI7QUFDYixRQUFNWSxXQUFXLEdBQUdDLElBQUksQ0FBQ0MsSUFBTCxDQUFVckIsYUFBVixFQUF5QixPQUF6QixFQUFrQ0ssR0FBbEMsQ0FBcEI7QUFDQSxRQUFNaUIsWUFBWSxHQUFHRixJQUFJLENBQUNDLElBQUwsQ0FBVUYsV0FBVixFQUF1QixXQUF2QixDQUFyQjtBQUNBLFFBQU1LLFVBQVUsR0FBRyxNQUFNLHFDQUFlRixZQUFmLEVBQTZCZixNQUE3QixDQUF6QjtBQUNBLFFBQU1tQyx5QkFBeUIsR0FBRyxNQUFNLHlEQUE2QjFCLEtBQTdCLENBQXhDOztBQUVBLE1BQUkwQix5QkFBeUIsSUFBSTdCLFNBQWpDLEVBQTRDO0FBQ3hDVyxJQUFBQSxVQUFVLENBQUNDLFlBQVgsR0FBMEI7QUFBRWIsTUFBQUEsTUFBTSxFQUFFOEIseUJBQVY7QUFBcUNoQixNQUFBQSxTQUFTLEVBQUVnQjtBQUFoRCxLQUExQjtBQUNBbkMsSUFBQUEsTUFBTSxDQUFDRyxHQUFQLENBQVksaUNBQWdDYyxVQUFVLENBQUNDLFlBQVgsQ0FBd0JiLE1BQU8sRUFBM0U7QUFDQSxVQUFNLHdCQUFVVSxZQUFWLEVBQXdCRSxVQUF4QixFQUFvQztBQUFFUyxNQUFBQSxNQUFNLEVBQUU7QUFBVixLQUFwQyxDQUFOO0FBQ0gsR0FKRCxNQUlPO0FBQ0gsVUFBTSxJQUFJQyxLQUFKLENBQVcsVUFBU2xCLEtBQU0saUJBQTFCLENBQU47QUFDSDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzLCByZWFkRmlsZSwgcmVtb3ZlLCB3cml0ZUZpbGUsIHdyaXRlSnNvbiB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQge1xuICAgIGdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uLFxuICAgIGdldExhc3RTdGFibGVHZW5lcmF0b3JWZXJzaW9uLFxuICAgIGdldFByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sXG4gICAgaXNFbmdpbmVWZXJzaW9uRXhpc3RzLFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IGlzTmV3Rm9ybUpzb25Gb3JtYXQsIHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgcGFyc2VDYW5keVZlcnNpb25TcGVjIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvVmVyc2lvblwiO1xuXG5pbXBvcnQgeyBVcGdyYWRlRm9ybU9wdGlvbnMgfSBmcm9tIFwiLi9VcGdyYWRlRm9ybU9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blVwZ3JhZGVGb3JtKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogVXBncmFkZUZvcm1PcHRpb25zLFxuICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnZhbGlkYXRlR2xvYnMoXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuICAgIGZvciAoY29uc3QgZ2Z2IG9mIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlR2xvYnNUb0dmdnMoZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSkge1xuICAgICAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApO1xuICAgICAgICBpZiAob3B0aW9ucy51c2VDaUJ1aWxkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGJ1aWxkIG1vZGVcIik7XG4gICAgICAgICAgICBhd2FpdCB1cGdyYWRlRm9ybVRvQ2lCdWlsZE1vZGUocmVzb3VyY2VzRGlyZWN0b3J5LCBmYXJtRGlyZWN0b3J5LCBnZnYsIGxvZ2dlcik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiRmluaXNoIHVwZ3JhZGluZyBidWlsZCBtb2RlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmVuZ2luZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJCZWdpbiB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgICAgICBhd2FpdCB1cGdyYWRlRm9ybUVuZ2luZShmYXJtRGlyZWN0b3J5LCBnZnYsIG9wdGlvbnMuZW5naW5lLCBvcHRpb25zLnNraXBQcmVWZXJzaW9ucywgbG9nZ2VyKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJGaW5pc2ggdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLnByZWlkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgICAgIGF3YWl0IHVwZ3JhZGVGb3JtUHJlcmVsZWFzZShmYXJtRGlyZWN0b3J5LCBnZnYsIG9wdGlvbnMucHJlaWQsIGxvZ2dlcik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiRmluaXNoIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1FbmdpbmUoXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGdmdjogc3RyaW5nLFxuICAgIGVuZ2luZVZlcnNpb246IHN0cmluZyxcbiAgICBza2lwUHJlVmVyc2lvbnM6IGJvb2xlYW4sXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdik7XG4gICAgY29uc3QgZm9ybUpzb25QYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKTtcbiAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgIGxvZ2dlci53YXJuaW5nKFwiRm9ybSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbjogVXBncmFkZSBza2lwcGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGxvZ2dlcik7XG4gICAgaWYgKHNraXBQcmVWZXJzaW9ucykge1xuICAgICAgICBpZiAoZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXM/LmVuZ2luZSAhPSB1bmRlZmluZWQgJiYgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXM/LmdlbmVyYXRvciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb25TcGVjID0gcGFyc2VDYW5keVZlcnNpb25TcGVjKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUpO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yVmVyc2lvblNwZWMgPSBwYXJzZUNhbmR5VmVyc2lvblNwZWMoZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXM/LmdlbmVyYXRvcik7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvblNwZWMudHlwZSA9PT0gXCJwcmVcIiB8fFxuICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb25TcGVjLnR5cGUgPT09IFwicHJlXCIgfHxcbiAgICAgICAgICAgICAgICAoZW5naW5lVmVyc2lvblNwZWMudHlwZSA9PT0gXCJ2ZXJzaW9uXCIgJiYgL1thLXpBLVpdLy50ZXN0KGVuZ2luZVZlcnNpb25TcGVjLnZlcnNpb24pKSB8fFxuICAgICAgICAgICAgICAgIChnZW5lcmF0b3JWZXJzaW9uU3BlYy50eXBlID09PSBcInZlcnNpb25cIiAmJiAvW2EtekEtWl0vLnRlc3QoZ2VuZXJhdG9yVmVyc2lvblNwZWMudmVyc2lvbikpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIubG9nKFxuICAgICAgICAgICAgICAgICAgICBcIkZvcm0gdmVyc2lvbiBoYXMgcHJlcmVsZWFzZSB2ZXJzaW9uOiBVcGdyYWRlIHNraXBwZWQgZHVlIHRvIGZsYWcgc2tpcFByZVZlcnNpb25zICgtLXNraXAtcHJlLXZlcnNpb25zKSBzcGVjaWZpZWRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmb3JtQ29uZmlnLm1vZGUgPT09IFwibm8tZWRpdG9yXCIpIHtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBlZGl0b3I6IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbmZpZy5tb2RlID09PSBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiKSB7XG4gICAgICAgIGxvZ2dlci5sb2coXCJGb3JtIGRvZXMgbm90IGhhdmUgZWRpdG9yOiBVcGdyYWRlIHNraXBwZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT09IFwibGF0ZXN0XCIpIHtcbiAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgPSB7XG4gICAgICAgICAgICBlbmdpbmU6IGF3YWl0IGdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uKCksXG4gICAgICAgICAgICBnZW5lcmF0b3I6IGF3YWl0IGdldExhc3RTdGFibGVHZW5lcmF0b3JWZXJzaW9uKCksXG4gICAgICAgIH07XG4gICAgICAgIGxvZ2dlci5sb2coYFVwZGF0ZWQgdG8gbGFzdCBzdGFibGUgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGF3YWl0IGlzRW5naW5lVmVyc2lvbkV4aXN0cyhlbmdpbmVWZXJzaW9uKSkge1xuICAgICAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgPSB7IGVuZ2luZTogZW5naW5lVmVyc2lvbiwgZ2VuZXJhdG9yOiBlbmdpbmVWZXJzaW9uIH07XG4gICAgICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg0JLQtdGA0YHQuNC4ICR7ZW5naW5lVmVyc2lvbn0g0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgi5gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlKFxuICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBsb2dnZXI6IElMb2dnZXJcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUpzb25QYXRoKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoXCJmb3JtLmpzb24gZG9lcyBub3QgZXhpc3RzLiBVcGdyYWRlIHNraXBwZWQuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGdlbmVyYXRlZEZvcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKTtcbiAgICBpZiAoIWlzTmV3Rm9ybUpzb25Gb3JtYXQoZm9ybUpzb25QYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcItCk0LDQudC7IGZvcm0uanNvbiDRhNC+0YDQvNGLINC00L7Qu9C20LXQvSDQuNC80LXRgtGMINC90L7QstGL0Lkg0YTQvtGA0LzQsNGCINC30LDQstC40YHQuNC80L7RgdGC0LguINCe0LHRgNCw0YLQuNGC0LXRgdGMINC6INGA0LDRgdC30YDQsNCx0L7RgtGH0LjQutCw0Lwg0LfQsCDRgNCw0LfRitGP0YHQvdC10L3QuNGP0LzQuC5cIlxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBnZXRMb2dnZXIoKSk7XG4gICAgaWYgKGZvcm1Db25maWcuYnVpbGQgIT09IFwiY2lcIikge1xuICAgICAgICBmb3JtQ29uZmlnLmJ1aWxkID0gXCJjaVwiO1xuICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIlVwZGF0ZWQgZm9ybS5qc29uXCIpO1xuICAgIH1cbiAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhnZW5lcmF0ZWRGb3JtRGlyZWN0b3J5KSkge1xuICAgICAgICBhd2FpdCByZW1vdmUoZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSk7XG4gICAgICAgIGxvZ2dlci5sb2coXCJSZW1vdmVkIGZvcm0gZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgICBjb25zdCBmb3JtR2l0SWdub3JlUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCIuZ2l0aWdub3JlXCIpO1xuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZvcm1HaXRJZ25vcmVQYXRoKSkge1xuICAgICAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgaWYgKCFnaXRJZ25vcmVDb250ZW50LnNwbGl0KFwiXFxuXCIpLmluY2x1ZGVzKFwiZm9ybVwiKSkge1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZvcm1HaXRJZ25vcmVQYXRoLCBnaXRJZ25vcmVDb250ZW50LnRyaW1SaWdodCgpICsgXCJcXG5cIiArIFwiZm9ybVxcblwiKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJVcGRhdGVkIC5naXRpZ25vcmVcIik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIFwiZm9ybVxcblwiKTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIkNyZWF0ZWQgLmdpdGlnbm9yZVwiKTtcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtUHJlcmVsZWFzZShcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZ2Z2OiBzdHJpbmcsXG4gICAgcHJlaWQ6IHN0cmluZyxcbiAgICBsb2dnZXI6IElMb2dnZXJcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpO1xuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGxvZ2dlcik7XG4gICAgY29uc3QgcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiA9IGF3YWl0IGdldFByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24ocHJlaWQpO1xuXG4gICAgaWYgKHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sIGdlbmVyYXRvcjogcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIHByZXJlbGVhc2UgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDQktC10YDRgdC40LggJHtwcmVpZH0g0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgi5gKTtcbiAgICB9XG59XG4iXX0=
|