occam-languages 0.0.98 → 0.0.101
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/lib/index.js +5 -1
- package/lib/utilities/releaseContext.js +11 -474
- package/lib/utilities/verification.js +491 -0
- package/package.json +1 -1
- package/src/index.js +1 -0
- package/src/utilities/releaseContext.js +14 -275
- package/src/utilities/verification.js +280 -0
package/lib/index.js
CHANGED
|
@@ -56,6 +56,9 @@ _export(exports, {
|
|
|
56
56
|
},
|
|
57
57
|
get releaseContextUtilities () {
|
|
58
58
|
return _releaseContext.default;
|
|
59
|
+
},
|
|
60
|
+
get verificationUtilities () {
|
|
61
|
+
return _verification.default;
|
|
59
62
|
}
|
|
60
63
|
});
|
|
61
64
|
var _log = /*#__PURE__*/ _interop_require_default(require("./log"));
|
|
@@ -72,6 +75,7 @@ var _equivalence = /*#__PURE__*/ _interop_require_default(require("./pass/equiva
|
|
|
72
75
|
var _node = /*#__PURE__*/ _interop_require_default(require("./utilities/node"));
|
|
73
76
|
var _query = /*#__PURE__*/ _interop_require_default(require("./utilities/query"));
|
|
74
77
|
var _fileContext = /*#__PURE__*/ _interop_require_default(require("./utilities/fileContext"));
|
|
78
|
+
var _verification = /*#__PURE__*/ _interop_require_default(require("./utilities/verification"));
|
|
75
79
|
var _asynchronous = /*#__PURE__*/ _interop_require_default(require("./utilities/asynchronous"));
|
|
76
80
|
var _releaseContext = /*#__PURE__*/ _interop_require_default(require("./utilities/releaseContext"));
|
|
77
81
|
function _interop_require_default(obj) {
|
|
@@ -80,4 +84,4 @@ function _interop_require_default(obj) {
|
|
|
80
84
|
};
|
|
81
85
|
}
|
|
82
86
|
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9uVGVybWluYWxOb2RlIH0gZnJvbSBcIi4vbm9uVGVybWluYWxOb2RlXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgWmlwUGFzcyB9IGZyb20gXCIuL3Bhc3MvemlwXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFzeW5jUGFzcyB9IGZyb20gXCIuL3Bhc3MvYXN5bmNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2ltcGxlUGFzcyB9IGZyb20gXCIuL3Bhc3Mvc2ltcGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcndhcmRQYXNzIH0gZnJvbSBcIi4vcGFzcy9mb3J3YXJkXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVxdWl2YWxlbmNlUGFzcyB9IGZyb20gXCIuL3Bhc3MvZXF1aXZhbGVuY2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZpY2F0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcmlmaWNhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQXN5bmNQYXNzIiwiQ29udGV4dCIsIkVsZW1lbnQiLCJFcXVpdmFsZW5jZVBhc3MiLCJGaWxlQ29udGV4dCIsIkZvcndhcmRQYXNzIiwiTG9nIiwiTm9uVGVybWluYWxOb2RlIiwiUmVsZWFzZUNvbnRleHQiLCJTaW1wbGVQYXNzIiwiWmlwUGFzcyIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImZpbGVDb250ZXh0VXRpbGl0aWVzIiwibm9kZVV0aWxpdGllcyIsInF1ZXJ5VXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJ2ZXJpZmljYXRpb25VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVVvQkE7ZUFBQUEsY0FBUzs7UUFOVEM7ZUFBQUEsZ0JBQU87O1FBRFBDO2VBQUFBLGdCQUFPOztRQVVQQztlQUFBQSxvQkFBZTs7UUFSZkM7ZUFBQUEsYUFBVzs7UUFPWEM7ZUFBQUEsZ0JBQVc7O1FBVlhDO2VBQUFBLFlBQUc7O1FBS0hDO2VBQUFBLHdCQUFlOztRQURmQztlQUFBQSxnQkFBYzs7UUFLZEM7ZUFBQUEsZUFBVTs7UUFGVkM7ZUFBQUEsWUFBTzs7UUFVUEM7ZUFBQUEscUJBQXFCOztRQUZyQkM7ZUFBQUEsb0JBQW9COztRQUZwQkM7ZUFBQUEsYUFBYTs7UUFDYkM7ZUFBQUEsY0FBYzs7UUFJZEM7ZUFBQUEsdUJBQXVCOztRQUZ2QkM7ZUFBQUEscUJBQXFCOzs7MERBaEJWOzhEQUNJOzhEQUNBOzJEQUNJOzhEQUNHO3NFQUNDOzBEQUVSOzREQUNFOzZEQUNDOzhEQUNDO2tFQUNJOzJEQUVGOzREQUNDO2tFQUNNO21FQUNDO21FQUNBO3FFQUNFIn0=
|
|
@@ -9,339 +9,28 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
get createReleaseContext () {
|
|
13
|
-
return createReleaseContext;
|
|
14
|
-
},
|
|
15
12
|
get default () {
|
|
16
13
|
return _default;
|
|
17
14
|
},
|
|
18
|
-
get initialiseReleaseContext () {
|
|
19
|
-
return initialiseReleaseContext;
|
|
20
|
-
},
|
|
21
15
|
get releaseContextFromJSON () {
|
|
22
16
|
return releaseContextFromJSON;
|
|
23
17
|
},
|
|
18
|
+
get releaseContextFromPelease () {
|
|
19
|
+
return releaseContextFromPelease;
|
|
20
|
+
},
|
|
24
21
|
get releaseContextFromProject () {
|
|
25
22
|
return releaseContextFromProject;
|
|
26
|
-
},
|
|
27
|
-
get verifyReleaseContext () {
|
|
28
|
-
return verifyReleaseContext;
|
|
29
23
|
}
|
|
30
24
|
});
|
|
31
|
-
var _necessary = require("necessary");
|
|
32
25
|
var _occammodel = require("occam-model");
|
|
33
26
|
var _release = /*#__PURE__*/ _interop_require_default(require("../context/release"));
|
|
34
|
-
var _dependency = require("../utilities/dependency");
|
|
35
27
|
var _customGrammar = require("../utilities/customGrammar");
|
|
36
|
-
function _array_like_to_array(arr, len) {
|
|
37
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
38
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
39
|
-
return arr2;
|
|
40
|
-
}
|
|
41
|
-
function _array_without_holes(arr) {
|
|
42
|
-
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
43
|
-
}
|
|
44
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
45
|
-
try {
|
|
46
|
-
var info = gen[key](arg);
|
|
47
|
-
var value = info.value;
|
|
48
|
-
} catch (error) {
|
|
49
|
-
reject(error);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (info.done) {
|
|
53
|
-
resolve(value);
|
|
54
|
-
} else {
|
|
55
|
-
Promise.resolve(value).then(_next, _throw);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
function _async_to_generator(fn) {
|
|
59
|
-
return function() {
|
|
60
|
-
var self = this, args = arguments;
|
|
61
|
-
return new Promise(function(resolve, reject) {
|
|
62
|
-
var gen = fn.apply(self, args);
|
|
63
|
-
function _next(value) {
|
|
64
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
65
|
-
}
|
|
66
|
-
function _throw(err) {
|
|
67
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
68
|
-
}
|
|
69
|
-
_next(undefined);
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
28
|
function _interop_require_default(obj) {
|
|
74
29
|
return obj && obj.__esModule ? obj : {
|
|
75
30
|
default: obj
|
|
76
31
|
};
|
|
77
32
|
}
|
|
78
|
-
|
|
79
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
80
|
-
}
|
|
81
|
-
function _non_iterable_spread() {
|
|
82
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
83
|
-
}
|
|
84
|
-
function _to_consumable_array(arr) {
|
|
85
|
-
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
86
|
-
}
|
|
87
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
88
|
-
if (!o) return;
|
|
89
|
-
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
90
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
91
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
92
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
93
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
94
|
-
}
|
|
95
|
-
function _ts_generator(thisArg, body) {
|
|
96
|
-
var f, y, t, _ = {
|
|
97
|
-
label: 0,
|
|
98
|
-
sent: function() {
|
|
99
|
-
if (t[0] & 1) throw t[1];
|
|
100
|
-
return t[1];
|
|
101
|
-
},
|
|
102
|
-
trys: [],
|
|
103
|
-
ops: []
|
|
104
|
-
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
105
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
106
|
-
return this;
|
|
107
|
-
}), g;
|
|
108
|
-
function verb(n) {
|
|
109
|
-
return function(v) {
|
|
110
|
-
return step([
|
|
111
|
-
n,
|
|
112
|
-
v
|
|
113
|
-
]);
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
function step(op) {
|
|
117
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
118
|
-
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
119
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
120
|
-
if (y = 0, t) op = [
|
|
121
|
-
op[0] & 2,
|
|
122
|
-
t.value
|
|
123
|
-
];
|
|
124
|
-
switch(op[0]){
|
|
125
|
-
case 0:
|
|
126
|
-
case 1:
|
|
127
|
-
t = op;
|
|
128
|
-
break;
|
|
129
|
-
case 4:
|
|
130
|
-
_.label++;
|
|
131
|
-
return {
|
|
132
|
-
value: op[1],
|
|
133
|
-
done: false
|
|
134
|
-
};
|
|
135
|
-
case 5:
|
|
136
|
-
_.label++;
|
|
137
|
-
y = op[1];
|
|
138
|
-
op = [
|
|
139
|
-
0
|
|
140
|
-
];
|
|
141
|
-
continue;
|
|
142
|
-
case 7:
|
|
143
|
-
op = _.ops.pop();
|
|
144
|
-
_.trys.pop();
|
|
145
|
-
continue;
|
|
146
|
-
default:
|
|
147
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
148
|
-
_ = 0;
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
152
|
-
_.label = op[1];
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
156
|
-
_.label = t[1];
|
|
157
|
-
t = op;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
if (t && _.label < t[2]) {
|
|
161
|
-
_.label = t[2];
|
|
162
|
-
_.ops.push(op);
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
if (t[2]) _.ops.pop();
|
|
166
|
-
_.trys.pop();
|
|
167
|
-
continue;
|
|
168
|
-
}
|
|
169
|
-
op = body.call(thisArg, _);
|
|
170
|
-
} catch (e) {
|
|
171
|
-
op = [
|
|
172
|
-
6,
|
|
173
|
-
e
|
|
174
|
-
];
|
|
175
|
-
y = 0;
|
|
176
|
-
} finally{
|
|
177
|
-
f = t = 0;
|
|
178
|
-
}
|
|
179
|
-
if (op[0] & 5) throw op[1];
|
|
180
|
-
return {
|
|
181
|
-
value: op[0] ? op[1] : void 0,
|
|
182
|
-
done: true
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
var last = _necessary.arrayUtilities.last, isMetaJSONFileValid = _occammodel.metaJSONUtilities.isMetaJSONFileValid;
|
|
187
|
-
function createReleaseContext(dependency, dependentNames, context) {
|
|
188
|
-
return _async_to_generator(function() {
|
|
189
|
-
var success, releaseContextMap, dependencyName, releaseName, releaseContext, log, releaseMatchesDependency, log1, dependencyString, dependentNamesLength, lastDependentName, dependentName, releaseContextFromDependency, releaseContext1, releaseContextCreated, releaseMatchesDependency1;
|
|
190
|
-
return _ts_generator(this, function(_state) {
|
|
191
|
-
switch(_state.label){
|
|
192
|
-
case 0:
|
|
193
|
-
success = false;
|
|
194
|
-
releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
|
|
195
|
-
if (!(releaseContext !== null)) return [
|
|
196
|
-
3,
|
|
197
|
-
1
|
|
198
|
-
];
|
|
199
|
-
log = context.log, releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
|
|
200
|
-
if (releaseMatchesDependency) {
|
|
201
|
-
log.debug("The '".concat(releaseName, "' context has already been created."));
|
|
202
|
-
success = true;
|
|
203
|
-
}
|
|
204
|
-
return [
|
|
205
|
-
3,
|
|
206
|
-
5
|
|
207
|
-
];
|
|
208
|
-
case 1:
|
|
209
|
-
log1 = context.log, dependencyString = dependency.asString(), dependentNamesLength = dependentNames.length;
|
|
210
|
-
if (dependentNamesLength === 0) {
|
|
211
|
-
log1.info("Creating the '".concat(releaseName, "' context..."));
|
|
212
|
-
} else {
|
|
213
|
-
lastDependentName = last(dependentNames), dependentName = lastDependentName; ///
|
|
214
|
-
log1.info("Creating the '".concat(releaseName, "' context given the '").concat(dependentName, "' dependant's '").concat(dependencyString, "' dependency..."));
|
|
215
|
-
}
|
|
216
|
-
releaseContextFromDependency = context.releaseContextFromDependency;
|
|
217
|
-
return [
|
|
218
|
-
4,
|
|
219
|
-
releaseContextFromDependency(dependency, context)
|
|
220
|
-
];
|
|
221
|
-
case 2:
|
|
222
|
-
releaseContext1 = _state.sent(), releaseContextCreated = checkReleaseContextCreated(releaseContext1, dependency, context);
|
|
223
|
-
if (!releaseContextCreated) return [
|
|
224
|
-
3,
|
|
225
|
-
4
|
|
226
|
-
];
|
|
227
|
-
releaseMatchesDependency1 = checkReleaseMatchesDependency(releaseContext1, dependency, dependentNames, context);
|
|
228
|
-
if (!releaseMatchesDependency1) return [
|
|
229
|
-
3,
|
|
230
|
-
4
|
|
231
|
-
];
|
|
232
|
-
releaseContextMap[releaseName] = releaseContext1;
|
|
233
|
-
return [
|
|
234
|
-
4,
|
|
235
|
-
createDependencyReleaseContexts(dependency, releaseContext1, dependentNames, context)
|
|
236
|
-
];
|
|
237
|
-
case 3:
|
|
238
|
-
success = _state.sent();
|
|
239
|
-
_state.label = 4;
|
|
240
|
-
case 4:
|
|
241
|
-
success ? log1.debug("...created the '".concat(releaseName, "' context.")) : log1.warning("...unable to create the '".concat(releaseName, "' context."));
|
|
242
|
-
_state.label = 5;
|
|
243
|
-
case 5:
|
|
244
|
-
return [
|
|
245
|
-
2,
|
|
246
|
-
success
|
|
247
|
-
];
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
})();
|
|
251
|
-
}
|
|
252
|
-
function verifyReleaseContext(releaseName, dependentName, dependentReleased, releaseContextMap) {
|
|
253
|
-
return _async_to_generator(function() {
|
|
254
|
-
var releaseVerifies, releaseContext, released, _$dependentName, _$dependentReleased, dependencyReleaseContextsVerify, releaseContextVerified, releaseContextVerifies;
|
|
255
|
-
return _ts_generator(this, function(_state) {
|
|
256
|
-
switch(_state.label){
|
|
257
|
-
case 0:
|
|
258
|
-
releaseVerifies = false;
|
|
259
|
-
releaseContext = releaseContextMap[releaseName];
|
|
260
|
-
if (!(releaseContext !== null)) return [
|
|
261
|
-
3,
|
|
262
|
-
6
|
|
263
|
-
];
|
|
264
|
-
released = releaseContext.isReleased();
|
|
265
|
-
if (!released) return [
|
|
266
|
-
3,
|
|
267
|
-
1
|
|
268
|
-
];
|
|
269
|
-
releaseVerifies = true;
|
|
270
|
-
return [
|
|
271
|
-
3,
|
|
272
|
-
6
|
|
273
|
-
];
|
|
274
|
-
case 1:
|
|
275
|
-
if (!dependentReleased) return [
|
|
276
|
-
3,
|
|
277
|
-
2
|
|
278
|
-
];
|
|
279
|
-
releaseContext.warning("The '".concat(releaseName, "' project cannot be verifies because its '").concat(dependentName, "' dependent is a package."));
|
|
280
|
-
return [
|
|
281
|
-
3,
|
|
282
|
-
6
|
|
283
|
-
];
|
|
284
|
-
case 2:
|
|
285
|
-
_$dependentName = releaseName, _$dependentReleased = released;
|
|
286
|
-
return [
|
|
287
|
-
4,
|
|
288
|
-
verifyDependencyReleaseContexts(releaseContext, _$dependentName, _$dependentReleased, releaseContextMap)
|
|
289
|
-
];
|
|
290
|
-
case 3:
|
|
291
|
-
dependencyReleaseContextsVerify = _state.sent();
|
|
292
|
-
if (!dependencyReleaseContextsVerify) return [
|
|
293
|
-
3,
|
|
294
|
-
6
|
|
295
|
-
];
|
|
296
|
-
releaseContextVerified = releaseContext.hasVerified();
|
|
297
|
-
if (!releaseContextVerified) return [
|
|
298
|
-
3,
|
|
299
|
-
4
|
|
300
|
-
];
|
|
301
|
-
releaseVerifies = true;
|
|
302
|
-
return [
|
|
303
|
-
3,
|
|
304
|
-
6
|
|
305
|
-
];
|
|
306
|
-
case 4:
|
|
307
|
-
releaseContext.info("Verifying the '".concat(releaseName, "' project..."));
|
|
308
|
-
return [
|
|
309
|
-
4,
|
|
310
|
-
releaseContext.verify()
|
|
311
|
-
];
|
|
312
|
-
case 5:
|
|
313
|
-
releaseContextVerifies = _state.sent();
|
|
314
|
-
if (releaseContextVerifies) {
|
|
315
|
-
releaseContext.info("...verified the '".concat(releaseName, "' project."));
|
|
316
|
-
releaseVerifies = true;
|
|
317
|
-
}
|
|
318
|
-
_state.label = 6;
|
|
319
|
-
case 6:
|
|
320
|
-
return [
|
|
321
|
-
2,
|
|
322
|
-
releaseVerifies
|
|
323
|
-
];
|
|
324
|
-
}
|
|
325
|
-
});
|
|
326
|
-
})();
|
|
327
|
-
}
|
|
328
|
-
function initialiseReleaseContext(dependency, context) {
|
|
329
|
-
var releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
|
|
330
|
-
if (releaseContext === null) {
|
|
331
|
-
var log = context.log;
|
|
332
|
-
log.warning("Unable to initialise the '".concat(dependencyName, "' context because it has not been created."));
|
|
333
|
-
} else {
|
|
334
|
-
var releaseContextInitialised = releaseContext.isInitialised();
|
|
335
|
-
if (!releaseContextInitialised) {
|
|
336
|
-
initialiseDependencyReleaseContexts(dependency, releaseContext, context);
|
|
337
|
-
var log1 = context.log, releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
|
|
338
|
-
log1.info("Initialising the '".concat(dependencyName, "' context..."));
|
|
339
|
-
var FileContextFromFilePath = context.FileContextFromFilePath;
|
|
340
|
-
releaseContext.initialise(releaseContexts, FileContextFromFilePath);
|
|
341
|
-
log1.debug("...initialised the '".concat(dependencyName, "' context."));
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
}
|
|
33
|
+
var isMetaJSONFileValid = _occammodel.metaJSONUtilities.isMetaJSONFileValid;
|
|
345
34
|
function releaseContextFromJSON(json, context) {
|
|
346
35
|
var log = context.log, callback = context.callback, name = json.name;
|
|
347
36
|
context = json.context; ///
|
|
@@ -365,166 +54,14 @@ function releaseContextFromProject(project, context) {
|
|
|
365
54
|
}
|
|
366
55
|
return releaseContext;
|
|
367
56
|
}
|
|
57
|
+
function releaseContextFromPelease(release, context) {
|
|
58
|
+
var log = context.log, callback = context.callback, name = release.getName(), json = null, entries = release.getEntries(), customGrammar = (0, _customGrammar.customGrammarFromNameAndEntries)(name, entries), releaseContext = _release.default.fromLogNameJSONEntriesCallbackAndCustomGrammar(log, name, json, entries, callback, customGrammar);
|
|
59
|
+
return releaseContext;
|
|
60
|
+
}
|
|
368
61
|
var _default = {
|
|
369
|
-
createReleaseContext: createReleaseContext,
|
|
370
|
-
verifyReleaseContext: verifyReleaseContext,
|
|
371
62
|
releaseContextFromJSON: releaseContextFromJSON,
|
|
372
|
-
|
|
373
|
-
|
|
63
|
+
releaseContextFromProject: releaseContextFromProject,
|
|
64
|
+
releaseContextFromPelease: releaseContextFromPelease
|
|
374
65
|
};
|
|
375
|
-
function createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context) {
|
|
376
|
-
return _async_to_generator(function() {
|
|
377
|
-
var success, dependencyName, dependencies;
|
|
378
|
-
return _ts_generator(this, function(_state) {
|
|
379
|
-
switch(_state.label){
|
|
380
|
-
case 0:
|
|
381
|
-
dependencyName = dependency.getName(), dependencies = releaseContext.getDependencies();
|
|
382
|
-
dependentNames = _to_consumable_array(dependentNames).concat([
|
|
383
|
-
dependencyName
|
|
384
|
-
]); ///
|
|
385
|
-
return [
|
|
386
|
-
4,
|
|
387
|
-
(0, _dependency.asyncEveryDependency)(dependencies, function(dependency) {
|
|
388
|
-
return _async_to_generator(function() {
|
|
389
|
-
var success, cyclicDependencyExists;
|
|
390
|
-
return _ts_generator(this, function(_state) {
|
|
391
|
-
switch(_state.label){
|
|
392
|
-
case 0:
|
|
393
|
-
success = false;
|
|
394
|
-
cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames, context);
|
|
395
|
-
if (!!cyclicDependencyExists) return [
|
|
396
|
-
3,
|
|
397
|
-
2
|
|
398
|
-
];
|
|
399
|
-
return [
|
|
400
|
-
4,
|
|
401
|
-
createReleaseContext(dependency, dependentNames, context)
|
|
402
|
-
];
|
|
403
|
-
case 1:
|
|
404
|
-
success = _state.sent();
|
|
405
|
-
_state.label = 2;
|
|
406
|
-
case 2:
|
|
407
|
-
return [
|
|
408
|
-
2,
|
|
409
|
-
success
|
|
410
|
-
];
|
|
411
|
-
}
|
|
412
|
-
});
|
|
413
|
-
})();
|
|
414
|
-
})
|
|
415
|
-
];
|
|
416
|
-
case 1:
|
|
417
|
-
success = _state.sent();
|
|
418
|
-
return [
|
|
419
|
-
2,
|
|
420
|
-
success
|
|
421
|
-
];
|
|
422
|
-
}
|
|
423
|
-
});
|
|
424
|
-
})();
|
|
425
|
-
}
|
|
426
|
-
function verifyDependencyReleaseContexts(releaseContext, dependentName, dependentReleased, releaseContextMap) {
|
|
427
|
-
return _async_to_generator(function() {
|
|
428
|
-
var dependencies, dependencyReleaseContextsVerify;
|
|
429
|
-
return _ts_generator(this, function(_state) {
|
|
430
|
-
switch(_state.label){
|
|
431
|
-
case 0:
|
|
432
|
-
dependencies = releaseContext.getDependencies();
|
|
433
|
-
return [
|
|
434
|
-
4,
|
|
435
|
-
(0, _dependency.asyncEveryDependency)(dependencies, function(dependency) {
|
|
436
|
-
return _async_to_generator(function() {
|
|
437
|
-
var name, releaseName, releaseContextVerifies;
|
|
438
|
-
return _ts_generator(this, function(_state) {
|
|
439
|
-
switch(_state.label){
|
|
440
|
-
case 0:
|
|
441
|
-
name = dependency.getName(), releaseName = name;
|
|
442
|
-
return [
|
|
443
|
-
4,
|
|
444
|
-
verifyReleaseContext(releaseName, dependentName, dependentReleased, releaseContextMap)
|
|
445
|
-
];
|
|
446
|
-
case 1:
|
|
447
|
-
releaseContextVerifies = _state.sent();
|
|
448
|
-
if (releaseContextVerifies) {
|
|
449
|
-
return [
|
|
450
|
-
2,
|
|
451
|
-
true
|
|
452
|
-
];
|
|
453
|
-
}
|
|
454
|
-
return [
|
|
455
|
-
2
|
|
456
|
-
];
|
|
457
|
-
}
|
|
458
|
-
});
|
|
459
|
-
})();
|
|
460
|
-
})
|
|
461
|
-
];
|
|
462
|
-
case 1:
|
|
463
|
-
dependencyReleaseContextsVerify = _state.sent();
|
|
464
|
-
return [
|
|
465
|
-
2,
|
|
466
|
-
dependencyReleaseContextsVerify
|
|
467
|
-
];
|
|
468
|
-
}
|
|
469
|
-
});
|
|
470
|
-
})();
|
|
471
|
-
}
|
|
472
|
-
function retrieveReleaseContexts(releaseContext, releaseContextMap) {
|
|
473
|
-
var releaseContexts = [], remainingReleaseContext = releaseContext, remainingReleaseContexts = [
|
|
474
|
-
remainingReleaseContext
|
|
475
|
-
];
|
|
476
|
-
var remainingReleaseContextsLength = remainingReleaseContexts.length;
|
|
477
|
-
while(remainingReleaseContextsLength > 0){
|
|
478
|
-
var remainingReleaseContext1 = remainingReleaseContexts.shift(), _$releaseContext = remainingReleaseContext1; ///
|
|
479
|
-
releaseContexts.push(_$releaseContext);
|
|
480
|
-
var dependencies = _$releaseContext.getDependencies();
|
|
481
|
-
dependencies.forEachDependency(function(dependency) {
|
|
482
|
-
var dependencyName = dependency.getName(), releaseName = dependencyName, _$releaseContext = releaseContextMap[releaseName], releaseContextsIncludesReleaseContext = releaseContexts.includes(_$releaseContext), remainingReleaseContextsIncludesReleaseContext = remainingReleaseContexts.includes(_$releaseContext);
|
|
483
|
-
if (!releaseContextsIncludesReleaseContext && !remainingReleaseContextsIncludesReleaseContext) {
|
|
484
|
-
var remainingReleaseContext = _$releaseContext; ///
|
|
485
|
-
remainingReleaseContexts.push(remainingReleaseContext);
|
|
486
|
-
}
|
|
487
|
-
});
|
|
488
|
-
remainingReleaseContextsLength = remainingReleaseContexts.length;
|
|
489
|
-
}
|
|
490
|
-
return releaseContexts;
|
|
491
|
-
}
|
|
492
|
-
function checkReleaseContextCreated(releaseContext, dependency, context) {
|
|
493
|
-
var releaseContextCreated = releaseContext !== null;
|
|
494
|
-
if (!releaseContextCreated) {
|
|
495
|
-
var log = context.log, dependencyName = dependency.getName(), releaseName = dependencyName; ///
|
|
496
|
-
log.warning("The '".concat(releaseName, "' context could not be created. Perhaps the 'meta.json' file is missing or invalid. Or there could be a dependency mismatch."));
|
|
497
|
-
}
|
|
498
|
-
return releaseContextCreated;
|
|
499
|
-
}
|
|
500
|
-
function checkCyclicDependencyExists(dependency, dependentNames, context) {
|
|
501
|
-
var dependencyName = dependency.getName(), dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName), cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
|
|
502
|
-
if (cyclicDependencyExists) {
|
|
503
|
-
var log = context.log, firstDependentName = first(dependentNames), dependencyNames = _to_consumable_array(dependentNames).concat([
|
|
504
|
-
firstDependentName
|
|
505
|
-
]), dependencyNamesString = dependencyNames.join("' -> '");
|
|
506
|
-
log.warning("There is a cyclic dependency, '".concat(dependencyNamesString, "'."));
|
|
507
|
-
}
|
|
508
|
-
return cyclicDependencyExists;
|
|
509
|
-
}
|
|
510
|
-
function checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context) {
|
|
511
|
-
var releaseMatchesDependency = true;
|
|
512
|
-
var shortenedVersion = dependency.getShortedVersion();
|
|
513
|
-
if (shortenedVersion !== null) {
|
|
514
|
-
var entriesMatchShortenedVersion = releaseContext.matchShortenedVersion(shortenedVersion);
|
|
515
|
-
if (!entriesMatchShortenedVersion) {
|
|
516
|
-
var log = context.log, version = releaseContext.getVersion(), lastDependentName = last(dependentNames), dependentName = lastDependentName, versionString = version.toString(), dependencyString = dependency.asString();
|
|
517
|
-
log.warning("The '".concat(dependentName, "' dependent requires the '").concat(dependencyString, "' dependency but a context with version '").concat(versionString, "' was provided."));
|
|
518
|
-
releaseMatchesDependency = false;
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
return releaseMatchesDependency;
|
|
522
|
-
}
|
|
523
|
-
function initialiseDependencyReleaseContexts(dependency, releaseContext, context) {
|
|
524
|
-
var dependencies = releaseContext.getDependencies();
|
|
525
|
-
dependencies.forEachDependency(function(dependency) {
|
|
526
|
-
initialiseReleaseContext(dependency, context);
|
|
527
|
-
});
|
|
528
|
-
}
|
|
529
66
|
|
|
530
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRW50cmllcywgbWV0YUpTT05VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbW9kZWxcIjtcblxuaW1wb3J0IFJlbGVhc2VDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeURlcGVuZGVuY3kgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2RlcGVuZGVuY3lcIjtcbmltcG9ydCB7IGN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2N1c3RvbUdyYW1tYXJcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgaXNNZXRhSlNPTkZpbGVWYWxpZCB9ID0gbWV0YUpTT05VdGlsaXRpZXM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICBpZiAocmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICBsb2cuZGVidWcoYFRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLmApO1xuXG4gICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKSxcbiAgICAgICAgICBkZXBlbmRlbnROYW1lc0xlbmd0aCA9IGRlcGVuZGVudE5hbWVzLmxlbmd0aDtcblxuICAgIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuLi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZTsgIC8vL1xuXG4gICAgICBsb2cuaW5mbyhgQ3JlYXRpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dCBnaXZlbiB0aGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGFudCdzICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5Li4uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IH0gPSBjb250ZXh0LFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gYXdhaXQgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0KSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgICBpZiAocmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgICBjb25zdCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAocmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICAgIHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSA9IHJlbGVhc2VDb250ZXh0O1xuXG4gICAgICAgIHN1Y2Nlc3MgPSBhd2FpdCBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3VjY2VzcyA/XG4gICAgICBsb2cuZGVidWcoYC4uLmNyZWF0ZWQgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dC5gKSA6XG4gICAgICAgIGxvZy53YXJuaW5nKGAuLi51bmFibGUgdG8gY3JlYXRlIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuYCk7XG4gIH1cblxuICByZXR1cm4gc3VjY2Vzcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VOYW1lLCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgbGV0IHJlbGVhc2VWZXJpZmllcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpO1xuXG4gICAgaWYgKHJlbGVhc2VkKSB7XG4gICAgICByZWxlYXNlVmVyaWZpZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGVwZW5kZW50UmVsZWFzZWQpIHtcbiAgICAgICAgcmVsZWFzZUNvbnRleHQud2FybmluZyhgVGhlICcke3JlbGVhc2VOYW1lfScgcHJvamVjdCBjYW5ub3QgYmUgdmVyaWZpZXMgYmVjYXVzZSBpdHMgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCBpcyBhIHBhY2thZ2UuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkZXBlbmRlbnROYW1lID0gcmVsZWFzZU5hbWUsICAvLy9cbiAgICAgICAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSByZWxlYXNlZCwgLy8vXG4gICAgICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCB2ZXJpZnlEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgcmVsZWFzZUNvbnRleHRNYXApO1xuXG4gICAgICAgIGlmIChkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzVmVyaWZ5KSB7XG4gICAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRWZXJpZmllZCA9IHJlbGVhc2VDb250ZXh0Lmhhc1ZlcmlmaWVkKCk7XG5cbiAgICAgICAgICBpZiAocmVsZWFzZUNvbnRleHRWZXJpZmllZCkge1xuICAgICAgICAgICAgcmVsZWFzZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICAgICAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHJlbGVhc2VDb250ZXh0LnZlcmlmeSgpO1xuXG4gICAgICAgICAgICBpZiAocmVsZWFzZUNvbnRleHRWZXJpZmllcykge1xuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dC5pbmZvKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0LmApO1xuXG4gICAgICAgICAgICAgIHJlbGVhc2VWZXJpZmllcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VWZXJpZmllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0O1xuXG4gICAgbG9nLndhcm5pbmcoYFVuYWJsZSB0byBpbml0aWFsaXNlIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGNvbnRleHQgYmVjYXVzZSBpdCBoYXMgbm90IGJlZW4gY3JlYXRlZC5gKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkID0gcmVsZWFzZUNvbnRleHQuaXNJbml0aWFsaXNlZCgpO1xuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkKSB7XG4gICAgICBpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG5cbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKTtcblxuICAgICAgbG9nLmluZm8oYEluaXRpYWxpc2luZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0Li4uYCk7XG5cbiAgICAgIGNvbnN0IHsgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGggfSA9IGNvbnRleHQ7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UocmVsZWFzZUNvbnRleHRzLCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCk7XG5cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC5gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IGxvZywgY2FsbGJhY2sgfSA9IGNvbnRleHQsXG4gICAgICAgIHsgbmFtZSB9ID0ganNvbjtcblxuICAoe2NvbnRleHR9ID0ganNvbik7IC8vL1xuXG4gIGxldCB7IGVudHJpZXMgfSA9IGpzb247XG5cbiAganNvbiA9IGVudHJpZXM7IC8vL1xuXG4gIGVudHJpZXMgPSBFbnRyaWVzLmZyb21KU09OKGpzb24pO1xuXG4gIGNvbnN0IGNvbnRleHRKU09OID0gY29udGV4dDsgIC8vL1xuXG4gIGpzb24gPSBjb250ZXh0SlNPTjsgLy8vXG5cbiAgY29uc3QgY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMobmFtZSwgZW50cmllcyksXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gUmVsZWFzZUNvbnRleHQuZnJvbUxvZ05hbWVKU09ORW50cmllc0NhbGxiYWNrQW5kQ3VzdG9tR3JhbW1hcihsb2csIG5hbWUsIGpzb24sIGVudHJpZXMsIGNhbGxiYWNrLCBjdXN0b21HcmFtbWFyKTtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0KHByb2plY3QsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBtZXRhSlNPTkZpbGUgPSBwcm9qZWN0LmdldE1ldGFKU09ORmlsZSgpO1xuXG4gIGlmIChtZXRhSlNPTkZpbGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBtZXRhSlNPTkZpbGVWYWxpZCA9IGlzTWV0YUpTT05GaWxlVmFsaWQobWV0YUpTT05GaWxlKTtcblxuICAgIGlmIChtZXRhSlNPTkZpbGVWYWxpZCkge1xuICAgICAgY29uc3QgeyBsb2csIGNhbGxiYWNrIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgbmFtZSA9IHByb2plY3QuZ2V0TmFtZSgpLFxuICAgICAgICAgICAganNvbiA9IG51bGwsXG4gICAgICAgICAgICBlbnRyaWVzID0gcHJvamVjdC5nZXRFbnRyaWVzKCksXG4gICAgICAgICAgICBjdXN0b21HcmFtbWFyID0gY3VzdG9tR3JhbW1hckZyb21OYW1lQW5kRW50cmllcyhuYW1lLCBlbnRyaWVzKTtcblxuICAgICAgcmVsZWFzZUNvbnRleHQgPSBSZWxlYXNlQ29udGV4dC5mcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyKGxvZywgbmFtZSwganNvbiwgZW50cmllcywgY2FsbGJhY2ssIGN1c3RvbUdyYW1tYXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVSZWxlYXNlQ29udGV4dCxcbiAgdmVyaWZ5UmVsZWFzZUNvbnRleHQsXG4gIHJlbGVhc2VDb250ZXh0RnJvbUpTT04sXG4gIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCxcbiAgcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHN1Y2Nlc3M7XG5cbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbmN5TmFtZSBdOyAgLy8vXG5cbiAgc3VjY2VzcyA9IGF3YWl0IGFzeW5jRXZlcnlEZXBlbmRlbmN5KGRlcGVuZGVuY2llcywgYXN5bmMgKGRlcGVuZGVuY3kpID0+IHtcbiAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICAgIHN1Y2Nlc3MgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH0pO1xuXG4gIHJldHVybiBzdWNjZXNzO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCksXG4gICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCBhc3luY0V2ZXJ5RGVwZW5kZW5jeShkZXBlbmRlbmNpZXMsIGFzeW5jIChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VOYW1lLCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgcmVsZWFzZUNvbnRleHRNYXApO1xuXG4gICAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0VmVyaWZpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnk7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dCwgIC8vL1xuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMgPSBbXG4gICAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRcbiAgICAgICAgXTtcblxuICBsZXQgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmxlbmd0aDtcblxuICB3aGlsZSAocmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0ID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLnNoaWZ0KCksXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dDsgIC8vL1xuXG4gICAgcmVsZWFzZUNvbnRleHRzLnB1c2gocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdLFxuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCksXG4gICAgICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgaWYgKCFyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ICYmICFyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5wdXNoKHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0xlbmd0aCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRzO1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpO1xuXG4gIGlmICghcmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lOyAvLy9cblxuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0IGNvdWxkIG5vdCBiZSBjcmVhdGVkLiBQZXJoYXBzIHRoZSAnbWV0YS5qc29uJyBmaWxlIGlzIG1pc3Npbmcgb3IgaW52YWxpZC4gT3IgdGhlcmUgY291bGQgYmUgYSBkZXBlbmRlbmN5IG1pc21hdGNoLmApO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0Q3JlYXRlZDtcbn1cblxuZnVuY3Rpb24gY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzKGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGRlcGVuZGVudE5hbWVzSW5jbHVkZXNEZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVudE5hbWVzLmluY2x1ZGVzKGRlcGVuZGVuY3lOYW1lKSxcbiAgICAgICAgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGRlcGVuZGVudE5hbWVzSW5jbHVkZXNEZXBlbmRlbmN5TmFtZTsgIC8vL1xuXG4gIGlmIChjeWNsaWNEZXBlbmRlbmN5RXhpc3RzKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgZmlyc3REZXBlbmRlbnROYW1lID0gZmlyc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lcyA9IFsgIC8vL1xuICAgICAgICAgICAgLi4uZGVwZW5kZW50TmFtZXMsXG4gICAgICAgICAgICBmaXJzdERlcGVuZGVudE5hbWVcbiAgICAgICAgICBdLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lc1N0cmluZyA9IGRlcGVuZGVuY3lOYW1lcy5qb2luKGAnIC0+ICdgKTtcblxuICAgIGxvZy53YXJuaW5nKGBUaGVyZSBpcyBhIGN5Y2xpYyBkZXBlbmRlbmN5LCAnJHtkZXBlbmRlbmN5TmFtZXNTdHJpbmd9Jy5gKTtcbiAgfVxuXG4gIHJldHVybiBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzO1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IHRydWU7XG5cbiAgY29uc3Qgc2hvcnRlbmVkVmVyc2lvbiA9IGRlcGVuZGVuY3kuZ2V0U2hvcnRlZFZlcnNpb24oKTtcblxuICBpZiAoc2hvcnRlbmVkVmVyc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5tYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbik7XG5cbiAgICBpZiAoIWVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgdmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWUsICAvLy9cbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgcmVxdWlyZXMgdGhlICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5IGJ1dCBhIGNvbnRleHQgd2l0aCB2ZXJzaW9uICcke3ZlcnNpb25TdHJpbmd9JyB3YXMgcHJvdmlkZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3k7XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpO1xuXG4gIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4geyAgLy8vXG4gICAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVSZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0RnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0IiwidmVyaWZ5UmVsZWFzZUNvbnRleHQiLCJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJpc01ldGFKU09ORmlsZVZhbGlkIiwibWV0YUpTT05VdGlsaXRpZXMiLCJkZXBlbmRlbmN5IiwiZGVwZW5kZW50TmFtZXMiLCJjb250ZXh0Iiwic3VjY2VzcyIsInJlbGVhc2VDb250ZXh0TWFwIiwiZGVwZW5kZW5jeU5hbWUiLCJyZWxlYXNlTmFtZSIsInJlbGVhc2VDb250ZXh0IiwibG9nIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiZGVwZW5kZW5jeVN0cmluZyIsImRlcGVuZGVudE5hbWVzTGVuZ3RoIiwibGFzdERlcGVuZGVudE5hbWUiLCJkZXBlbmRlbnROYW1lIiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImdldE5hbWUiLCJjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImRlYnVnIiwiYXNTdHJpbmciLCJsZW5ndGgiLCJpbmZvIiwiY2hlY2tSZWxlYXNlQ29udGV4dENyZWF0ZWQiLCJjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwid2FybmluZyIsImRlcGVuZGVudFJlbGVhc2VkIiwicmVsZWFzZVZlcmlmaWVzIiwicmVsZWFzZWQiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzVmVyaWZ5IiwicmVsZWFzZUNvbnRleHRWZXJpZmllZCIsInJlbGVhc2VDb250ZXh0VmVyaWZpZXMiLCJpc1JlbGVhc2VkIiwidmVyaWZ5RGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImhhc1ZlcmlmaWVkIiwidmVyaWZ5IiwicmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCIsImlzSW5pdGlhbGlzZWQiLCJpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwiRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgiLCJpbml0aWFsaXNlIiwianNvbiIsImNhbGxiYWNrIiwibmFtZSIsImVudHJpZXMiLCJFbnRyaWVzIiwiZnJvbUpTT04iLCJjb250ZXh0SlNPTiIsImN1c3RvbUdyYW1tYXIiLCJjdXN0b21HcmFtbWFyRnJvbU5hbWVBbmRFbnRyaWVzIiwiUmVsZWFzZUNvbnRleHQiLCJmcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyIiwicHJvamVjdCIsIm1ldGFKU09ORmlsZSIsImdldE1ldGFKU09ORmlsZSIsIm1ldGFKU09ORmlsZVZhbGlkIiwiZ2V0RW50cmllcyIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImFzeW5jRXZlcnlEZXBlbmRlbmN5IiwiY3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsImNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0IiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoIiwic2hpZnQiLCJwdXNoIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiaW5jbHVkZXMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lIiwiZmlyc3REZXBlbmRlbnROYW1lIiwiZmlyc3QiLCJkZXBlbmRlbmN5TmFtZXMiLCJkZXBlbmRlbmN5TmFtZXNTdHJpbmciLCJqb2luIiwic2hvcnRlbmVkVmVyc2lvbiIsImdldFNob3J0ZWRWZXJzaW9uIiwiZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiIsIm1hdGNoU2hvcnRlbmVkVmVyc2lvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwidmVyc2lvblN0cmluZyIsInRvU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFhc0JBO2VBQUFBOztRQXlLdEI7ZUFBQTs7UUExRWdCQztlQUFBQTs7UUE4QkFDO2VBQUFBOztRQXNCQUM7ZUFBQUE7O1FBOUZNQztlQUFBQTs7O3lCQWhFUzswQkFDWTs4REFFaEI7MEJBRVU7NkJBQ1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEQsSUFBTSxBQUFFQyxPQUFTQyx5QkFBYyxDQUF2QkQsTUFDRixBQUFFRSxzQkFBd0JDLDZCQUFpQixDQUF6Q0Q7QUFFRCxTQUFlUCxxQkFBcUJTLFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxPQUFPOztZQUN4RUMsU0FFSUMsbUJBQ0ZDLGdCQUNBQyxhQUNBQyxnQkFHSUMsS0FDRkMsMEJBUUVELE1BQ0ZFLGtCQUNBQyxzQkFLRUMsbUJBQ0FDLGVBS0FDLDhCQUNGUCxpQkFDQVEsdUJBR0VOOzs7O29CQW5DTk4sVUFBVTtvQkFFTkMsb0JBQXNCRixRQUF0QkUsbUJBQ0ZDLGlCQUFpQkwsV0FBV2dCLE9BQU8sSUFDbkNWLGNBQWNELGdCQUNkRSxpQkFBaUJILGlCQUFpQixDQUFDRSxZQUFZLElBQUk7eUJBRXJEQyxDQUFBQSxtQkFBbUIsSUFBRyxHQUF0QkE7Ozs7b0JBQ01DLE1BQVFOLFFBQVJNLEtBQ0ZDLDJCQUEyQlEsOEJBQThCVixnQkFBZ0JQLFlBQVlDLGdCQUFnQkM7b0JBRTNHLElBQUlPLDBCQUEwQjt3QkFDNUJELElBQUlVLEtBQUssQ0FBQyxBQUFDLFFBQW1CLE9BQVpaLGFBQVk7d0JBRTlCSCxVQUFVO29CQUNaOzs7Ozs7b0JBRVFLLE9BQVFOLFFBQVJNLEtBQ0ZFLG1CQUFtQlYsV0FBV21CLFFBQVEsSUFDdENSLHVCQUF1QlYsZUFBZW1CLE1BQU07b0JBRWxELElBQUlULHlCQUF5QixHQUFHO3dCQUM5QkgsS0FBSWEsSUFBSSxDQUFDLEFBQUMsaUJBQTRCLE9BQVpmLGFBQVk7b0JBQ3hDLE9BQU87d0JBQ0NNLG9CQUFvQmhCLEtBQUtLLGlCQUN6QlksZ0JBQWdCRCxtQkFBb0IsR0FBRzt3QkFFN0NKLEtBQUlhLElBQUksQ0FBQyxBQUFDLGlCQUFtRFIsT0FBbkNQLGFBQVkseUJBQXNESSxPQUEvQkcsZUFBYyxtQkFBa0MsT0FBakJILGtCQUFpQjtvQkFDL0c7b0JBRVFJLCtCQUFpQ1osUUFBakNZO29CQUNlOzt3QkFBTUEsNkJBQTZCZCxZQUFZRTs7O29CQUFoRUssa0JBQWlCLGVBQ2pCUSx3QkFBd0JPLDJCQUEyQmYsaUJBQWdCUCxZQUFZRTt5QkFFakZhLHVCQUFBQTs7OztvQkFDSU4sNEJBQTJCUSw4QkFBOEJWLGlCQUFnQlAsWUFBWUMsZ0JBQWdCQzt5QkFFdkdPLDJCQUFBQTs7OztvQkFDRkwsaUJBQWlCLENBQUNFLFlBQVksR0FBR0M7b0JBRXZCOzt3QkFBTWdCLGdDQUFnQ3ZCLFlBQVlPLGlCQUFnQk4sZ0JBQWdCQzs7O29CQUE1RkMsVUFBVTs7O29CQUlkQSxVQUNFSyxLQUFJVSxLQUFLLENBQUMsQUFBQyxtQkFBOEIsT0FBWlosYUFBWSxpQkFDdkNFLEtBQUlnQixPQUFPLENBQUMsQUFBQyw0QkFBdUMsT0FBWmxCLGFBQVk7OztvQkFHMUQ7O3dCQUFPSDs7OztJQUNUOztBQUVPLFNBQWVSLHFCQUFxQlcsV0FBVyxFQUFFTyxhQUFhLEVBQUVZLGlCQUFpQixFQUFFckIsaUJBQWlCOztZQUNyR3NCLGlCQUVFbkIsZ0JBR0VvQixVQVFJZCxpQkFDQVkscUJBQ0FHLGlDQUdFQyx3QkFPRUM7Ozs7b0JBekJaSixrQkFBa0I7b0JBRWhCbkIsaUJBQWlCSCxpQkFBaUIsQ0FBQ0UsWUFBWTt5QkFFakRDLENBQUFBLG1CQUFtQixJQUFHLEdBQXRCQTs7OztvQkFDSW9CLFdBQVdwQixlQUFld0IsVUFBVTt5QkFFdENKLFVBQUFBOzs7O29CQUNGRCxrQkFBa0I7Ozs7Ozt5QkFFZEQsbUJBQUFBOzs7O29CQUNGbEIsZUFBZWlCLE9BQU8sQ0FBQyxBQUFDLFFBQStEWCxPQUF4RFAsYUFBWSw4Q0FBMEQsT0FBZE8sZUFBYzs7Ozs7O29CQUUvRkEsa0JBQWdCUCxhQUNoQm1CLHNCQUFvQkU7b0JBQ2M7O3dCQUFNSyxnQ0FBZ0N6QixnQkFBZ0JNLGlCQUFlWSxxQkFBbUJyQjs7O29CQUExSHdCLGtDQUFrQzt5QkFFcENBLGlDQUFBQTs7OztvQkFDSUMseUJBQXlCdEIsZUFBZTBCLFdBQVc7eUJBRXJESix3QkFBQUE7Ozs7b0JBQ0ZILGtCQUFrQjs7Ozs7O29CQUVsQm5CLGVBQWVjLElBQUksQ0FBQyxBQUFDLGtCQUE2QixPQUFaZixhQUFZO29CQUVuQjs7d0JBQU1DLGVBQWUyQixNQUFNOzs7b0JBQXBESix5QkFBeUI7b0JBRS9CLElBQUlBLHdCQUF3Qjt3QkFDMUJ2QixlQUFlYyxJQUFJLENBQUMsQUFBQyxvQkFBK0IsT0FBWmYsYUFBWTt3QkFFcERvQixrQkFBa0I7b0JBQ3BCOzs7b0JBT1Y7O3dCQUFPQTs7OztJQUNUOztBQUVPLFNBQVNsQyx5QkFBeUJRLFVBQVUsRUFBRUUsT0FBTztJQUMxRCxJQUFNLEFBQUVFLG9CQUFzQkYsUUFBdEJFLG1CQUNGQyxpQkFBaUJMLFdBQVdnQixPQUFPLElBQ25DVixjQUFjRCxnQkFDZEUsaUJBQWlCSCxpQkFBaUIsQ0FBQ0UsWUFBWSxJQUFJO0lBRXpELElBQUlDLG1CQUFtQixNQUFNO1FBQzNCLElBQU0sQUFBRUMsTUFBUU4sUUFBUk07UUFFUkEsSUFBSWdCLE9BQU8sQ0FBQyxBQUFDLDZCQUEyQyxPQUFmbkIsZ0JBQWU7SUFDMUQsT0FBTztRQUNMLElBQU04Qiw0QkFBNEI1QixlQUFlNkIsYUFBYTtRQUU5RCxJQUFJLENBQUNELDJCQUEyQjtZQUM5QkUsb0NBQW9DckMsWUFBWU8sZ0JBQWdCTDtZQUVoRSxJQUFNLEFBQUVNLE9BQVFOLFFBQVJNLEtBQ0Y4QixrQkFBa0JDLHdCQUF3QmhDLGdCQUFnQkg7WUFFaEVJLEtBQUlhLElBQUksQ0FBQyxBQUFDLHFCQUFtQyxPQUFmaEIsZ0JBQWU7WUFFN0MsSUFBTSxBQUFFbUMsMEJBQTRCdEMsUUFBNUJzQztZQUVSakMsZUFBZWtDLFVBQVUsQ0FBQ0gsaUJBQWlCRTtZQUUzQ2hDLEtBQUlVLEtBQUssQ0FBQyxBQUFDLHVCQUFxQyxPQUFmYixnQkFBZTtRQUNsRDtJQUNGO0FBQ0Y7QUFFTyxTQUFTWix1QkFBdUJpRCxJQUFJLEVBQUV4QyxPQUFPO0lBQ2xELElBQVFNLE1BQWtCTixRQUFsQk0sS0FBS21DLFdBQWF6QyxRQUFieUMsVUFDUCxBQUFFQyxPQUFTRixLQUFURTtJQUVOMUMsVUFBV3dDLEtBQVh4QyxTQUFrQixHQUFHO0lBRXZCLElBQUksQUFBRTJDLFVBQVlILEtBQVpHO0lBRU5ILE9BQU9HLFNBQVMsR0FBRztJQUVuQkEsVUFBVUMsbUJBQU8sQ0FBQ0MsUUFBUSxDQUFDTDtJQUUzQixJQUFNTSxjQUFjOUMsU0FBVSxHQUFHO0lBRWpDd0MsT0FBT00sYUFBYSxHQUFHO0lBRXZCLElBQU1DLGdCQUFnQkMsSUFBQUEsOENBQStCLEVBQUNOLE1BQU1DLFVBQ3REdEMsaUJBQWlCNEMsZ0JBQWMsQ0FBQ0MsOENBQThDLENBQUM1QyxLQUFLb0MsTUFBTUYsTUFBTUcsU0FBU0YsVUFBVU07SUFFekgsT0FBTzFDO0FBQ1Q7QUFFTyxTQUFTYiwwQkFBMEIyRCxPQUFPLEVBQUVuRCxPQUFPO0lBQ3hELElBQUlLLGlCQUFpQjtJQUVyQixJQUFNK0MsZUFBZUQsUUFBUUUsZUFBZTtJQUU1QyxJQUFJRCxpQkFBaUIsTUFBTTtRQUN6QixJQUFNRSxvQkFBb0IxRCxvQkFBb0J3RDtRQUU5QyxJQUFJRSxtQkFBbUI7WUFDckIsSUFBUWhELE1BQWtCTixRQUFsQk0sS0FBS21DLFdBQWF6QyxRQUFieUMsVUFDUEMsT0FBT1MsUUFBUXJDLE9BQU8sSUFDdEIwQixPQUFPLE1BQ1BHLFVBQVVRLFFBQVFJLFVBQVUsSUFDNUJSLGdCQUFnQkMsSUFBQUEsOENBQStCLEVBQUNOLE1BQU1DO1lBRTVEdEMsaUJBQWlCNEMsZ0JBQWMsQ0FBQ0MsOENBQThDLENBQUM1QyxLQUFLb0MsTUFBTUYsTUFBTUcsU0FBU0YsVUFBVU07UUFDckg7SUFDRjtJQUVBLE9BQU8xQztBQUNUO0lBRUEsV0FBZTtJQUNiaEIsc0JBQUFBO0lBQ0FJLHNCQUFBQTtJQUNBRix3QkFBQUE7SUFDQUQsMEJBQUFBO0lBQ0FFLDJCQUFBQTtBQUNGO0FBRUEsU0FBZTZCLGdDQUFnQ3ZCLFVBQVUsRUFBRU8sY0FBYyxFQUFFTixjQUFjLEVBQUVDLE9BQU87O1lBQzVGQyxTQUVFRSxnQkFDQXFEOzs7O29CQURBckQsaUJBQWlCTCxXQUFXZ0IsT0FBTyxJQUNuQzBDLGVBQWVuRCxlQUFlb0QsZUFBZTtvQkFFbkQxRCxpQkFBaUIsQUFBRSxxQkFBR0E7d0JBQWdCSTt3QkFBbUIsR0FBRztvQkFFbEQ7O3dCQUFNdUQsSUFBQUEsZ0NBQW9CLEVBQUNGLGNBQWMsU0FBTzFEOztvQ0FDcERHLFNBRUUwRDs7Ozs0Q0FGRjFELFVBQVU7NENBRVIwRCx5QkFBeUJDLDRCQUE0QjlELFlBQVlDLGdCQUFnQkM7aURBRW5GLENBQUMyRCx3QkFBRDs7Ozs0Q0FDUTs7Z0RBQU10RSxxQkFBcUJTLFlBQVlDLGdCQUFnQkM7Ozs0Q0FBakVDLFVBQVU7Ozs0Q0FHWjs7Z0RBQU9BOzs7OzRCQUNUOzs7O29CQVZBQSxVQUFVO29CQVlWOzt3QkFBT0E7Ozs7SUFDVDs7QUFFQSxTQUFlNkIsZ0NBQWdDekIsY0FBYyxFQUFFTSxhQUFhLEVBQUVZLGlCQUFpQixFQUFFckIsaUJBQWlCOztZQUMxR3NELGNBQ0E5Qjs7OztvQkFEQThCLGVBQWVuRCxlQUFlb0QsZUFBZTtvQkFDWDs7d0JBQU1DLElBQUFBLGdDQUFvQixFQUFDRixjQUFjLFNBQU8xRDs7b0NBQzFFNEMsTUFDQXRDLGFBQ0F3Qjs7Ozs0Q0FGQWMsT0FBTzVDLFdBQVdnQixPQUFPLElBQ3pCVixjQUFjc0M7NENBQ1c7O2dEQUFNakQscUJBQXFCVyxhQUFhTyxlQUFlWSxtQkFBbUJyQjs7OzRDQUFuRzBCLHlCQUF5Qjs0Q0FFL0IsSUFBSUEsd0JBQXdCO2dEQUMxQjs7b0RBQU87OzRDQUNUOzs7Ozs7NEJBQ0Y7Ozs7b0JBUkFGLGtDQUFrQztvQkFVeEM7O3dCQUFPQTs7OztJQUNUOztBQUVBLFNBQVNXLHdCQUF3QmhDLGNBQWMsRUFBRUgsaUJBQWlCO0lBQ2hFLElBQU1rQyxrQkFBa0IsRUFBRSxFQUNwQnlCLDBCQUEwQnhELGdCQUMxQnlELDJCQUEyQjtRQUN6QkQ7S0FDRDtJQUVQLElBQUlFLGlDQUFpQ0QseUJBQXlCNUMsTUFBTTtJQUVwRSxNQUFPNkMsaUNBQWlDLEVBQUc7UUFDekMsSUFBTUYsMkJBQTBCQyx5QkFBeUJFLEtBQUssSUFDeEQzRCxtQkFBaUJ3RCwwQkFBMEIsR0FBRztRQUVwRHpCLGdCQUFnQjZCLElBQUksQ0FBQzVEO1FBRXJCLElBQU1tRCxlQUFlbkQsaUJBQWVvRCxlQUFlO1FBRW5ERCxhQUFhVSxpQkFBaUIsQ0FBQyxTQUFDcEU7WUFDOUIsSUFBTUssaUJBQWlCTCxXQUFXZ0IsT0FBTyxJQUNuQ1YsY0FBY0QsZ0JBQ2RFLG1CQUFpQkgsaUJBQWlCLENBQUNFLFlBQVksRUFDL0MrRCx3Q0FBd0MvQixnQkFBZ0JnQyxRQUFRLENBQUMvRCxtQkFDakVnRSxpREFBaURQLHlCQUF5Qk0sUUFBUSxDQUFDL0Q7WUFFekYsSUFBSSxDQUFDOEQseUNBQXlDLENBQUNFLGdEQUFnRDtnQkFDN0YsSUFBTVIsMEJBQTBCeEQsa0JBQWdCLEdBQUc7Z0JBRW5EeUQseUJBQXlCRyxJQUFJLENBQUNKO1lBQ2hDO1FBQ0Y7UUFFQUUsaUNBQWlDRCx5QkFBeUI1QyxNQUFNO0lBQ2xFO0lBRUEsT0FBT2tCO0FBQ1Q7QUFFQSxTQUFTaEIsMkJBQTJCZixjQUFjLEVBQUVQLFVBQVUsRUFBRUUsT0FBTztJQUNyRSxJQUFNYSx3QkFBeUJSLG1CQUFtQjtJQUVsRCxJQUFJLENBQUNRLHVCQUF1QjtRQUMxQixJQUFNLEFBQUVQLE1BQVFOLFFBQVJNLEtBQ0ZILGlCQUFpQkwsV0FBV2dCLE9BQU8sSUFDbkNWLGNBQWNELGdCQUFnQixHQUFHO1FBRXZDRyxJQUFJZ0IsT0FBTyxDQUFDLEFBQUMsUUFBbUIsT0FBWmxCLGFBQVk7SUFDbEM7SUFFQSxPQUFPUztBQUNUO0FBRUEsU0FBUytDLDRCQUE0QjlELFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxPQUFPO0lBQ3RFLElBQU1HLGlCQUFpQkwsV0FBV2dCLE9BQU8sSUFDbkN3RCx1Q0FBdUN2RSxlQUFlcUUsUUFBUSxDQUFDakUsaUJBQy9Ed0QseUJBQXlCVyxzQ0FBdUMsR0FBRztJQUV6RSxJQUFJWCx3QkFBd0I7UUFDMUIsSUFBTSxBQUFFckQsTUFBUU4sUUFBUk0sS0FDRmlFLHFCQUFxQkMsTUFBTXpFLGlCQUMzQjBFLGtCQUFrQixBQUNoQixxQkFBRzFFLHVCQURhO1lBRWhCd0U7U0FDRCxHQUNERyx3QkFBd0JELGdCQUFnQkUsSUFBSSxDQUFDO1FBRW5EckUsSUFBSWdCLE9BQU8sQ0FBQyxBQUFDLGtDQUF1RCxPQUF0Qm9ELHVCQUFzQjtJQUN0RTtJQUVBLE9BQU9mO0FBQ1Q7QUFFQSxTQUFTNUMsOEJBQThCVixjQUFjLEVBQUVQLFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxPQUFPO0lBQ3hGLElBQUlPLDJCQUEyQjtJQUUvQixJQUFNcUUsbUJBQW1COUUsV0FBVytFLGlCQUFpQjtJQUVyRCxJQUFJRCxxQkFBcUIsTUFBTTtRQUM3QixJQUFNRSwrQkFBK0J6RSxlQUFlMEUscUJBQXFCLENBQUNIO1FBRTFFLElBQUksQ0FBQ0UsOEJBQThCO1lBQ2pDLElBQU0sQUFBRXhFLE1BQVFOLFFBQVJNLEtBQ0YwRSxVQUFVM0UsZUFBZTRFLFVBQVUsSUFDbkN2RSxvQkFBb0JoQixLQUFLSyxpQkFDekJZLGdCQUFnQkQsbUJBQ2hCd0UsZ0JBQWdCRixRQUFRRyxRQUFRLElBQ2hDM0UsbUJBQW1CVixXQUFXbUIsUUFBUTtZQUU1Q1gsSUFBSWdCLE9BQU8sQ0FBQyxBQUFDLFFBQWlEZCxPQUExQ0csZUFBYyw4QkFBd0Z1RSxPQUE1RDFFLGtCQUFpQiw2Q0FBeUQsT0FBZDBFLGVBQWM7WUFFeEkzRSwyQkFBMkI7UUFDN0I7SUFDRjtJQUVBLE9BQU9BO0FBQ1Q7QUFFQSxTQUFTNEIsb0NBQW9DckMsVUFBVSxFQUFFTyxjQUFjLEVBQUVMLE9BQU87SUFDOUUsSUFBTXdELGVBQWVuRCxlQUFlb0QsZUFBZTtJQUVuREQsYUFBYVUsaUJBQWlCLENBQUMsU0FBQ3BFO1FBQzlCUix5QkFBeUJRLFlBQVlFO0lBQ3ZDO0FBQ0YifQ==
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVudHJpZXMsIG1ldGFKU09OVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLW1vZGVsXCI7XG5cbmltcG9ydCBSZWxlYXNlQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9yZWxlYXNlXCI7XG5cbmltcG9ydCB7IGN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2N1c3RvbUdyYW1tYXJcIjtcblxuY29uc3QgeyBpc01ldGFKU09ORmlsZVZhbGlkIH0gPSBtZXRhSlNPTlV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IGxvZywgY2FsbGJhY2sgfSA9IGNvbnRleHQsXG4gICAgICAgIHsgbmFtZSB9ID0ganNvbjtcblxuICAoe2NvbnRleHR9ID0ganNvbik7IC8vL1xuXG4gIGxldCB7IGVudHJpZXMgfSA9IGpzb247XG5cbiAganNvbiA9IGVudHJpZXM7IC8vL1xuXG4gIGVudHJpZXMgPSBFbnRyaWVzLmZyb21KU09OKGpzb24pO1xuXG4gIGNvbnN0IGNvbnRleHRKU09OID0gY29udGV4dDsgIC8vL1xuXG4gIGpzb24gPSBjb250ZXh0SlNPTjsgLy8vXG5cbiAgY29uc3QgY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMobmFtZSwgZW50cmllcyksXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gUmVsZWFzZUNvbnRleHQuZnJvbUxvZ05hbWVKU09ORW50cmllc0NhbGxiYWNrQW5kQ3VzdG9tR3JhbW1hcihsb2csIG5hbWUsIGpzb24sIGVudHJpZXMsIGNhbGxiYWNrLCBjdXN0b21HcmFtbWFyKTtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0KHByb2plY3QsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBtZXRhSlNPTkZpbGUgPSBwcm9qZWN0LmdldE1ldGFKU09ORmlsZSgpO1xuXG4gIGlmIChtZXRhSlNPTkZpbGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBtZXRhSlNPTkZpbGVWYWxpZCA9IGlzTWV0YUpTT05GaWxlVmFsaWQobWV0YUpTT05GaWxlKTtcblxuICAgIGlmIChtZXRhSlNPTkZpbGVWYWxpZCkge1xuICAgICAgY29uc3QgeyBsb2csIGNhbGxiYWNrIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgbmFtZSA9IHByb2plY3QuZ2V0TmFtZSgpLFxuICAgICAgICAgICAganNvbiA9IG51bGwsXG4gICAgICAgICAgICBlbnRyaWVzID0gcHJvamVjdC5nZXRFbnRyaWVzKCksXG4gICAgICAgICAgICBjdXN0b21HcmFtbWFyID0gY3VzdG9tR3JhbW1hckZyb21OYW1lQW5kRW50cmllcyhuYW1lLCBlbnRyaWVzKTtcblxuICAgICAgcmVsZWFzZUNvbnRleHQgPSBSZWxlYXNlQ29udGV4dC5mcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyKGxvZywgbmFtZSwganNvbiwgZW50cmllcywgY2FsbGJhY2ssIGN1c3RvbUdyYW1tYXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VDb250ZXh0RnJvbVBlbGVhc2UocmVsZWFzZSwgY29udGV4dCkge1xuICBjb25zdCB7IGxvZywgY2FsbGJhY2sgfSA9IGNvbnRleHQsXG4gICAgICAgIG5hbWUgPSByZWxlYXNlLmdldE5hbWUoKSxcbiAgICAgICAganNvbiA9IG51bGwsXG4gICAgICAgIGVudHJpZXMgPSByZWxlYXNlLmdldEVudHJpZXMoKSxcbiAgICAgICAgY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMobmFtZSwgZW50cmllcyksXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gUmVsZWFzZUNvbnRleHQuZnJvbUxvZ05hbWVKU09ORW50cmllc0NhbGxiYWNrQW5kQ3VzdG9tR3JhbW1hcihsb2csIG5hbWUsIGpzb24sIGVudHJpZXMsIGNhbGxiYWNrLCBjdXN0b21HcmFtbWFyKTtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcmVsZWFzZUNvbnRleHRGcm9tSlNPTixcbiAgcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdCxcbiAgcmVsZWFzZUNvbnRleHRGcm9tUGVsZWFzZVxufTtcbiJdLCJuYW1lcyI6WyJyZWxlYXNlQ29udGV4dEZyb21KU09OIiwicmVsZWFzZUNvbnRleHRGcm9tUGVsZWFzZSIsInJlbGVhc2VDb250ZXh0RnJvbVByb2plY3QiLCJpc01ldGFKU09ORmlsZVZhbGlkIiwibWV0YUpTT05VdGlsaXRpZXMiLCJqc29uIiwiY29udGV4dCIsImxvZyIsImNhbGxiYWNrIiwibmFtZSIsImVudHJpZXMiLCJFbnRyaWVzIiwiZnJvbUpTT04iLCJjb250ZXh0SlNPTiIsImN1c3RvbUdyYW1tYXIiLCJjdXN0b21HcmFtbWFyRnJvbU5hbWVBbmRFbnRyaWVzIiwicmVsZWFzZUNvbnRleHQiLCJSZWxlYXNlQ29udGV4dCIsImZyb21Mb2dOYW1lSlNPTkVudHJpZXNDYWxsYmFja0FuZEN1c3RvbUdyYW1tYXIiLCJwcm9qZWN0IiwibWV0YUpTT05GaWxlIiwiZ2V0TWV0YUpTT05GaWxlIiwibWV0YUpTT05GaWxlVmFsaWQiLCJnZXROYW1lIiwiZ2V0RW50cmllcyIsInJlbGVhc2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWlFQTtlQUFBOztRQXZEZ0JBO2VBQUFBOztRQTRDQUM7ZUFBQUE7O1FBdEJBQztlQUFBQTs7OzBCQTlCMkI7OERBRWhCOzZCQUVxQjs7Ozs7O0FBRWhELElBQU0sQUFBRUMsc0JBQXdCQyw2QkFBaUIsQ0FBekNEO0FBRUQsU0FBU0gsdUJBQXVCSyxJQUFJLEVBQUVDLE9BQU87SUFDbEQsSUFBUUMsTUFBa0JELFFBQWxCQyxLQUFLQyxXQUFhRixRQUFiRSxVQUNQLEFBQUVDLE9BQVNKLEtBQVRJO0lBRU5ILFVBQVdELEtBQVhDLFNBQWtCLEdBQUc7SUFFdkIsSUFBSSxBQUFFSSxVQUFZTCxLQUFaSztJQUVOTCxPQUFPSyxTQUFTLEdBQUc7SUFFbkJBLFVBQVVDLG1CQUFPLENBQUNDLFFBQVEsQ0FBQ1A7SUFFM0IsSUFBTVEsY0FBY1AsU0FBVSxHQUFHO0lBRWpDRCxPQUFPUSxhQUFhLEdBQUc7SUFFdkIsSUFBTUMsZ0JBQWdCQyxJQUFBQSw4Q0FBK0IsRUFBQ04sTUFBTUMsVUFDdERNLGlCQUFpQkMsZ0JBQWMsQ0FBQ0MsOENBQThDLENBQUNYLEtBQUtFLE1BQU1KLE1BQU1LLFNBQVNGLFVBQVVNO0lBRXpILE9BQU9FO0FBQ1Q7QUFFTyxTQUFTZCwwQkFBMEJpQixPQUFPLEVBQUViLE9BQU87SUFDeEQsSUFBSVUsaUJBQWlCO0lBRXJCLElBQU1JLGVBQWVELFFBQVFFLGVBQWU7SUFFNUMsSUFBSUQsaUJBQWlCLE1BQU07UUFDekIsSUFBTUUsb0JBQW9CbkIsb0JBQW9CaUI7UUFFOUMsSUFBSUUsbUJBQW1CO1lBQ3JCLElBQVFmLE1BQWtCRCxRQUFsQkMsS0FBS0MsV0FBYUYsUUFBYkUsVUFDUEMsT0FBT1UsUUFBUUksT0FBTyxJQUN0QmxCLE9BQU8sTUFDUEssVUFBVVMsUUFBUUssVUFBVSxJQUM1QlYsZ0JBQWdCQyxJQUFBQSw4Q0FBK0IsRUFBQ04sTUFBTUM7WUFFNURNLGlCQUFpQkMsZ0JBQWMsQ0FBQ0MsOENBQThDLENBQUNYLEtBQUtFLE1BQU1KLE1BQU1LLFNBQVNGLFVBQVVNO1FBQ3JIO0lBQ0Y7SUFFQSxPQUFPRTtBQUNUO0FBRU8sU0FBU2YsMEJBQTBCd0IsT0FBTyxFQUFFbkIsT0FBTztJQUN4RCxJQUFRQyxNQUFrQkQsUUFBbEJDLEtBQUtDLFdBQWFGLFFBQWJFLFVBQ1BDLE9BQU9nQixRQUFRRixPQUFPLElBQ3RCbEIsT0FBTyxNQUNQSyxVQUFVZSxRQUFRRCxVQUFVLElBQzVCVixnQkFBZ0JDLElBQUFBLDhDQUErQixFQUFDTixNQUFNQyxVQUN0RE0saUJBQWlCQyxnQkFBYyxDQUFDQyw4Q0FBOEMsQ0FBQ1gsS0FBS0UsTUFBTUosTUFBTUssU0FBU0YsVUFBVU07SUFFekgsT0FBT0U7QUFDVDtJQUVBLFdBQWU7SUFDYmhCLHdCQUFBQTtJQUNBRSwyQkFBQUE7SUFDQUQsMkJBQUFBO0FBQ0YifQ==
|