occam-languages 0.0.31 → 0.0.32
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.
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "customGrammarFromNameAndEntries", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return customGrammarFromNameAndEntries;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _occamcustomgrammars = require("occam-custom-grammars");
|
|
12
|
+
function customGrammarFromNameAndEntries(name, entries) {
|
|
13
|
+
var termBNF = entries.getTermBNF(), statementBNF = entries.getStatementBNF(), typeVocabulary = entries.getTypeVocabulary(), symbolVocabulary = entries.getSymbolVocabulary(), customGrammar = _occamcustomgrammars.CustomGrammar.fromNameTermBNFStatementBNFTypeVocabularyAndSymbolVocabulary(name, termBNF, statementBNF, typeVocabulary, symbolVocabulary);
|
|
14
|
+
return customGrammar;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY3VzdG9tR3JhbW1hci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQ3VzdG9tR3JhbW1hciB9IGZyb20gXCJvY2NhbS1jdXN0b20tZ3JhbW1hcnNcIlxuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tR3JhbW1hckZyb21OYW1lQW5kRW50cmllcyhuYW1lLCBlbnRyaWVzKSB7XG4gIGNvbnN0IHRlcm1CTkYgPSBlbnRyaWVzLmdldFRlcm1CTkYoKSxcbiAgICAgICAgc3RhdGVtZW50Qk5GID0gZW50cmllcy5nZXRTdGF0ZW1lbnRCTkYoKSxcbiAgICAgICAgdHlwZVZvY2FidWxhcnkgPSBlbnRyaWVzLmdldFR5cGVWb2NhYnVsYXJ5KCksXG4gICAgICAgIHN5bWJvbFZvY2FidWxhcnkgPSBlbnRyaWVzLmdldFN5bWJvbFZvY2FidWxhcnkoKSxcbiAgICAgICAgY3VzdG9tR3JhbW1hciA9IEN1c3RvbUdyYW1tYXIuZnJvbU5hbWVUZXJtQk5GU3RhdGVtZW50Qk5GVHlwZVZvY2FidWxhcnlBbmRTeW1ib2xWb2NhYnVsYXJ5KG5hbWUsIHRlcm1CTkYsIHN0YXRlbWVudEJORiwgdHlwZVZvY2FidWxhcnksIHN5bWJvbFZvY2FidWxhcnkpO1xuXG4gIHJldHVybiBjdXN0b21HcmFtbWFyO1xufSJdLCJuYW1lcyI6WyJjdXN0b21HcmFtbWFyRnJvbU5hbWVBbmRFbnRyaWVzIiwibmFtZSIsImVudHJpZXMiLCJ0ZXJtQk5GIiwiZ2V0VGVybUJORiIsInN0YXRlbWVudEJORiIsImdldFN0YXRlbWVudEJORiIsInR5cGVWb2NhYnVsYXJ5IiwiZ2V0VHlwZVZvY2FidWxhcnkiLCJzeW1ib2xWb2NhYnVsYXJ5IiwiZ2V0U3ltYm9sVm9jYWJ1bGFyeSIsImN1c3RvbUdyYW1tYXIiLCJDdXN0b21HcmFtbWFyIiwiZnJvbU5hbWVUZXJtQk5GU3RhdGVtZW50Qk5GVHlwZVZvY2FidWxhcnlBbmRTeW1ib2xWb2NhYnVsYXJ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJZ0JBOzs7ZUFBQUE7OzttQ0FGYztBQUV2QixTQUFTQSxnQ0FBZ0NDLElBQUksRUFBRUMsT0FBTztJQUMzRCxJQUFNQyxVQUFVRCxRQUFRRSxVQUFVLElBQzVCQyxlQUFlSCxRQUFRSSxlQUFlLElBQ3RDQyxpQkFBaUJMLFFBQVFNLGlCQUFpQixJQUMxQ0MsbUJBQW1CUCxRQUFRUSxtQkFBbUIsSUFDOUNDLGdCQUFnQkMsa0NBQWEsQ0FBQ0MsNERBQTRELENBQUNaLE1BQU1FLFNBQVNFLGNBQWNFLGdCQUFnQkU7SUFFOUksT0FBT0U7QUFDVCJ9
|
|
@@ -32,6 +32,7 @@ var _necessary = require("necessary");
|
|
|
32
32
|
var _occammodel = require("occam-model");
|
|
33
33
|
var _release = /*#__PURE__*/ _interop_require_default(require("../context/release"));
|
|
34
34
|
var _dependency = require("../utilities/dependency");
|
|
35
|
+
var _customGrammar = require("../utilities/customGrammar");
|
|
35
36
|
function _array_like_to_array(arr, len) {
|
|
36
37
|
if (len == null || len > arr.length) len = arr.length;
|
|
37
38
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
@@ -348,7 +349,7 @@ function releaseContextFromJSON(json, context) {
|
|
|
348
349
|
entries = _occammodel.Entries.fromJSON(json);
|
|
349
350
|
var contextJSON = context; ///
|
|
350
351
|
json = contextJSON; ///
|
|
351
|
-
var releaseContext = _release.default.fromLogNameJSONEntriesCallbackAndCustomGrammar(log, name, json, entries, callback, customGrammar);
|
|
352
|
+
var customGrammar = (0, _customGrammar.customGrammarFromNameAndEntries)(name, entries), releaseContext = _release.default.fromLogNameJSONEntriesCallbackAndCustomGrammar(log, name, json, entries, callback, customGrammar);
|
|
352
353
|
return releaseContext;
|
|
353
354
|
}
|
|
354
355
|
function releaseContextFromProject(project, context) {
|
|
@@ -357,7 +358,7 @@ function releaseContextFromProject(project, context) {
|
|
|
357
358
|
if (metaJSONFile !== null) {
|
|
358
359
|
var metaJSONFileValid = isMetaJSONFileValid(metaJSONFile);
|
|
359
360
|
if (metaJSONFileValid) {
|
|
360
|
-
var log = context.log, callback = context.callback, name = project.getName(), json = null, entries = project.getEntries();
|
|
361
|
+
var log = context.log, callback = context.callback, name = project.getName(), json = null, entries = project.getEntries(), customGrammar = (0, _customGrammar.customGrammarFromNameAndEntries)(name, entries);
|
|
361
362
|
releaseContext = _release.default.fromLogNameJSONEntriesCallbackAndCustomGrammar(log, name, json, entries, callback, customGrammar);
|
|
362
363
|
}
|
|
363
364
|
}
|
|
@@ -525,4 +526,4 @@ function initialiseDependencyReleaseContexts(dependency, releaseContext, context
|
|
|
525
526
|
});
|
|
526
527
|
}
|
|
527
528
|
|
|
528
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRW50cmllcywgbWV0YUpTT05VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbW9kZWxcIjtcblxuaW1wb3J0IFJlbGVhc2VDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeURlcGVuZGVuY3kgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2RlcGVuZGVuY3lcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgaXNNZXRhSlNPTkZpbGVWYWxpZCB9ID0gbWV0YUpTT05VdGlsaXRpZXM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgbG9nLCByZWxlYXNlQ29udGV4dE1hcCB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdIHx8IG51bGw7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgVGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuYCk7XG5cbiAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpLFxuICAgICAgICAgIGRlcGVuZGVudE5hbWVzTGVuZ3RoID0gZGVwZW5kZW50TmFtZXMubGVuZ3RoO1xuXG4gICAgaWYgKGRlcGVuZGVudE5hbWVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBsb2cuaW5mbyhgQ3JlYXRpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dC4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0IGdpdmVuIHRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kYW50J3MgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuLi5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kgfSA9IGNvbnRleHQsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBhd2FpdCByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQpLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdID0gcmVsZWFzZUNvbnRleHQ7XG5cbiAgICAgICAgc3VjY2VzcyA9IGF3YWl0IGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdWNjZXNzID9cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApIDpcbiAgICAgICAgbG9nLndhcm5pbmcoYC4uLnVuYWJsZSB0byBjcmVhdGUgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dC5gKTtcbiAgfVxuXG4gIHJldHVybiBzdWNjZXNzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHQocmVsZWFzZU5hbWUsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCkge1xuICBsZXQgcmVsZWFzZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCk7XG5cbiAgICBpZiAocmVsZWFzZWQpIHtcbiAgICAgIHJlbGVhc2VWZXJpZmllcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkZXBlbmRlbnRSZWxlYXNlZCkge1xuICAgICAgICByZWxlYXNlQ29udGV4dC53YXJuaW5nKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0IGNhbm5vdCBiZSB2ZXJpZmllcyBiZWNhdXNlIGl0cyAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IGlzIGEgcGFja2FnZS5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVudE5hbWUgPSByZWxlYXNlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IHJlbGVhc2VkLCAvLy9cbiAgICAgICAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IGF3YWl0IHZlcmlmeURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkpIHtcbiAgICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dFZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaXNWZXJpZmllZCgpO1xuXG4gICAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0VmVyaWZpZWQpIHtcbiAgICAgICAgICAgIHJlbGVhc2VWZXJpZmllcyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0LmluZm8oYFZlcmlmeWluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0Li4uYCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSBhd2FpdCByZWxlYXNlQ29udGV4dC52ZXJpZnkoKTtcblxuICAgICAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0VmVyaWZpZXMpIHtcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQuaW5mbyhgLi4udmVyaWZpZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcHJvamVjdC5gKTtcblxuICAgICAgICAgICAgICByZWxlYXNlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlVmVyaWZpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgIGxvZy53YXJuaW5nKGBVbmFibGUgdG8gaW5pdGlhbGlzZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNyZWF0ZWQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzSW5pdGlhbGlzZWQoKTtcblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCkge1xuICAgICAgaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKTtcblxuICAgICAgbG9nLmluZm8oYEluaXRpYWxpc2luZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0Li4uYCk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UocmVsZWFzZUNvbnRleHRzKTtcblxuICAgICAgbG9nLmRlYnVnKGAuLi5pbml0aWFsaXNlZCB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0LmApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbG9nLCBjYWxsYmFjayB9ID0gY29udGV4dCxcbiAgICAgICAgeyBuYW1lIH0gPSBqc29uO1xuXG4gICh7Y29udGV4dH0gPSBqc29uKTsgLy8vXG5cbiAgbGV0IHsgZW50cmllcyB9ID0ganNvbjtcblxuICBqc29uID0gZW50cmllczsgLy8vXG5cbiAgZW50cmllcyA9IEVudHJpZXMuZnJvbUpTT04oanNvbik7XG5cbiAgY29uc3QgY29udGV4dEpTT04gPSBjb250ZXh0OyAgLy8vXG5cbiAganNvbiA9IGNvbnRleHRKU09OOyAvLy9cblxuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IFJlbGVhc2VDb250ZXh0LmZyb21Mb2dOYW1lSlNPTkVudHJpZXNDYWxsYmFja0FuZEN1c3RvbUdyYW1tYXIobG9nLCBuYW1lLCBqc29uLCBlbnRyaWVzLCBjYWxsYmFjaywgY3VzdG9tR3JhbW1hcik7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdChwcm9qZWN0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgbWV0YUpTT05GaWxlID0gcHJvamVjdC5nZXRNZXRhSlNPTkZpbGUoKTtcblxuICBpZiAobWV0YUpTT05GaWxlICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YUpTT05GaWxlVmFsaWQgPSBpc01ldGFKU09ORmlsZVZhbGlkKG1ldGFKU09ORmlsZSk7XG5cbiAgICBpZiAobWV0YUpTT05GaWxlVmFsaWQpIHtcbiAgICAgIGNvbnN0IHsgbG9nLCBjYWxsYmFjayB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIG5hbWUgPSBwcm9qZWN0LmdldE5hbWUoKSxcbiAgICAgICAgICAgIGpzb24gPSBudWxsLFxuICAgICAgICAgICAgZW50cmllcyA9IHByb2plY3QuZ2V0RW50cmllcygpO1xuXG4gICAgICByZWxlYXNlQ29udGV4dCA9IFJlbGVhc2VDb250ZXh0LmZyb21Mb2dOYW1lSlNPTkVudHJpZXNDYWxsYmFja0FuZEN1c3RvbUdyYW1tYXIobG9nLCBuYW1lLCBqc29uLCBlbnRyaWVzLCBjYWxsYmFjaywgY3VzdG9tR3JhbW1hcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZVJlbGVhc2VDb250ZXh0LFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dCxcbiAgcmVsZWFzZUNvbnRleHRGcm9tSlNPTixcbiAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0LFxuICByZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0XG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgc3VjY2VzcztcblxuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbnROYW1lcyA9IFsgLi4uZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVuY3lOYW1lIF07ICAvLy9cblxuICBzdWNjZXNzID0gYXdhaXQgYXN5bmNFdmVyeURlcGVuZGVuY3koZGVwZW5kZW5jaWVzLCBhc3luYyAoZGVwZW5kZW5jeSkgPT4ge1xuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzKGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghY3ljbGljRGVwZW5kZW5jeUV4aXN0cykge1xuICAgICAgc3VjY2VzcyA9IGF3YWl0IGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfSk7XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IGF3YWl0IGFzeW5jRXZlcnlEZXBlbmRlbmN5KGRlcGVuZGVuY2llcywgYXN5bmMgKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICBjb25zdCBuYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gYXdhaXQgdmVyaWZ5UmVsZWFzZUNvbnRleHQocmVsZWFzZU5hbWUsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgICAgICBpZiAocmVsZWFzZUNvbnRleHRWZXJpZmllcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcbn1cblxuZnVuY3Rpb24gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0cyA9IFtdLFxuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0LCAgLy8vXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cyA9IFtcbiAgICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dFxuICAgICAgICBdO1xuXG4gIGxldCByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMubGVuZ3RoO1xuXG4gIHdoaWxlIChyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPiAwKSB7XG4gICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuc2hpZnQoKSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0OyAgLy8vXG5cbiAgICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0sXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KSxcbiAgICAgICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBpZiAoIXJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgJiYgIXJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLnB1c2gocmVtYWluaW5nUmVsZWFzZUNvbnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWU7IC8vL1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLiBPciB0aGVyZSBjb3VsZCBiZSBhIGRlcGVuZGVuY3kgbWlzbWF0Y2guYCk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRDcmVhdGVkO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW50TmFtZXMuaW5jbHVkZXMoZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBmaXJzdERlcGVuZGVudE5hbWUgPSBmaXJzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzID0gWyAgLy8vXG4gICAgICAgICAgICAuLi5kZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGZpcnN0RGVwZW5kZW50TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzU3RyaW5nID0gZGVwZW5kZW5jeU5hbWVzLmpvaW4oYCcgLT4gJ2ApO1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZXJlIGlzIGEgY3ljbGljIGRlcGVuZGVuY3ksICcke2RlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gdHJ1ZTtcblxuICBjb25zdCBzaG9ydGVuZWRWZXJzaW9uID0gZGVwZW5kZW5jeS5nZXRTaG9ydGVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIGlmICghZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbikge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZUNvbnRleHQuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZSwgIC8vL1xuICAgICAgICAgICAgdmVyc2lvblN0cmluZyA9IHZlcnNpb24udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCk7XG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCByZXF1aXJlcyB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kgYnV0IGEgY29udGV4dCB3aXRoIHZlcnNpb24gJyR7dmVyc2lvblN0cmluZ30nIHdhcyBwcm92aWRlZC5gKTtcblxuICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeTtcbn1cblxuZnVuY3Rpb24gaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7ICAvLy9cbiAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRGcm9tSlNPTiIsInJlbGVhc2VDb250ZXh0RnJvbVByb2plY3QiLCJ2ZXJpZnlSZWxlYXNlQ29udGV4dCIsImxhc3QiLCJhcnJheVV0aWxpdGllcyIsImlzTWV0YUpTT05GaWxlVmFsaWQiLCJtZXRhSlNPTlV0aWxpdGllcyIsImRlcGVuZGVuY3kiLCJkZXBlbmRlbnROYW1lcyIsImNvbnRleHQiLCJzdWNjZXNzIiwibG9nIiwicmVsZWFzZUNvbnRleHRNYXAiLCJkZXBlbmRlbmN5TmFtZSIsInJlbGVhc2VOYW1lIiwicmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJkZXBlbmRlbmN5U3RyaW5nIiwiZGVwZW5kZW50TmFtZXNMZW5ndGgiLCJsYXN0RGVwZW5kZW50TmFtZSIsImRlcGVuZGVudE5hbWUiLCJyZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IiwicmVsZWFzZUNvbnRleHRDcmVhdGVkIiwiZ2V0TmFtZSIsImNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiZGVidWciLCJhc1N0cmluZyIsImxlbmd0aCIsImluZm8iLCJjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJ3YXJuaW5nIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJyZWxlYXNlVmVyaWZpZXMiLCJyZWxlYXNlZCIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkiLCJyZWxlYXNlQ29udGV4dFZlcmlmaWVkIiwicmVsZWFzZUNvbnRleHRWZXJpZmllcyIsImlzUmVsZWFzZWQiLCJ2ZXJpZnlEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiaXNWZXJpZmllZCIsInZlcmlmeSIsInJlbGVhc2VDb250ZXh0SW5pdGlhbGlzZWQiLCJpc0luaXRpYWxpc2VkIiwiaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJyZWxlYXNlQ29udGV4dHMiLCJyZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2UiLCJqc29uIiwiY2FsbGJhY2siLCJuYW1lIiwiZW50cmllcyIsIkVudHJpZXMiLCJmcm9tSlNPTiIsImNvbnRleHRKU09OIiwiUmVsZWFzZUNvbnRleHQiLCJmcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyIiwiY3VzdG9tR3JhbW1hciIsInByb2plY3QiLCJtZXRhSlNPTkZpbGUiLCJnZXRNZXRhSlNPTkZpbGUiLCJtZXRhSlNPTkZpbGVWYWxpZCIsImdldEVudHJpZXMiLCJkZXBlbmRlbmNpZXMiLCJnZXREZXBlbmRlbmNpZXMiLCJhc3luY0V2ZXJ5RGVwZW5kZW5jeSIsImN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dCIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cyIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0xlbmd0aCIsInNoaWZ0IiwicHVzaCIsImZvckVhY2hEZXBlbmRlbmN5IiwicmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsImluY2x1ZGVzIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsImRlcGVuZGVudE5hbWVzSW5jbHVkZXNEZXBlbmRlbmN5TmFtZSIsImZpcnN0RGVwZW5kZW50TmFtZSIsImZpcnN0IiwiZGVwZW5kZW5jeU5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzU3RyaW5nIiwiam9pbiIsInNob3J0ZW5lZFZlcnNpb24iLCJnZXRTaG9ydGVkVmVyc2lvbiIsImVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInZlcnNpb25TdHJpbmciLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBWXNCQTtlQUFBQTs7UUFtS3RCO2VBQUE7O1FBdEVnQkM7ZUFBQUE7O1FBNEJBQztlQUFBQTs7UUFxQkFDO2VBQUFBOztRQTNGTUM7ZUFBQUE7Ozt5QkE3RFM7MEJBQ1k7OERBRWhCOzBCQUVVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXJDLElBQU0sQUFBRUMsT0FBU0MseUJBQWMsQ0FBdkJELE1BQ0YsQUFBRUUsc0JBQXdCQyw2QkFBaUIsQ0FBekNEO0FBRUQsU0FBZVAscUJBQXFCUyxVQUFVLEVBQUVDLGNBQWMsRUFBRUMsT0FBTzs7WUFDeEVDLFNBRUlDLEtBQUtDLG1CQUNQQyxnQkFDQUMsYUFDQUMsZ0JBR0VDLDBCQVFBQyxrQkFDQUMsc0JBS0VDLG1CQUNBQyxlQUtBQyw4QkFDRk4saUJBQ0FPLHVCQUdFTjs7OztvQkFqQ05OLFVBQVU7b0JBRU5DLE1B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
|
|
529
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRW50cmllcywgbWV0YUpTT05VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbW9kZWxcIjtcblxuaW1wb3J0IFJlbGVhc2VDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeURlcGVuZGVuY3kgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2RlcGVuZGVuY3lcIjtcbmltcG9ydCB7IGN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2N1c3RvbUdyYW1tYXJcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgaXNNZXRhSlNPTkZpbGVWYWxpZCB9ID0gbWV0YUpTT05VdGlsaXRpZXM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgbG9nLCByZWxlYXNlQ29udGV4dE1hcCB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdIHx8IG51bGw7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgVGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuYCk7XG5cbiAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpLFxuICAgICAgICAgIGRlcGVuZGVudE5hbWVzTGVuZ3RoID0gZGVwZW5kZW50TmFtZXMubGVuZ3RoO1xuXG4gICAgaWYgKGRlcGVuZGVudE5hbWVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBsb2cuaW5mbyhgQ3JlYXRpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dC4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0IGdpdmVuIHRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kYW50J3MgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuLi5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kgfSA9IGNvbnRleHQsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBhd2FpdCByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQpLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdID0gcmVsZWFzZUNvbnRleHQ7XG5cbiAgICAgICAgc3VjY2VzcyA9IGF3YWl0IGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdWNjZXNzID9cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApIDpcbiAgICAgICAgbG9nLndhcm5pbmcoYC4uLnVuYWJsZSB0byBjcmVhdGUgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dC5gKTtcbiAgfVxuXG4gIHJldHVybiBzdWNjZXNzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHQocmVsZWFzZU5hbWUsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCkge1xuICBsZXQgcmVsZWFzZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCk7XG5cbiAgICBpZiAocmVsZWFzZWQpIHtcbiAgICAgIHJlbGVhc2VWZXJpZmllcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkZXBlbmRlbnRSZWxlYXNlZCkge1xuICAgICAgICByZWxlYXNlQ29udGV4dC53YXJuaW5nKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0IGNhbm5vdCBiZSB2ZXJpZmllcyBiZWNhdXNlIGl0cyAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IGlzIGEgcGFja2FnZS5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVudE5hbWUgPSByZWxlYXNlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IHJlbGVhc2VkLCAvLy9cbiAgICAgICAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IGF3YWl0IHZlcmlmeURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkpIHtcbiAgICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dFZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaXNWZXJpZmllZCgpO1xuXG4gICAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0VmVyaWZpZWQpIHtcbiAgICAgICAgICAgIHJlbGVhc2VWZXJpZmllcyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0LmluZm8oYFZlcmlmeWluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0Li4uYCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSBhd2FpdCByZWxlYXNlQ29udGV4dC52ZXJpZnkoKTtcblxuICAgICAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0VmVyaWZpZXMpIHtcbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQuaW5mbyhgLi4udmVyaWZpZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcHJvamVjdC5gKTtcblxuICAgICAgICAgICAgICByZWxlYXNlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlVmVyaWZpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgIGxvZy53YXJuaW5nKGBVbmFibGUgdG8gaW5pdGlhbGlzZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNyZWF0ZWQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzSW5pdGlhbGlzZWQoKTtcblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCkge1xuICAgICAgaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKTtcblxuICAgICAgbG9nLmluZm8oYEluaXRpYWxpc2luZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0Li4uYCk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UocmVsZWFzZUNvbnRleHRzKTtcblxuICAgICAgbG9nLmRlYnVnKGAuLi5pbml0aWFsaXNlZCB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0LmApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbG9nLCBjYWxsYmFjayB9ID0gY29udGV4dCxcbiAgICAgICAgeyBuYW1lIH0gPSBqc29uO1xuXG4gICh7Y29udGV4dH0gPSBqc29uKTsgLy8vXG5cbiAgbGV0IHsgZW50cmllcyB9ID0ganNvbjtcblxuICBqc29uID0gZW50cmllczsgLy8vXG5cbiAgZW50cmllcyA9IEVudHJpZXMuZnJvbUpTT04oanNvbik7XG5cbiAgY29uc3QgY29udGV4dEpTT04gPSBjb250ZXh0OyAgLy8vXG5cbiAganNvbiA9IGNvbnRleHRKU09OOyAvLy9cblxuICBjb25zdCBjdXN0b21HcmFtbWFyID0gY3VzdG9tR3JhbW1hckZyb21OYW1lQW5kRW50cmllcyhuYW1lLCBlbnRyaWVzKSxcbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBSZWxlYXNlQ29udGV4dC5mcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyKGxvZywgbmFtZSwganNvbiwgZW50cmllcywgY2FsbGJhY2ssIGN1c3RvbUdyYW1tYXIpO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VDb250ZXh0RnJvbVByb2plY3QocHJvamVjdCwgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZUNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG1ldGFKU09ORmlsZSA9IHByb2plY3QuZ2V0TWV0YUpTT05GaWxlKCk7XG5cbiAgaWYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1ldGFKU09ORmlsZVZhbGlkID0gaXNNZXRhSlNPTkZpbGVWYWxpZChtZXRhSlNPTkZpbGUpO1xuXG4gICAgaWYgKG1ldGFKU09ORmlsZVZhbGlkKSB7XG4gICAgICBjb25zdCB7IGxvZywgY2FsbGJhY2sgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICBuYW1lID0gcHJvamVjdC5nZXROYW1lKCksXG4gICAgICAgICAgICBqc29uID0gbnVsbCxcbiAgICAgICAgICAgIGVudHJpZXMgPSBwcm9qZWN0LmdldEVudHJpZXMoKSxcbiAgICAgICAgICAgIGN1c3RvbUdyYW1tYXIgPSBjdXN0b21HcmFtbWFyRnJvbU5hbWVBbmRFbnRyaWVzKG5hbWUsIGVudHJpZXMpO1xuXG4gICAgICByZWxlYXNlQ29udGV4dCA9IFJlbGVhc2VDb250ZXh0LmZyb21Mb2dOYW1lSlNPTkVudHJpZXNDYWxsYmFja0FuZEN1c3RvbUdyYW1tYXIobG9nLCBuYW1lLCBqc29uLCBlbnRyaWVzLCBjYWxsYmFjaywgY3VzdG9tR3JhbW1hcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZVJlbGVhc2VDb250ZXh0LFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dCxcbiAgcmVsZWFzZUNvbnRleHRGcm9tSlNPTixcbiAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0LFxuICByZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0XG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgc3VjY2VzcztcblxuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbnROYW1lcyA9IFsgLi4uZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVuY3lOYW1lIF07ICAvLy9cblxuICBzdWNjZXNzID0gYXdhaXQgYXN5bmNFdmVyeURlcGVuZGVuY3koZGVwZW5kZW5jaWVzLCBhc3luYyAoZGVwZW5kZW5jeSkgPT4ge1xuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzKGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghY3ljbGljRGVwZW5kZW5jeUV4aXN0cykge1xuICAgICAgc3VjY2VzcyA9IGF3YWl0IGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfSk7XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IGF3YWl0IGFzeW5jRXZlcnlEZXBlbmRlbmN5KGRlcGVuZGVuY2llcywgYXN5bmMgKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICBjb25zdCBuYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gYXdhaXQgdmVyaWZ5UmVsZWFzZUNvbnRleHQocmVsZWFzZU5hbWUsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgICAgICBpZiAocmVsZWFzZUNvbnRleHRWZXJpZmllcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcbn1cblxuZnVuY3Rpb24gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0cyA9IFtdLFxuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0LCAgLy8vXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cyA9IFtcbiAgICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dFxuICAgICAgICBdO1xuXG4gIGxldCByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMubGVuZ3RoO1xuXG4gIHdoaWxlIChyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPiAwKSB7XG4gICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuc2hpZnQoKSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0OyAgLy8vXG5cbiAgICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0sXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KSxcbiAgICAgICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBpZiAoIXJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgJiYgIXJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLnB1c2gocmVtYWluaW5nUmVsZWFzZUNvbnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWU7IC8vL1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLiBPciB0aGVyZSBjb3VsZCBiZSBhIGRlcGVuZGVuY3kgbWlzbWF0Y2guYCk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRDcmVhdGVkO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW50TmFtZXMuaW5jbHVkZXMoZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBmaXJzdERlcGVuZGVudE5hbWUgPSBmaXJzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzID0gWyAgLy8vXG4gICAgICAgICAgICAuLi5kZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGZpcnN0RGVwZW5kZW50TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzU3RyaW5nID0gZGVwZW5kZW5jeU5hbWVzLmpvaW4oYCcgLT4gJ2ApO1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZXJlIGlzIGEgY3ljbGljIGRlcGVuZGVuY3ksICcke2RlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gdHJ1ZTtcblxuICBjb25zdCBzaG9ydGVuZWRWZXJzaW9uID0gZGVwZW5kZW5jeS5nZXRTaG9ydGVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIGlmICghZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbikge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZUNvbnRleHQuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZSwgIC8vL1xuICAgICAgICAgICAgdmVyc2lvblN0cmluZyA9IHZlcnNpb24udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCk7XG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCByZXF1aXJlcyB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kgYnV0IGEgY29udGV4dCB3aXRoIHZlcnNpb24gJyR7dmVyc2lvblN0cmluZ30nIHdhcyBwcm92aWRlZC5gKTtcblxuICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeTtcbn1cblxuZnVuY3Rpb24gaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7ICAvLy9cbiAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRGcm9tSlNPTiIsInJlbGVhc2VDb250ZXh0RnJvbVByb2plY3QiLCJ2ZXJpZnlSZWxlYXNlQ29udGV4dCIsImxhc3QiLCJhcnJheVV0aWxpdGllcyIsImlzTWV0YUpTT05GaWxlVmFsaWQiLCJtZXRhSlNPTlV0aWxpdGllcyIsImRlcGVuZGVuY3kiLCJkZXBlbmRlbnROYW1lcyIsImNvbnRleHQiLCJzdWNjZXNzIiwibG9nIiwicmVsZWFzZUNvbnRleHRNYXAiLCJkZXBlbmRlbmN5TmFtZSIsInJlbGVhc2VOYW1lIiwicmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJkZXBlbmRlbmN5U3RyaW5nIiwiZGVwZW5kZW50TmFtZXNMZW5ndGgiLCJsYXN0RGVwZW5kZW50TmFtZSIsImRlcGVuZGVudE5hbWUiLCJyZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IiwicmVsZWFzZUNvbnRleHRDcmVhdGVkIiwiZ2V0TmFtZSIsImNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiZGVidWciLCJhc1N0cmluZyIsImxlbmd0aCIsImluZm8iLCJjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJ3YXJuaW5nIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJyZWxlYXNlVmVyaWZpZXMiLCJyZWxlYXNlZCIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkiLCJyZWxlYXNlQ29udGV4dFZlcmlmaWVkIiwicmVsZWFzZUNvbnRleHRWZXJpZmllcyIsImlzUmVsZWFzZWQiLCJ2ZXJpZnlEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiaXNWZXJpZmllZCIsInZlcmlmeSIsInJlbGVhc2VDb250ZXh0SW5pdGlhbGlzZWQiLCJpc0luaXRpYWxpc2VkIiwiaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJyZWxlYXNlQ29udGV4dHMiLCJyZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2UiLCJqc29uIiwiY2FsbGJhY2siLCJuYW1lIiwiZW50cmllcyIsIkVudHJpZXMiLCJmcm9tSlNPTiIsImNvbnRleHRKU09OIiwiY3VzdG9tR3JhbW1hciIsImN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMiLCJSZWxlYXNlQ29udGV4dCIsImZyb21Mb2dOYW1lSlNPTkVudHJpZXNDYWxsYmFja0FuZEN1c3RvbUdyYW1tYXIiLCJwcm9qZWN0IiwibWV0YUpTT05GaWxlIiwiZ2V0TWV0YUpTT05GaWxlIiwibWV0YUpTT05GaWxlVmFsaWQiLCJnZXRFbnRyaWVzIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiYXN5bmNFdmVyeURlcGVuZGVuY3kiLCJjeWNsaWNEZXBlbmRlbmN5RXhpc3RzIiwiY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHQiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGgiLCJzaGlmdCIsInB1c2giLCJmb3JFYWNoRGVwZW5kZW5jeSIsInJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJpbmNsdWRlcyIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWUiLCJmaXJzdERlcGVuZGVudE5hbWUiLCJmaXJzdCIsImRlcGVuZGVuY3lOYW1lcyIsImRlcGVuZGVuY3lOYW1lc1N0cmluZyIsImpvaW4iLCJzaG9ydGVuZWRWZXJzaW9uIiwiZ2V0U2hvcnRlZFZlcnNpb24iLCJlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwibWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWFzQkE7ZUFBQUE7O1FBcUt0QjtlQUFBOztRQXhFZ0JDO2VBQUFBOztRQTRCQUM7ZUFBQUE7O1FBc0JBQztlQUFBQTs7UUE1Rk1DO2VBQUFBOzs7eUJBOURTOzBCQUNZOzhEQUVoQjswQkFFVTs2QkFDVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-languages",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.32",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-languages",
|
|
7
7
|
"description": "Occam's common language functionality.",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.0.9",
|
|
14
|
+
"occam-custom-grammars": "^6.0.5",
|
|
14
15
|
"occam-parsers": "^23.1.39"
|
|
15
16
|
},
|
|
16
17
|
"devDependencies": {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { CustomGrammar } from "occam-custom-grammars"
|
|
4
|
+
|
|
5
|
+
export function customGrammarFromNameAndEntries(name, entries) {
|
|
6
|
+
const termBNF = entries.getTermBNF(),
|
|
7
|
+
statementBNF = entries.getStatementBNF(),
|
|
8
|
+
typeVocabulary = entries.getTypeVocabulary(),
|
|
9
|
+
symbolVocabulary = entries.getSymbolVocabulary(),
|
|
10
|
+
customGrammar = CustomGrammar.fromNameTermBNFStatementBNFTypeVocabularyAndSymbolVocabulary(name, termBNF, statementBNF, typeVocabulary, symbolVocabulary);
|
|
11
|
+
|
|
12
|
+
return customGrammar;
|
|
13
|
+
}
|
|
@@ -6,6 +6,7 @@ import { Entries, metaJSONUtilities } from "occam-model";
|
|
|
6
6
|
import ReleaseContext from "../context/release";
|
|
7
7
|
|
|
8
8
|
import { asyncEveryDependency } from "../utilities/dependency";
|
|
9
|
+
import { customGrammarFromNameAndEntries } from "../utilities/customGrammar";
|
|
9
10
|
|
|
10
11
|
const { last } = arrayUtilities,
|
|
11
12
|
{ isMetaJSONFileValid } = metaJSONUtilities;
|
|
@@ -147,7 +148,8 @@ export function releaseContextFromJSON(json, context) {
|
|
|
147
148
|
|
|
148
149
|
json = contextJSON; ///
|
|
149
150
|
|
|
150
|
-
const
|
|
151
|
+
const customGrammar = customGrammarFromNameAndEntries(name, entries),
|
|
152
|
+
releaseContext = ReleaseContext.fromLogNameJSONEntriesCallbackAndCustomGrammar(log, name, json, entries, callback, customGrammar);
|
|
151
153
|
|
|
152
154
|
return releaseContext;
|
|
153
155
|
}
|
|
@@ -164,7 +166,8 @@ export function releaseContextFromProject(project, context) {
|
|
|
164
166
|
const { log, callback } = context,
|
|
165
167
|
name = project.getName(),
|
|
166
168
|
json = null,
|
|
167
|
-
entries = project.getEntries()
|
|
169
|
+
entries = project.getEntries(),
|
|
170
|
+
customGrammar = customGrammarFromNameAndEntries(name, entries);
|
|
168
171
|
|
|
169
172
|
releaseContext = ReleaseContext.fromLogNameJSONEntriesCallbackAndCustomGrammar(log, name, json, entries, callback, customGrammar);
|
|
170
173
|
}
|