@kontur.candy/tools 2.160.0-linux-compat.1 → 2.160.0-linux-compat.3

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/distr/Common/AutoValidationUtils.js +9 -0
  3. package/distr/Common/CandyApiClient/CandyApiClient.js +29 -14
  4. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +8 -20
  5. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +4 -9
  6. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +8 -27
  7. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +8 -10
  8. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
  9. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +4 -8
  10. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +18 -14
  11. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
  12. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
  13. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
  14. package/distr/Common/EndPoints.js +4 -2
  15. package/distr/Common/FSPrinterClient/FSPrinterClient.js +136 -0
  16. package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +19 -0
  17. package/distr/Common/FSPrinterClient/IFSPrinterClient.js +44 -0
  18. package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +53 -0
  19. package/distr/Common/ModelPath/BuildIterationSequence.js +20 -1
  20. package/distr/Common/ModelPath/Map/Map2.js +14 -1
  21. package/distr/Common/ModelPath/ModelPath.js +41 -69
  22. package/distr/Common/ModelPath/ModelPathHelper.js +23 -1
  23. package/distr/Common/ModelPath/Set/Set2.js +7 -2
  24. package/distr/Common/PicklistApiClient/IPicklistApiClient.js +6 -0
  25. package/distr/Common/PicklistApiClient/PicklistApiClient.js +30 -0
  26. package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +34 -0
  27. package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +53 -0
  28. package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +37 -0
  29. package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +6 -0
  30. package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +6 -0
  31. package/distr/Common/StringArrayKey.js +4 -2
  32. package/distr/Common/getRngSchemaFilename.js +10 -4
  33. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -2
  34. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  35. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  36. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +182 -171
  37. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  38. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +192 -192
  39. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  40. package/package.json +2 -2
  41. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestResponse.js +0 -6
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.serializeToString = void 0;
7
+ var _util = require("util");
8
+ var _DigestQueryFilter = require("../../CandyApiClient/DigestApiClient/Types/DigestQueryFilter");
9
+ var _TypingUtils = require("../../TypingUtils");
10
+ const serializeToString = filter => {
11
+ if ((0, _util.isNullOrUndefined)(filter) || (0, _TypingUtils.isNullOrEmpty)(filter === null || filter === void 0 ? void 0 : filter.value)) {
12
+ return "";
13
+ }
14
+ const valueString = serializeValueToString(filter.value);
15
+ let result = "(" + filter.column;
16
+ const operatorString = serializeOperatorToString(filter.operator);
17
+ switch (filter.operator) {
18
+ case _DigestQueryFilter.DigestFilterOperator.Equal:
19
+ case _DigestQueryFilter.DigestFilterOperator.ContainsInList:
20
+ result += operatorString + valueString;
21
+ break;
22
+ case _DigestQueryFilter.DigestFilterOperator.Substring:
23
+ result += operatorString + "*" + valueString + "*";
24
+ break;
25
+ case _DigestQueryFilter.DigestFilterOperator.Prefix:
26
+ result += operatorString + valueString + "*";
27
+ break;
28
+ }
29
+ return result + ")";
30
+ };
31
+ exports.serializeToString = serializeToString;
32
+ const serializeValueToString = value => {
33
+ var _value$toString;
34
+ let result = (_value$toString = value === null || value === void 0 ? void 0 : value.toString()) !== null && _value$toString !== void 0 ? _value$toString : "";
35
+ const escapeQuote = "'";
36
+ result = result.replace(/\\/g, "\\\\");
37
+ result = result.replace(escapeQuote, "\\" + escapeQuote);
38
+ return escapeQuote + result + escapeQuote;
39
+ };
40
+ const serializeOperatorToString = operator => {
41
+ switch (operator) {
42
+ case _DigestQueryFilter.DigestFilterOperator.Equal:
43
+ return "=";
44
+ case _DigestQueryFilter.DigestFilterOperator.ContainsInList:
45
+ return "@";
46
+ case _DigestQueryFilter.DigestFilterOperator.Substring:
47
+ case _DigestQueryFilter.DigestFilterOperator.Prefix:
48
+ return "~";
49
+ default:
50
+ return "";
51
+ }
52
+ };
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfRGlnZXN0UXVlcnlGaWx0ZXIiLCJfVHlwaW5nVXRpbHMiLCJzZXJpYWxpemVUb1N0cmluZyIsImZpbHRlciIsImlzTnVsbE9yVW5kZWZpbmVkIiwiaXNOdWxsT3JFbXB0eSIsInZhbHVlIiwidmFsdWVTdHJpbmciLCJzZXJpYWxpemVWYWx1ZVRvU3RyaW5nIiwicmVzdWx0IiwiY29sdW1uIiwib3BlcmF0b3JTdHJpbmciLCJzZXJpYWxpemVPcGVyYXRvclRvU3RyaW5nIiwib3BlcmF0b3IiLCJEaWdlc3RGaWx0ZXJPcGVyYXRvciIsIkVxdWFsIiwiQ29udGFpbnNJbkxpc3QiLCJTdWJzdHJpbmciLCJQcmVmaXgiLCJleHBvcnRzIiwiX3ZhbHVlJHRvU3RyaW5nIiwidG9TdHJpbmciLCJlc2NhcGVRdW90ZSIsInJlcGxhY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9Db21tb24vUGlja2xpc3RBcGlDbGllbnQvU2VyaWFsaXplcnMvRGlnZXN0RmlsdGVyQ29sdW1uU2VyaWFsaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCJ1dGlsXCI7XG5cbmltcG9ydCB7IERpZ2VzdEZpbHRlckNvbHVtbiwgRGlnZXN0RmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwiLi4vLi4vQ2FuZHlBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50L1R5cGVzL0RpZ2VzdFF1ZXJ5RmlsdGVyXCI7XG5pbXBvcnQgeyBpc051bGxPckVtcHR5IH0gZnJvbSBcIi4uLy4uL1R5cGluZ1V0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVUb1N0cmluZyA9IChmaWx0ZXI/OiBEaWdlc3RGaWx0ZXJDb2x1bW4pOiBzdHJpbmcgPT4ge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChmaWx0ZXIpIHx8IGlzTnVsbE9yRW1wdHkoZmlsdGVyPy52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVTdHJpbmcgPSBzZXJpYWxpemVWYWx1ZVRvU3RyaW5nKGZpbHRlci52YWx1ZSk7XG4gICAgbGV0IHJlc3VsdCA9IFwiKFwiICsgZmlsdGVyLmNvbHVtbjtcbiAgICBjb25zdCBvcGVyYXRvclN0cmluZyA9IHNlcmlhbGl6ZU9wZXJhdG9yVG9TdHJpbmcoZmlsdGVyLm9wZXJhdG9yKTtcblxuICAgIHN3aXRjaCAoZmlsdGVyLm9wZXJhdG9yKSB7XG4gICAgICAgIGNhc2UgRGlnZXN0RmlsdGVyT3BlcmF0b3IuRXF1YWw6XG4gICAgICAgIGNhc2UgRGlnZXN0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnNJbkxpc3Q6XG4gICAgICAgICAgICByZXN1bHQgKz0gb3BlcmF0b3JTdHJpbmcgKyB2YWx1ZVN0cmluZztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpZ2VzdEZpbHRlck9wZXJhdG9yLlN1YnN0cmluZzpcbiAgICAgICAgICAgIHJlc3VsdCArPSBvcGVyYXRvclN0cmluZyArIFwiKlwiICsgdmFsdWVTdHJpbmcgKyBcIipcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERpZ2VzdEZpbHRlck9wZXJhdG9yLlByZWZpeDpcbiAgICAgICAgICAgIHJlc3VsdCArPSBvcGVyYXRvclN0cmluZyArIHZhbHVlU3RyaW5nICsgXCIqXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0ICsgXCIpXCI7XG59O1xuXG5jb25zdCBzZXJpYWxpemVWYWx1ZVRvU3RyaW5nID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGxldCByZXN1bHQgPSB2YWx1ZT8udG9TdHJpbmcoKSA/PyBcIlwiO1xuICAgIGNvbnN0IGVzY2FwZVF1b3RlID0gXCInXCI7XG5cbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpO1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKGVzY2FwZVF1b3RlLCBcIlxcXFxcIiArIGVzY2FwZVF1b3RlKTtcbiAgICByZXR1cm4gZXNjYXBlUXVvdGUgKyByZXN1bHQgKyBlc2NhcGVRdW90ZTtcbn07XG5cbmNvbnN0IHNlcmlhbGl6ZU9wZXJhdG9yVG9TdHJpbmcgPSAob3BlcmF0b3I6IERpZ2VzdEZpbHRlck9wZXJhdG9yKTogc3RyaW5nID0+IHtcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgIGNhc2UgRGlnZXN0RmlsdGVyT3BlcmF0b3IuRXF1YWw6XG4gICAgICAgICAgICByZXR1cm4gXCI9XCI7XG4gICAgICAgIGNhc2UgRGlnZXN0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnNJbkxpc3Q6XG4gICAgICAgICAgICByZXR1cm4gXCJAXCI7XG4gICAgICAgIGNhc2UgRGlnZXN0RmlsdGVyT3BlcmF0b3IuU3Vic3RyaW5nOlxuICAgICAgICBjYXNlIERpZ2VzdEZpbHRlck9wZXJhdG9yLlByZWZpeDpcbiAgICAgICAgICAgIHJldHVybiBcIn5cIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLGtCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFFTyxNQUFNRyxpQkFBaUIsR0FBSUMsTUFBMkIsSUFBYTtFQUN0RSxJQUFJLElBQUFDLHVCQUFpQixFQUFDRCxNQUFNLENBQUMsSUFBSSxJQUFBRSwwQkFBYSxFQUFDRixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRUcsS0FBSyxDQUFDLEVBQUU7SUFDM0QsT0FBTyxFQUFFO0VBQ2I7RUFFQSxNQUFNQyxXQUFXLEdBQUdDLHNCQUFzQixDQUFDTCxNQUFNLENBQUNHLEtBQUssQ0FBQztFQUN4RCxJQUFJRyxNQUFNLEdBQUcsR0FBRyxHQUFHTixNQUFNLENBQUNPLE1BQU07RUFDaEMsTUFBTUMsY0FBYyxHQUFHQyx5QkFBeUIsQ0FBQ1QsTUFBTSxDQUFDVSxRQUFRLENBQUM7RUFFakUsUUFBUVYsTUFBTSxDQUFDVSxRQUFRO0lBQ25CLEtBQUtDLHVDQUFvQixDQUFDQyxLQUFLO0lBQy9CLEtBQUtELHVDQUFvQixDQUFDRSxjQUFjO01BQ3BDUCxNQUFNLElBQUlFLGNBQWMsR0FBR0osV0FBVztNQUN0QztJQUNKLEtBQUtPLHVDQUFvQixDQUFDRyxTQUFTO01BQy9CUixNQUFNLElBQUlFLGNBQWMsR0FBRyxHQUFHLEdBQUdKLFdBQVcsR0FBRyxHQUFHO01BQ2xEO0lBQ0osS0FBS08sdUNBQW9CLENBQUNJLE1BQU07TUFDNUJULE1BQU0sSUFBSUUsY0FBYyxHQUFHSixXQUFXLEdBQUcsR0FBRztNQUM1QztFQUNSO0VBRUEsT0FBT0UsTUFBTSxHQUFHLEdBQUc7QUFDdkIsQ0FBQztBQUFDVSxPQUFBLENBQUFqQixpQkFBQSxHQUFBQSxpQkFBQTtBQUVGLE1BQU1NLHNCQUFzQixHQUFJRixLQUFhLElBQWE7RUFBQSxJQUFBYyxlQUFBO0VBQ3RELElBQUlYLE1BQU0sSUFBQVcsZUFBQSxHQUFHZCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWUsUUFBUSxDQUFDLENBQUMsY0FBQUQsZUFBQSxjQUFBQSxlQUFBLEdBQUksRUFBRTtFQUNwQyxNQUFNRSxXQUFXLEdBQUcsR0FBRztFQUV2QmIsTUFBTSxHQUFHQSxNQUFNLENBQUNjLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO0VBQ3RDZCxNQUFNLEdBQUdBLE1BQU0sQ0FBQ2MsT0FBTyxDQUFDRCxXQUFXLEVBQUUsSUFBSSxHQUFHQSxXQUFXLENBQUM7RUFDeEQsT0FBT0EsV0FBVyxHQUFHYixNQUFNLEdBQUdhLFdBQVc7QUFDN0MsQ0FBQztBQUVELE1BQU1WLHlCQUF5QixHQUFJQyxRQUE4QixJQUFhO0VBQzFFLFFBQVFBLFFBQVE7SUFDWixLQUFLQyx1Q0FBb0IsQ0FBQ0MsS0FBSztNQUMzQixPQUFPLEdBQUc7SUFDZCxLQUFLRCx1Q0FBb0IsQ0FBQ0UsY0FBYztNQUNwQyxPQUFPLEdBQUc7SUFDZCxLQUFLRix1Q0FBb0IsQ0FBQ0csU0FBUztJQUNuQyxLQUFLSCx1Q0FBb0IsQ0FBQ0ksTUFBTTtNQUM1QixPQUFPLEdBQUc7SUFDZDtNQUNJLE9BQU8sRUFBRTtFQUNqQjtBQUNKLENBQUMifQ==
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.serializeToString = void 0;
7
+ var _util = require("util");
8
+ var _DigestQueryFilter = require("../../CandyApiClient/DigestApiClient/Types/DigestQueryFilter");
9
+ var _TypingUtils = require("../../TypingUtils");
10
+ var _DigestFilterColumnSerializer = require("./DigestFilterColumnSerializer");
11
+ const serializeToString = filter => {
12
+ if ((0, _util.isNullOrUndefined)(filter)) {
13
+ return "";
14
+ }
15
+ const operatorString = serializeOperatorToString(filter.operator);
16
+ const operandsString = filter.operands.reduce((acc, currentOperand) => {
17
+ const currentOperandString = serializeOperandToString(currentOperand);
18
+ if (!(0, _TypingUtils.isNullOrEmpty)(operatorString) && !(0, _TypingUtils.isNullOrEmpty)(currentOperandString)) {
19
+ acc += (0, _TypingUtils.isNullOrEmpty)(acc) ? currentOperandString : operatorString + currentOperandString;
20
+ }
21
+ return acc;
22
+ }, "");
23
+ return (0, _TypingUtils.isNullOrEmpty)(operandsString) ? "" : "(" + operandsString + ")";
24
+ };
25
+ exports.serializeToString = serializeToString;
26
+ const serializeOperandToString = operand => "operands" in operand ? serializeToString(operand) : "column" in operand ? (0, _DigestFilterColumnSerializer.serializeToString)(operand) : "";
27
+ const serializeOperatorToString = operator => {
28
+ switch (operator) {
29
+ case _DigestQueryFilter.DigestLogicalOperator.And:
30
+ return "And";
31
+ case _DigestQueryFilter.DigestLogicalOperator.Or:
32
+ return "Or";
33
+ default:
34
+ return "";
35
+ }
36
+ };
37
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfRGlnZXN0UXVlcnlGaWx0ZXIiLCJfVHlwaW5nVXRpbHMiLCJfRGlnZXN0RmlsdGVyQ29sdW1uU2VyaWFsaXplciIsInNlcmlhbGl6ZVRvU3RyaW5nIiwiZmlsdGVyIiwiaXNOdWxsT3JVbmRlZmluZWQiLCJvcGVyYXRvclN0cmluZyIsInNlcmlhbGl6ZU9wZXJhdG9yVG9TdHJpbmciLCJvcGVyYXRvciIsIm9wZXJhbmRzU3RyaW5nIiwib3BlcmFuZHMiLCJyZWR1Y2UiLCJhY2MiLCJjdXJyZW50T3BlcmFuZCIsImN1cnJlbnRPcGVyYW5kU3RyaW5nIiwic2VyaWFsaXplT3BlcmFuZFRvU3RyaW5nIiwiaXNOdWxsT3JFbXB0eSIsImV4cG9ydHMiLCJvcGVyYW5kIiwic2VyaWFsaXplRGlnZXN0RmlsdGVyQ29sdW1uVG9TdHJpbmciLCJEaWdlc3RMb2dpY2FsT3BlcmF0b3IiLCJBbmQiLCJPciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9QaWNrbGlzdEFwaUNsaWVudC9TZXJpYWxpemVycy9EaWdlc3RMb2dpY2FsRmlsdGVyU2VyaWFsaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCJ1dGlsXCI7XG5cbmltcG9ydCB7XG4gICAgRGlnZXN0RmlsdGVyLFxuICAgIERpZ2VzdExvZ2ljYWxGaWx0ZXIsXG4gICAgRGlnZXN0TG9naWNhbE9wZXJhdG9yLFxufSBmcm9tIFwiLi4vLi4vQ2FuZHlBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50L1R5cGVzL0RpZ2VzdFF1ZXJ5RmlsdGVyXCI7XG5pbXBvcnQgeyBpc051bGxPckVtcHR5IH0gZnJvbSBcIi4uLy4uL1R5cGluZ1V0aWxzXCI7XG5cbmltcG9ydCB7IHNlcmlhbGl6ZVRvU3RyaW5nIGFzIHNlcmlhbGl6ZURpZ2VzdEZpbHRlckNvbHVtblRvU3RyaW5nIH0gZnJvbSBcIi4vRGlnZXN0RmlsdGVyQ29sdW1uU2VyaWFsaXplclwiO1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplVG9TdHJpbmcgPSAoZmlsdGVyPzogRGlnZXN0TG9naWNhbEZpbHRlcik6IHN0cmluZyA9PiB7XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGZpbHRlcikpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdG9yU3RyaW5nID0gc2VyaWFsaXplT3BlcmF0b3JUb1N0cmluZyhmaWx0ZXIub3BlcmF0b3IpO1xuICAgIGNvbnN0IG9wZXJhbmRzU3RyaW5nID0gZmlsdGVyLm9wZXJhbmRzLnJlZHVjZSgoYWNjLCBjdXJyZW50T3BlcmFuZCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50T3BlcmFuZFN0cmluZyA9IHNlcmlhbGl6ZU9wZXJhbmRUb1N0cmluZyhjdXJyZW50T3BlcmFuZCk7XG4gICAgICAgIGlmICghaXNOdWxsT3JFbXB0eShvcGVyYXRvclN0cmluZykgJiYgIWlzTnVsbE9yRW1wdHkoY3VycmVudE9wZXJhbmRTdHJpbmcpKSB7XG4gICAgICAgICAgICBhY2MgKz0gaXNOdWxsT3JFbXB0eShhY2MpID8gY3VycmVudE9wZXJhbmRTdHJpbmcgOiBvcGVyYXRvclN0cmluZyArIGN1cnJlbnRPcGVyYW5kU3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgXCJcIik7XG5cbiAgICByZXR1cm4gaXNOdWxsT3JFbXB0eShvcGVyYW5kc1N0cmluZykgPyBcIlwiIDogXCIoXCIgKyBvcGVyYW5kc1N0cmluZyArIFwiKVwiO1xufTtcblxuY29uc3Qgc2VyaWFsaXplT3BlcmFuZFRvU3RyaW5nID0gKG9wZXJhbmQ6IERpZ2VzdEZpbHRlcik6IHN0cmluZyA9PlxuICAgIFwib3BlcmFuZHNcIiBpbiBvcGVyYW5kXG4gICAgICAgID8gc2VyaWFsaXplVG9TdHJpbmcob3BlcmFuZClcbiAgICAgICAgOiBcImNvbHVtblwiIGluIG9wZXJhbmRcbiAgICAgICAgPyBzZXJpYWxpemVEaWdlc3RGaWx0ZXJDb2x1bW5Ub1N0cmluZyhvcGVyYW5kKVxuICAgICAgICA6IFwiXCI7XG5cbmNvbnN0IHNlcmlhbGl6ZU9wZXJhdG9yVG9TdHJpbmcgPSAob3BlcmF0b3I6IERpZ2VzdExvZ2ljYWxPcGVyYXRvcik6IHN0cmluZyA9PiB7XG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgICBjYXNlIERpZ2VzdExvZ2ljYWxPcGVyYXRvci5BbmQ6XG4gICAgICAgICAgICByZXR1cm4gXCJBbmRcIjtcbiAgICAgICAgY2FzZSBEaWdlc3RMb2dpY2FsT3BlcmF0b3IuT3I6XG4gICAgICAgICAgICByZXR1cm4gXCJPclwiO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsa0JBQUEsR0FBQUQsT0FBQTtBQUtBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLDZCQUFBLEdBQUFILE9BQUE7QUFFTyxNQUFNSSxpQkFBaUIsR0FBSUMsTUFBNEIsSUFBYTtFQUN2RSxJQUFJLElBQUFDLHVCQUFpQixFQUFDRCxNQUFNLENBQUMsRUFBRTtJQUMzQixPQUFPLEVBQUU7RUFDYjtFQUNBLE1BQU1FLGNBQWMsR0FBR0MseUJBQXlCLENBQUNILE1BQU0sQ0FBQ0ksUUFBUSxDQUFDO0VBQ2pFLE1BQU1DLGNBQWMsR0FBR0wsTUFBTSxDQUFDTSxRQUFRLENBQUNDLE1BQU0sQ0FBQyxDQUFDQyxHQUFHLEVBQUVDLGNBQWMsS0FBSztJQUNuRSxNQUFNQyxvQkFBb0IsR0FBR0Msd0JBQXdCLENBQUNGLGNBQWMsQ0FBQztJQUNyRSxJQUFJLENBQUMsSUFBQUcsMEJBQWEsRUFBQ1YsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFBVSwwQkFBYSxFQUFDRixvQkFBb0IsQ0FBQyxFQUFFO01BQ3hFRixHQUFHLElBQUksSUFBQUksMEJBQWEsRUFBQ0osR0FBRyxDQUFDLEdBQUdFLG9CQUFvQixHQUFHUixjQUFjLEdBQUdRLG9CQUFvQjtJQUM1RjtJQUNBLE9BQU9GLEdBQUc7RUFDZCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sT0FBTyxJQUFBSSwwQkFBYSxFQUFDUCxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHQSxjQUFjLEdBQUcsR0FBRztBQUMxRSxDQUFDO0FBQUNRLE9BQUEsQ0FBQWQsaUJBQUEsR0FBQUEsaUJBQUE7QUFFRixNQUFNWSx3QkFBd0IsR0FBSUcsT0FBcUIsSUFDbkQsVUFBVSxJQUFJQSxPQUFPLEdBQ2ZmLGlCQUFpQixDQUFDZSxPQUFPLENBQUMsR0FDMUIsUUFBUSxJQUFJQSxPQUFPLEdBQ25CLElBQUFDLCtDQUFtQyxFQUFDRCxPQUFPLENBQUMsR0FDNUMsRUFBRTtBQUVaLE1BQU1YLHlCQUF5QixHQUFJQyxRQUErQixJQUFhO0VBQzNFLFFBQVFBLFFBQVE7SUFDWixLQUFLWSx3Q0FBcUIsQ0FBQ0MsR0FBRztNQUMxQixPQUFPLEtBQUs7SUFDaEIsS0FBS0Qsd0NBQXFCLENBQUNFLEVBQUU7TUFDekIsT0FBTyxJQUFJO0lBQ2Y7TUFDSSxPQUFPLEVBQUU7RUFDakI7QUFDSixDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1BpY2tsaXN0QXBpQ2xpZW50L1R5cGVzL1BpY2tsaXN0UmVxdWVzdFYyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGlja2xpc3RSZXF1ZXN0VjIge1xuICAgIGZpbHRlcj86IHN0cmluZztcbiAgICB0YWtlPzogbnVtYmVyO1xuICAgIHNraXA/OiBudW1iZXI7XG59XG4iXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1BpY2tsaXN0QXBpQ2xpZW50L1R5cGVzL1BpY2tsaXN0UmVzdWx0VjIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQaWNrbGlzdFJlc3VsdFYyIHtcbiAgICBkYXRhOiBzdHJpbmdbXVtdO1xuICAgIG1ldGE6IFBpY2tsaXN0TWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaWNrbGlzdE1ldGEge1xuICAgIHN1aXRhYmxlQ291bnQ6IG51bWJlcjtcbiAgICBjb2x1bW5zOiBQaWNrbGlzdENvbHVtbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpY2tsaXN0Q29sdW1uIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgd2l0aE1hcmtkb3duOiBib29sZWFuO1xufVxuIl0sIm1hcHBpbmdzIjoiIn0=
@@ -8,10 +8,12 @@ var _hashUtils = require("./hashUtils");
8
8
  class StringArrayKey {
9
9
  constructor(items) {
10
10
  this.items = void 0;
11
+ this.cachedHash = void 0;
11
12
  this.items = items;
12
13
  }
13
14
  getHash() {
14
- return this.items.reduce((acc, current) => acc + (0, _hashUtils.getSimpleHashByString)(current), 0);
15
+ var _this$cachedHash;
16
+ return (_this$cachedHash = this.cachedHash) !== null && _this$cachedHash !== void 0 ? _this$cachedHash : this.cachedHash = this.items.reduce((acc, current) => acc + (0, _hashUtils.getSimpleHashByString)(current), 0);
15
17
  }
16
18
  isEquals(right) {
17
19
  if (this.items.length != right.items.length) {
@@ -21,4 +23,4 @@ class StringArrayKey {
21
23
  }
22
24
  }
23
25
  exports.StringArrayKey = StringArrayKey;
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGFzaFV0aWxzIiwicmVxdWlyZSIsIlN0cmluZ0FycmF5S2V5IiwiY29uc3RydWN0b3IiLCJpdGVtcyIsImdldEhhc2giLCJyZWR1Y2UiLCJhY2MiLCJjdXJyZW50IiwiZ2V0U2ltcGxlSGFzaEJ5U3RyaW5nIiwiaXNFcXVhbHMiLCJyaWdodCIsImxlbmd0aCIsImV2ZXJ5IiwiaXRlbSIsImluZGV4IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9TdHJpbmdBcnJheUtleS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRXF1YXRhYmxlIH0gZnJvbSBcIi4vTW9kZWxQYXRoL0lFcXVhdGFibGVcIjtcbmltcG9ydCB7IGdldFNpbXBsZUhhc2hCeVN0cmluZyB9IGZyb20gXCIuL2hhc2hVdGlsc1wiO1xuXG5leHBvcnQgY2xhc3MgU3RyaW5nQXJyYXlLZXkgaW1wbGVtZW50cyBJRXF1YXRhYmxlPFN0cmluZ0FycmF5S2V5PiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpdGVtczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaXRlbXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SGFzaCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKGFjYywgY3VycmVudCkgPT4gYWNjICsgZ2V0U2ltcGxlSGFzaEJ5U3RyaW5nKGN1cnJlbnQpLCAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNFcXVhbHMocmlnaHQ6IFN0cmluZ0FycmF5S2V5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCAhPSByaWdodC5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5ldmVyeSgoaXRlbSwgaW5kZXgpID0+IGl0ZW0gPT09IHJpZ2h0Lml0ZW1zW2luZGV4XSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFFTyxNQUFNQyxjQUFjLENBQXVDO0VBR3ZEQyxXQUFXQSxDQUFDQyxLQUFlLEVBQUU7SUFBQSxLQUZuQkEsS0FBSztJQUdsQixJQUFJLENBQUNBLEtBQUssR0FBR0EsS0FBSztFQUN0QjtFQUVPQyxPQUFPQSxDQUFBLEVBQVc7SUFDckIsT0FBTyxJQUFJLENBQUNELEtBQUssQ0FBQ0UsTUFBTSxDQUFDLENBQUNDLEdBQUcsRUFBRUMsT0FBTyxLQUFLRCxHQUFHLEdBQUcsSUFBQUUsZ0NBQXFCLEVBQUNELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUN2RjtFQUVPRSxRQUFRQSxDQUFDQyxLQUFxQixFQUFXO0lBQzVDLElBQUksSUFBSSxDQUFDUCxLQUFLLENBQUNRLE1BQU0sSUFBSUQsS0FBSyxDQUFDUCxLQUFLLENBQUNRLE1BQU0sRUFBRTtNQUN6QyxPQUFPLEtBQUs7SUFDaEI7SUFDQSxPQUFPLElBQUksQ0FBQ1IsS0FBSyxDQUFDUyxLQUFLLENBQUMsQ0FBQ0MsSUFBSSxFQUFFQyxLQUFLLEtBQUtELElBQUksS0FBS0gsS0FBSyxDQUFDUCxLQUFLLENBQUNXLEtBQUssQ0FBQyxDQUFDO0VBQ3pFO0FBQ0o7QUFBQ0MsT0FBQSxDQUFBZCxjQUFBLEdBQUFBLGNBQUEifQ==
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGFzaFV0aWxzIiwicmVxdWlyZSIsIlN0cmluZ0FycmF5S2V5IiwiY29uc3RydWN0b3IiLCJpdGVtcyIsImNhY2hlZEhhc2giLCJnZXRIYXNoIiwiX3RoaXMkY2FjaGVkSGFzaCIsInJlZHVjZSIsImFjYyIsImN1cnJlbnQiLCJnZXRTaW1wbGVIYXNoQnlTdHJpbmciLCJpc0VxdWFscyIsInJpZ2h0IiwibGVuZ3RoIiwiZXZlcnkiLCJpdGVtIiwiaW5kZXgiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vQ29tbW9uL1N0cmluZ0FycmF5S2V5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFcXVhdGFibGUgfSBmcm9tIFwiLi9Nb2RlbFBhdGgvSUVxdWF0YWJsZVwiO1xuaW1wb3J0IHsgZ2V0U2ltcGxlSGFzaEJ5U3RyaW5nIH0gZnJvbSBcIi4vaGFzaFV0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdBcnJheUtleSBpbXBsZW1lbnRzIElFcXVhdGFibGU8U3RyaW5nQXJyYXlLZXk+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXRlbXM6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgY2FjaGVkSGFzaDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGl0ZW1zOiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhhc2goKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY2FjaGVkSGFzaCA/P1xuICAgICAgICAgICAgKHRoaXMuY2FjaGVkSGFzaCA9IHRoaXMuaXRlbXMucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IGFjYyArIGdldFNpbXBsZUhhc2hCeVN0cmluZyhjdXJyZW50KSwgMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXF1YWxzKHJpZ2h0OiBTdHJpbmdBcnJheUtleSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggIT0gcmlnaHQuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZXZlcnkoKGl0ZW0sIGluZGV4KSA9PiBpdGVtID09PSByaWdodC5pdGVtc1tpbmRleF0pO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBRU8sTUFBTUMsY0FBYyxDQUF1QztFQUl2REMsV0FBV0EsQ0FBQ0MsS0FBZSxFQUFFO0lBQUEsS0FIcEJBLEtBQUs7SUFBQSxLQUNiQyxVQUFVO0lBR2QsSUFBSSxDQUFDRCxLQUFLLEdBQUdBLEtBQUs7RUFDdEI7RUFFT0UsT0FBT0EsQ0FBQSxFQUFXO0lBQUEsSUFBQUMsZ0JBQUE7SUFDckIsUUFBQUEsZ0JBQUEsR0FDSSxJQUFJLENBQUNGLFVBQVUsY0FBQUUsZ0JBQUEsY0FBQUEsZ0JBQUEsR0FDZCxJQUFJLENBQUNGLFVBQVUsR0FBRyxJQUFJLENBQUNELEtBQUssQ0FBQ0ksTUFBTSxDQUFDLENBQUNDLEdBQUcsRUFBRUMsT0FBTyxLQUFLRCxHQUFHLEdBQUcsSUFBQUUsZ0NBQXFCLEVBQUNELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUV2RztFQUVPRSxRQUFRQSxDQUFDQyxLQUFxQixFQUFXO0lBQzVDLElBQUksSUFBSSxDQUFDVCxLQUFLLENBQUNVLE1BQU0sSUFBSUQsS0FBSyxDQUFDVCxLQUFLLENBQUNVLE1BQU0sRUFBRTtNQUN6QyxPQUFPLEtBQUs7SUFDaEI7SUFDQSxPQUFPLElBQUksQ0FBQ1YsS0FBSyxDQUFDVyxLQUFLLENBQUMsQ0FBQ0MsSUFBSSxFQUFFQyxLQUFLLEtBQUtELElBQUksS0FBS0gsS0FBSyxDQUFDVCxLQUFLLENBQUNhLEtBQUssQ0FBQyxDQUFDO0VBQ3pFO0FBQ0o7QUFBQ0MsT0FBQSxDQUFBaEIsY0FBQSxHQUFBQSxjQUFBIn0=
@@ -11,11 +11,17 @@ const getRngSchemaFilename = (formSchemasDirPath, gfv) => {
11
11
  if (!Boolean(Number(gfv))) {
12
12
  return ".rng.xml";
13
13
  }
14
- const maxSubversion = (0, _fs.readdirSync)(formSchemasDirPath).map(fileName => fileName.includes(".rng.xml") && !fileName.includes("схема.rng.xml")).filter(i => i === true).length - 1;
15
- if (maxSubversion === undefined || !(0, _fs.existsSync)(_path.default.join(formSchemasDirPath, `${gfv}.${maxSubversion}.rng.xml`))) {
14
+ try {
15
+ const maxSubversion = (0, _fs.readdirSync)(formSchemasDirPath).map(fileName => fileName.includes(".rng.xml") && !fileName.includes("схема.rng.xml")).filter(i => i === true).length - 1;
16
+ if (maxSubversion === undefined || !(0, _fs.existsSync)(_path.default.join(formSchemasDirPath, `${gfv}.${maxSubversion}.rng.xml`))) {
17
+ return ".rng.xml";
18
+ }
19
+ return `.${maxSubversion}.rng.xml`;
20
+ } catch (e) {
21
+ // eslint-disable-next-line no-console
22
+ console.log(`Folder not exist. ${formSchemasDirPath}`);
16
23
  return ".rng.xml";
17
24
  }
18
- return `.${maxSubversion}.rng.xml`;
19
25
  };
20
26
  exports.getRngSchemaFilename = getRngSchemaFilename;
21
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJyZXF1aXJlIiwiX3BhdGgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJnZnYiLCJCb29sZWFuIiwiTnVtYmVyIiwibWF4U3VidmVyc2lvbiIsInJlYWRkaXJTeW5jIiwibWFwIiwiZmlsZU5hbWUiLCJpbmNsdWRlcyIsImZpbHRlciIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJleGlzdHNTeW5jIiwicGF0aCIsImpvaW4iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRkaXJTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgPSAoZm9ybVNjaGVtYXNEaXJQYXRoOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIUJvb2xlYW4oTnVtYmVyKGdmdikpKSB7XG4gICAgICAgIHJldHVybiBcIi5ybmcueG1sXCI7XG4gICAgfVxuICAgIGNvbnN0IG1heFN1YnZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHJlYWRkaXJTeW5jKGZvcm1TY2hlbWFzRGlyUGF0aClcbiAgICAgICAgICAgIC5tYXAoZmlsZU5hbWUgPT4gZmlsZU5hbWUuaW5jbHVkZXMoXCIucm5nLnhtbFwiKSAmJiAhZmlsZU5hbWUuaW5jbHVkZXMoXCLRgdGF0LXQvNCwLnJuZy54bWxcIikpXG4gICAgICAgICAgICAuZmlsdGVyKGkgPT4gaSA9PT0gdHJ1ZSkubGVuZ3RoIC0gMTtcblxuICAgIGlmIChtYXhTdWJ2ZXJzaW9uID09PSB1bmRlZmluZWQgfHwgIWV4aXN0c1N5bmMocGF0aC5qb2luKGZvcm1TY2hlbWFzRGlyUGF0aCwgYCR7Z2Z2fS4ke21heFN1YnZlcnNpb259LnJuZy54bWxgKSkpIHtcbiAgICAgICAgcmV0dXJuIFwiLnJuZy54bWxcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gYC4ke21heFN1YnZlcnNpb259LnJuZy54bWxgO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEdBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVPLE1BQU1HLG9CQUFvQixHQUFHQSxDQUFDQyxrQkFBMEIsRUFBRUMsR0FBVyxLQUFhO0VBQ3JGLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxNQUFNLENBQUNGLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDdkIsT0FBTyxVQUFVO0VBQ3JCO0VBQ0EsTUFBTUcsYUFBaUMsR0FDbkMsSUFBQUMsZUFBVyxFQUFDTCxrQkFBa0IsQ0FBQyxDQUMxQk0sR0FBRyxDQUFDQyxRQUFRLElBQUlBLFFBQVEsQ0FBQ0MsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUNELFFBQVEsQ0FBQ0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQ3JGQyxNQUFNLENBQUNDLENBQUMsSUFBSUEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztFQUUzQyxJQUFJUCxhQUFhLEtBQUtRLFNBQVMsSUFBSSxDQUFDLElBQUFDLGNBQVUsRUFBQ0MsYUFBSSxDQUFDQyxJQUFJLENBQUNmLGtCQUFrQixFQUFHLEdBQUVDLEdBQUksSUFBR0csYUFBYyxVQUFTLENBQUMsQ0FBQyxFQUFFO0lBQzlHLE9BQU8sVUFBVTtFQUNyQjtFQUVBLE9BQVEsSUFBR0EsYUFBYyxVQUFTO0FBQ3RDLENBQUM7QUFBQ1ksT0FBQSxDQUFBakIsb0JBQUEsR0FBQUEsb0JBQUEifQ==
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJyZXF1aXJlIiwiX3BhdGgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJnZnYiLCJCb29sZWFuIiwiTnVtYmVyIiwibWF4U3VidmVyc2lvbiIsInJlYWRkaXJTeW5jIiwibWFwIiwiZmlsZU5hbWUiLCJpbmNsdWRlcyIsImZpbHRlciIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJleGlzdHNTeW5jIiwicGF0aCIsImpvaW4iLCJlIiwiY29uc29sZSIsImxvZyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9Db21tb24vZ2V0Um5nU2NoZW1hRmlsZW5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZGRpclN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRSbmdTY2hlbWFGaWxlbmFtZSA9IChmb3JtU2NoZW1hc0RpclBhdGg6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGlmICghQm9vbGVhbihOdW1iZXIoZ2Z2KSkpIHtcbiAgICAgICAgcmV0dXJuIFwiLnJuZy54bWxcIjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBtYXhTdWJ2ZXJzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgcmVhZGRpclN5bmMoZm9ybVNjaGVtYXNEaXJQYXRoKVxuICAgICAgICAgICAgICAgIC5tYXAoZmlsZU5hbWUgPT4gZmlsZU5hbWUuaW5jbHVkZXMoXCIucm5nLnhtbFwiKSAmJiAhZmlsZU5hbWUuaW5jbHVkZXMoXCLRgdGF0LXQvNCwLnJuZy54bWxcIikpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpID0+IGkgPT09IHRydWUpLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFN1YnZlcnNpb24gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgIWV4aXN0c1N5bmMocGF0aC5qb2luKGZvcm1TY2hlbWFzRGlyUGF0aCwgYCR7Z2Z2fS4ke21heFN1YnZlcnNpb259LnJuZy54bWxgKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIucm5nLnhtbFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgLiR7bWF4U3VidmVyc2lvbn0ucm5nLnhtbGA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZyhgRm9sZGVyIG5vdCBleGlzdC4gJHtmb3JtU2NoZW1hc0RpclBhdGh9YCk7XG4gICAgICAgIHJldHVybiBcIi5ybmcueG1sXCI7XG4gICAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEdBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVPLE1BQU1HLG9CQUFvQixHQUFHQSxDQUFDQyxrQkFBMEIsRUFBRUMsR0FBVyxLQUFhO0VBQ3JGLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxNQUFNLENBQUNGLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDdkIsT0FBTyxVQUFVO0VBQ3JCO0VBRUEsSUFBSTtJQUNBLE1BQU1HLGFBQWlDLEdBQ25DLElBQUFDLGVBQVcsRUFBQ0wsa0JBQWtCLENBQUMsQ0FDMUJNLEdBQUcsQ0FBQ0MsUUFBUSxJQUFJQSxRQUFRLENBQUNDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDRCxRQUFRLENBQUNDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUNyRkMsTUFBTSxDQUFDQyxDQUFDLElBQUlBLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQ0MsTUFBTSxHQUFHLENBQUM7SUFDM0MsSUFDSVAsYUFBYSxLQUFLUSxTQUFTLElBQzNCLENBQUMsSUFBQUMsY0FBVSxFQUFDQyxhQUFJLENBQUNDLElBQUksQ0FBQ2Ysa0JBQWtCLEVBQUcsR0FBRUMsR0FBSSxJQUFHRyxhQUFjLFVBQVMsQ0FBQyxDQUFDLEVBQy9FO01BQ0UsT0FBTyxVQUFVO0lBQ3JCO0lBQ0EsT0FBUSxJQUFHQSxhQUFjLFVBQVM7RUFDdEMsQ0FBQyxDQUFDLE9BQU9ZLENBQUMsRUFBRTtJQUNSO0lBQ0FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFFLHFCQUFvQmxCLGtCQUFtQixFQUFDLENBQUM7SUFDdEQsT0FBTyxVQUFVO0VBQ3JCO0FBQ0osQ0FBQztBQUFDbUIsT0FBQSxDQUFBcEIsb0JBQUEsR0FBQUEsb0JBQUEifQ==
@@ -73,7 +73,8 @@ class BuildCache {
73
73
  for (const assetPath of Object.keys(content)) {
74
74
  var _content$assetPath;
75
75
  const contentElement = (_content$assetPath = content[assetPath]) !== null && _content$assetPath !== void 0 ? _content$assetPath : (0, _TypingUtils.reject)();
76
- const filePath = path.join(resourcesDirectory, assetPath);
76
+ const normalizedAssetPath = path.join(...assetPath.split(/[\\\/]/));
77
+ const filePath = path.join(resourcesDirectory, normalizedAssetPath);
77
78
  await (0, _fsExtra.ensureDir)(path.dirname(filePath));
78
79
  if (typeof contentElement === "string") {
79
80
  await (0, _fsExtra.writeFile)(filePath, contentElement, "utf8");
@@ -154,4 +155,4 @@ class BuildCache {
154
155
  }
155
156
  }
156
157
  exports.BuildCache = BuildCache;
157
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfbWQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3BMaW1pdCIsIl9ub2RlRmV0Y2giLCJfQnVpbGRDYWNoZU1vZGUiLCJfVHlwaW5nVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsInNpbmdsZUxpbWl0IiwicExpbWl0IiwiQ2FjaGVBc3NldHNQbHVnaW4iLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJhcHBseSIsImNvbXBpbGVyIiwiaG9va3MiLCJlbWl0IiwidGFwUHJvbWlzZSIsImNvbXBpbGF0aW9uIiwiY2FjaGVJdGVtcyIsImFzc2V0TmFtZSIsImtleXMiLCJhc3NldHMiLCJfY29tcGlsYXRpb24kYXNzZXRzJGEiLCJfY29tcGlsYXRpb24kYXNzZXRzJGEyIiwic291cmNlIiwicmVqZWN0IiwiQnVmZmVyIiwidHlwZSIsImJhc2U2NGNvbnRlbnQiLCJ0b1N0cmluZyIsInVwZGF0ZUZpbGUiLCJmaWxlUGF0aCIsInJlc29sdmUiLCJjYWNoZUZpbGUiLCJjb250ZW50IiwicGF0aEV4aXN0cyIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlIiwiZW5zdXJlRGlyIiwiZGlybmFtZSIsIndyaXRlRmlsZSIsInN0cmluZ2lmeSIsImV4cG9ydHMiLCJCdWlsZENhY2hlIiwiZmFybURpcmVjdG9yeSIsIm1vZGUiLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJ3aXRoUHJlZml4IiwiZXh0cmFjdCIsImdlbmVyYXRvclNvdXJjZSIsImdmdiIsImRlcHNIYXNoIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiRXJyb3IiLCJnZXRDYWNoZUZpbGVQYXRoIiwidmVyc2lvbiIsImFzc2V0UGF0aCIsIl9jb250ZW50JGFzc2V0UGF0aCIsImNvbnRlbnRFbGVtZW50Iiwiam9pbiIsImZyb20iLCJleGlzdHMiLCJCdWlsZENhY2hlTW9kZSIsIkRpc2FibGVkIiwiRm9yY2VVcGRhdGUiLCJjYWNoZWRGaWxlUGF0aCIsImV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQiLCJ1bmRlZmluZWQiLCJzZXRDb250ZW50IiwiZmlsZU5hbWUiLCJmaWxlQ29udGVudCIsImNhY2hlRmlsZVBhdGgiLCJjcmVhdGVXZWJwYWNrUGx1Z2luIiwiUmVhZE9ubHkiLCJnZW5lcmF0b3JWZXJzaW9uIiwibWQ1IiwibG9nIiwiZmlsZW5hbWUiLCJiYXNlbmFtZSIsInJlc3BvbnNlIiwiZmV0Y2giLCJzdGF0dXMiLCJidWZmZXIiLCJlcnJvciIsImUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL0NhY2hlQXNzZXRzUGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgZW5zdXJlRGlyLCBwYXRoRXhpc3RzLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbWQ1IGZyb20gXCJtZDVcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB3ZWJwYWNrIGZyb20gXCJ3ZWJwYWNrXCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlTW9kZSB9IGZyb20gXCIuLi9DTElDb21tYW5kcy9CdWlsZEZvcm1zL0J1aWxkQ2FjaGVNb2RlXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuXG5pbnRlcmZhY2UgQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zIHtcbiAgICBjYWNoZUZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQnVpbGRDYWNoZU9wdGlvbnMge1xuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZztcbiAgICBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmc7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZGVwc0hhc2g6IHN0cmluZztcbn1cblxuY29uc3Qgc2luZ2xlTGltaXQgPSBwTGltaXQoMSk7XG5cbmludGVyZmFjZSBCdWlsZFJlc3VsdHNTZXJpYWxpemVkIHtcbiAgICBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgeyB0eXBlOiBcIkJ1ZmZlclwiOyBiYXNlNjRjb250ZW50OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGNsYXNzIENhY2hlQXNzZXRzUGx1Z2luIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXBwbHkoY29tcGlsZXI6IHdlYnBhY2suQ29tcGlsZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29tcGlsZXIuaG9va3MuZW1pdC50YXBQcm9taXNlKFwiQ2FjaGVBc3NldHNQbHVnaW5cIiwgY29tcGlsYXRpb24gPT5cbiAgICAgICAgICAgIHNpbmdsZUxpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0ge307XG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFzc2V0TmFtZSBvZiBPYmplY3Qua2V5cyhjb21waWxhdGlvbi5hc3NldHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZTogc3RyaW5nIHwgQnVmZmVyID0gY29tcGlsYXRpb24uYXNzZXRzW2Fzc2V0TmFtZV0/LnNvdXJjZSgpID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUl0ZW1zW2Fzc2V0TmFtZV0gPSB7IHR5cGU6IFwiQnVmZmVyXCIsIGJhc2U2NGNvbnRlbnQ6IHNvdXJjZS50b1N0cmluZyhcImJhc2U2NFwiKSB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0gc291cmNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlRmlsZShjYWNoZUl0ZW1zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVGaWxlKGNhY2hlSXRlbXM6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5vcHRpb25zLmNhY2hlRmlsZSk7XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKVxuICAgICAgICAgICAgPyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpKVxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAuLi5jYWNoZUl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29udGVudCksIFwidXRmLThcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnVpbGRDYWNoZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogSUxvZ2dlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcsIG1vZGU6IEJ1aWxkQ2FjaGVNb2RlKSB7XG4gICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkJVSUxEX0NBQ0hFXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleHRyYWN0KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGNvbnN0IGNvbnRlbnQ6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgYXdhaXQgcmVhZEZpbGUodGhpcy5nZXRDYWNoZUZpbGVQYXRoKGdmdiwgZ2VuZXJhdG9yU291cmNlLnZlcnNpb24sIGRlcHNIYXNoKSwgXCJ1dGYtOFwiKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGFzc2V0UGF0aCBvZiBPYmplY3Qua2V5cyhjb250ZW50KSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnQgPSBjb250ZW50W2Fzc2V0UGF0aF0gPz8gcmVqZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIGFzc2V0UGF0aCk7XG4gICAgICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRFbGVtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBjb250ZW50RWxlbWVudCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEJ1ZmZlci5mcm9tKGNvbnRlbnRFbGVtZW50LmJhc2U2NGNvbnRlbnQsIFwiYmFzZTY0XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGlzdHMoZ2VuZXJhdG9yU291cmNlOiBHZW5lcmF0b3JTb3VyY2UsIGdmdjogc3RyaW5nLCBkZXBzSGFzaDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IHRoaXMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuRm9yY2VVcGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYWNoZWRGaWxlUGF0aCA9IGF3YWl0IHRoaXMuZXhpc3RzRmlsZUNhY2hlT3JEb3dubG9hZChnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBjYWNoZWRGaWxlUGF0aCAhPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENvbnRlbnQoXG4gICAgICAgIGdlbmVyYXRvclNvdXJjZTogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZyxcbiAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVDb250ZW50OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FjaGVGaWxlUGF0aCA9IHRoaXMuZ2V0Q2FjaGVGaWxlUGF0aChnZnYsIGdlbmVyYXRvclNvdXJjZSwgZGVwc0hhc2gpO1xuICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGNhY2hlRmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGVQYXRoLCBcInV0Zi04XCIpKTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICBbZmlsZU5hbWVdOiBmaWxlQ29udGVudCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShjYWNoZUZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShjb250ZW50KSwgXCJ1dGYtOFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlV2VicGFja1BsdWdpbihvcHRpb25zOiBGb3JtQnVpbGRDYWNoZU9wdGlvbnMpOiBQcm9taXNlPENhY2hlQXNzZXRzUGx1Z2luIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IG9wdGlvbnMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgob3B0aW9ucy5nZnYsIG9wdGlvbnMuZ2VuZXJhdG9yVmVyc2lvbiwgb3B0aW9ucy5kZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBuZXcgQ2FjaGVBc3NldHNQbHVnaW4oe1xuICAgICAgICAgICAgY2FjaGVGaWxlOiBjYWNoZWRGaWxlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYWNoZUZpbGVQYXRoKGdmdjogc3RyaW5nLCBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmcsIGRlcHNIYXNoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke21kNShnZnYpfS0ke21kNShnZW5lcmF0b3JWZXJzaW9uKX0tJHtkZXBzSGFzaH0uemlwYDtcbiAgICAgICAgcmV0dXJuIHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwiLmJ1aWxkLWNhY2hlXCIsIFwiY29tcGlsZVwiLCBmaWxlTmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nLFxuICAgICAgICBkZXBzSGFzaDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgoZ2Z2LCBnZW5lcmF0b3JWZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgU3RhcnQgc2VhcmNoIGZpbGUgbG9jYWxseTogJHtmaWxlUGF0aH1gKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIkZvdW5kIGZpbGUgaW4gbG9jYWwgZGlyZWN0b3J5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYENhY2hlIGZpbGUgd2FzIG5vdCBmb3VuZCBsb2NhbGx5OiAke2ZpbGVQYXRofWApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgTG9va2luZyBmb3IgY2FjaGUgaW4gZHJpdmUgc3RvcmFnZTogJHtmaWxlbmFtZX1gKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL2FwaS5rb250dXIucnUvZHJpdmUvdjEvcHVibGljLyR7ZmlsZW5hbWV9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBEcml2ZSByZXNwb25zZSBzdGF0dXMgY29kZTogJHtyZXNwb25zZS5zdGF0dXMudG9TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBhd2FpdCByZXNwb25zZS5idWZmZXIoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYENhY2hlIGZpbGUgbm90IGZvdW5kIGluIGRyaXZlIHN0b3JhZ2U6ICR7ZmlsZW5hbWV9LiBHRlY6ICR7Z2Z2fSwgR2VuZXJhdG9yVmVyc2lvbjogJHtnZW5lcmF0b3JWZXJzaW9ufSwgRGVwZW5kZW5jaWVzSGFzaDogJHtkZXBzSGFzaH1gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYERyaXZlIHN0b3JhZ2Ugc2VudCAke3Jlc3BvbnNlLnN0YXR1c30gc3RhdHVzIGNvZGUsIEkgZG9uJ3QgcHJvY2VzcyBpdCBpbiBhbnkgd2F5YFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcIkRyaXZlIHN0b3JhZ2UgcmVzcG9uZGVkIHdpdGggYW4gZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJUaGUgYnVpbGQgd2lsbCBjb250aW51ZSB3aXRob3V0IGEgY2FjaGVcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEdBQUEs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
158
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfbWQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3BMaW1pdCIsIl9ub2RlRmV0Y2giLCJfQnVpbGRDYWNoZU1vZGUiLCJfVHlwaW5nVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsInNpbmdsZUxpbWl0IiwicExpbWl0IiwiQ2FjaGVBc3NldHNQbHVnaW4iLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJhcHBseSIsImNvbXBpbGVyIiwiaG9va3MiLCJlbWl0IiwidGFwUHJvbWlzZSIsImNvbXBpbGF0aW9uIiwiY2FjaGVJdGVtcyIsImFzc2V0TmFtZSIsImtleXMiLCJhc3NldHMiLCJfY29tcGlsYXRpb24kYXNzZXRzJGEiLCJfY29tcGlsYXRpb24kYXNzZXRzJGEyIiwic291cmNlIiwicmVqZWN0IiwiQnVmZmVyIiwidHlwZSIsImJhc2U2NGNvbnRlbnQiLCJ0b1N0cmluZyIsInVwZGF0ZUZpbGUiLCJmaWxlUGF0aCIsInJlc29sdmUiLCJjYWNoZUZpbGUiLCJjb250ZW50IiwicGF0aEV4aXN0cyIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlIiwiZW5zdXJlRGlyIiwiZGlybmFtZSIsIndyaXRlRmlsZSIsInN0cmluZ2lmeSIsImV4cG9ydHMiLCJCdWlsZENhY2hlIiwiZmFybURpcmVjdG9yeSIsIm1vZGUiLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJ3aXRoUHJlZml4IiwiZXh0cmFjdCIsImdlbmVyYXRvclNvdXJjZSIsImdmdiIsImRlcHNIYXNoIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiRXJyb3IiLCJnZXRDYWNoZUZpbGVQYXRoIiwidmVyc2lvbiIsImFzc2V0UGF0aCIsIl9jb250ZW50JGFzc2V0UGF0aCIsImNvbnRlbnRFbGVtZW50Iiwibm9ybWFsaXplZEFzc2V0UGF0aCIsImpvaW4iLCJzcGxpdCIsImZyb20iLCJleGlzdHMiLCJCdWlsZENhY2hlTW9kZSIsIkRpc2FibGVkIiwiRm9yY2VVcGRhdGUiLCJjYWNoZWRGaWxlUGF0aCIsImV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQiLCJ1bmRlZmluZWQiLCJzZXRDb250ZW50IiwiZmlsZU5hbWUiLCJmaWxlQ29udGVudCIsImNhY2hlRmlsZVBhdGgiLCJjcmVhdGVXZWJwYWNrUGx1Z2luIiwiUmVhZE9ubHkiLCJnZW5lcmF0b3JWZXJzaW9uIiwibWQ1IiwibG9nIiwiZmlsZW5hbWUiLCJiYXNlbmFtZSIsInJlc3BvbnNlIiwiZmV0Y2giLCJzdGF0dXMiLCJidWZmZXIiLCJlcnJvciIsImUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL0NhY2hlQXNzZXRzUGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgZW5zdXJlRGlyLCBwYXRoRXhpc3RzLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbWQ1IGZyb20gXCJtZDVcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB3ZWJwYWNrIGZyb20gXCJ3ZWJwYWNrXCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlTW9kZSB9IGZyb20gXCIuLi9DTElDb21tYW5kcy9CdWlsZEZvcm1zL0J1aWxkQ2FjaGVNb2RlXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuXG5pbnRlcmZhY2UgQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zIHtcbiAgICBjYWNoZUZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQnVpbGRDYWNoZU9wdGlvbnMge1xuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZztcbiAgICBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmc7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZGVwc0hhc2g6IHN0cmluZztcbn1cblxuY29uc3Qgc2luZ2xlTGltaXQgPSBwTGltaXQoMSk7XG5cbmludGVyZmFjZSBCdWlsZFJlc3VsdHNTZXJpYWxpemVkIHtcbiAgICBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgeyB0eXBlOiBcIkJ1ZmZlclwiOyBiYXNlNjRjb250ZW50OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGNsYXNzIENhY2hlQXNzZXRzUGx1Z2luIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXBwbHkoY29tcGlsZXI6IHdlYnBhY2suQ29tcGlsZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29tcGlsZXIuaG9va3MuZW1pdC50YXBQcm9taXNlKFwiQ2FjaGVBc3NldHNQbHVnaW5cIiwgY29tcGlsYXRpb24gPT5cbiAgICAgICAgICAgIHNpbmdsZUxpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0ge307XG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFzc2V0TmFtZSBvZiBPYmplY3Qua2V5cyhjb21waWxhdGlvbi5hc3NldHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZTogc3RyaW5nIHwgQnVmZmVyID0gY29tcGlsYXRpb24uYXNzZXRzW2Fzc2V0TmFtZV0/LnNvdXJjZSgpID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUl0ZW1zW2Fzc2V0TmFtZV0gPSB7IHR5cGU6IFwiQnVmZmVyXCIsIGJhc2U2NGNvbnRlbnQ6IHNvdXJjZS50b1N0cmluZyhcImJhc2U2NFwiKSB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0gc291cmNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlRmlsZShjYWNoZUl0ZW1zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVGaWxlKGNhY2hlSXRlbXM6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5vcHRpb25zLmNhY2hlRmlsZSk7XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKVxuICAgICAgICAgICAgPyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpKVxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAuLi5jYWNoZUl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29udGVudCksIFwidXRmLThcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnVpbGRDYWNoZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogSUxvZ2dlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcsIG1vZGU6IEJ1aWxkQ2FjaGVNb2RlKSB7XG4gICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkJVSUxEX0NBQ0hFXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleHRyYWN0KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGNvbnN0IGNvbnRlbnQ6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgYXdhaXQgcmVhZEZpbGUodGhpcy5nZXRDYWNoZUZpbGVQYXRoKGdmdiwgZ2VuZXJhdG9yU291cmNlLnZlcnNpb24sIGRlcHNIYXNoKSwgXCJ1dGYtOFwiKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGFzc2V0UGF0aCBvZiBPYmplY3Qua2V5cyhjb250ZW50KSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnQgPSBjb250ZW50W2Fzc2V0UGF0aF0gPz8gcmVqZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkQXNzZXRQYXRoID0gcGF0aC5qb2luKC4uLmFzc2V0UGF0aC5zcGxpdCgvW1xcXFxcXC9dLykpXG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIG5vcm1hbGl6ZWRBc3NldFBhdGgpO1xuICAgICAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50RWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgY29udGVudEVsZW1lbnQsIFwidXRmOFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBCdWZmZXIuZnJvbShjb250ZW50RWxlbWVudC5iYXNlNjRjb250ZW50LCBcImJhc2U2NFwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhpc3RzKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlLCBnZnY6IHN0cmluZywgZGVwc0hhc2g6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiR2VuZXJhdG9yU291cmNlc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2NhbCBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydHMgY2FjaGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSBCdWlsZENhY2hlTW9kZS5EaXNhYmxlZCB8fCB0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkZvcmNlVXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSBhd2FpdCB0aGlzLmV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQoZ2Z2LCBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbiwgZGVwc0hhc2gpO1xuICAgICAgICByZXR1cm4gY2FjaGVkRmlsZVBhdGggIT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDb250ZW50KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHN0cmluZyxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlQ29udGVudDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNhY2hlRmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgoZ2Z2LCBnZW5lcmF0b3JTb3VyY2UsIGRlcHNIYXNoKTtcbiAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhjYWNoZUZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlUGF0aCwgXCJ1dGYtOFwiKSk7XG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgW2ZpbGVOYW1lXTogZmlsZUNvbnRlbnQsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoY2FjaGVGaWxlUGF0aCkpO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoY2FjaGVGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29udGVudCksIFwidXRmLThcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZVdlYnBhY2tQbHVnaW4ob3B0aW9uczogRm9ybUJ1aWxkQ2FjaGVPcHRpb25zKTogUHJvbWlzZTxDYWNoZUFzc2V0c1BsdWdpbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09PSBCdWlsZENhY2hlTW9kZS5EaXNhYmxlZCB8fCBvcHRpb25zLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLlJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhY2hlZEZpbGVQYXRoID0gdGhpcy5nZXRDYWNoZUZpbGVQYXRoKG9wdGlvbnMuZ2Z2LCBvcHRpb25zLmdlbmVyYXRvclZlcnNpb24sIG9wdGlvbnMuZGVwc0hhc2gpO1xuICAgICAgICByZXR1cm4gbmV3IENhY2hlQXNzZXRzUGx1Z2luKHtcbiAgICAgICAgICAgIGNhY2hlRmlsZTogY2FjaGVkRmlsZVBhdGgsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2FjaGVGaWxlUGF0aChnZnY6IHN0cmluZywgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nLCBkZXBzSGFzaDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHttZDUoZ2Z2KX0tJHttZDUoZ2VuZXJhdG9yVmVyc2lvbil9LSR7ZGVwc0hhc2h9LnppcGA7XG4gICAgICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcIi5idWlsZC1jYWNoZVwiLCBcImNvbXBpbGVcIiwgZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZXhpc3RzRmlsZUNhY2hlT3JEb3dubG9hZChcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGdlbmVyYXRvclZlcnNpb246IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRDYWNoZUZpbGVQYXRoKGdmdiwgZ2VuZXJhdG9yVmVyc2lvbiwgZGVwc0hhc2gpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYFN0YXJ0IHNlYXJjaCBmaWxlIGxvY2FsbHk6ICR7ZmlsZVBhdGh9YCk7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJGb3VuZCBmaWxlIGluIGxvY2FsIGRpcmVjdG9yeVwiKTtcbiAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBDYWNoZSBmaWxlIHdhcyBub3QgZm91bmQgbG9jYWxseTogJHtmaWxlUGF0aH1gKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYExvb2tpbmcgZm9yIGNhY2hlIGluIGRyaXZlIHN0b3JhZ2U6ICR7ZmlsZW5hbWV9YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgaHR0cHM6Ly9hcGkua29udHVyLnJ1L2RyaXZlL3YxL3B1YmxpYy8ke2ZpbGVuYW1lfWApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgRHJpdmUgcmVzcG9uc2Ugc3RhdHVzIGNvZGU6ICR7cmVzcG9uc2Uuc3RhdHVzLnRvU3RyaW5nKCl9YCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgYXdhaXQgcmVzcG9uc2UuYnVmZmVyKCksIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDYWNoZSBmaWxlIG5vdCBmb3VuZCBpbiBkcml2ZSBzdG9yYWdlOiAke2ZpbGVuYW1lfS4gR0ZWOiAke2dmdn0sIEdlbmVyYXRvclZlcnNpb246ICR7Z2VuZXJhdG9yVmVyc2lvbn0sIERlcGVuZGVuY2llc0hhc2g6ICR7ZGVwc0hhc2h9YFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBEcml2ZSBzdG9yYWdlIHNlbnQgJHtyZXNwb25zZS5zdGF0dXN9IHN0YXR1cyBjb2RlLCBJIGRvbid0IHByb2Nlc3MgaXQgaW4gYW55IHdheWBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJEcml2ZSBzdG9yYWdlIHJlc3BvbmRlZCB3aXRoIGFuIGVycm9yXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiVGhlIGJ1aWxkIHdpbGwgY29udGludWUgd2l0aG91dCBhIGNhY2hlXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4g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