@kontur.candy/tools 2.169.0 → 2.170.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 +8 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +27 -7
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +8 -2
- package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +1 -1
- package/distr/Common/FormPathUtils.js +14 -0
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +3 -3
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +3 -2
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +3 -4
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +13 -9
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +59 -115
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +17 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +69 -25
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +3 -6
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +181 -17
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/WellKnownDirectories.js +11 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +7 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +21 -11
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +4 -2
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +3 -2
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +5 -2
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +8 -4
- package/distr/Tools/src/Commons/FormGlobsUtils.js +80 -2
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +12 -4
- package/distr/Tools/src/Commons/TasksCore/Observe.js +5 -1
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -4
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +60 -47
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +42 -29
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.BuildServerBackendResourcesUpdatesController = void 0;
|
|
8
8
|
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
|
|
9
9
|
var _fs = require("fs");
|
|
10
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
11
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
12
|
var _AsyncUtils = require("../../../../../Common/AsyncUtils");
|
|
12
13
|
var _Methods = require("../../../Commons/HttpServer/AttributeRouting/Methods");
|
|
@@ -14,6 +15,7 @@ var _Params = require("../../../Commons/HttpServer/AttributeRouting/Params");
|
|
|
14
15
|
var _Results = require("../../../Commons/HttpServer/AttributeRouting/Results");
|
|
15
16
|
var _SingletonController = require("../../../Commons/HttpServer/ExpressWrapper/SingletonController");
|
|
16
17
|
var _GlobToRegexp = require("./GlobToRegexp");
|
|
18
|
+
var _WellKnownDirectories = require("./Directories/WellKnownDirectories");
|
|
17
19
|
var _dec, _class;
|
|
18
20
|
let BuildServerBackendResourcesUpdatesController = (_dec = (0, _Methods.httpGet)("/updates-observer/check-last-update-long-poll", _Results.httpReturn.PlainText, (0, _Params.httpQueryParam)("prevLastUpdate", _Params.httpType.Number)), (_class = class BuildServerBackendResourcesUpdatesController extends _SingletonController.SingletonController {
|
|
19
21
|
constructor(allFarmConfig) {
|
|
@@ -21,6 +23,7 @@ let BuildServerBackendResourcesUpdatesController = (_dec = (0, _Methods.httpGet)
|
|
|
21
23
|
this.lastUpdateTime = 0;
|
|
22
24
|
this.updateMonitor = new Monitor();
|
|
23
25
|
this.farmWatchers = void 0;
|
|
26
|
+
this.formWatchers = void 0;
|
|
24
27
|
this.resourcesWatcher = void 0;
|
|
25
28
|
this.allFarmConfig = void 0;
|
|
26
29
|
this.farmWatchingRegexps = ["forms/*/schemas/*.rng.xml", "forms/*/converters/*", "forms/*/mergers/*",
|
|
@@ -28,13 +31,20 @@ let BuildServerBackendResourcesUpdatesController = (_dec = (0, _Methods.httpGet)
|
|
|
28
31
|
// forms/*/presentations.json в этом классе возникает событие об измении этого файла и мы генерим очень много
|
|
29
32
|
// лишних событий об измении ресурсов и CandyApi зависает. Я пока не смог разобраться почему это так.
|
|
30
33
|
// "forms/*/presentations.json",
|
|
31
|
-
|
|
34
|
+
`forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, "forms/*/sugar/*.xml", "forms/*/normalize/*.xml", "forms/*/unmap/*.xml", "forms/*/map/*.xml", "forms/*/patch/*.xslt", "picklists/*"].map(_GlobToRegexp.globToRegexp);
|
|
35
|
+
this.formsWatchingRegexps = [`forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/schemas/*.rng.xml`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/converters/*`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/mergers/*`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/presentations.json`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/sugar/*.xml`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/normalize/*.xml`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/unmap/*.xml`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/map/*.xml`, `forms/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/patch/*.xslt`].map(_GlobToRegexp.globToRegexp);
|
|
32
36
|
this.handleFarmFSUpdate = (eventType, filePath) => {
|
|
33
37
|
if (this.farmWatchingRegexps.some(x => x.test(filePath))) {
|
|
34
38
|
this.lastUpdateTime = Date.now();
|
|
35
39
|
this.updateMonitor.pulseAll();
|
|
36
40
|
}
|
|
37
41
|
};
|
|
42
|
+
this.handleFormFSUpdate = (eventType, filePath) => {
|
|
43
|
+
if (this.formsWatchingRegexps.some(x => x.test(filePath))) {
|
|
44
|
+
this.lastUpdateTime = Date.now();
|
|
45
|
+
this.updateMonitor.pulseAll();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
38
48
|
this.allFarmConfig = allFarmConfig;
|
|
39
49
|
this.lastUpdateTime = Date.now();
|
|
40
50
|
}
|
|
@@ -42,6 +52,9 @@ let BuildServerBackendResourcesUpdatesController = (_dec = (0, _Methods.httpGet)
|
|
|
42
52
|
this.farmWatchers = this.allFarmConfig.map(config => (0, _fs.watch)(config.farmDirectory, {
|
|
43
53
|
recursive: true
|
|
44
54
|
}, _lodash.default.debounce(this.handleFarmFSUpdate, 200)));
|
|
55
|
+
this.formWatchers = this.allFarmConfig.map(config => (0, _fs.watch)(_path.default.normalize(_path.default.join(config.farmDirectory, "..")), {
|
|
56
|
+
recursive: true
|
|
57
|
+
}, _lodash.default.debounce(this.handleFormFSUpdate, 200)));
|
|
45
58
|
}
|
|
46
59
|
async getLastUpdateTime(prevLastUpdateTime) {
|
|
47
60
|
if (prevLastUpdateTime == undefined || prevLastUpdateTime < this.lastUpdateTime) {
|
|
@@ -51,8 +64,9 @@ let BuildServerBackendResourcesUpdatesController = (_dec = (0, _Methods.httpGet)
|
|
|
51
64
|
return this.lastUpdateTime.toString();
|
|
52
65
|
}
|
|
53
66
|
async afterStop() {
|
|
54
|
-
var _this$farmWatchers, _this$resourcesWatche;
|
|
67
|
+
var _this$farmWatchers, _this$formWatchers, _this$resourcesWatche;
|
|
55
68
|
(_this$farmWatchers = this.farmWatchers) === null || _this$farmWatchers === void 0 ? void 0 : _this$farmWatchers.map(i => i.close());
|
|
69
|
+
(_this$formWatchers = this.formWatchers) === null || _this$formWatchers === void 0 ? void 0 : _this$formWatchers.map(i => i.close());
|
|
56
70
|
(_this$resourcesWatche = this.resourcesWatcher) === null || _this$resourcesWatche === void 0 ? void 0 : _this$resourcesWatche.close();
|
|
57
71
|
}
|
|
58
72
|
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getLastUpdateTime", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getLastUpdateTime"), _class.prototype)), _class));
|
|
@@ -75,4 +89,4 @@ class Monitor {
|
|
|
75
89
|
}
|
|
76
90
|
}
|
|
77
91
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXN5bmNVdGlscyIsIl9NZXRob2RzIiwiX1BhcmFtcyIsIl9SZXN1bHRzIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfR2xvYlRvUmVnZXhwIiwiX2RlYyIsIl9jbGFzcyIsIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc1VwZGF0ZXNDb250cm9sbGVyIiwiaHR0cEdldCIsImh0dHBSZXR1cm4iLCJQbGFpblRleHQiLCJodHRwUXVlcnlQYXJhbSIsImh0dHBUeXBlIiwiTnVtYmVyIiwiU2luZ2xldG9uQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYWxsRmFybUNvbmZpZyIsImxhc3RVcGRhdGVUaW1lIiwidXBkYXRlTW9uaXRvciIsIk1vbml0b3IiLCJmYXJtV2F0Y2hlcnMiLCJyZXNvdXJjZXNXYXRjaGVyIiwiZmFybVdhdGNoaW5nUmVnZXhwcyIsIm1hcCIsImdsb2JUb1JlZ2V4cCIsImhhbmRsZUZhcm1GU1VwZGF0ZSIsImV2ZW50VHlwZSIsImZpbGVQYXRoIiwic29tZSIsIngiLCJ0ZXN0IiwiRGF0ZSIsIm5vdyIsInB1bHNlQWxsIiwiYmVmb3JlU3RhcnQiLCJjb25maWciLCJ3YXRjaCIsImZhcm1EaXJlY3RvcnkiLCJyZWN1cnNpdmUiLCJfIiwiZGVib3VuY2UiLCJnZXRMYXN0VXBkYXRlVGltZSIsInByZXZMYXN0VXBkYXRlVGltZSIsInVuZGVmaW5lZCIsInRvU3RyaW5nIiwiUHJvbWlzZSIsInJhY2UiLCJ3YWl0IiwiZGVsYXkiLCJhZnRlclN0b3AiLCJfdGhpcyRmYXJtV2F0Y2hlcnMiLCJfdGhpcyRyZXNvdXJjZXNXYXRjaGUiLCJpIiwiY2xvc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJleHBvcnRzIiwiYXdhaXRlcnMiLCJ3YWl0UHJvbWlzZUhhbmRsZXIiLCJyZXNvbHZlIiwicHVzaCIsImF3YWl0ZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzVXBkYXRlc0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRlNXYXRjaGVyLCB3YXRjaCB9IGZyb20gXCJmc1wiO1xuXG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQXN5bmNVdGlsc1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBodHRwUXVlcnlQYXJhbSwgaHR0cFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcblxuaW1wb3J0IHsgZ2xvYlRvUmVnZXhwIH0gZnJvbSBcIi4vR2xvYlRvUmVnZXhwXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgbGFzdFVwZGF0ZVRpbWUgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlTW9uaXRvcjogTW9uaXRvciA9IG5ldyBNb25pdG9yKCk7XG4gICAgcHJpdmF0ZSBmYXJtV2F0Y2hlcnM/OiBGU1dhdGNoZXJbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlc1dhdGNoZXI/OiBGU1dhdGNoZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtV2F0Y2hpbmdSZWdleHBzID0gW1xuICAgICAgICBcImZvcm1zLyovc2NoZW1hcy8qLnJuZy54bWxcIixcbiAgICAgICAgXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLFxuICAgICAgICBcImZvcm1zLyovbWVyZ2Vycy8qXCIsXG4gICAgICAgIC8vIE5PVEUg0KLRg9GCINGC0LDQutC+0LUg0LTQtdC70L46INC/0L7Rh9C10LzRgy3RgtC+INC40L3QvtCz0LTQsCAo0LjQvdC+0LPQtNCwLCDRgtC+INC10YHRgtGMINC90LUg0LLRgdC10LPQtNCwISksINC60L7Qs9C00LAg0L3QsNC8INC/0YDQuNGF0L7QtNC40YIg0LfQsNC/0YDQvtGBINC90LBcbiAgICAgICAgLy8gZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb24g0LIg0Y3RgtC+0Lwg0LrQu9Cw0YHRgdC1INCy0L7Qt9C90LjQutCw0LXRgiDRgdC+0LHRi9GC0LjQtSDQvtCxINC40LfQvNC10L3QuNC4INGN0YLQvtCz0L4g0YTQsNC50LvQsCDQuCDQvNGLINCz0LXQvdC10YDQuNC8INC+0YfQtdC90Ywg0LzQvdC+0LPQvlxuICAgICAgICAvLyDQu9C40YjQvdC40YUg0YHQvtCx0YvRgtC40Lkg0L7QsSDQuNC30LzQtdC90LjQuCDRgNC10YHRg9GA0YHQvtCyINC4IENhbmR5QXBpINC30LDQstC40YHQsNC10YIuINCvINC/0L7QutCwINC90LUg0YHQvNC+0LMg0YDQsNC30L7QsdGA0LDRgtGM0YHRjyDQv9C+0YfQtdC80YMg0Y3RgtC+INGC0LDQui5cbiAgICAgICAgLy8gXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLFxuICAgICAgICBcImZvcm1zLyovZm9ybS5qc29uXCIsXG4gICAgICAgIFwiZm9ybXMvKi9zdWdhci8qLnhtbFwiLFxuICAgICAgICBcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi91bm1hcC8qLnhtbFwiLFxuICAgICAgICBcImZvcm1zLyovbWFwLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi9wYXRjaC8qLnhzbHRcIixcbiAgICAgICAgXCJwaWNrbGlzdHMvKlwiLFxuICAgIF0ubWFwKGdsb2JUb1JlZ2V4cCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMubGFzdFVwZGF0ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBiZWZvcmVTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mYXJtV2F0Y2hlcnMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGNvbmZpZyA9PlxuICAgICAgICAgICAgd2F0Y2goY29uZmlnLmZhcm1EaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0sIF8uZGVib3VuY2UodGhpcy5oYW5kbGVGYXJtRlNVcGRhdGUsIDIwMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3VwZGF0ZXMtb2JzZXJ2ZXIvY2hlY2stbGFzdC11cGRhdGUtbG9uZy1wb2xsXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uUGxhaW5UZXh0LFxuICAgICAgICBodHRwUXVlcnlQYXJhbShcInByZXZMYXN0VXBkYXRlXCIsIGh0dHBUeXBlLk51bWJlcilcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldExhc3RVcGRhdGVUaW1lKHByZXZMYXN0VXBkYXRlVGltZT86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmIChwcmV2TGFzdFVwZGF0ZVRpbWUgPT0gdW5kZWZpbmVkIHx8IHByZXZMYXN0VXBkYXRlVGltZSA8IHRoaXMubGFzdFVwZGF0ZVRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3RVcGRhdGVUaW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFt0aGlzLnVwZGF0ZU1vbml0b3Iud2FpdCgpLCBkZWxheSg2MDAwMCldKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFVwZGF0ZVRpbWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZhcm1XYXRjaGVycz8ubWFwKGkgPT4gaS5jbG9zZSgpKTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZXNXYXRjaGVyPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRmFybUZTVXBkYXRlID0gKGV2ZW50VHlwZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZhcm1XYXRjaGluZ1JlZ2V4cHMuc29tZSh4ID0+IHgudGVzdChmaWxlUGF0aCkpKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RVcGRhdGVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9uaXRvci5wdWxzZUFsbCgpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuY2xhc3MgTW9uaXRvciB7XG4gICAgcHJpdmF0ZSBhd2FpdGVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICAgIHB1YmxpYyB3YWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGhpcy53YWl0UHJvbWlzZUhhbmRsZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdWxzZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXdhaXRlcnMgPSBbLi4udGhpcy5hd2FpdGVyc107XG4gICAgICAgIHRoaXMuYXdhaXRlcnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhd2FpdGVyIG9mIGF3YWl0ZXJzKSB7XG4gICAgICAgICAgICBhd2FpdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHdhaXRQcm9taXNlSGFuZGxlciA9IChyZXNvbHZlOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYXdhaXRlcnMucHVzaChyZXNvbHZlKTtcbiAgICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEdBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFQLE9BQUE7QUFFQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFBOEMsSUFBQVMsSUFBQSxFQUFBQyxNQUFBO0FBQUEsSUFFakNDLDRDQUE0QyxJQUFBRixJQUFBLEdBbUNwRCxJQUFBRyxnQkFBTyxFQUNKLCtDQUErQyxFQUMvQ0MsbUJBQVUsQ0FBQ0MsU0FBUyxFQUNwQixJQUFBQyxzQkFBYyxFQUFDLGdCQUFnQixFQUFFQyxnQkFBUSxDQUFDQyxNQUFNLENBQ3BELENBQUMsR0FBQVAsTUFBQSxHQXZDRSxNQUFNQyw0Q0FBNEMsU0FBU08sd0NBQW1CLENBQUM7RUF1QjNFQyxXQUFXQSxDQUFDQyxhQUEyQixFQUFFO0lBQzVDLEtBQUss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
|
|
92
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJyZXF1aXJlIiwiX3BhdGgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvZGFzaCIsIl9Bc3luY1V0aWxzIiwiX01ldGhvZHMiLCJfUGFyYW1zIiwiX1Jlc3VsdHMiLCJfU2luZ2xldG9uQ29udHJvbGxlciIsIl9HbG9iVG9SZWdleHAiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJfZGVjIiwiX2NsYXNzIiwiQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzVXBkYXRlc0NvbnRyb2xsZXIiLCJodHRwR2V0IiwiaHR0cFJldHVybiIsIlBsYWluVGV4dCIsImh0dHBRdWVyeVBhcmFtIiwiaHR0cFR5cGUiLCJOdW1iZXIiLCJTaW5nbGV0b25Db250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJhbGxGYXJtQ29uZmlnIiwibGFzdFVwZGF0ZVRpbWUiLCJ1cGRhdGVNb25pdG9yIiwiTW9uaXRvciIsImZhcm1XYXRjaGVycyIsImZvcm1XYXRjaGVycyIsInJlc291cmNlc1dhdGNoZXIiLCJmYXJtV2F0Y2hpbmdSZWdleHBzIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwibWFwIiwiZ2xvYlRvUmVnZXhwIiwiZm9ybXNXYXRjaGluZ1JlZ2V4cHMiLCJDYW5keVN1YmRpcmVjdG9yeU5hbWUiLCJoYW5kbGVGYXJtRlNVcGRhdGUiLCJldmVudFR5cGUiLCJmaWxlUGF0aCIsInNvbWUiLCJ4IiwidGVzdCIsIkRhdGUiLCJub3ciLCJwdWxzZUFsbCIsImhhbmRsZUZvcm1GU1VwZGF0ZSIsImJlZm9yZVN0YXJ0IiwiY29uZmlnIiwid2F0Y2giLCJmYXJtRGlyZWN0b3J5IiwicmVjdXJzaXZlIiwiXyIsImRlYm91bmNlIiwicGF0aCIsIm5vcm1hbGl6ZSIsImpvaW4iLCJnZXRMYXN0VXBkYXRlVGltZSIsInByZXZMYXN0VXBkYXRlVGltZSIsInVuZGVmaW5lZCIsInRvU3RyaW5nIiwiUHJvbWlzZSIsInJhY2UiLCJ3YWl0IiwiZGVsYXkiLCJhZnRlclN0b3AiLCJfdGhpcyRmYXJtV2F0Y2hlcnMiLCJfdGhpcyRmb3JtV2F0Y2hlcnMiLCJfdGhpcyRyZXNvdXJjZXNXYXRjaGUiLCJpIiwiY2xvc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJleHBvcnRzIiwiYXdhaXRlcnMiLCJ3YWl0UHJvbWlzZUhhbmRsZXIiLCJyZXNvbHZlIiwicHVzaCIsImF3YWl0ZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzVXBkYXRlc0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRlNXYXRjaGVyLCB3YXRjaCB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IF8gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgRmFybUNvbmZpZyB9IGZyb20gXCJUb29scy9zcmMvQ2FuZHlDTElcIjtcblxuaW1wb3J0IHsgZGVsYXkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0FzeW5jVXRpbHNcIjtcbmltcG9ydCB7IGh0dHBHZXQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTWV0aG9kc1wiO1xuaW1wb3J0IHsgaHR0cFF1ZXJ5UGFyYW0sIGh0dHBUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1BhcmFtc1wiO1xuaW1wb3J0IHsgaHR0cFJldHVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzXCI7XG5pbXBvcnQgeyBTaW5nbGV0b25Db250cm9sbGVyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9FeHByZXNzV3JhcHBlci9TaW5nbGV0b25Db250cm9sbGVyXCI7XG5cbmltcG9ydCB7IGdsb2JUb1JlZ2V4cCB9IGZyb20gXCIuL0dsb2JUb1JlZ2V4cFwiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9XZWxsS25vd25EaXJlY3Rvcmllc1wiO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzVXBkYXRlc0NvbnRyb2xsZXIgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyIHtcbiAgICBwcml2YXRlIGxhc3RVcGRhdGVUaW1lID0gMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZU1vbml0b3I6IE1vbml0b3IgPSBuZXcgTW9uaXRvcigpO1xuICAgIHByaXZhdGUgZmFybVdhdGNoZXJzPzogRlNXYXRjaGVyW107XG4gICAgcHJpdmF0ZSBmb3JtV2F0Y2hlcnM/OiBGU1dhdGNoZXJbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlc1dhdGNoZXI/OiBGU1dhdGNoZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtV2F0Y2hpbmdSZWdleHBzID0gW1xuICAgICAgICBcImZvcm1zLyovc2NoZW1hcy8qLnJuZy54bWxcIixcbiAgICAgICAgXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLFxuICAgICAgICBcImZvcm1zLyovbWVyZ2Vycy8qXCIsXG4gICAgICAgIC8vIE5PVEUg0KLRg9GCINGC0LDQutC+0LUg0LTQtdC70L46INC/0L7Rh9C10LzRgy3RgtC+INC40L3QvtCz0LTQsCAo0LjQvdC+0LPQtNCwLCDRgtC+INC10YHRgtGMINC90LUg0LLRgdC10LPQtNCwISksINC60L7Qs9C00LAg0L3QsNC8INC/0YDQuNGF0L7QtNC40YIg0LfQsNC/0YDQvtGBINC90LBcbiAgICAgICAgLy8gZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb24g0LIg0Y3RgtC+0Lwg0LrQu9Cw0YHRgdC1INCy0L7Qt9C90LjQutCw0LXRgiDRgdC+0LHRi9GC0LjQtSDQvtCxINC40LfQvNC10L3QuNC4INGN0YLQvtCz0L4g0YTQsNC50LvQsCDQuCDQvNGLINCz0LXQvdC10YDQuNC8INC+0YfQtdC90Ywg0LzQvdC+0LPQvlxuICAgICAgICAvLyDQu9C40YjQvdC40YUg0YHQvtCx0YvRgtC40Lkg0L7QsSDQuNC30LzQtdC90LjQuCDRgNC10YHRg9GA0YHQvtCyINC4IENhbmR5QXBpINC30LDQstC40YHQsNC10YIuINCvINC/0L7QutCwINC90LUg0YHQvNC+0LMg0YDQsNC30L7QsdGA0LDRgtGM0YHRjyDQv9C+0YfQtdC80YMg0Y3RgtC+INGC0LDQui5cbiAgICAgICAgLy8gXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLFxuICAgICAgICBgZm9ybXMvKi8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWV9YCxcbiAgICAgICAgXCJmb3Jtcy8qL3N1Z2FyLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi9ub3JtYWxpemUvKi54bWxcIixcbiAgICAgICAgXCJmb3Jtcy8qL3VubWFwLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi9tYXAvKi54bWxcIixcbiAgICAgICAgXCJmb3Jtcy8qL3BhdGNoLyoueHNsdFwiLFxuICAgICAgICBcInBpY2tsaXN0cy8qXCIsXG4gICAgXS5tYXAoZ2xvYlRvUmVnZXhwKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1zV2F0Y2hpbmdSZWdleHBzID0gW1xuICAgICAgICBgZm9ybXMvKiovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWV9L3NjaGVtYXMvKi5ybmcueG1sYCxcbiAgICAgICAgYGZvcm1zLyoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS9jb252ZXJ0ZXJzLypgLFxuICAgICAgICBgZm9ybXMvKiovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWV9L21lcmdlcnMvKmAsXG4gICAgICAgIGBmb3Jtcy8qKi8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkNhbmR5U3ViZGlyZWN0b3J5TmFtZX0vcHJlc2VudGF0aW9ucy5qc29uYCxcbiAgICAgICAgYGZvcm1zLyoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWV9YCxcbiAgICAgICAgYGZvcm1zLyoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS9zdWdhci8qLnhtbGAsXG4gICAgICAgIGBmb3Jtcy8qKi8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkNhbmR5U3ViZGlyZWN0b3J5TmFtZX0vbm9ybWFsaXplLyoueG1sYCxcbiAgICAgICAgYGZvcm1zLyoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS91bm1hcC8qLnhtbGAsXG4gICAgICAgIGBmb3Jtcy8qKi8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkNhbmR5U3ViZGlyZWN0b3J5TmFtZX0vbWFwLyoueG1sYCxcbiAgICAgICAgYGZvcm1zLyoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS9wYXRjaC8qLnhzbHRgLFxuICAgIF0ubWFwKGdsb2JUb1JlZ2V4cCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMubGFzdFVwZGF0ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBiZWZvcmVTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mYXJtV2F0Y2hlcnMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGNvbmZpZyA9PlxuICAgICAgICAgICAgd2F0Y2goY29uZmlnLmZhcm1EaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0sIF8uZGVib3VuY2UodGhpcy5oYW5kbGVGYXJtRlNVcGRhdGUsIDIwMCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZm9ybVdhdGNoZXJzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChjb25maWcgPT5cbiAgICAgICAgICAgIHdhdGNoKFxuICAgICAgICAgICAgICAgIHBhdGgubm9ybWFsaXplKHBhdGguam9pbihjb25maWcuZmFybURpcmVjdG9yeSwgXCIuLlwiKSksXG4gICAgICAgICAgICAgICAgeyByZWN1cnNpdmU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICBfLmRlYm91bmNlKHRoaXMuaGFuZGxlRm9ybUZTVXBkYXRlLCAyMDApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3VwZGF0ZXMtb2JzZXJ2ZXIvY2hlY2stbGFzdC11cGRhdGUtbG9uZy1wb2xsXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uUGxhaW5UZXh0LFxuICAgICAgICBodHRwUXVlcnlQYXJhbShcInByZXZMYXN0VXBkYXRlXCIsIGh0dHBUeXBlLk51bWJlcilcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldExhc3RVcGRhdGVUaW1lKHByZXZMYXN0VXBkYXRlVGltZT86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmIChwcmV2TGFzdFVwZGF0ZVRpbWUgPT0gdW5kZWZpbmVkIHx8IHByZXZMYXN0VXBkYXRlVGltZSA8IHRoaXMubGFzdFVwZGF0ZVRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3RVcGRhdGVUaW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFt0aGlzLnVwZGF0ZU1vbml0b3Iud2FpdCgpLCBkZWxheSg2MDAwMCldKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFVwZGF0ZVRpbWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZhcm1XYXRjaGVycz8ubWFwKGkgPT4gaS5jbG9zZSgpKTtcbiAgICAgICAgdGhpcy5mb3JtV2F0Y2hlcnM/Lm1hcChpID0+IGkuY2xvc2UoKSk7XG4gICAgICAgIHRoaXMucmVzb3VyY2VzV2F0Y2hlcj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZUZhcm1GU1VwZGF0ZSA9IChldmVudFR5cGU6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGhpcy5mYXJtV2F0Y2hpbmdSZWdleHBzLnNvbWUoeCA9PiB4LnRlc3QoZmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgdGhpcy5sYXN0VXBkYXRlVGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1vbml0b3IucHVsc2VBbGwoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZUZvcm1GU1VwZGF0ZSA9IChldmVudFR5cGU6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGhpcy5mb3Jtc1dhdGNoaW5nUmVnZXhwcy5zb21lKHggPT4geC50ZXN0KGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFVwZGF0ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNb25pdG9yLnB1bHNlQWxsKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5jbGFzcyBNb25pdG9yIHtcbiAgICBwcml2YXRlIGF3YWl0ZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gICAgcHVibGljIHdhaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0aGlzLndhaXRQcm9taXNlSGFuZGxlcik7XG4gICAgfVxuXG4gICAgcHVibGljIHB1bHNlQWxsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhd2FpdGVycyA9IFsuLi50aGlzLmF3YWl0ZXJzXTtcbiAgICAgICAgdGhpcy5hd2FpdGVycyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGF3YWl0ZXIgb2YgYXdhaXRlcnMpIHtcbiAgICAgICAgICAgIGF3YWl0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2FpdFByb21pc2VIYW5kbGVyID0gKHJlc29sdmU6ICgpID0+IHZvaWQpID0+IHtcbiAgICAgICAgdGhpcy5hd2FpdGVycy5wdXNoKHJlc29sdmUpO1xuICAgIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsT0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVIsT0FBQTtBQUVBLElBQUFTLGFBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLHFCQUFBLEdBQUFWLE9BQUE7QUFBMEUsSUFBQVcsSUFBQSxFQUFBQyxNQUFBO0FBQUEsSUFFN0RDLDRDQUE0QyxJQUFBRixJQUFBLEdBdURwRCxJQUFBRyxnQkFBTyxFQUNKLCtDQUErQyxFQUMvQ0MsbUJBQVUsQ0FBQ0MsU0FBUyxFQUNw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
|
|
@@ -76,7 +76,7 @@ let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)("/:update.ho
|
|
|
76
76
|
const result = [];
|
|
77
77
|
const farmFormJsons = (await Promise.all(this.allFarmDirectory.map(i => i.getAllFormJsonFiles()))).flat();
|
|
78
78
|
for (const farmFormJson of farmFormJsons) {
|
|
79
|
-
result.push(`${farmFormJson.gfv}.
|
|
79
|
+
result.push(`${farmFormJson.gfv}.json`);
|
|
80
80
|
}
|
|
81
81
|
return result;
|
|
82
82
|
}
|
|
@@ -118,4 +118,4 @@ let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)("/:update.ho
|
|
|
118
118
|
}
|
|
119
119
|
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJson", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJson"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJs", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJsMap", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJsMap"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormScript", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getFormScript"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormStyle", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getFormStyle"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormImages", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getFormImages"), _class.prototype)), _class));
|
|
120
120
|
exports.BuildServerBuildFormsController = BuildServerBuildFormsController;
|
|
121
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWltZVR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfU3RhdGljTG9nZ2VyIiwiX0J1aWxkRm9ybURldlNlcnZlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiaHR0cEdldCIsImh0dHBSZXR1cm4iLCJTdHJlYW1XaXRoTWltZSIsImh0dHBVcmxQYXJhbSIsImh0dHBUeXBlIiwiU3RyaW5nIiwiU3RyZWFtIiwiU2luZ2xldG9uQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYWxsRmFybUNvbmZpZyIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsInVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMiLCJlbmdpbmVEaXJlY3RvcnkiLCJidWlsZERlYnVnT25seSIsIm5pZ2h0bHkiLCJhbGxGYXJtRGlyZWN0b3J5IiwiYWxsRmFybURpcmVjdG9yeVBhdGgiLCJuZXh0RnJlZVBvcnQiLCJkZXZTZXJ2ZXJzIiwibWFwIiwiZmFybSIsIkZhcm1EaXJlY3RvcnkiLCJmYXJtRGlyZWN0b3J5IiwiZ2V0RGV2U2VydmVyVXBkYXRlSnNvbiIsInVwZGF0ZU5hbWUiLCJnZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIiLCJnZXREZXZTZXJ2ZXJVcGRhdGVKcyIsImdldERldlNlcnZlclVwZGF0ZUpzTWFwIiwiZ2V0Rm9ybVNjcmlwdCIsImZpbGVOYW1lIiwiZmlsZU5hbWVXaXRob3V0RXh0IiwiZ2Z2IiwiYnVpbGRGb3JtRGV2U2VydmVyIiwiZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJTdHJlYW1SZXN1bHQiLCJnZXRGaWxlQXNTdHJlYW0iLCJnZXRGb3JtU3R5bGUiLCJ0aGVtZSIsInJlcGxhY2UiLCJnZXRGb3JtSW1hZ2VzIiwibWltZSIsImxvb2t1cCIsImZpbGVuYW1lIiwibWltZVR5cGUiLCJkZXZTZXJ2ZXIiLCJPYmplY3QiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMiLCJyZXN1bHQiLCJmYXJtRm9ybUpzb25zIiwiUHJvbWlzZSIsImFsbCIsImkiLCJnZXRBbGxGb3JtSnNvbkZpbGVzIiwiZmxhdCIsImZhcm1Gb3JtSnNvbiIsInB1c2giLCJnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudCIsInJlc3VsdFN0cmVhbSIsImdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbSIsImdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyQiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyIsImZvcm1Kc29uUGF0aCIsImdldEZvcm1Kc29uUGF0aCIsImZpbHRlciIsIkVycm9yIiwiZm9ybUNvbmZpZyIsInJlYWRGb3JtQ29uZmlnIiwiZ2V0TG9nZ2VyIiwidXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiIsInNldHRpbmdzIiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiQnVpbGRGb3JtRGV2U2VydmVyIiwic3RhcnQiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHsgU3RyZWFtUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3JtRGV2U2VydmVyIH0gZnJvbSBcIi4vRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXJcIjtcbmltcG9ydCB7IEZhcm1EaXJlY3RvcnkgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9GYXJtRGlyZWN0b3J5XCI7XG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyXG4gICAgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyXG4gICAgaW1wbGVtZW50cyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeTogRmFybURpcmVjdG9yeVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgbmV4dEZyZWVQb3J0ID0gMTIwMDE7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXZTZXJ2ZXJzOiB7IFtnZnY6IHN0cmluZ106IHVuZGVmaW5lZCB8IEJ1aWxkRm9ybURldlNlcnZlciB9ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBuaWdodGx5OiBib29sZWFuID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uaWdodGx5ID0gbmlnaHRseTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5ID0gYWxsRmFybUNvbmZpZy5tYXAoZmFybSA9PiBuZXcgRmFybURpcmVjdG9yeShmYXJtLmZhcm1EaXJlY3RvcnkpKTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCA9IGFsbEZhcm1Db25maWcubWFwKGZhcm0gPT4gZmFybS5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyA9IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM7XG4gICAgICAgIHRoaXMuZW5naW5lRGlyZWN0b3J5ID0gZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5ID0gYnVpbGREZWJ1Z09ubHk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiLzp1cGRhdGUuaG90LXVwZGF0ZS5qc29uXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJ1cGRhdGVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGV2U2VydmVyVXBkYXRlSnNvbih1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNvbmApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi86dXBkYXRlLmhvdC11cGRhdGUuanNcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInVwZGF0ZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXREZXZTZXJ2ZXJVcGRhdGVKcyh1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvOnVwZGF0ZS5ob3QtdXBkYXRlLmpzLm1hcFwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwidXBkYXRlXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldERldlNlcnZlclVwZGF0ZUpzTWFwKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qcy5tYXBgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgL15cXC9wdWJsaWNcXC9zY3JpcHRzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmpzKSQvaSxcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjBcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMVwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIyXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY3JpcHQoZmlsZU5hbWU6IHN0cmluZywgZmlsZU5hbWVXaXRob3V0RXh0OiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtmaWxlTmFtZX1gKSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIC9eXFwvcHVibGljXFwvc3R5bGVzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmNzcykkL2ksXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJ0ZXh0L2Nzc1wiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMFwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIxXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjJcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiM1wiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU3R5bGUoXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lV2l0aG91dEV4dDogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgdGhlbWU6IHVuZGVmaW5lZCB8IHN0cmluZ1xuICAgICk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoXG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2ZpbGVOYW1lLnJlcGxhY2UodGhlbWUgPz8gXCJcIiwgXCJcIil9YClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wdWJsaWMvaW1hZ2VzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUltYWdlcyhmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKFxuICAgICAgICAgICAgYHN0YXRpYy9wdWJsaWMvaW1hZ2VzLyR7ZmlsZU5hbWV9YCxcbiAgICAgICAgICAgIG1pbWUubG9va3VwKGZpbGVOYW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGZpbGVuYW1lOiBzdHJpbmcsIG1pbWVUeXBlPzogc3RyaW5nIHwgZmFsc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBkZXZTZXJ2ZXIgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmRldlNlcnZlcnMpKSB7XG4gICAgICAgICAgICBpZiAoZGV2U2VydmVyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IGRldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oZmlsZW5hbWUpLCBtaW1lVHlwZSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyeSBuZXh0IHNlcnZlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZmFybUZvcm1Kc29ucyA9IChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3RvcnkubWFwKGkgPT4gaS5nZXRBbGxGb3JtSnNvbkZpbGVzKCkpKSkuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1Gb3JtSnNvbiBvZiBmYXJtRm9ybUpzb25zKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHtmYXJtRm9ybUpzb24uZ2Z2fS5ub3JtYWxpemVgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgQXR0YWNobWVudFBhdGhzLmpzb25gKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZmFybUZvcm1Kc29ucyA9IChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3RvcnkubWFwKGkgPT4gaS5nZXRBbGxGb3JtSnNvbkZpbGVzKCkpKSkuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1Gb3JtSnNvbiBvZiBmYXJtRm9ybUpzb25zKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtSnNvblBhdGggPSAoXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0Rm9ybUpzb25QYXRoKGZhcm1Gb3JtSnNvbi5nZnYpKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpID0+IGkgIT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGlmIChmb3JtSnNvblBhdGhbMF0gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYGdmdiAke2Zhcm1Gb3JtSnNvbi5nZnZ9IG5vdCBmb3VuZCBpbiBjb25maWcgZGlyYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoWzBdLCBnZXRMb2dnZXIoKSk7XG4gICAgICAgICAgICBjb25zdCB1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uID0gZm9ybUNvbmZpZy5zZXR0aW5ncz8udXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA/PyBmYWxzZTtcbiAgICAgICAgICAgIGlmICh1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7ZmFybUZvcm1Kc29uLmdmdn0ubm9ybWFsaXplYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICBjb25zdCByZXN1bHRTdHJlYW0gPSBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtKGBTZXJ2ZXJTaWRlLm5vcm1hbGl6ZWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0U3RyZWFtO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEJ1aWxkRm9ybURldlNlcnZlcj4ge1xuICAgICAgICBsZXQgZGV2U2VydmVyID0gdGhpcy5kZXZTZXJ2ZXJzW2dmdl07XG4gICAgICAgIGlmIChkZXZTZXJ2ZXIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkZXZTZXJ2ZXIgPSBuZXcgQnVpbGRGb3JtRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMubmV4dEZyZWVQb3J0KyssXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnLFxuICAgICAgICAgICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZGV2U2VydmVyc1tnZnZdID0gZGV2U2VydmVyO1xuICAgICAgICAgICAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRldlNlcnZlcjtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsZ0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGlCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxvQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sb0JBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUVBLElBQUFTLG1CQUFBLEdBQUFULE9B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
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWltZVR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfU3RhdGljTG9nZ2VyIiwiX0J1aWxkRm9ybURldlNlcnZlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiaHR0cEdldCIsImh0dHBSZXR1cm4iLCJTdHJlYW1XaXRoTWltZSIsImh0dHBVcmxQYXJhbSIsImh0dHBUeXBlIiwiU3RyaW5nIiwiU3RyZWFtIiwiU2luZ2xldG9uQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYWxsRmFybUNvbmZpZyIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsInVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMiLCJlbmdpbmVEaXJlY3RvcnkiLCJidWlsZERlYnVnT25seSIsIm5pZ2h0bHkiLCJhbGxGYXJtRGlyZWN0b3J5IiwiYWxsRmFybURpcmVjdG9yeVBhdGgiLCJuZXh0RnJlZVBvcnQiLCJkZXZTZXJ2ZXJzIiwibWFwIiwiZmFybSIsIkZhcm1EaXJlY3RvcnkiLCJmYXJtRGlyZWN0b3J5IiwiZ2V0RGV2U2VydmVyVXBkYXRlSnNvbiIsInVwZGF0ZU5hbWUiLCJnZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIiLCJnZXREZXZTZXJ2ZXJVcGRhdGVKcyIsImdldERldlNlcnZlclVwZGF0ZUpzTWFwIiwiZ2V0Rm9ybVNjcmlwdCIsImZpbGVOYW1lIiwiZmlsZU5hbWVXaXRob3V0RXh0IiwiZ2Z2IiwiYnVpbGRGb3JtRGV2U2VydmVyIiwiZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJTdHJlYW1SZXN1bHQiLCJnZXRGaWxlQXNTdHJlYW0iLCJnZXRGb3JtU3R5bGUiLCJ0aGVtZSIsInJlcGxhY2UiLCJnZXRGb3JtSW1hZ2VzIiwibWltZSIsImxvb2t1cCIsImZpbGVuYW1lIiwibWltZVR5cGUiLCJkZXZTZXJ2ZXIiLCJPYmplY3QiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMiLCJyZXN1bHQiLCJmYXJtRm9ybUpzb25zIiwiUHJvbWlzZSIsImFsbCIsImkiLCJnZXRBbGxGb3JtSnNvbkZpbGVzIiwiZmxhdCIsImZhcm1Gb3JtSnNvbiIsInB1c2giLCJnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudCIsInJlc3VsdFN0cmVhbSIsImdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbSIsImdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyQiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyIsImZvcm1Kc29uUGF0aCIsImdldEZvcm1Kc29uUGF0aCIsImZpbHRlciIsIkVycm9yIiwiZm9ybUNvbmZpZyIsInJlYWRGb3JtQ29uZmlnIiwiZ2V0TG9nZ2VyIiwidXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiIsInNldHRpbmdzIiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiQnVpbGRGb3JtRGV2U2VydmVyIiwic3RhcnQiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHsgU3RyZWFtUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3JtRGV2U2VydmVyIH0gZnJvbSBcIi4vRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXJcIjtcbmltcG9ydCB7IEZhcm1EaXJlY3RvcnkgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9GYXJtRGlyZWN0b3J5XCI7XG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyXG4gICAgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyXG4gICAgaW1wbGVtZW50cyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeTogRmFybURpcmVjdG9yeVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgbmV4dEZyZWVQb3J0ID0gMTIwMDE7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXZTZXJ2ZXJzOiB7IFtnZnY6IHN0cmluZ106IHVuZGVmaW5lZCB8IEJ1aWxkRm9ybURldlNlcnZlciB9ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBuaWdodGx5OiBib29sZWFuID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uaWdodGx5ID0gbmlnaHRseTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5ID0gYWxsRmFybUNvbmZpZy5tYXAoZmFybSA9PiBuZXcgRmFybURpcmVjdG9yeShmYXJtLmZhcm1EaXJlY3RvcnkpKTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCA9IGFsbEZhcm1Db25maWcubWFwKGZhcm0gPT4gZmFybS5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyA9IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM7XG4gICAgICAgIHRoaXMuZW5naW5lRGlyZWN0b3J5ID0gZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5ID0gYnVpbGREZWJ1Z09ubHk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiLzp1cGRhdGUuaG90LXVwZGF0ZS5qc29uXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJ1cGRhdGVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGV2U2VydmVyVXBkYXRlSnNvbih1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNvbmApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi86dXBkYXRlLmhvdC11cGRhdGUuanNcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInVwZGF0ZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXREZXZTZXJ2ZXJVcGRhdGVKcyh1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvOnVwZGF0ZS5ob3QtdXBkYXRlLmpzLm1hcFwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwidXBkYXRlXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldERldlNlcnZlclVwZGF0ZUpzTWFwKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qcy5tYXBgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgL15cXC9wdWJsaWNcXC9zY3JpcHRzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmpzKSQvaSxcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjBcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMVwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIyXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY3JpcHQoZmlsZU5hbWU6IHN0cmluZywgZmlsZU5hbWVXaXRob3V0RXh0OiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtmaWxlTmFtZX1gKSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIC9eXFwvcHVibGljXFwvc3R5bGVzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmNzcykkL2ksXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJ0ZXh0L2Nzc1wiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMFwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIxXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjJcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiM1wiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU3R5bGUoXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lV2l0aG91dEV4dDogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgdGhlbWU6IHVuZGVmaW5lZCB8IHN0cmluZ1xuICAgICk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoXG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2ZpbGVOYW1lLnJlcGxhY2UodGhlbWUgPz8gXCJcIiwgXCJcIil9YClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wdWJsaWMvaW1hZ2VzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUltYWdlcyhmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKFxuICAgICAgICAgICAgYHN0YXRpYy9wdWJsaWMvaW1hZ2VzLyR7ZmlsZU5hbWV9YCxcbiAgICAgICAgICAgIG1pbWUubG9va3VwKGZpbGVOYW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGZpbGVuYW1lOiBzdHJpbmcsIG1pbWVUeXBlPzogc3RyaW5nIHwgZmFsc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBkZXZTZXJ2ZXIgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmRldlNlcnZlcnMpKSB7XG4gICAgICAgICAgICBpZiAoZGV2U2VydmVyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IGRldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oZmlsZW5hbWUpLCBtaW1lVHlwZSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyeSBuZXh0IHNlcnZlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZmFybUZvcm1Kc29ucyA9IChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3RvcnkubWFwKGkgPT4gaS5nZXRBbGxGb3JtSnNvbkZpbGVzKCkpKSkuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1Gb3JtSnNvbiBvZiBmYXJtRm9ybUpzb25zKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHtmYXJtRm9ybUpzb24uZ2Z2fS5qc29uYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbT4ge1xuICAgICAgICBjb25zdCBidWlsZEZvcm1EZXZTZXJ2ZXIgPSBhd2FpdCB0aGlzLmdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdik7XG4gICAgICAgIGNvbnN0IHJlc3VsdFN0cmVhbSA9IGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oYEF0dGFjaG1lbnRQYXRocy5qc29uYCk7XG4gICAgICAgIHJldHVybiByZXN1bHRTdHJlYW07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGZhcm1Gb3JtSnNvbnMgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0QWxsRm9ybUpzb25GaWxlcygpKSkpLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmYXJtRm9ybUpzb24gb2YgZmFybUZvcm1Kc29ucykge1xuICAgICAgICAgICAgY29uc3QgZm9ybUpzb25QYXRoID0gKFxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yeS5tYXAoaSA9PiBpLmdldEZvcm1Kc29uUGF0aChmYXJtRm9ybUpzb24uZ2Z2KSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoaSA9PiBpICE9IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBpZiAoZm9ybUpzb25QYXRoWzBdID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBnZnYgJHtmYXJtRm9ybUpzb24uZ2Z2fSBub3QgZm91bmQgaW4gY29uZmlnIGRpcmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aFswXSwgZ2V0TG9nZ2VyKCkpO1xuICAgICAgICAgICAgY29uc3QgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA9IGZvcm1Db25maWcuc2V0dGluZ3M/LnVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPz8gZmFsc2U7XG4gICAgICAgICAgICBpZiAodXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbikge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2Zhcm1Gb3JtSnNvbi5nZnZ9Lm5vcm1hbGl6ZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgU2VydmVyU2lkZS5ub3JtYWxpemVgKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdjogc3RyaW5nKTogUHJvbWlzZTxCdWlsZEZvcm1EZXZTZXJ2ZXI+IHtcbiAgICAgICAgbGV0IGRldlNlcnZlciA9IHRoaXMuZGV2U2VydmVyc1tnZnZdO1xuICAgICAgICBpZiAoZGV2U2VydmVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGV2U2VydmVyID0gbmV3IEJ1aWxkRm9ybURldlNlcnZlcihcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRGcmVlUG9ydCsrLFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyxcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZERlYnVnT25seSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aGlzLm5pZ2h0bHlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmRldlNlcnZlcnNbZ2Z2XSA9IGRldlNlcnZlcjtcbiAgICAgICAgICAgIGF3YWl0IGRldlNlcnZlci5zdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXZTZXJ2ZXI7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLGdCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sb0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxtQkFBQSxHQUFBVCxPQUFBO0FB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
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.BuildFormDevServer = void 0;
|
|
8
|
-
var
|
|
8
|
+
var path = _interopRequireWildcard(require("path"));
|
|
9
9
|
var _stream = require("stream");
|
|
10
10
|
var _https = require("https");
|
|
11
11
|
var _nodeFetch = _interopRequireDefault(require("node-fetch"));
|
|
@@ -17,9 +17,28 @@ var _PublishedVersionUtils = require("../../../../BuildTasks/PublishedVersionUti
|
|
|
17
17
|
var _ResolveFormInfo = require("../../../../BuildTasks/ResolveFormInfo");
|
|
18
18
|
var _AsyncUtils = require("../../../../../../Common/AsyncUtils");
|
|
19
19
|
var _Observe = require("../../../../Commons/TasksCore/Observe");
|
|
20
|
+
var _FsUtils = require("../../../../Commons/FsUtils");
|
|
21
|
+
var _FormPathUtils = require("../../../../../../Common/FormPathUtils");
|
|
22
|
+
var _TypingUtils = require("../../../../../../Common/TypingUtils");
|
|
23
|
+
var _WellKnownDirectories = require("../Directories/WellKnownDirectories");
|
|
20
24
|
var _ReportGeneratorErrorToPageBody = require("./ReportGeneratorErrorToPageBody");
|
|
21
25
|
var _RunFormCompilationViaWebpackDevServer = require("./RunFormCompilationViaWebpackDevServer");
|
|
22
26
|
var _WebpackHybridFileSystem = require("./WebpackInMemoryUtils/WebpackHybridFileSystem");
|
|
27
|
+
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); }
|
|
28
|
+
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; }
|
|
29
|
+
async function buildGfvToPathMap(repositoryRoots) {
|
|
30
|
+
const result = new Map();
|
|
31
|
+
for (const repositoryRoot of repositoryRoots) {
|
|
32
|
+
const formPaths = await (0, _FsUtils.globAsync)(`forms/**/*/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}`, {
|
|
33
|
+
cwd: repositoryRoot
|
|
34
|
+
});
|
|
35
|
+
for (const formPath of formPaths) {
|
|
36
|
+
const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
|
|
37
|
+
result.set(gfv, path.join(repositoryRoot, formPath));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
23
42
|
class BuildFormDevServer {
|
|
24
43
|
constructor(port, allFarmConfig, gfv, candyModulesDirectory, farmConfigArray, useGeneratorFromLocalSources, engineDirectory, buildDebugOnly, skipCodeReformatting, nightly) {
|
|
25
44
|
this.port = void 0;
|
|
@@ -27,6 +46,7 @@ class BuildFormDevServer {
|
|
|
27
46
|
this.gfv = void 0;
|
|
28
47
|
this.candyModulesDirectory = void 0;
|
|
29
48
|
this.farmDirectory = void 0;
|
|
49
|
+
this.formPath = void 0;
|
|
30
50
|
this.farmConfigArray = void 0;
|
|
31
51
|
this.startParallelLimit = void 0;
|
|
32
52
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -38,6 +58,7 @@ class BuildFormDevServer {
|
|
|
38
58
|
this.buildDebugOnly = void 0;
|
|
39
59
|
this.skipCodeReformatting = void 0;
|
|
40
60
|
this.webpackHybridFileSystem = void 0;
|
|
61
|
+
this.gfvPaths = undefined;
|
|
41
62
|
this.port = port;
|
|
42
63
|
this.allFarmConfig = allFarmConfig;
|
|
43
64
|
this.gfv = gfv;
|
|
@@ -50,29 +71,52 @@ class BuildFormDevServer {
|
|
|
50
71
|
this.skipCodeReformatting = skipCodeReformatting;
|
|
51
72
|
this.nightly = nightly;
|
|
52
73
|
this.farmDirectory = "";
|
|
74
|
+
this.formPath = "";
|
|
75
|
+
}
|
|
76
|
+
async findFormPath(gfv) {
|
|
77
|
+
var _this$gfvPaths;
|
|
78
|
+
this.gfvPaths = (_this$gfvPaths = this.gfvPaths) !== null && _this$gfvPaths !== void 0 ? _this$gfvPaths : await buildGfvToPathMap(this.allFarmConfig.map(x => path.join(x, "..")));
|
|
79
|
+
if (this.gfvPaths.has(gfv)) {
|
|
80
|
+
var _this$gfvPaths$get;
|
|
81
|
+
return {
|
|
82
|
+
formPath: (_this$gfvPaths$get = this.gfvPaths.get(gfv)) !== null && _this$gfvPaths$get !== void 0 ? _this$gfvPaths$get : (0, _TypingUtils.reject)(),
|
|
83
|
+
farmDirectory: path.join("..", "..", "..", "..", "..", "candy.farm")
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
let farmDirectory;
|
|
87
|
+
let formDirPath = "";
|
|
88
|
+
const allPossibleFilePath = this.allFarmConfig.map(i => path.join(i, "forms", this.gfv));
|
|
89
|
+
for (const pth of allPossibleFilePath) {
|
|
90
|
+
if (await (0, _fsExtra.pathExists)(pth)) {
|
|
91
|
+
formDirPath = pth;
|
|
92
|
+
farmDirectory = path.join(pth, "..", "..");
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (formDirPath === "") {
|
|
97
|
+
throw Error("formDirPath not found");
|
|
98
|
+
}
|
|
99
|
+
if (farmDirectory == undefined || !(await (0, _fsExtra.pathExists)(farmDirectory))) {
|
|
100
|
+
throw Error(`FarmDirectory = ${this.farmDirectory} not exist`);
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
formPath: formDirPath,
|
|
104
|
+
farmDirectory: farmDirectory
|
|
105
|
+
};
|
|
53
106
|
}
|
|
54
107
|
start() {
|
|
55
108
|
return this.startParallelLimit(async () => {
|
|
56
109
|
if (this.generateChain != undefined) {
|
|
57
110
|
return;
|
|
58
111
|
}
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
if (formDirPath === "") {
|
|
69
|
-
throw Error("formDirPath not found");
|
|
70
|
-
}
|
|
71
|
-
if (!(await (0, _fsExtra.pathExists)(this.farmDirectory))) {
|
|
72
|
-
throw Error(`FarmDirectory = ${this.farmDirectory} not exist`);
|
|
73
|
-
}
|
|
74
|
-
this.webpackHybridFileSystem = new _WebpackHybridFileSystem.WebpackHybridFileSystem(_path.default.join(formDirPath, "form"));
|
|
75
|
-
this.generateChain = _Observe.Observe.file(_path.default.join(formDirPath, "form.json")).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath, undefined, undefined, undefined, undefined, undefined, this.nightly)).transform(async x => {
|
|
112
|
+
const {
|
|
113
|
+
formPath,
|
|
114
|
+
farmDirectory
|
|
115
|
+
} = await this.findFormPath(this.gfv);
|
|
116
|
+
this.farmDirectory = farmDirectory;
|
|
117
|
+
this.formPath = formPath;
|
|
118
|
+
this.webpackHybridFileSystem = new _WebpackHybridFileSystem.WebpackHybridFileSystem(path.join(this.formPath, "form"));
|
|
119
|
+
this.generateChain = _Observe.Observe.file(path.join(this.formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName)).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, this.formPath, undefined, undefined, undefined, undefined, undefined, this.nightly)).transform(async x => {
|
|
76
120
|
if (this.useGeneratorFromLocalSources) {
|
|
77
121
|
return {
|
|
78
122
|
...x,
|
|
@@ -97,7 +141,7 @@ class BuildFormDevServer {
|
|
|
97
141
|
generator: y
|
|
98
142
|
}), async fi => (0, _AcquireFormGenerator.getGeneratorSourceKey)(fi.generatorSource)).attach(async fi => _Observe.Observe.files(fi.formSourcesPath, "../../controls/**/generator/*", "schemas/**/*", "sugar/**/*", "controls/**/*", "autocalc/**/*", "helpers/**/*", "validations/**/*", "localization/**/*")).do(async fi => {
|
|
99
143
|
try {
|
|
100
|
-
const FormsDirWithHlPath = this.farmConfigArray.find(i =>
|
|
144
|
+
const FormsDirWithHlPath = this.farmConfigArray.find(i => formPath.startsWith(i.farmDirectory));
|
|
101
145
|
if (FormsDirWithHlPath == undefined) {
|
|
102
146
|
throw Error("FormsDirWithHlPath === undefined");
|
|
103
147
|
}
|
|
@@ -107,14 +151,14 @@ class BuildFormDevServer {
|
|
|
107
151
|
}, this.webpackHybridFileSystem);
|
|
108
152
|
} catch (e) {
|
|
109
153
|
var _this$webpackHybridFi;
|
|
110
|
-
const formEntryPointPath =
|
|
154
|
+
const formEntryPointPath = path.join(this.formPath, "form", "web.js");
|
|
111
155
|
await ((_this$webpackHybridFi = this.webpackHybridFileSystem) === null || _this$webpackHybridFi === void 0 ? void 0 : _this$webpackHybridFi.writeBatch({
|
|
112
156
|
[formEntryPointPath]: (0, _ReportGeneratorErrorToPageBody.getReportGeneratorErrorToPageBodyScript)(this.formatError(e))
|
|
113
157
|
}));
|
|
114
158
|
}
|
|
115
159
|
});
|
|
116
160
|
await this.generateChain.observe();
|
|
117
|
-
await (0, _RunFormCompilationViaWebpackDevServer.runFormCompilationViaWebpackDevServer)(this.gfv, this.farmDirectory,
|
|
161
|
+
await (0, _RunFormCompilationViaWebpackDevServer.runFormCompilationViaWebpackDevServer)(this.gfv, this.farmDirectory, this.formPath, path.join(this.farmDirectory, "res"), "local-hash", this.buildDebugOnly, this.webpackHybridFileSystem, this.port);
|
|
118
162
|
this.webpackDevServerStarted = true;
|
|
119
163
|
});
|
|
120
164
|
}
|
|
@@ -123,7 +167,7 @@ class BuildFormDevServer {
|
|
|
123
167
|
await (0, _AsyncUtils.delay)(500);
|
|
124
168
|
}
|
|
125
169
|
let fileName = "";
|
|
126
|
-
const allPossibleFilePath = this.allFarmConfig.map(i =>
|
|
170
|
+
const allPossibleFilePath = this.allFarmConfig.map(i => path.join(i, "forms", this.gfv, "form", filename));
|
|
127
171
|
for (const pth of allPossibleFilePath) {
|
|
128
172
|
try {
|
|
129
173
|
var _this$webpackHybridFi2;
|
|
@@ -138,11 +182,11 @@ class BuildFormDevServer {
|
|
|
138
182
|
if (fileName === "") {
|
|
139
183
|
throw Error("getGeneratedFileAsStream filename not found");
|
|
140
184
|
}
|
|
141
|
-
return new Promise((resolve,
|
|
185
|
+
return new Promise((resolve, r) => {
|
|
142
186
|
var _this$webpackHybridFi3;
|
|
143
187
|
(_this$webpackHybridFi3 = this.webpackHybridFileSystem) === null || _this$webpackHybridFi3 === void 0 ? void 0 : _this$webpackHybridFi3.readFile(fileName, "utf-8", (error, data) => {
|
|
144
188
|
if (error) {
|
|
145
|
-
|
|
189
|
+
r(error);
|
|
146
190
|
} else {
|
|
147
191
|
resolve(_stream.Readable.from([data]));
|
|
148
192
|
}
|
|
@@ -173,4 +217,4 @@ class BuildFormDevServer {
|
|
|
173
217
|
}
|
|
174
218
|
}
|
|
175
219
|
exports.BuildFormDevServer = BuildFormDevServer;
|
|
176
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3N0cmVhbSIsIl9odHRwcyIsIl9ub2RlRmV0Y2giLCJfcExpbWl0IiwiX2ZzRXh0cmEiLCJfR2VuZXJhdGVGb3JtIiwiX0FjcXVpcmVGb3JtR2VuZXJhdG9yIiwiX1B1Ymxpc2hlZFZlcnNpb25VdGlscyIsIl9SZXNvbHZlRm9ybUluZm8iLCJfQXN5bmNVdGlscyIsIl9PYnNlcnZlIiwiX1JlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keSIsIl9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyIiwiX1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiQnVpbGRGb3JtRGV2U2VydmVyIiwiY29uc3RydWN0b3IiLCJwb3J0IiwiYWxsRmFybUNvbmZpZyIsImdmdiIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImZhcm1Db25maWdBcnJheSIsInVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMiLCJlbmdpbmVEaXJlY3RvcnkiLCJidWlsZERlYnVnT25seSIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwibmlnaHRseSIsImZhcm1EaXJlY3RvcnkiLCJzdGFydFBhcmFsbGVsTGltaXQiLCJnZW5lcmF0ZUNoYWluIiwid2VicGFja0RldlNlcnZlclN0YXJ0ZWQiLCJ3ZWJwYWNrSHlicmlkRmlsZVN5c3RlbSIsInBMaW1pdCIsInN0YXJ0IiwidW5kZWZpbmVkIiwiYWxsUG9zc2libGVGaWxlUGF0aCIsIm1hcCIsImkiLCJwYXRoIiwiam9pbiIsImZvcm1EaXJQYXRoIiwicHRoIiwicGF0aEV4aXN0cyIsIkVycm9yIiwiV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0iLCJPYnNlcnZlIiwiZmlsZSIsInRyYW5zZm9ybSIsImZvcm1Kc29uRmlsZSIsInJlc29sdmVGb3JtSW5mbyIsIngiLCJnZW5lcmF0b3JTb3VyY2UiLCJyZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UiLCJlbmdpbmVTb3VyY2UiLCJyZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UiLCJnZW5lcmF0b3JWZXJzaW9uIiwiZW5naW5lVmVyc2lvbiIsInJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIiwicmVzb2x2ZUVuZ2luZVZlcnNpb24iLCJhdHRhY2giLCJmaSIsImdlbmVyYXRvckZhY3RvcnkiLCJ5IiwiZ2VuZXJhdG9yIiwiZ2V0R2VuZXJhdG9yU291cmNlS2V5IiwiZmlsZXMiLCJmb3JtU291cmNlc1BhdGgiLCJkbyIsIkZvcm1zRGlyV2l0aEhsUGF0aCIsImZpbmQiLCJzdGFydHNXaXRoIiwiZ2VuZXJhdGVGb3JtIiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsInJlc291cmNlc0hhc2giLCJlIiwiX3RoaXMkd2VicGFja0h5YnJpZEZpIiwiZm9ybUVudHJ5UG9pbnRQYXRoIiwid3JpdGVCYXRjaCIsImdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCIsImZvcm1hdEVycm9yIiwib2JzZXJ2ZSIsInJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIiLCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0iLCJmaWxlbmFtZSIsImRlbGF5IiwiZmlsZU5hbWUiLCJfdGhpcyR3ZWJwYWNrSHlicmlkRmkyIiwic3RhdFN5bmMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIl90aGlzJHdlYnBhY2tIeWJyaWRGaTMiLCJyZWFkRmlsZSIsImVycm9yIiwiZGF0YSIsIlJlYWRhYmxlIiwiZnJvbSIsImdldEZpbGVBc1N0cmVhbSIsInJlc3BvbnNlIiwiZmV0Y2giLCJtZXRob2QiLCJhZ2VudCIsIkFnZW50IiwicmVqZWN0VW5hdXRob3JpemVkIiwic3RhdHVzIiwidGV4dFJlc3BvbnNlIiwidGV4dCIsImJvZHkiLCJzdGFjayIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIjtcblxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgcExpbWl0LCB7IExpbWl0IH0gZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi8uLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gICAgcmVzb2x2ZUVuZ2luZVZlcnNpb24sXG4gICAgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24sXG4gICAgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLFxuICAgIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Bc3luY1V0aWxzXCI7XG5pbXBvcnQgeyBSZWFzb25PckVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRXJyb3JVbnR5cGVkXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBnZXRSZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlTY3JpcHQgfSBmcm9tIFwiLi9SZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlcIjtcbmltcG9ydCB7IHJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIgfSBmcm9tIFwiLi9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyXCI7XG5pbXBvcnQgeyBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbSB9IGZyb20gXCIuL1dlYnBhY2tJbk1lbW9yeVV0aWxzL1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZEZvcm1EZXZTZXJ2ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZnY6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybUNvbmZpZ0FycmF5OiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFydFBhcmFsbGVsTGltaXQ6IExpbWl0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNoYWluPzogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxhbnk+O1xuICAgIHByaXZhdGUgd2VicGFja0RldlNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNraXBDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgd2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/OiBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmYXJtQ29uZmlnQXJyYXk6IEZhcm1Db25maWdbXSxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhblxuICAgICkge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLmdmdiA9IGdmdjtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuZmFybUNvbmZpZ0FycmF5ID0gZmFybUNvbmZpZ0FycmF5O1xuICAgICAgICB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICAgICAgdGhpcy5za2lwQ29kZVJlZm9ybWF0dGluZyA9IHNraXBDb2RlUmVmb3JtYXR0aW5nO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQYXJhbGxlbExpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlbmVyYXRlQ2hhaW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsUG9zc2libGVGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaSwgXCJmb3Jtc1wiLCB0aGlzLmdmdikpO1xuICAgICAgICAgICAgbGV0IGZvcm1EaXJQYXRoID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHRoIG9mIGFsbFBvc3NpYmxlRmlsZVBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoID0gcHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHRoLCBcIi4uXCIsIFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvcm1EaXJQYXRoID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtRGlyUGF0aCBub3QgZm91bmRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHRoaXMuZmFybURpcmVjdG9yeSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEZhcm1EaXJlY3RvcnkgPSAke3RoaXMuZmFybURpcmVjdG9yeX0gbm90IGV4aXN0YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gPSBuZXcgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0ocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIikpO1xuXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhaW4gPSBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSh0aGlzLmVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UodGhpcy5lbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHguZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oeC5lbmdpbmVWZXJzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi9nZW5lcmF0b3IvKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jtc0RpcldpdGhIbFBhdGggPSB0aGlzLmZhcm1Db25maWdBcnJheS5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aC5zdGFydHNXaXRoKGkuZmFybURpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9ybXNEaXJXaXRoSGxQYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiRm9ybXNEaXJXaXRoSGxQYXRoID09PSB1bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jtc0RpcldpdGhIbFBhdGguaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IHRoaXMuc2tpcENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IFwibG9jYWwtaGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUVudHJ5UG9pbnRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCB0aGlzLmdmdiwgXCJmb3JtXCIsIFwid2ViLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8ud3JpdGVCYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1FbnRyeVBvaW50UGF0aF06IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCh0aGlzLmZvcm1hdEVycm9yKGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgICAgICBhd2FpdCBydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcInJlc1wiKSxcbiAgICAgICAgICAgICAgICBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0sXG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHdoaWxlICghdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcIlwiO1xuICAgICAgICBjb25zdCBhbGxQb3NzaWJsZUZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLCBcImZvcm1zXCIsIHRoaXMuZ2Z2LCBcImZvcm1cIiwgZmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwdGggb2YgYWxsUG9zc2libGVGaWxlUGF0aCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8uc3RhdFN5bmMocHRoKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IHB0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0gZmlsZW5hbWUgbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/LnJlYWRGaWxlKGZpbGVOYW1lLCBcInV0Zi04XCIsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoUmVhZGFibGUuZnJvbShbZGF0YV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVBc1N0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSg1MDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vbG9jYWxob3N0OiR7dGhpcy5wb3J0fS8ke2ZpbGVuYW1lfWAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgIGFnZW50OiBuZXcgQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRSZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0UmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RXJyb3IoZTogUmVhc29uT3JFcnJvcik6IHN0cmluZyB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlfVxcbiR7ZS5zdGFja31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtlfWA7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLHNCQUFBLEdBQUFSLE9BQUE7QUFNQSxJQUFBUyxnQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsV0FBQSxHQUFBVixPQUFBO0FBR0EsSUFBQVcsUUFBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksK0JBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLHNDQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyx3QkFBQSxHQUFBZCxPQUFBO0FBRU8sTUFBTWUsa0JBQWtCLENBQUM7RUFrQnJCQyxXQUFXQSxDQUNkQyxJQUFZLEVBQ1pDLGFB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
|
|
220
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3N0cmVhbSIsIl9odHRwcyIsIl9ub2RlRmV0Y2giLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3BMaW1pdCIsIl9mc0V4dHJhIiwiX0dlbmVyYXRlRm9ybSIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0FzeW5jVXRpbHMiLCJfT2JzZXJ2ZSIsIl9Gc1V0aWxzIiwiX0Zvcm1QYXRoVXRpbHMiLCJfVHlwaW5nVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJfUmVwb3J0R2VuZXJhdG9yRXJyb3JUb1BhZ2VCb2R5IiwiX1J1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIiLCJfV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiYnVpbGRHZnZUb1BhdGhNYXAiLCJyZXBvc2l0b3J5Um9vdHMiLCJyZXN1bHQiLCJNYXAiLCJyZXBvc2l0b3J5Um9vdCIsImZvcm1QYXRocyIsImdsb2JBc3luYyIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiQ2FuZHlTdWJkaXJlY3RvcnlOYW1lIiwiY3dkIiwiZm9ybVBhdGgiLCJnZnYiLCJleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIiwiam9pbiIsIkJ1aWxkRm9ybURldlNlcnZlciIsImNvbnN0cnVjdG9yIiwicG9ydCIsImFsbEZhcm1Db25maWciLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJmYXJtQ29uZmlnQXJyYXkiLCJ1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzIiwiZW5naW5lRGlyZWN0b3J5IiwiYnVpbGREZWJ1Z09ubHkiLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsIm5pZ2h0bHkiLCJmYXJtRGlyZWN0b3J5Iiwic3RhcnRQYXJhbGxlbExpbWl0IiwiZ2VuZXJhdGVDaGFpbiIsIndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkIiwid2VicGFja0h5YnJpZEZpbGVTeXN0ZW0iLCJnZnZQYXRocyIsInVuZGVmaW5lZCIsInBMaW1pdCIsImZpbmRGb3JtUGF0aCIsIl90aGlzJGdmdlBhdGhzIiwibWFwIiwieCIsIl90aGlzJGdmdlBhdGhzJGdldCIsInJlamVjdCIsImZvcm1EaXJQYXRoIiwiYWxsUG9zc2libGVGaWxlUGF0aCIsImkiLCJwdGgiLCJwYXRoRXhpc3RzIiwiRXJyb3IiLCJzdGFydCIsIldlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiT2JzZXJ2ZSIsImZpbGUiLCJGb3JtSnNvbkZpbGVOYW1lIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZ2VuZXJhdG9yU291cmNlIiwicmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwicmVzb2x2ZUxvY2FsRW5naW5lU291cmNlIiwiZ2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVZlcnNpb24iLCJyZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiIsInJlc29sdmVFbmdpbmVWZXJzaW9uIiwiYXR0YWNoIiwiZmkiLCJnZW5lcmF0b3JGYWN0b3J5IiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImZpbGVzIiwiZm9ybVNvdXJjZXNQYXRoIiwiZG8iLCJGb3Jtc0RpcldpdGhIbFBhdGgiLCJmaW5kIiwic3RhcnRzV2l0aCIsImdlbmVyYXRlRm9ybSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJyZXNvdXJjZXNIYXNoIiwiZSIsIl90aGlzJHdlYnBhY2tIeWJyaWRGaSIsImZvcm1FbnRyeVBvaW50UGF0aCIsIndyaXRlQmF0Y2giLCJnZXRSZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlTY3JpcHQiLCJmb3JtYXRFcnJvciIsIm9ic2VydmUiLCJydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyIiwiZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtIiwiZmlsZW5hbWUiLCJkZWxheSIsImZpbGVOYW1lIiwiX3RoaXMkd2VicGFja0h5YnJpZEZpMiIsInN0YXRTeW5jIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyIiwiX3RoaXMkd2VicGFja0h5YnJpZEZpMyIsInJlYWRGaWxlIiwiZXJyb3IiLCJkYXRhIiwiUmVhZGFibGUiLCJmcm9tIiwiZ2V0RmlsZUFzU3RyZWFtIiwicmVzcG9uc2UiLCJmZXRjaCIsIm1ldGhvZCIsImFnZW50IiwiQWdlbnQiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJzdGF0dXMiLCJ0ZXh0UmVzcG9uc2UiLCJ0ZXh0IiwiYm9keSIsInN0YWNrIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL0J1aWxkRm9ybURldlNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gXCJzdHJlYW1cIjtcbmltcG9ydCB7IEFnZW50IH0gZnJvbSBcImh0dHBzXCI7XG5cbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiO1xuaW1wb3J0IHBMaW1pdCwgeyBMaW1pdCB9IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdG9yRmFjdG9yeSwgZ2V0R2VuZXJhdG9yU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQge1xuICAgIHJlc29sdmVFbmdpbmVWZXJzaW9uLFxuICAgIHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uLFxuICAgIHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSxcbiAgICByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UsXG59IGZyb20gXCIuLi8uLi8uLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9Db21tb24vQXN5bmNVdGlsc1wiO1xuaW1wb3J0IHsgUmVhc29uT3JFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb25zL0Vycm9yVW50eXBlZFwiO1xuaW1wb3J0IHsgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL09ic2VydmVcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGggfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0Zvcm1QYXRoVXRpbHNcIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IFdlbGxLbm93bkRpcmVjdG9yaWVzIH0gZnJvbSBcIi4uL0RpcmVjdG9yaWVzL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmltcG9ydCB7IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCB9IGZyb20gXCIuL1JlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVwiO1xuaW1wb3J0IHsgcnVuRm9ybUNvbXBpbGF0aW9uVmlhV2VicGFja0RldlNlcnZlciB9IGZyb20gXCIuL1J1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXJcIjtcbmltcG9ydCB7IFdlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIH0gZnJvbSBcIi4vV2VicGFja0luTWVtb3J5VXRpbHMvV2VicGFja0h5YnJpZEZpbGVTeXN0ZW1cIjtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRHZnZUb1BhdGhNYXAocmVwb3NpdG9yeVJvb3RzOiBzdHJpbmdbXSk6IFByb21pc2U8TWFwPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHJlcG9zaXRvcnlSb290IG9mIHJlcG9zaXRvcnlSb290cykge1xuICAgICAgICBjb25zdCBmb3JtUGF0aHMgPSBhd2FpdCBnbG9iQXN5bmMoYGZvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWV9YCwge1xuICAgICAgICAgICAgY3dkOiByZXBvc2l0b3J5Um9vdCxcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3QgZm9ybVBhdGggb2YgZm9ybVBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBnZnYgPSBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoKGZvcm1QYXRoKTtcbiAgICAgICAgICAgIHJlc3VsdC5zZXQoZ2Z2LCBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgY2xhc3MgQnVpbGRGb3JtRGV2U2VydmVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2Z2OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIGZhcm1EaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIGZvcm1QYXRoOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtQ29uZmlnQXJyYXk6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0UGFyYWxsZWxMaW1pdDogTGltaXQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGdlbmVyYXRlQ2hhaW4/OiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPGFueT47XG4gICAgcHJpdmF0ZSB3ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmlnaHRseTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkRGVidWdPbmx5OiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2tpcENvZGVSZWZvcm1hdHRpbmc6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSB3ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT86IFdlYnBhY2tIeWJyaWRGaWxlU3lzdGVtO1xuICAgIHByaXZhdGUgZ2Z2UGF0aHM6IHVuZGVmaW5lZCB8IE1hcDxzdHJpbmcsIHN0cmluZz4gPSB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHBvcnQ6IG51bWJlcixcbiAgICAgICAgYWxsRmFybUNvbmZpZzogc3RyaW5nW10sXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgZmFybUNvbmZpZ0FycmF5OiBGYXJtQ29uZmlnW10sXG4gICAgICAgIHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW4sXG4gICAgICAgIGVuZ2luZURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBidWlsZERlYnVnT25seTogYm9vbGVhbixcbiAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IGJvb2xlYW4sXG4gICAgICAgIG5pZ2h0bHk6IGJvb2xlYW5cbiAgICApIHtcbiAgICAgICAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnID0gYWxsRmFybUNvbmZpZztcbiAgICAgICAgdGhpcy5nZnYgPSBnZnY7XG4gICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5ID0gY2FuZHlNb2R1bGVzRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmZhcm1Db25maWdBcnJheSA9IGZhcm1Db25maWdBcnJheTtcbiAgICAgICAgdGhpcy5zdGFydFBhcmFsbGVsTGltaXQgPSBwTGltaXQoMSk7XG4gICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyA9IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM7XG4gICAgICAgIHRoaXMuZW5naW5lRGlyZWN0b3J5ID0gZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5ID0gYnVpbGREZWJ1Z09ubHk7XG4gICAgICAgIHRoaXMuc2tpcENvZGVSZWZvcm1hdHRpbmcgPSBza2lwQ29kZVJlZm9ybWF0dGluZztcbiAgICAgICAgdGhpcy5uaWdodGx5ID0gbmlnaHRseTtcbiAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5ID0gXCJcIjtcbiAgICAgICAgdGhpcy5mb3JtUGF0aCA9IFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBmaW5kRm9ybVBhdGgoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPHsgZm9ybVBhdGg6IHN0cmluZzsgZmFybURpcmVjdG9yeTogc3RyaW5nIH0+IHtcbiAgICAgICAgdGhpcy5nZnZQYXRocyA9IHRoaXMuZ2Z2UGF0aHMgPz8gKGF3YWl0IGJ1aWxkR2Z2VG9QYXRoTWFwKHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoeCA9PiBwYXRoLmpvaW4oeCwgXCIuLlwiKSkpKTtcblxuICAgICAgICBpZiAodGhpcy5nZnZQYXRocy5oYXMoZ2Z2KSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmb3JtUGF0aDogdGhpcy5nZnZQYXRocy5nZXQoZ2Z2KSA/PyByZWplY3QoKSxcbiAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBwYXRoLmpvaW4oXCIuLlwiLCBcIi4uXCIsIFwiLi5cIiwgXCIuLlwiLCBcIi4uXCIsIFwiY2FuZHkuZmFybVwiKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmFybURpcmVjdG9yeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgZm9ybURpclBhdGggPSBcIlwiO1xuXG4gICAgICAgIGNvbnN0IGFsbFBvc3NpYmxlRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGksIFwiZm9ybXNcIiwgdGhpcy5nZnYpKTtcbiAgICAgICAgZm9yIChjb25zdCBwdGggb2YgYWxsUG9zc2libGVGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocHRoKSkge1xuICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoID0gcHRoO1xuICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHRoLCBcIi4uXCIsIFwiLi5cIik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybURpclBhdGggPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiZm9ybURpclBhdGggbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmYXJtRGlyZWN0b3J5ID09IHVuZGVmaW5lZCB8fCAhKGF3YWl0IHBhdGhFeGlzdHMoZmFybURpcmVjdG9yeSkpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgRmFybURpcmVjdG9yeSA9ICR7dGhpcy5mYXJtRGlyZWN0b3J5fSBub3QgZXhpc3RgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybVBhdGg6IGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZW5lcmF0ZUNoYWluICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyBmb3JtUGF0aCwgZmFybURpcmVjdG9yeSB9ID0gYXdhaXQgdGhpcy5maW5kRm9ybVBhdGgodGhpcy5nZnYpO1xuICAgICAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5ID0gZmFybURpcmVjdG9yeTtcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhdGggPSBmb3JtUGF0aDtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gPSBuZXcgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0ocGF0aC5qb2luKHRoaXMuZm9ybVBhdGgsIFwiZm9ybVwiKSk7XG5cbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDaGFpbiA9IE9ic2VydmUuZmlsZShwYXRoLmpvaW4odGhpcy5mb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSkpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUZvcm1JbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUpzb25GaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSh0aGlzLmVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UodGhpcy5lbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHguZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oeC5lbmdpbmVWZXJzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi9nZW5lcmF0b3IvKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jtc0RpcldpdGhIbFBhdGggPSB0aGlzLmZhcm1Db25maWdBcnJheS5maW5kKGkgPT4gZm9ybVBhdGguc3RhcnRzV2l0aChpLmZhcm1EaXJlY3RvcnkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGb3Jtc0RpcldpdGhIbFBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJGb3Jtc0RpcldpdGhIbFBhdGggPT09IHVuZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1zRGlyV2l0aEhsUGF0aC5obEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogdGhpcy5za2lwQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogXCJsb2NhbC1oYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndlYnBhY2tIeWJyaWRGaWxlU3lzdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRW50cnlQb2ludFBhdGggPSBwYXRoLmpvaW4odGhpcy5mb3JtUGF0aCwgXCJmb3JtXCIsIFwid2ViLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8ud3JpdGVCYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1FbnRyeVBvaW50UGF0aF06IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCh0aGlzLmZvcm1hdEVycm9yKGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgICAgICBhd2FpdCBydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1QYXRoLFxuICAgICAgICAgICAgICAgIHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwicmVzXCIpLFxuICAgICAgICAgICAgICAgIFwibG9jYWwtaGFzaFwiLFxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHksXG4gICAgICAgICAgICAgICAgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbSxcbiAgICAgICAgICAgICAgICB0aGlzLnBvcnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSg1MDApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaWxlTmFtZSA9IFwiXCI7XG4gICAgICAgIGNvbnN0IGFsbFBvc3NpYmxlRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGksIFwiZm9ybXNcIiwgdGhpcy5nZnYsIFwiZm9ybVwiLCBmaWxlbmFtZSkpO1xuICAgICAgICBmb3IgKGNvbnN0IHB0aCBvZiBhbGxQb3NzaWJsZUZpbGVQYXRoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLndlYnBhY2tIeWJyaWRGaWxlU3lzdGVtPy5zdGF0U3luYyhwdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gcHRoO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbGVOYW1lID09PSBcIlwiKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcImdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbSBmaWxlbmFtZSBub3QgZm91bmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHIpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/LnJlYWRGaWxlKGZpbGVOYW1lLCBcInV0Zi04XCIsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFJlYWRhYmxlLmZyb20oW2RhdGFdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGaWxlQXNTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHdoaWxlICghdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL2xvY2FsaG9zdDoke3RoaXMucG9ydH0vJHtmaWxlbmFtZX1gLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgICBhZ2VudDogbmV3IEFnZW50KHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0UmVzcG9uc2UgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGV4dFJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuYm9keTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdEVycm9yKGU6IFJlYXNvbk9yRXJyb3IpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZX1cXG4ke2Uuc3RhY2t9YDtcbiAgICAg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
|
|
@@ -5,18 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.runFormCompilationViaWebpackDevServer = runFormCompilationViaWebpackDevServer;
|
|
8
|
-
var path = _interopRequireWildcard(require("path"));
|
|
9
8
|
var _webpack = _interopRequireDefault(require("webpack"));
|
|
10
9
|
var _webpackDevServer = _interopRequireDefault(require("webpack-dev-server"));
|
|
11
10
|
var _AsyncUtils = require("../../../../../../Common/AsyncUtils");
|
|
12
11
|
var _createFormWebpackConfiguration = require("../../../../FormWebpackConfiguration/createFormWebpackConfiguration");
|
|
13
|
-
|
|
14
|
-
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; }
|
|
15
|
-
async function runFormCompilationViaWebpackDevServer(gfv, farmDirectory, resourcesDirectory, resourcesHash, buildDebugOnly, fileSystem, port) {
|
|
12
|
+
async function runFormCompilationViaWebpackDevServer(gfv, farmDirectory, formPath, resourcesDirectory, resourcesHash, buildDebugOnly, fileSystem, port) {
|
|
16
13
|
const configs = await (0, _createFormWebpackConfiguration.createConfig)({
|
|
17
14
|
gfv: gfv,
|
|
18
15
|
resourcesHash: resourcesHash,
|
|
19
|
-
|
|
16
|
+
formPath: formPath,
|
|
20
17
|
modes: buildDebugOnly ? ["development"] : ["production", "development"],
|
|
21
18
|
resourcesDirectoryPath: resourcesDirectory
|
|
22
19
|
});
|
|
@@ -52,4 +49,4 @@ async function runFormCompilationViaWebpackDevServer(gfv, farmDirectory, resourc
|
|
|
52
49
|
server.listen(port);
|
|
53
50
|
await (0, _AsyncUtils.delay)(1000);
|
|
54
51
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2VicGFjayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3dlYnBhY2tEZXZTZXJ2ZXIiLCJfQXN5bmNVdGlscyIsIl9jcmVhdGVGb3JtV2VicGFja0NvbmZpZ3VyYXRpb24iLCJydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyIiwiZ2Z2IiwiZmFybURpcmVjdG9yeSIsImZvcm1QYXRoIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwicmVzb3VyY2VzSGFzaCIsImJ1aWxkRGVidWdPbmx5IiwiZmlsZVN5c3RlbSIsInBvcnQiLCJjb25maWdzIiwiY3JlYXRlQ29uZmlnIiwibW9kZXMiLCJyZXNvdXJjZXNEaXJlY3RvcnlQYXRoIiwiY29tcGlsZXIiLCJ3ZWJwYWNrIiwiaW5wdXRGaWxlU3lzdGVtIiwiY29tcGlsZXJzIiwic2V0SW5uZXJJbnB1dEZpbGVTeXN0ZW0iLCJzaW5nbGVDb21waWxlciIsIndhdGNoRmlsZVN5c3RlbSIsInNlcnZlciIsIldlYnBhY2tEZXZTZXJ2ZXIiLCJhbGxvd2VkSG9zdHMiLCJ0eXBlIiwib3B0aW9ucyIsImNlcnQiLCJyZXNvbHZlIiwia2V5IiwiY2xpZW50Iiwib3ZlcmxheSIsIndlYlNvY2tldFVSTCIsImxpc3RlbiIsImRlbGF5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0RldlNlcnZlcnMvUnVuRm9ybUNvbXBpbGF0aW9uVmlhV2VicGFja0RldlNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgd2VicGFjayBmcm9tIFwid2VicGFja1wiO1xuaW1wb3J0IFdlYnBhY2tEZXZTZXJ2ZXIgZnJvbSBcIndlYnBhY2stZGV2LXNlcnZlclwiO1xuXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9Db21tb24vQXN5bmNVdGlsc1wiO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9jcmVhdGVGb3JtV2VicGFja0NvbmZpZ3VyYXRpb25cIjtcblxuaW1wb3J0IHsgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gfSBmcm9tIFwiLi9XZWJwYWNrSW5NZW1vcnlVdGlscy9XZWJwYWNrSHlicmlkRmlsZVN5c3RlbVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRm9ybUNvbXBpbGF0aW9uVmlhV2VicGFja0RldlNlcnZlcihcbiAgICBnZnY6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZm9ybVBhdGg6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNIYXNoOiBzdHJpbmcsXG4gICAgYnVpbGREZWJ1Z09ubHk6IGJvb2xlYW4sXG4gICAgZmlsZVN5c3RlbTogV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0sXG4gICAgcG9ydDogbnVtYmVyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb25maWdzID0gYXdhaXQgY3JlYXRlQ29uZmlnKHtcbiAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgIHJlc291cmNlc0hhc2g6IHJlc291cmNlc0hhc2gsXG4gICAgICAgIGZvcm1QYXRoOiBmb3JtUGF0aCxcbiAgICAgICAgbW9kZXM6IGJ1aWxkRGVidWdPbmx5ID8gW1wiZGV2ZWxvcG1lbnRcIl0gOiBbXCJwcm9kdWN0aW9uXCIsIFwiZGV2ZWxvcG1lbnRcIl0sXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeVBhdGg6IHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXBpbGVyID0gd2VicGFjayhjb25maWdzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBpbnB1dEZpbGVTeXN0ZW0gPSBjb21waWxlci5jb21waWxlcnNbMF0uaW5wdXRGaWxlU3lzdGVtIGFzIGFueTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgIGZpbGVTeXN0ZW0uc2V0SW5uZXJJbnB1dEZpbGVTeXN0ZW0oaW5wdXRGaWxlU3lzdGVtKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGZvciAoY29uc3Qgc2luZ2xlQ29tcGlsZXIgb2YgY29tcGlsZXIuY29tcGlsZXJzIGFzIGFueVtdKSB7XG4gICAgICAgIHNpbmdsZUNvbXBpbGVyLmlucHV0RmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07XG4gICAgICAgIHNpbmdsZUNvbXBpbGVyLndhdGNoRmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07XG4gICAgfVxuICAgIC8vIHRzbGludDplbmFibGUgbm8tYW55IG5vLXVuc2FmZS1hbnlcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBzZXJ2ZXIgPSBuZXcgV2VicGFja0RldlNlcnZlcihcbiAgICAgICAge1xuICAgICAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgICAgIGFsbG93ZWRIb3N0czogXCJhbGxcIixcbiAgICAgICAgICAgIHNlcnZlcjoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiaHR0cHNcIixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNlcnQ6IHJlcXVpcmUucmVzb2x2ZShcIi4uLy4uLy4uLy4uL0tleXMvbG9jYWxob3N0LnBlbVwiKSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiByZXF1aXJlLnJlc29sdmUoXCIuLi8uLi8uLi8uLi9LZXlzL2xvY2FsaG9zdC1rZXkucGVtXCIpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xpZW50OiB7XG4gICAgICAgICAgICAgICAgb3ZlcmxheTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2ViU29ja2V0VVJMOiBgd3NzOi8vbG9jYWxob3N0LnRlc3Rrb250dXIucnU6JHtwb3J0fS93c2AsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBjb21waWxlclxuICAgICk7XG4gICAgc2VydmVyLmxpc3Rlbihwb3J0KTtcbiAgICBhd2FpdCBkZWxheSgxMDAwKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRywrQkFBQSxHQUFBSCxPQUFBO0FBSU8sZUFBZUkscUNBQXFDQSxDQUN2REMsR0FBVyxFQUNYQyxhQUFxQixFQUNyQkMsUUFBZ0IsRUFDaEJDLGtCQUEwQixFQUMxQkMsYUFBcUIsRUFDckJDLGNBQXVCLEVBQ3ZCQyxVQUFtQyxFQUNuQ0MsSUFBWSxFQUNDO0VBQ2IsTUFBTUMsT0FBTyxHQUFHLE1BQU0sSUFBQUMsNENBQVksRUFBQztJQUMvQlQsR0FBRyxFQUFFQSxHQUFHO0lBQ1JJLGFBQWEsRUFBRUEsYUFBYTtJQUM1QkYsUUFBUSxFQUFFQSxRQUFRO0lBQ2xCUSxLQUFLLEVBQUVMLGNBQWMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztJQUN2RU0sc0JBQXNCLEVBQUVSO0VBQzVCLENBQUMsQ0FBQztFQUVGLE1BQU1TLFFBQVEsR0FBRyxJQUFBQyxnQkFBTyxFQUFDTCxPQUFPLENBQUM7RUFDakM7RUFDQTtFQUNBLE1BQU1NLGVBQWUsR0FBR0YsUUFBUSxDQUFDRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUNELGVBQXNCO0VBQ3BFO0VBQ0FSLFVBQVUsQ0FBQ1UsdUJBQXVCLENBQUNGLGVBQWUsQ0FBQztFQUNuRDtFQUNBLEtBQUssTUFBTUcsY0FBYyxJQUFJTCxRQUFRLENBQUNHLFNBQVMsRUFBVztJQUN0REUsY0FBYyxDQUFDSCxlQUFlLEdBQUdSLFVBQVU7SUFDM0NXLGNBQWMsQ0FBQ0MsZUFBZSxHQUFHWixVQUFVO0VBQy9DO0VBQ0E7O0VBRUE7RUFDQSxNQUFNYSxNQUFNLEdBQUcsSUFBSUMseUJBQWdCLENBQy9CO0lBQ0liLElBQUksRUFBRUEsSUFBSTtJQUNWYyxZQUFZLEVBQUUsS0FBSztJQUNuQkYsTUFBTSxFQUFFO01BQ0pHLElBQUksRUFBRSxPQUFPO01BQ2JDLE9BQU8sRUFBRTtRQUNMQyxJQUFJLEVBQUU3QixPQUFPLENBQUM4QixPQUFPLGlDQUFpQyxDQUFDO1FBQ3ZEQyxHQUFHLEVBQUUvQixPQUFPLENBQUM4QixPQUFPLHFDQUFxQztNQUM3RDtJQUNKLENBQUM7SUFDREUsTUFBTSxFQUFFO01BQ0pDLE9BQU8sRUFBRSxLQUFLO01BQ2RDLFlBQVksRUFBRyxpQ0FBZ0N0QixJQUFLO0lBQ3hEO0VBQ0osQ0FBQyxFQUNESyxRQUNKLENBQUM7RUFDRE8sTUFBTSxDQUFDVyxNQUFNLENBQUN2QixJQUFJLENBQUM7RUFDbkIsTUFBTSxJQUFBd0IsaUJBQUssRUFBQyxJQUFJLENBQUM7QUFDckIifQ==
|