occam-verify-cli 0.0.676 → 0.0.677

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/lib/combinator.js +15 -12
  2. package/lib/constructor.js +26 -21
  3. package/lib/context/metaproof.js +7 -7
  4. package/lib/log.js +3 -3
  5. package/lib/node/statement/combinator/bracketed.js +8 -4
  6. package/lib/node/statement/combinator/equality.js +8 -4
  7. package/lib/ocmbinator/bracketed.js +4 -2
  8. package/lib/ocmbinator/equality.js +4 -2
  9. package/lib/tokens/statement/combinator/bracketed.js +17 -0
  10. package/lib/tokens/statement/combinator/equality.js +17 -0
  11. package/lib/utilities/lineIndex.js +52 -0
  12. package/lib/utilities/node.js +121 -15
  13. package/lib/utilities/string.js +1 -1
  14. package/lib/utilities/tokens.js +49 -36
  15. package/lib/verify/assertion/type.js +2 -2
  16. package/lib/verify/metastatement.js +6 -1
  17. package/lib/verify/statement.js +11 -2
  18. package/lib/verify/statementAsCombinator.js +2 -2
  19. package/lib/verify/term.js +14 -5
  20. package/lib/verify/termAsConstructor.js +2 -2
  21. package/package.json +1 -1
  22. package/src/combinator.js +21 -14
  23. package/src/constructor.js +33 -23
  24. package/src/context/metaproof.js +2 -2
  25. package/src/log.js +1 -1
  26. package/src/node/statement/combinator/bracketed.js +3 -4
  27. package/src/node/statement/combinator/equality.js +3 -5
  28. package/src/ocmbinator/bracketed.js +8 -3
  29. package/src/ocmbinator/equality.js +8 -3
  30. package/src/tokens/statement/combinator/bracketed.js +10 -0
  31. package/src/tokens/statement/combinator/equality.js +10 -0
  32. package/src/utilities/lineIndex.js +51 -0
  33. package/src/utilities/node.js +130 -53
  34. package/src/utilities/string.js +0 -1
  35. package/src/utilities/tokens.js +44 -32
  36. package/src/verify/assertion/type.js +1 -1
  37. package/src/verify/metastatement.js +8 -0
  38. package/src/verify/statement.js +19 -2
  39. package/src/verify/statementAsCombinator.js +2 -1
  40. package/src/verify/term.js +28 -7
  41. package/src/verify/termAsConstructor.js +2 -1
@@ -9,74 +9,180 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ constructorDeclarationNodeFromConstructorDeclarationTokens: function() {
13
+ return constructorDeclarationNodeFromConstructorDeclarationTokens;
14
+ },
12
15
  labelNodeFromLabelString: function() {
13
16
  return labelNodeFromLabelString;
14
17
  },
18
+ labelNodeFromLabelTokens: function() {
19
+ return labelNodeFromLabelTokens;
20
+ },
21
+ metaTypeDeclarationNodeFromMetavariableDeclarationTokens: function() {
22
+ return metaTypeDeclarationNodeFromMetavariableDeclarationTokens;
23
+ },
24
+ metaTypeNodeFromMetavariableDeclarationTokens: function() {
25
+ return metaTypeNodeFromMetavariableDeclarationTokens;
26
+ },
15
27
  metaTypeNodeFromMetavariableString: function() {
16
28
  return metaTypeNodeFromMetavariableString;
17
29
  },
18
30
  metastatementNodeFromMetastatementString: function() {
19
31
  return metastatementNodeFromMetastatementString;
20
32
  },
33
+ metastatementNodeFromUnqualifiedMetastatementTokens: function() {
34
+ return metastatementNodeFromUnqualifiedMetastatementTokens;
35
+ },
36
+ metavariableDeclarationNodeFromMetavariableDeclarationTokens: function() {
37
+ return metavariableDeclarationNodeFromMetavariableDeclarationTokens;
38
+ },
39
+ metavariableNodeFromMetavariableDeclarationTokens: function() {
40
+ return metavariableNodeFromMetavariableDeclarationTokens;
41
+ },
21
42
  metavariableNodeFromMetavariableString: function() {
22
43
  return metavariableNodeFromMetavariableString;
23
44
  },
24
45
  statementNodeFromStatementString: function() {
25
46
  return statementNodeFromStatementString;
26
47
  },
48
+ statementNodeFromUnqualifiedStatementTokens: function() {
49
+ return statementNodeFromUnqualifiedStatementTokens;
50
+ },
51
+ termNodeFromConstructorDeclarationTokens: function() {
52
+ return termNodeFromConstructorDeclarationTokens;
53
+ },
27
54
  termNodeFromTermString: function() {
28
55
  return termNodeFromTermString;
29
56
  },
57
+ typeDeclarationNodeFromVariableDeclarationTokens: function() {
58
+ return typeDeclarationNodeFromVariableDeclarationTokens;
59
+ },
30
60
  typeNodeFromVariableString: function() {
31
61
  return typeNodeFromVariableString;
32
62
  },
63
+ typeNodeFromVariableVariableDeclarationTokens: function() {
64
+ return typeNodeFromVariableVariableDeclarationTokens;
65
+ },
66
+ unqualifiedMetastatementNodeFromUnqualifiedMetastatementTokens: function() {
67
+ return unqualifiedMetastatementNodeFromUnqualifiedMetastatementTokens;
68
+ },
69
+ unqualifiedStatementNodeFromUnqualifiedStatementTokens: function() {
70
+ return unqualifiedStatementNodeFromUnqualifiedStatementTokens;
71
+ },
72
+ variableDeclarationNodeFromVariableTDeclarationTokens: function() {
73
+ return variableDeclarationNodeFromVariableTDeclarationTokens;
74
+ },
33
75
  variableNodeFromVariableString: function() {
34
76
  return variableNodeFromVariableString;
77
+ },
78
+ variableNodeFromVariableVariableTDeclarationTokens: function() {
79
+ return variableNodeFromVariableVariableTDeclarationTokens;
35
80
  }
36
81
  });
37
82
  var _occamcustomgrammars = require("occam-custom-grammars");
38
83
  var _query = require("../utilities/query");
39
- var _ruleNames = require("../ruleNames");
40
84
  var _customGrammar = require("./customGrammar");
41
- var florenceLexerFromCombinedCustomGrammar = _occamcustomgrammars.lexersUtilities.florenceLexerFromCombinedCustomGrammar, florenceParserFromCombinedCustomGrammar = _occamcustomgrammars.parsersUtilities.florenceParserFromCombinedCustomGrammar;
42
- var combinedCustomGrammar = (0, _customGrammar.combinedCustomGrammarFromNothing)(), florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar), florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
85
+ var _ruleNames = require("../ruleNames");
86
+ var _tokens = require("../utilities/tokens");
87
+ var florenceParserFromCombinedCustomGrammar = _occamcustomgrammars.parsersUtilities.florenceParserFromCombinedCustomGrammar;
88
+ var combinedCustomGrammar = (0, _customGrammar.combinedCustomGrammarFromNothing)(), florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
43
89
  var termNodeQuery = (0, _query.nodeQuery)("/constructorDeclaration/term!"), typeNodeQuery = (0, _query.nodeQuery)("/variableDeclaration/type!"), variableNodeQuery = (0, _query.nodeQuery)("/variableDeclaration/variable!"), metaTypeNodeQuery = (0, _query.nodeQuery)("/metavariableDeclaration/metaType!"), statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!"), metavariableNodeQuery = (0, _query.nodeQuery)("/metavariableDeclaration/metavariable!"), metastatementNodeQuery = (0, _query.nodeQuery)("/unqualifiedMetastatement/metastatement!");
44
90
  function termNodeFromTermString(termString, lexer, parser) {
45
- var ruleName = _ruleNames.CONSTRUCTOR_DECLARATION_RULE_NAME, content = "Constructor ".concat(termString, "\n"), node = nodeFromContentAndRuleName(content, ruleName, lexer, parser), constructorDeclarationNode = node, termNode = termNodeQuery(constructorDeclarationNode);
91
+ var constructorDeclarationTokens = (0, _tokens.constructorDeclarationTokensFromTermString)(termString, parser), termNode = termNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser);
46
92
  return termNode;
47
93
  }
48
94
  function labelNodeFromLabelString(labelString, lexer, parser) {
49
- var content = labelString, ruleName = _ruleNames.LABEL_RULE_NAME, node = nodeFromContentAndRuleName(content, ruleName, lexer, parser), labelNode = node; ///
95
+ var labelTokens = (0, _tokens.labelTokensFromLabelString)(labelString, lexer), labelNode = labelNodeFromLabelTokens(labelTokens, parser);
50
96
  return labelNode;
51
97
  }
52
98
  function typeNodeFromVariableString(variableString, lexer, parser) {
53
- var ruleName = _ruleNames.TYPE_RULE_NAME, content = "Variable ".concat(variableString, "\n"), node = nodeFromContentAndRuleName(content, ruleName, lexer, parser), typeDeclarationNode = node, typeNode = typeNodeQuery(typeDeclarationNode);
99
+ var variableDeclarationTokens = (0, _tokens.variableDeclarationTokensFromVariableString)(variableString, lexer), typeNode = typeNodeFromVariableVariableDeclarationTokens(variableDeclarationTokens, parser);
54
100
  return typeNode;
55
101
  }
56
102
  function variableNodeFromVariableString(variableString, lexer, parser) {
57
- var ruleName = _ruleNames.VARIABLE_RULE_NAME, content = "Variable ".concat(variableString, "\n"), node = nodeFromContentAndRuleName(content, ruleName, lexer, parser), variableDeclarationNode = node, variableNode = variableNodeQuery(variableDeclarationNode);
103
+ var variableTDeclarationTokens = (0, _tokens.variableDeclarationTokensFromVariableString)(variableString, lexer), variableNode = variableNodeFromVariableVariableTDeclarationTokens(variableTDeclarationTokens, parser);
58
104
  return variableNode;
59
105
  }
60
106
  function statementNodeFromStatementString(statementString, lexer, parser) {
61
- var ruleName = _ruleNames.UNQUALIFIED_STATEMENT_RULE_NAME, content = "".concat(statementString, "\n"), node = nodeFromContentAndRuleName(content, ruleName, lexer, parser), unqualifiedStatementNode = node, statementNode = statementNodeQuery(unqualifiedStatementNode);
107
+ var unqualifiedStatementTokens = (0, _tokens.unqualifiedStatementTokensFromStatementString)(statementString, lexer), statementNode = statementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser);
62
108
  return statementNode;
63
109
  }
64
110
  function metaTypeNodeFromMetavariableString(metavariableString, lexer, parser) {
65
- var ruleName = _ruleNames.META_TYPE_RULE_NAME, content = "Metavariable ".concat(metavariableString, "\n"), node = nodeFromContentAndRuleName(content, ruleName, lexer, parser), metaTypeDeclarationNode = node, metaTypeNode = metaTypeNodeQuery(metaTypeDeclarationNode);
111
+ var metavariableDeclarationTokens = (0, _tokens.metavariableDeclarationTokensFromMetavariableString)(metavariableString, lexer), metaTypeNode = metaTypeNodeFromMetavariableDeclarationTokens(metavariableDeclarationTokens, parser);
66
112
  return metaTypeNode;
67
113
  }
68
114
  function metavariableNodeFromMetavariableString(metavariableString, lexer, parser) {
69
- var ruleName = _ruleNames.METAVARIABLE_RULE_NAME, content = "Metavariable ".concat(metavariableString, "\n"), node = nodeFromContentAndRuleName(content, ruleName, lexer, parser), metavariableDeclarationNode = node, metavariableNode = metavariableNodeQuery(metavariableDeclarationNode);
115
+ var metavariableDeclarationTokens = (0, _tokens.metavariableDeclarationTokensFromMetavariableString)(metavariableString, lexer), metavariableNode = metavariableNodeFromMetavariableDeclarationTokens(metavariableDeclarationTokens, parser);
70
116
  return metavariableNode;
71
117
  }
72
118
  function metastatementNodeFromMetastatementString(metastatementString, lexer, parser) {
73
- var ruleName = _ruleNames.UNQUALIFIED_METASTATEMENT_RULE_NAME, content = "".concat(metastatementString, "\n"), node = nodeFromContentAndRuleName(content, ruleName, lexer, parser), unqualifiedMetastatementNode = node, metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
119
+ var unqualifiedMetastatementTokens = (0, _tokens.unqualifiedMetastatementTokensFromMetastatementString)(metastatementString, lexer), metastatementNode = metastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser);
120
+ return metastatementNode;
121
+ }
122
+ function termNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser) {
123
+ var constructorDeclarationNode = constructorDeclarationNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser), termNode = termNodeQuery(constructorDeclarationNode);
124
+ return termNode;
125
+ }
126
+ function statementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
127
+ var unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser), statementNode = statementNodeQuery(unqualifiedStatementNode);
128
+ return statementNode;
129
+ }
130
+ function typeNodeFromVariableVariableDeclarationTokens(variableDeclarationTokens, parser) {
131
+ var typeDeclarationNode = typeDeclarationNodeFromVariableDeclarationTokens(variableDeclarationTokens, parser), typeNode = typeNodeQuery(typeDeclarationNode);
132
+ return typeNode;
133
+ }
134
+ function metaTypeNodeFromMetavariableDeclarationTokens(metavariableDeclarationTokens, parser) {
135
+ var metaTypeDeclarationNode = metaTypeDeclarationNodeFromMetavariableDeclarationTokens(metavariableDeclarationTokens, parser), metaTypeNode = metaTypeNodeQuery(metaTypeDeclarationNode);
136
+ return metaTypeNode;
137
+ }
138
+ function metavariableNodeFromMetavariableDeclarationTokens(metavariableDeclarationTokens, parser) {
139
+ var metavariableDeclarationNode = metavariableDeclarationNodeFromMetavariableDeclarationTokens(metavariableDeclarationTokens, parser), metavariableNode = metavariableNodeQuery(metavariableDeclarationNode);
140
+ return metavariableNode;
141
+ }
142
+ function variableNodeFromVariableVariableTDeclarationTokens(variableTDeclarationTokens, parser) {
143
+ var variableDeclarationNode = variableDeclarationNodeFromVariableTDeclarationTokens(variableTDeclarationTokens, parser), variableNode = variableNodeQuery(variableDeclarationNode);
144
+ return variableNode;
145
+ }
146
+ function metastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser) {
147
+ var unqualifiedMetastatementNode = unqualifiedMetastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser), metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
74
148
  return metastatementNode;
75
149
  }
76
- function nodeFromContentAndRuleName(content, ruleName) {
77
- var lexer = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : florenceLexer, parser = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : florenceParser;
78
- var ruleMap = parser.getRuleMap(), rule = ruleMap[ruleName], tokens = lexer.tokenise(content), node = parser.parse(tokens, rule);
150
+ function labelNodeFromLabelTokens(labelTokens, parser) {
151
+ var ruleName = _ruleNames.LABEL_RULE_NAME, labelNode = nodeFromTokensRuleNameAndParser(labelTokens, ruleName, parser);
152
+ return labelNode;
153
+ }
154
+ function typeDeclarationNodeFromVariableDeclarationTokens(variableDeclarationTokens, parser) {
155
+ var ruleName = _ruleNames.TYPE_RULE_NAME, typeDeclarationNode = nodeFromTokensRuleNameAndParser(variableDeclarationTokens, ruleName, parser);
156
+ return typeDeclarationNode;
157
+ }
158
+ function variableDeclarationNodeFromVariableTDeclarationTokens(variableTDeclarationTokens, parser) {
159
+ var ruleName = _ruleNames.VARIABLE_RULE_NAME, variableDeclarationNode = nodeFromTokensRuleNameAndParser(variableTDeclarationTokens, ruleName, parser);
160
+ return variableDeclarationNode;
161
+ }
162
+ function unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
163
+ var ruleName = _ruleNames.UNQUALIFIED_STATEMENT_RULE_NAME, unqualifiedStatementNode = nodeFromTokensRuleNameAndParser(unqualifiedStatementTokens, ruleName, parser);
164
+ return unqualifiedStatementNode;
165
+ }
166
+ function metaTypeDeclarationNodeFromMetavariableDeclarationTokens(metavariableDeclarationTokens, parser) {
167
+ var ruleName = _ruleNames.META_TYPE_RULE_NAME, metaTypeDeclarationNode = nodeFromTokensRuleNameAndParser(metavariableDeclarationTokens, ruleName, parser);
168
+ return metaTypeDeclarationNode;
169
+ }
170
+ function constructorDeclarationNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser) {
171
+ var ruleName = _ruleNames.CONSTRUCTOR_DECLARATION_RULE_NAME, constructorDeclarationNode = nodeFromTokensRuleNameAndParser(constructorDeclarationTokens, ruleName, parser);
172
+ return constructorDeclarationNode;
173
+ }
174
+ function metavariableDeclarationNodeFromMetavariableDeclarationTokens(metavariableDeclarationTokens, parser) {
175
+ var ruleName = _ruleNames.METAVARIABLE_RULE_NAME, metavariableDeclarationNode = nodeFromTokensRuleNameAndParser(metavariableDeclarationTokens, ruleName, parser);
176
+ return metavariableDeclarationNode;
177
+ }
178
+ function unqualifiedMetastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser) {
179
+ var ruleName = _ruleNames.UNQUALIFIED_METASTATEMENT_RULE_NAME, unqualifiedMetastatementNode = nodeFromTokensRuleNameAndParser(unqualifiedMetastatementTokens, ruleName, parser);
180
+ return unqualifiedMetastatementNode;
181
+ }
182
+ function nodeFromTokensRuleNameAndParser(tokens, ruleName) {
183
+ var parser = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : florenceParser;
184
+ var ruleMap = parser.getRuleMap(), rule = ruleMap[ruleName], node = parser.parse(tokens, rule);
79
185
  return node;
80
186
  }
81
187
 
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbGV4ZXJzVXRpbGl0aWVzLCBwYXJzZXJzVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWN1c3RvbS1ncmFtbWFyc1wiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBUWVBFX1JVTEVfTkFNRSxcbiAgICAgICAgIExBQkVMX1JVTEVfTkFNRSxcbiAgICAgICAgIFZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIE1FVEFfVFlQRV9SVUxFX05BTUUsXG4gICAgICAgICBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FLFxuICAgICAgICAgVU5RVUFMSUZJRURfU1RBVEVNRU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlNUUlVDVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5pbXBvcnQgeyBjb21iaW5lZEN1c3RvbUdyYW1tYXJGcm9tTm90aGluZyB9IGZyb20gXCIuL2N1c3RvbUdyYW1tYXJcIjtcblxuY29uc3QgeyBmbG9yZW5jZUxleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciB9ID0gbGV4ZXJzVXRpbGl0aWVzLFxuICAgICAgeyBmbG9yZW5jZVBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIgfSA9IHBhcnNlcnNVdGlsaXRpZXM7XG5cbmNvbnN0IGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IGNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21Ob3RoaW5nKCksXG4gICAgICBmbG9yZW5jZUxleGVyID0gZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgIGZsb3JlbmNlUGFyc2VyID0gZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29uc3RydWN0b3JEZWNsYXJhdGlvbi90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGVEZWNsYXJhdGlvbi90eXBlIVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3ZhcmlhYmxlRGVjbGFyYXRpb24vdmFyaWFibGUhXCIpLFxuICAgICAgbWV0YVR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24vbWV0YVR5cGUhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICBtZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24vbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50L21ldGFzdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybU5vZGVGcm9tVGVybVN0cmluZyh0ZXJtU3RyaW5nLCBsZXhlciwgcGFyc2VyKSB7XG4gIGNvbnN0IHJ1bGVOYW1lID0gQ09OU1RSVUNUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICBjb250ZW50ID0gYENvbnN0cnVjdG9yICR7dGVybVN0cmluZ31cbmAsXG4gICAgICAgIG5vZGUgPSBub2RlRnJvbUNvbnRlbnRBbmRSdWxlTmFtZShjb250ZW50LCBydWxlTmFtZSwgbGV4ZXIsIHBhcnNlciksXG4gICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlID0gbm9kZSwgLy8vXG4gICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSk7XG5cbiAgcmV0dXJuIHRlcm1Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxOb2RlRnJvbUxhYmVsU3RyaW5nKGxhYmVsU3RyaW5nLCBsZXhlciwgcGFyc2VyKSB7XG4gIGNvbnN0IGNvbnRlbnQgPSBsYWJlbFN0cmluZywgLy8vXG4gICAgICAgIHJ1bGVOYW1lID0gTEFCRUxfUlVMRV9OQU1FLFxuICAgICAgICBub2RlID0gbm9kZUZyb21Db250ZW50QW5kUnVsZU5hbWUoY29udGVudCwgcnVsZU5hbWUsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICBsYWJlbE5vZGUgPSBub2RlOyAvLy9cblxuICByZXR1cm4gbGFiZWxOb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZU5vZGVGcm9tVmFyaWFibGVTdHJpbmcodmFyaWFibGVTdHJpbmcsIGxleGVyLCBwYXJzZXIpIHtcbiAgY29uc3QgcnVsZU5hbWUgPSBUWVBFX1JVTEVfTkFNRSxcbiAgICAgICAgY29udGVudCA9IGBWYXJpYWJsZSAke3ZhcmlhYmxlU3RyaW5nfVxuYCxcbiAgICAgICAgbm9kZSA9IG5vZGVGcm9tQ29udGVudEFuZFJ1bGVOYW1lKGNvbnRlbnQsIHJ1bGVOYW1lLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZURlY2xhcmF0aW9uTm9kZSk7XG5cbiAgcmV0dXJuIHR5cGVOb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVOb2RlRnJvbVZhcmlhYmxlU3RyaW5nKHZhcmlhYmxlU3RyaW5nLCBsZXhlciwgcGFyc2VyKSB7XG4gIGNvbnN0IHJ1bGVOYW1lID0gVkFSSUFCTEVfUlVMRV9OQU1FLFxuICAgICAgICBjb250ZW50ID0gYFZhcmlhYmxlICR7dmFyaWFibGVTdHJpbmd9XG5gLFxuICAgICAgICBub2RlID0gbm9kZUZyb21Db250ZW50QW5kUnVsZU5hbWUoY29udGVudCwgcnVsZU5hbWUsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nKHN0YXRlbWVudFN0cmluZywgbGV4ZXIsIHBhcnNlcikge1xuICBjb25zdCBydWxlTmFtZSA9IFVOUVVBTElGSUVEX1NUQVRFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgIGNvbnRlbnQgPSBgJHtzdGF0ZW1lbnRTdHJpbmd9XG5gLFxuICAgICAgICBub2RlID0gbm9kZUZyb21Db250ZW50QW5kUnVsZU5hbWUoY29udGVudCwgcnVsZU5hbWUsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlTm9kZUZyb21NZXRhdmFyaWFibGVTdHJpbmcobWV0YXZhcmlhYmxlU3RyaW5nLCBsZXhlciwgcGFyc2VyKSB7XG4gIGNvbnN0IHJ1bGVOYW1lID0gTUVUQV9UWVBFX1JVTEVfTkFNRSxcbiAgICAgICAgY29udGVudCA9IGBNZXRhdmFyaWFibGUgJHttZXRhdmFyaWFibGVTdHJpbmd9XG5gLFxuICAgICAgICBub2RlID0gbm9kZUZyb21Db250ZW50QW5kUnVsZU5hbWUoY29udGVudCwgcnVsZU5hbWUsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICBtZXRhVHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICBtZXRhVHlwZU5vZGUgPSBtZXRhVHlwZU5vZGVRdWVyeShtZXRhVHlwZURlY2xhcmF0aW9uTm9kZSk7XG5cbiAgcmV0dXJuIG1ldGFUeXBlTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZU5vZGVGcm9tTWV0YXZhcmlhYmxlU3RyaW5nKG1ldGF2YXJpYWJsZVN0cmluZywgbGV4ZXIsIHBhcnNlcikge1xuICBjb25zdCBydWxlTmFtZSA9IE1FVEFWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgIGNvbnRlbnQgPSBgTWV0YXZhcmlhYmxlICR7bWV0YXZhcmlhYmxlU3RyaW5nfVxuYCxcbiAgICAgICAgbm9kZSA9IG5vZGVGcm9tQ29udGVudEFuZFJ1bGVOYW1lKGNvbnRlbnQsIHJ1bGVOYW1lLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlID0gbm9kZSwgLy8vXG4gICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmcobWV0YXN0YXRlbWVudFN0cmluZywgbGV4ZXIsIHBhcnNlcikge1xuICBjb25zdCBydWxlTmFtZSA9IFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FLFxuICAgICAgICBjb250ZW50ID0gYCR7bWV0YXN0YXRlbWVudFN0cmluZ31cbmAsXG4gICAgICAgIG5vZGUgPSBub2RlRnJvbUNvbnRlbnRBbmRSdWxlTmFtZShjb250ZW50LCBydWxlTmFtZSwgbGV4ZXIsIHBhcnNlciksXG4gICAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gbWV0YXN0YXRlbWVudE5vZGU7XG59XG5cbmZ1bmN0aW9uIG5vZGVGcm9tQ29udGVudEFuZFJ1bGVOYW1lKGNvbnRlbnQsIHJ1bGVOYW1lLCBsZXhlciA9IGZsb3JlbmNlTGV4ZXIsIHBhcnNlciA9IGZsb3JlbmNlUGFyc2VyKSB7XG4gIGNvbnN0IHJ1bGVNYXAgPSBwYXJzZXIuZ2V0UnVsZU1hcCgpLFxuICAgICAgICBydWxlID0gcnVsZU1hcFtydWxlTmFtZV0sXG4gICAgICAgIHRva2VucyA9IGxleGVyLnRva2VuaXNlKGNvbnRlbnQpLFxuICAgICAgICBub2RlID0gcGFyc2VyLnBhcnNlKHRva2VucywgcnVsZSk7XG5cbiAgcmV0dXJuIG5vZGU7XG59XG4iXSwibmFtZXMiOlsibGFiZWxOb2RlRnJvbUxhYmVsU3RyaW5nIiwibWV0YVR5cGVOb2RlRnJvbU1ldGF2YXJpYWJsZVN0cmluZyIsIm1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmciLCJtZXRhdmFyaWFibGVOb2RlRnJvbU1ldGF2YXJpYWJsZVN0cmluZyIsInN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIiwidGVybU5vZGVGcm9tVGVybVN0cmluZyIsInR5cGVOb2RlRnJvbVZhcmlhYmxlU3RyaW5nIiwidmFyaWFibGVOb2RlRnJvbVZhcmlhYmxlU3RyaW5nIiwiZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJsZXhlcnNVdGlsaXRpZXMiLCJmbG9yZW5jZVBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJwYXJzZXJzVXRpbGl0aWVzIiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbU5vdGhpbmciLCJmbG9yZW5jZUxleGVyIiwiZmxvcmVuY2VQYXJzZXIiLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInZhcmlhYmxlTm9kZVF1ZXJ5IiwibWV0YVR5cGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJtZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5IiwidGVybVN0cmluZyIsImxleGVyIiwicGFyc2VyIiwicnVsZU5hbWUiLCJDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJjb250ZW50Iiwibm9kZSIsIm5vZGVGcm9tQ29udGVudEFuZFJ1bGVOYW1lIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJ0ZXJtTm9kZSIsImxhYmVsU3RyaW5nIiwiTEFCRUxfUlVMRV9OQU1FIiwibGFiZWxOb2RlIiwidmFyaWFibGVTdHJpbmciLCJUWVBFX1JVTEVfTkFNRSIsInR5cGVEZWNsYXJhdGlvbk5vZGUiLCJ0eXBlTm9kZSIsIlZBUklBQkxFX1JVTEVfTkFNRSIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVOb2RlIiwic3RhdGVtZW50U3RyaW5nIiwiVU5RVUFMSUZJRURfU1RBVEVNRU5UX1JVTEVfTkFNRSIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJNRVRBX1RZUEVfUlVMRV9OQU1FIiwibWV0YVR5cGVEZWNsYXJhdGlvbk5vZGUiLCJtZXRhVHlwZU5vZGUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFzdGF0ZW1lbnRTdHJpbmciLCJVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhc3RhdGVtZW50Tm9kZSIsInJ1bGVNYXAiLCJnZXRSdWxlTWFwIiwicnVsZSIsInRva2VucyIsInRva2VuaXNlIiwicGFyc2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQTBDZ0JBLHdCQUF3QjtlQUF4QkE7O0lBMENBQyxrQ0FBa0M7ZUFBbENBOztJQXNCQUMsd0NBQXdDO2VBQXhDQTs7SUFYQUMsc0NBQXNDO2VBQXRDQTs7SUF0QkFDLGdDQUFnQztlQUFoQ0E7O0lBMUNBQyxzQkFBc0I7ZUFBdEJBOztJQW9CQUMsMEJBQTBCO2VBQTFCQTs7SUFXQUMsOEJBQThCO2VBQTlCQTs7O21DQTVEa0M7cUJBRXhCO3lCQVEwQjs2QkFFSDtBQUVqRCxJQUFNLEFBQUVDLHlDQUEyQ0Msb0NBQWUsQ0FBMURELHdDQUNGLEFBQUVFLDBDQUE0Q0MscUNBQWdCLENBQTVERDtBQUVSLElBQU1FLHdCQUF3QkMsSUFBQUEsK0NBQWdDLEtBQ3hEQyxnQkFBZ0JOLHVDQUF1Q0ksd0JBQ3ZERyxpQkFBaUJMLHdDQUF3Q0U7QUFFL0QsSUFBTUksZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLGtDQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLCtCQUMxQkUsb0JBQW9CRixJQUFBQSxnQkFBUyxFQUFDLG1DQUM5Qkcsb0JBQW9CSCxJQUFBQSxnQkFBUyxFQUFDLHVDQUM5QkkscUJBQXFCSixJQUFBQSxnQkFBUyxFQUFDLHFDQUMvQkssd0JBQXdCTCxJQUFBQSxnQkFBUyxFQUFDLDJDQUNsQ00seUJBQXlCTixJQUFBQSxnQkFBUyxFQUFDO0FBRWxDLFNBQVNaLHVCQUF1Qm1CLFVBQVUsRUFBRUMsS0FBSyxFQUFFQyxNQUFNO0lBQzlELElBQU1DLFdBQVdDLDRDQUFpQyxFQUM1Q0MsVUFBVSxBQUFDLGVBQXlCLE9BQVhMLFlBQVcsT0FFcENNLE9BQU9DLDJCQUEyQkYsU0FBU0YsVUFBVUYsT0FBT0MsU0FDNURNLDZCQUE2QkYsTUFDN0JHLFdBQVdqQixjQUFjZ0I7SUFFL0IsT0FBT0M7QUFDVDtBQUVPLFNBQVNqQyx5QkFBeUJr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
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcGFyc2Vyc1V0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1jdXN0b20tZ3JhbW1hcnNcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi9jdXN0b21HcmFtbWFyXCI7XG5pbXBvcnQgeyBUWVBFX1JVTEVfTkFNRSxcbiAgICAgICAgIExBQkVMX1JVTEVfTkFNRSxcbiAgICAgICAgIFZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIE1FVEFfVFlQRV9SVUxFX05BTUUsXG4gICAgICAgICBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FLFxuICAgICAgICAgVU5RVUFMSUZJRURfU1RBVEVNRU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlNUUlVDVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgbGFiZWxUb2tlbnNGcm9tTGFiZWxTdHJpbmcsXG4gICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zRnJvbVRlcm1TdHJpbmcsXG4gICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zRnJvbVZhcmlhYmxlU3RyaW5nLFxuICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tU3RhdGVtZW50U3RyaW5nLFxuICAgICAgICAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ub2tlbnNGcm9tTWV0YXZhcmlhYmxlU3RyaW5nLFxuICAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VG9rZW5zRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Rva2Vuc1wiO1xuXG5jb25zdCB7IGZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciB9ID0gcGFyc2Vyc1V0aWxpdGllcztcblxuY29uc3QgY29tYmluZWRDdXN0b21HcmFtbWFyID0gY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbU5vdGhpbmcoKSxcbiAgICAgIGZsb3JlbmNlUGFyc2VyID0gZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29uc3RydWN0b3JEZWNsYXJhdGlvbi90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGVEZWNsYXJhdGlvbi90eXBlIVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3ZhcmlhYmxlRGVjbGFyYXRpb24vdmFyaWFibGUhXCIpLFxuICAgICAgbWV0YVR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24vbWV0YVR5cGUhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICBtZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24vbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50L21ldGFzdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybU5vZGVGcm9tVGVybVN0cmluZyh0ZXJtU3RyaW5nLCBsZXhlciwgcGFyc2VyKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMgPSBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zRnJvbVRlcm1TdHJpbmcodGVybVN0cmluZywgcGFyc2VyKSxcbiAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZUZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zKGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMsIHBhcnNlcik7XG5cbiAgcmV0dXJuIHRlcm1Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxOb2RlRnJvbUxhYmVsU3RyaW5nKGxhYmVsU3RyaW5nLCBsZXhlciwgcGFyc2VyKSB7XG4gIGNvbnN0IGxhYmVsVG9rZW5zID0gbGFiZWxUb2tlbnNGcm9tTGFiZWxTdHJpbmcobGFiZWxTdHJpbmcsIGxleGVyKSxcbiAgICAgICAgbGFiZWxOb2RlID0gbGFiZWxOb2RlRnJvbUxhYmVsVG9rZW5zKGxhYmVsVG9rZW5zLCBwYXJzZXIpO1xuXG4gIHJldHVybiBsYWJlbE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlTm9kZUZyb21WYXJpYWJsZVN0cmluZyh2YXJpYWJsZVN0cmluZywgbGV4ZXIsIHBhcnNlcikge1xuICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zID0gdmFyaWFibGVEZWNsYXJhdGlvblRva2Vuc0Zyb21WYXJpYWJsZVN0cmluZyh2YXJpYWJsZVN0cmluZywgbGV4ZXIpLFxuICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlRnJvbVZhcmlhYmxlVmFyaWFibGVEZWNsYXJhdGlvblRva2Vucyh2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpO1xuXG4gIHJldHVybiB0eXBlTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlTm9kZUZyb21WYXJpYWJsZVN0cmluZyh2YXJpYWJsZVN0cmluZywgbGV4ZXIsIHBhcnNlcikge1xuICBjb25zdCB2YXJpYWJsZVREZWNsYXJhdGlvblRva2VucyA9IHZhcmlhYmxlRGVjbGFyYXRpb25Ub2tlbnNGcm9tVmFyaWFibGVTdHJpbmcodmFyaWFibGVTdHJpbmcsIGxleGVyKSxcbiAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlRnJvbVZhcmlhYmxlVmFyaWFibGVURGVjbGFyYXRpb25Ub2tlbnModmFyaWFibGVURGVjbGFyYXRpb25Ub2tlbnMsIHBhcnNlcik7XG5cbiAgcmV0dXJuIHZhcmlhYmxlTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nKHN0YXRlbWVudFN0cmluZywgbGV4ZXIsIHBhcnNlcikge1xuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFRva2VucyA9IHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zRnJvbVN0YXRlbWVudFN0cmluZyhzdGF0ZW1lbnRTdHJpbmcsIGxleGVyKSxcbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMsIHBhcnNlcik7XG5cbiAgcmV0dXJuIHN0YXRlbWVudE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZU5vZGVGcm9tTWV0YXZhcmlhYmxlU3RyaW5nKG1ldGF2YXJpYWJsZVN0cmluZywgbGV4ZXIsIHBhcnNlcikge1xuICBjb25zdCBtZXRhdmFyaWFibGVEZWNsYXJhdGlvblRva2VucyA9IG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zRnJvbU1ldGF2YXJpYWJsZVN0cmluZyhtZXRhdmFyaWFibGVTdHJpbmcsIGxleGVyKSxcbiAgICAgICAgbWV0YVR5cGVOb2RlID0gbWV0YVR5cGVOb2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpO1xuXG4gIHJldHVybiBtZXRhVHlwZU5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVOb2RlRnJvbU1ldGF2YXJpYWJsZVN0cmluZyhtZXRhdmFyaWFibGVTdHJpbmcsIGxleGVyLCBwYXJzZXIpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ub2tlbnMgPSBtZXRhdmFyaWFibGVEZWNsYXJhdGlvblRva2Vuc0Zyb21NZXRhdmFyaWFibGVTdHJpbmcobWV0YXZhcmlhYmxlU3RyaW5nLCBsZXhlciksXG4gICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVOb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXN0YXRlbWVudE5vZGVGcm9tTWV0YXN0YXRlbWVudFN0cmluZyhtZXRhc3RhdGVtZW50U3RyaW5nLCBsZXhlciwgcGFyc2VyKSB7XG4gIGNvbnN0IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFRva2VucyA9IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFRva2Vuc0Zyb21NZXRhc3RhdGVtZW50U3RyaW5nKG1ldGFzdGF0ZW1lbnRTdHJpbmcsIGxleGVyKSxcbiAgICAgICAgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VG9rZW5zLCBwYXJzZXIpO1xuXG4gIHJldHVybiBtZXRhc3RhdGVtZW50Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Ob2RlRnJvbUNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMoY29uc3RydWN0b3JEZWNsYXJhdGlvblRva2VucywgcGFyc2VyKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlID0gY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGVGcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvblRva2Vucyhjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpLFxuICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUpO1xuXG4gIHJldHVybiB0ZXJtTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMsIHBhcnNlcikge1xuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMsIHBhcnNlciksXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVOb2RlRnJvbVZhcmlhYmxlVmFyaWFibGVEZWNsYXJhdGlvblRva2Vucyh2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpIHtcbiAgY29uc3QgdHlwZURlY2xhcmF0aW9uTm9kZSA9IHR5cGVEZWNsYXJhdGlvbk5vZGVGcm9tVmFyaWFibGVEZWNsYXJhdGlvblRva2Vucyh2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpLFxuICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZURlY2xhcmF0aW9uTm9kZSk7XG5cbiAgcmV0dXJuIHR5cGVOb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVOb2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpIHtcbiAgY29uc3QgbWV0YVR5cGVEZWNsYXJhdGlvbk5vZGUgPSBtZXRhVHlwZURlY2xhcmF0aW9uTm9kZUZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvblRva2VucyhtZXRhdmFyaWFibGVEZWNsYXJhdGlvblRva2VucywgcGFyc2VyKSxcbiAgICAgICAgbWV0YVR5cGVOb2RlID0gbWV0YVR5cGVOb2RlUXVlcnkobWV0YVR5cGVEZWNsYXJhdGlvbk5vZGUpO1xuXG4gIHJldHVybiBtZXRhVHlwZU5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVOb2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlID0gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpLFxuICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZU5vZGVGcm9tVmFyaWFibGVWYXJpYWJsZVREZWNsYXJhdGlvblRva2Vucyh2YXJpYWJsZVREZWNsYXJhdGlvblRva2VucywgcGFyc2VyKSB7XG4gIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlID0gdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVGcm9tVmFyaWFibGVURGVjbGFyYXRpb25Ub2tlbnModmFyaWFibGVURGVjbGFyYXRpb25Ub2tlbnMsIHBhcnNlciksXG4gICAgICAgIHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTtcblxuICByZXR1cm4gdmFyaWFibGVOb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VG9rZW5zKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFRva2VucywgcGFyc2VyKSB7XG4gIGNvbnN0IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlRnJvbVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFRva2Vucyh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRUb2tlbnMsIHBhcnNlciksXG4gICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gbWV0YXN0YXRlbWVudE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbE5vZGVGcm9tTGFiZWxUb2tlbnMobGFiZWxUb2tlbnMsIHBhcnNlcikge1xuICBjb25zdCBydWxlTmFtZSA9IExBQkVMX1JVTEVfTkFNRSxcbiAgICAgICAgbGFiZWxOb2RlID0gbm9kZUZyb21Ub2tlbnNSdWxlTmFtZUFuZFBhcnNlcihsYWJlbFRva2VucywgcnVsZU5hbWUsIHBhcnNlcik7XG5cbiAgcmV0dXJuIGxhYmVsTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVEZWNsYXJhdGlvbk5vZGVGcm9tVmFyaWFibGVEZWNsYXJhdGlvblRva2Vucyh2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpIHtcbiAgY29uc3QgcnVsZU5hbWUgPSBUWVBFX1JVTEVfTkFNRSxcbiAgICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGVGcm9tVG9rZW5zUnVsZU5hbWVBbmRQYXJzZXIodmFyaWFibGVEZWNsYXJhdGlvblRva2VucywgcnVsZU5hbWUsIHBhcnNlcik7XG5cbiAgcmV0dXJuIHR5cGVEZWNsYXJhdGlvbk5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZUZyb21WYXJpYWJsZVREZWNsYXJhdGlvblRva2Vucyh2YXJpYWJsZVREZWNsYXJhdGlvblRva2VucywgcGFyc2VyKSB7XG4gIGNvbnN0IHJ1bGVOYW1lID0gVkFSSUFCTEVfUlVMRV9OQU1FLFxuICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSA9IG5vZGVGcm9tVG9rZW5zUnVsZU5hbWVBbmRQYXJzZXIodmFyaWFibGVURGVjbGFyYXRpb25Ub2tlbnMsIHJ1bGVOYW1lLCBwYXJzZXIpO1xuXG4gIHJldHVybiB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2Vucyh1bnF1YWxpZmllZFN0YXRlbWVudFRva2VucywgcGFyc2VyKSB7XG4gIGNvbnN0IHJ1bGVOYW1lID0gVU5RVUFMSUZJRURfU1RBVEVNRU5UX1JVTEVfTkFNRSxcbiAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlID0gbm9kZUZyb21Ub2tlbnNSdWxlTmFtZUFuZFBhcnNlcih1bnF1YWxpZmllZFN0YXRlbWVudFRva2VucywgcnVsZU5hbWUsIHBhcnNlcik7XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlRGVjbGFyYXRpb25Ob2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpIHtcbiAgY29uc3QgcnVsZU5hbWUgPSBNRVRBX1RZUEVfUlVMRV9OQU1FLFxuICAgICAgICBtZXRhVHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGVGcm9tVG9rZW5zUnVsZU5hbWVBbmRQYXJzZXIobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ub2tlbnMsIHJ1bGVOYW1lLCBwYXJzZXIpO1xuXG4gIHJldHVybiBtZXRhVHlwZURlY2xhcmF0aW9uTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlRnJvbUNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMoY29uc3RydWN0b3JEZWNsYXJhdGlvblRva2VucywgcGFyc2VyKSB7XG4gIGNvbnN0IHJ1bGVOYW1lID0gQ09OU1RSVUNUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSA9IG5vZGVGcm9tVG9rZW5zUnVsZU5hbWVBbmRQYXJzZXIoY29uc3RydWN0b3JEZWNsYXJhdGlvblRva2VucywgcnVsZU5hbWUsIHBhcnNlcik7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBwYXJzZXIpIHtcbiAgY29uc3QgcnVsZU5hbWUgPSBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FLFxuICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUgPSBub2RlRnJvbVRva2Vuc1J1bGVOYW1lQW5kUGFyc2VyKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zLCBydWxlTmFtZSwgcGFyc2VyKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VG9rZW5zLCBwYXJzZXIpIHtcbiAgY29uc3QgcnVsZU5hbWUgPSBVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSxcbiAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSA9IG5vZGVGcm9tVG9rZW5zUnVsZU5hbWVBbmRQYXJzZXIodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VG9rZW5zLCBydWxlTmFtZSwgcGFyc2VyKTtcblxuICByZXR1cm4gdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZTtcbn1cblxuZnVuY3Rpb24gbm9kZUZyb21Ub2tlbnNSdWxlTmFtZUFuZFBhcnNlcih0b2tlbnMsIHJ1bGVOYW1lLCBwYXJzZXIgPSBmbG9yZW5jZVBhcnNlcikge1xuICBjb25zdCBydWxlTWFwID0gcGFyc2VyLmdldFJ1bGVNYXAoKSxcbiAgICAgICAgcnVsZSA9IHJ1bGVNYXBbcnVsZU5hbWVdLFxuICAgICAgICBub2RlID0gcGFyc2VyLnBhcnNlKHRva2VucywgcnVsZSk7XG5cbiAgcmV0dXJuIG5vZGU7XG59XG4iXSwibmFtZXMiOlsiY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGVGcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvblRva2VucyIsImxhYmVsTm9kZUZyb21MYWJlbFN0cmluZyIsImxhYmVsTm9kZUZyb21MYWJlbFRva2VucyIsIm1ldGFUeXBlRGVjbGFyYXRpb25Ob2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zIiwibWV0YVR5cGVOb2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zIiwibWV0YVR5cGVOb2RlRnJvbU1ldGF2YXJpYWJsZVN0cmluZyIsIm1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmciLCJtZXRhc3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRUb2tlbnMiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVGcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ub2tlbnMiLCJtZXRhdmFyaWFibGVOb2RlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zIiwibWV0YXZhcmlhYmxlTm9kZUZyb21NZXRhdmFyaWFibGVTdHJpbmciLCJzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyIsInN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMiLCJ0ZXJtTm9kZUZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zIiwidGVybU5vZGVGcm9tVGVybVN0cmluZyIsInR5cGVEZWNsYXJhdGlvbk5vZGVGcm9tVmFyaWFibGVEZWNsYXJhdGlvblRva2VucyIsInR5cGVOb2RlRnJvbVZhcmlhYmxlU3RyaW5nIiwidHlwZU5vZGVGcm9tVmFyaWFibGVWYXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRUb2tlbnMiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMiLCJ2YXJpYWJsZURlY2xhcmF0aW9uTm9kZUZyb21WYXJpYWJsZVREZWNsYXJhdGlvblRva2VucyIsInZhcmlhYmxlTm9kZUZyb21WYXJpYWJsZVN0cmluZyIsInZhcmlhYmxlTm9kZUZyb21WYXJpYWJsZVZhcmlhYmxlVERlY2xhcmF0aW9uVG9rZW5zIiwiZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIiwicGFyc2Vyc1V0aWxpdGllcyIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21Ob3RoaW5nIiwiZmxvcmVuY2VQYXJzZXIiLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInZhcmlhYmxlTm9kZVF1ZXJ5IiwibWV0YVR5cGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJtZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5IiwidGVybVN0cmluZyIsImxleGVyIiwicGFyc2VyIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvblRva2VucyIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnNGcm9tVGVybVN0cmluZyIsInRlcm1Ob2RlIiwibGFiZWxTdHJpbmciLCJsYWJlbFRva2VucyIsImxhYmVsVG9rZW5zRnJvbUxhYmVsU3RyaW5nIiwibGFiZWxOb2RlIiwidmFyaWFibGVTdHJpbmciLCJ2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zIiwidmFyaWFibGVEZWNsYXJhdGlvblRva2Vuc0Zyb21WYXJpYWJsZVN0cmluZyIsInR5cGVOb2RlIiwidmFyaWFibGVURGVjbGFyYXRpb25Ub2tlbnMiLCJ2YXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnRTdHJpbmciLCJ1bnF1YWxpZmllZFN0YXRlbWVudFRva2VucyIsInVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zRnJvbVN0YXRlbWVudFN0cmluZyIsInN0YXRlbWVudE5vZGUiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvblRva2VucyIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zRnJvbU1ldGF2YXJpYWJsZVN0cmluZyIsIm1ldGFUeXBlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhc3RhdGVtZW50U3RyaW5nIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VG9rZW5zIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VG9rZW5zRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmciLCJtZXRhc3RhdGVtZW50Tm9kZSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwidHlwZURlY2xhcmF0aW9uTm9kZSIsIm1ldGFUeXBlRGVjbGFyYXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlIiwicnVsZU5hbWUiLCJMQUJFTF9SVUxFX05BTUUiLCJub2RlRnJvbVRva2Vuc1J1bGVOYW1lQW5kUGFyc2VyIiwiVFlQRV9SVUxFX05BTUUiLCJWQVJJQUJMRV9SVUxFX05BTUUiLCJVTlFVQUxJRklFRF9TVEFURU1FTlRfUlVMRV9OQU1FIiwiTUVUQV9UWVBFX1JVTEVfTkFNRSIsIkNPTlNUUlVDVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIk1FVEFWQVJJQUJMRV9SVUxFX05BTUUiLCJVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsInRva2VucyIsInJ1bGVNYXAiLCJnZXRSdWxlTWFwIiwicnVsZSIsIm5vZGUiLCJwYXJzZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBOEtnQkEsMERBQTBEO2VBQTFEQTs7SUFySUFDLHdCQUF3QjtlQUF4QkE7O0lBa0dBQyx3QkFBd0I7ZUFBeEJBOztJQTRCQUMsd0RBQXdEO2VBQXhEQTs7SUF4REFDLDZDQUE2QztlQUE3Q0E7O0lBMUNBQyxrQ0FBa0M7ZUFBbENBOztJQWNBQyx3Q0FBd0M7ZUFBeENBOztJQWlEQUMsbURBQW1EO2VBQW5EQTs7SUFpREFDLDREQUE0RDtlQUE1REE7O0lBL0RBQyxpREFBaUQ7ZUFBakRBOztJQTFDQUMsc0NBQXNDO2VBQXRDQTs7SUFkQUMsZ0NBQWdDO2VBQWhDQTs7SUFtQ0FDLDJDQUEyQztlQUEzQ0E7O0lBUEFDLHdDQUF3QztlQUF4Q0E7O0lBeERBQyxzQkFBc0I7ZUFBdEJBOztJQWdIQUMsZ0RBQWdEO2VBQWhEQTs7SUFsR0FDLDBCQUEwQjtlQUExQkE7O0lBd0RBQyw2Q0FBNkM7ZUFBN0NBOztJQW9GQUMsOERBQThEO2VBQTlEQTs7SUE1QkFDLHNEQUFzRDtlQUF0REE7O0lBUEFDLHFEQUFxRDtlQUFyREE7O0lBbEdBQyw4QkFBOEI7ZUFBOUJBOztJQXNFQUMsa0RBQWtEO2VBQWxEQTs7O21DQTNIaUI7cUJBRVA7NkJBQ3VCO3lCQVFHO3NCQU1rQjtBQUV0RSxJQUFNLEFBQUVDLDBDQUE0Q0MscUNBQWdCLENBQTVERDtBQUVSLElBQU1FLHdCQUF3QkMsSUFBQUEsK0NBQWdDLEtBQ3hEQyxpQkFBaUJKLHdDQUF3Q0U7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
@@ -48,4 +48,4 @@ function nodesAsString(nodes, tokens) {
48
48
  return string;
49
49
  }
50
50
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDT01NQSwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucykge1xuICBsZXQgc3RyaW5nID0gbnVsbDtcblxuICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgICAgY29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICAgIHN0cmluZyA9IGNvbnRlbnQ7IC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbiA9IG5vblRlcm1pbmFsTm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW4oKSxcbiAgICAgICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuID0gbm9uVGVybWluYWxOb2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuKCksXG4gICAgICAgICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHRva2Vucy5pbmRleE9mKGZpcnN0U2lnbmlmaWNhbnRUb2tlbiksXG4gICAgICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gdG9rZW5zLmluZGV4T2YobGFzdFNpZ25pZmljYW50VG9rZW4pLFxuICAgICAgICAgICAgc3RhcnQgPSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCwgLy8vXG4gICAgICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMTtcblxuICAgICAgdG9rZW5zID0gdG9rZW5zLnNsaWNlKHN0YXJ0LCBlbmQpOyAgLy8vXG5cbiAgICAgIHN0cmluZyA9IHRva2Vucy5yZWR1Y2UoKHN0cmluZywgdG9rZW4pID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRva2VuLmdldENvbnRlbnQoKTtcblxuICAgICAgICBzdHJpbmcgPSBgJHtzdHJpbmd9JHtjb250ZW50fWA7XG5cbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH0sIEVNUFRZX1NUUklORyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0cmluZyAhPT0gbnVsbCkge1xuICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9bXFxyXFxuXS8sIEVNUFRZX1NUUklORylcbiAgfVxuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCB0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXMucmVkdWNlKChzdHJpbmcsIG5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlU3RyaW5nID0gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucyk7XG5cbiAgICBzdHJpbmcgPSAoc3RyaW5nID09PSBFTVBUWV9TVFJJTkcpID9cbiAgICAgICAgICAgICAgIG5vZGVTdHJpbmcgOlxuICAgICAgICAgICAgICAgIGAke3N0cmluZ30ke0NPTU1BfSR7bm9kZVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG4iXSwibmFtZXMiOlsibm9kZUFzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsIm5vZGUiLCJ0b2tlbnMiLCJzdHJpbmciLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsIm5vblRlcm1pbmFsTm9kZSIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbiIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbiIsImxhc3RTaWduaWZpY2FudFRva2VuIiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW4iLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImluZGV4T2YiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4Iiwic3RhcnQiLCJlbmQiLCJzbGljZSIsInJlZHVjZSIsInRva2VuIiwiRU1QVFlfU1RSSU5HIiwicmVwbGFjZSIsIm5vZGVzIiwibm9kZVN0cmluZyIsIkNPTU1BIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFJZ0JBLFlBQVk7ZUFBWkE7O0lBdUNBQyxhQUFhO2VBQWJBOzs7eUJBekNvQjtBQUU3QixTQUFTRCxhQUFhRSxJQUFJLEVBQUVDLE1BQU07SUFDdkMsSUFBSUMsU0FBUztJQUViLElBQUlGLFNBQVMsTUFBTTtRQUNqQixJQUFNRyxtQkFBbUJILEtBQUtJLGNBQWM7UUFFNUMsSUFBSUQsa0JBQWtCO1lBQ3BCLElBQU1FLGVBQWVMLE1BQ2ZNLFVBQVVELGFBQWFFLFVBQVU7WUFFdkNMLFNBQVNJLFNBQVMsR0FBRztRQUN2QixPQUFPO1lBQ0wsSUFBTUUsa0JBQWtCUixNQUNsQlMsd0JBQXdCRCxnQkFBZ0JFLHdCQUF3QixJQUNoRUMsdUJBQXVCSCxnQkFBZ0JJLHVCQUF1QixJQUM5REMsNkJBQTZCWixPQUFPYSxPQUFPLENBQUNMLHdCQUM1Q00sNEJBQTRCZCxPQUFPYSxPQUFPLENBQUNILHVCQUMzQ0ssUUFBUUgsNEJBQ1JJLE1BQU1GLDRCQUE0QjtZQUV4Q2QsU0FBU0EsT0FBT2lCLEtBQUssQ0FBQ0YsT0FBT0MsTUFBTyxHQUFHO1lBRXZDZixTQUFTRCxPQUFPa0IsTUFBTSxDQUFDLFNBQUNqQixRQUFRa0I7Z0JBQzlCLElBQU1kLFVBQVVjLE1BQU1iLFVBQVU7Z0JBRWhDTCxTQUFTLEFBQUMsR0FBV0ksT0FBVEosUUFBaUIsT0FBUkk7Z0JBRXJCLE9BQU9KO1lBQ1QsR0FBR21CLHVCQUFZO1FBQ2pCO0lBQ0Y7SUFFQSxJQUFJbkIsV0FBVyxNQUFNO1FBQ25CQSxTQUFTQSxPQUFPb0IsT0FBTyxDQUFDLFVBQVVELHVCQUFZO0lBQ2hEO0lBRUEsT0FBT25CO0FBQ1Q7QUFFTyxTQUFTSCxjQUFjd0IsS0FBSyxFQUFFdEIsTUFBTTtJQUN6QyxJQUFNQyxTQUFTcUIsTUFBTUosTUFBTSxDQUFDLFNBQUNqQixRQUFRRjtRQUNuQyxJQUFNd0IsYUFBYTFCLGFBQWFFLE1BQU1DO1FBRXRDQyxTQUFTLEFBQUNBLFdBQVdtQix1QkFBWSxHQUN0QkcsYUFDQyxBQUFDLEdBQVdDLE9BQVR2QixRQUFpQnNCLE9BQVJDLGdCQUFLLEVBQWMsT0FBWEQ7UUFFaEMsT0FBT3RCO0lBQ1QsR0FBR21CLHVCQUFZO0lBRWYsT0FBT25CO0FBQ1QifQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDT01NQSwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucykge1xuICBsZXQgc3RyaW5nID0gbnVsbDtcblxuICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgICAgY29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICAgIHN0cmluZyA9IGNvbnRlbnQ7IC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbiA9IG5vblRlcm1pbmFsTm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW4oKSxcbiAgICAgICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuID0gbm9uVGVybWluYWxOb2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuKCksXG4gICAgICAgICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHRva2Vucy5pbmRleE9mKGZpcnN0U2lnbmlmaWNhbnRUb2tlbiksXG4gICAgICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gdG9rZW5zLmluZGV4T2YobGFzdFNpZ25pZmljYW50VG9rZW4pLFxuICAgICAgICAgICAgc3RhcnQgPSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCwgLy8vXG4gICAgICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMTtcblxuICAgICAgdG9rZW5zID0gdG9rZW5zLnNsaWNlKHN0YXJ0LCBlbmQpOyAgLy8vXG5cbiAgICAgIHN0cmluZyA9IHRva2Vucy5yZWR1Y2UoKHN0cmluZywgdG9rZW4pID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRva2VuLmdldENvbnRlbnQoKTtcblxuICAgICAgICBzdHJpbmcgPSBgJHtzdHJpbmd9JHtjb250ZW50fWA7XG5cbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH0sIEVNUFRZX1NUUklORyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0cmluZyAhPT0gbnVsbCkge1xuICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9bXFxyXFxuXS8sIEVNUFRZX1NUUklORylcbiAgfVxuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCB0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXMucmVkdWNlKChzdHJpbmcsIG5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlU3RyaW5nID0gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucyk7XG5cbiAgICBzdHJpbmcgPSAoc3RyaW5nID09PSBFTVBUWV9TVFJJTkcpID9cbiAgICAgICAgICAgICAgIG5vZGVTdHJpbmcgOlxuICAgICAgICAgICAgICAgIGAke3N0cmluZ30ke0NPTU1BfSR7bm9kZVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIm5vZGVBc1N0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJub2RlIiwidG9rZW5zIiwic3RyaW5nIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiY29udGVudCIsImdldENvbnRlbnQiLCJub25UZXJtaW5hbE5vZGUiLCJmaXJzdFNpZ25pZmljYW50VG9rZW4iLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW4iLCJsYXN0U2lnbmlmaWNhbnRUb2tlbiIsImdldExhc3RTaWduaWZpY2FudFRva2VuIiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJpbmRleE9mIiwibGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInN0YXJ0IiwiZW5kIiwic2xpY2UiLCJyZWR1Y2UiLCJ0b2tlbiIsIkVNUFRZX1NUUklORyIsInJlcGxhY2UiLCJub2RlcyIsIm5vZGVTdHJpbmciLCJDT01NQSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBSWdCQSxZQUFZO2VBQVpBOztJQXVDQUMsYUFBYTtlQUFiQTs7O3lCQXpDb0I7QUFFN0IsU0FBU0QsYUFBYUUsSUFBSSxFQUFFQyxNQUFNO0lBQ3ZDLElBQUlDLFNBQVM7SUFFYixJQUFJRixTQUFTLE1BQU07UUFDakIsSUFBTUcsbUJBQW1CSCxLQUFLSSxjQUFjO1FBRTVDLElBQUlELGtCQUFrQjtZQUNwQixJQUFNRSxlQUFlTCxNQUNmTSxVQUFVRCxhQUFhRSxVQUFVO1lBRXZDTCxTQUFTSSxTQUFTLEdBQUc7UUFDdkIsT0FBTztZQUNMLElBQU1FLGtCQUFrQlIsTUFDbEJTLHdCQUF3QkQsZ0JBQWdCRSx3QkFBd0IsSUFDaEVDLHVCQUF1QkgsZ0JBQWdCSSx1QkFBdUIsSUFDOURDLDZCQUE2QlosT0FBT2EsT0FBTyxDQUFDTCx3QkFDNUNNLDRCQUE0QmQsT0FBT2EsT0FBTyxDQUFDSCx1QkFDM0NLLFFBQVFILDRCQUNSSSxNQUFNRiw0QkFBNEI7WUFFeENkLFNBQVNBLE9BQU9pQixLQUFLLENBQUNGLE9BQU9DLE1BQU8sR0FBRztZQUV2Q2YsU0FBU0QsT0FBT2tCLE1BQU0sQ0FBQyxTQUFDakIsUUFBUWtCO2dCQUM5QixJQUFNZCxVQUFVYyxNQUFNYixVQUFVO2dCQUVoQ0wsU0FBUyxBQUFDLEdBQVdJLE9BQVRKLFFBQWlCLE9BQVJJO2dCQUVyQixPQUFPSjtZQUNULEdBQUdtQix1QkFBWTtRQUNqQjtJQUNGO0lBRUEsSUFBSW5CLFdBQVcsTUFBTTtRQUNuQkEsU0FBU0EsT0FBT29CLE9BQU8sQ0FBQyxVQUFVRCx1QkFBWTtJQUNoRDtJQUVBLE9BQU9uQjtBQUNUO0FBRU8sU0FBU0gsY0FBY3dCLEtBQUssRUFBRXRCLE1BQU07SUFDekMsSUFBTUMsU0FBU3FCLE1BQU1KLE1BQU0sQ0FBQyxTQUFDakIsUUFBUUY7UUFDbkMsSUFBTXdCLGFBQWExQixhQUFhRSxNQUFNQztRQUV0Q0MsU0FBUyxBQUFDQSxXQUFXbUIsdUJBQVksR0FDdEJHLGFBQ0MsQUFBQyxHQUFXQyxPQUFUdkIsUUFBaUJzQixPQUFSQyxnQkFBSyxFQUFjLE9BQVhEO1FBRWhDLE9BQU90QjtJQUNULEdBQUdtQix1QkFBWTtJQUVmLE9BQU9uQjtBQUNUIn0=
@@ -9,44 +9,57 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- greatestLineIndexFromNodeAndTokens: function() {
13
- return greatestLineIndexFromNodeAndTokens;
12
+ constructorDeclarationTokensFromTermString: function() {
13
+ return constructorDeclarationTokensFromTermString;
14
14
  },
15
- leastLineIndexFromNodeAndTokens: function() {
16
- return leastLineIndexFromNodeAndTokens;
15
+ labelTokensFromLabelString: function() {
16
+ return labelTokensFromLabelString;
17
+ },
18
+ metavariableDeclarationTokensFromMetavariableString: function() {
19
+ return metavariableDeclarationTokensFromMetavariableString;
20
+ },
21
+ unqualifiedMetastatementTokensFromMetastatementString: function() {
22
+ return unqualifiedMetastatementTokensFromMetastatementString;
23
+ },
24
+ unqualifiedStatementTokensFromStatementString: function() {
25
+ return unqualifiedStatementTokensFromStatementString;
26
+ },
27
+ variableDeclarationTokensFromVariableString: function() {
28
+ return variableDeclarationTokensFromVariableString;
17
29
  }
18
30
  });
19
- function leastLineIndexFromNodeAndTokens(node, tokens) {
20
- var leastLineIndex = undefined; ///
21
- var firstSignificantToken = node.getFirstSignificantToken(), firstSignificantTokenIndex = tokens.indexOf(firstSignificantToken);
22
- var lineIndex = 0;
23
- tokens.some(function(token, tokenIndex) {
24
- if (tokenIndex === firstSignificantTokenIndex) {
25
- leastLineIndex = lineIndex; ///
26
- return true;
27
- }
28
- var tokenEndOfLineToken = token.isEndOfLineToken();
29
- if (tokenEndOfLineToken) {
30
- lineIndex += 1;
31
- }
32
- });
33
- return leastLineIndex;
34
- }
35
- function greatestLineIndexFromNodeAndTokens(node, tokens) {
36
- var greatestLineIndex = undefined; ///
37
- var lastSignificantToken = node.getLastSignificantToken(), lastSignificantTokenIndex = tokens.indexOf(lastSignificantToken);
38
- var lineIndex = 0;
39
- tokens.some(function(token, tokenIndex) {
40
- if (tokenIndex === lastSignificantTokenIndex) {
41
- greatestLineIndex = lineIndex; ///
42
- return true;
43
- }
44
- var tokenEndOfLineToken = token.isEndOfLineToken();
45
- if (tokenEndOfLineToken) {
46
- lineIndex += 1;
47
- }
48
- });
49
- return greatestLineIndex;
31
+ var _occamcustomgrammars = require("occam-custom-grammars");
32
+ var _customGrammar = require("./customGrammar");
33
+ var florenceLexerFromCombinedCustomGrammar = _occamcustomgrammars.lexersUtilities.florenceLexerFromCombinedCustomGrammar;
34
+ var combinedCustomGrammar = (0, _customGrammar.combinedCustomGrammarFromNothing)(), florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
35
+ function labelTokensFromLabelString(labelString, lexer) {
36
+ var labelContent = "".concat(labelString), labelTokens = tokensFromContentAndLexer(labelContent, lexer);
37
+ return labelTokens;
38
+ }
39
+ function constructorDeclarationTokensFromTermString(termString, lexer) {
40
+ var constructorDeclarationContent = "Constructor ".concat(termString, "\n"), constructorDeclarationTokens = tokensFromContentAndLexer(constructorDeclarationContent, lexer);
41
+ return constructorDeclarationTokens;
42
+ }
43
+ function variableDeclarationTokensFromVariableString(variableString, lexer) {
44
+ var variableDeclarationContent = "Variable ".concat(variableString, "\n"), variableDeclarationTokens = tokensFromContentAndLexer(variableDeclarationContent, lexer);
45
+ return variableDeclarationTokens;
46
+ }
47
+ function unqualifiedStatementTokensFromStatementString(statementString, lexer) {
48
+ var unqualifiedStatementContent = "".concat(statementString, "\n"), unqualifiedStatementTokens = tokensFromContentAndLexer(unqualifiedStatementContent, lexer);
49
+ return unqualifiedStatementTokens;
50
+ }
51
+ function metavariableDeclarationTokensFromMetavariableString(metavariableString, lexer) {
52
+ var metavariableDeclarationContent = "Metavariable ".concat(metavariableString, "\n"), metavariableDeclarationTokens = tokensFromContentAndLexer(metavariableDeclarationContent, lexer);
53
+ return metavariableDeclarationTokens;
54
+ }
55
+ function unqualifiedMetastatementTokensFromMetastatementString(metastatementString, lexer) {
56
+ var unqualifiedMetastatementContent = "".concat(metastatementString, "\n"), unqualifiedMetastatementTokens = tokensFromContentAndLexer(unqualifiedMetastatementContent, lexer);
57
+ return unqualifiedMetastatementTokens;
58
+ }
59
+ function tokensFromContentAndLexer(content) {
60
+ var lexer = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : florenceLexer;
61
+ var tokens = lexer.tokenise(content);
62
+ return tokens;
50
63
  }
51
64
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdG9rZW5zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gbGVhc3RMaW5lSW5kZXhGcm9tTm9kZUFuZFRva2Vucyhub2RlLCB0b2tlbnMpIHtcbiAgbGV0IGxlYXN0TGluZUluZGV4ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBmaXJzdFNpZ25pZmljYW50VG9rZW4gPSBub2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbigpLFxuICAgICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHRva2Vucy5pbmRleE9mKGZpcnN0U2lnbmlmaWNhbnRUb2tlbik7XG5cbiAgbGV0IGxpbmVJbmRleCA9IDA7XG5cbiAgdG9rZW5zLnNvbWUoKHRva2VuLCB0b2tlbkluZGV4KSA9PiB7ICAvLy9cbiAgICBpZiAodG9rZW5JbmRleCA9PT0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgpIHtcbiAgICAgIGxlYXN0TGluZUluZGV4ID0gbGluZUluZGV4OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuRW5kT2ZMaW5lVG9rZW4gPSB0b2tlbi5pc0VuZE9mTGluZVRva2VuKCk7XG5cbiAgICBpZiAodG9rZW5FbmRPZkxpbmVUb2tlbikge1xuICAgICAgbGluZUluZGV4ICs9IDE7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbGVhc3RMaW5lSW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmVhdGVzdExpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zKG5vZGUsIHRva2Vucykge1xuICBsZXQgZ3JlYXRlc3RMaW5lSW5kZXggPSB1bmRlZmluZWQ7ICAvLy9cblxuICBjb25zdCBsYXN0U2lnbmlmaWNhbnRUb2tlbiA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW4oKSxcbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHRva2Vucy5pbmRleE9mKGxhc3RTaWduaWZpY2FudFRva2VuKTtcblxuICBsZXQgbGluZUluZGV4ID0gMDtcblxuICB0b2tlbnMuc29tZSgodG9rZW4sIHRva2VuSW5kZXgpID0+IHsgIC8vL1xuICAgIGlmICh0b2tlbkluZGV4ID09PSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KSB7XG4gICAgICBncmVhdGVzdExpbmVJbmRleCA9IGxpbmVJbmRleDsgIC8vL1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbkVuZE9mTGluZVRva2VuID0gdG9rZW4uaXNFbmRPZkxpbmVUb2tlbigpO1xuXG4gICAgaWYgKHRva2VuRW5kT2ZMaW5lVG9rZW4pIHtcbiAgICAgIGxpbmVJbmRleCArPSAxO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGdyZWF0ZXN0TGluZUluZGV4O1xufVxuIl0sIm5hbWVzIjpbImdyZWF0ZXN0TGluZUluZGV4RnJvbU5vZGVBbmRUb2tlbnMiLCJsZWFzdExpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zIiwibm9kZSIsInRva2VucyIsImxlYXN0TGluZUluZGV4IiwidW5kZWZpbmVkIiwiZmlyc3RTaWduaWZpY2FudFRva2VuIiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuIiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJpbmRleE9mIiwibGluZUluZGV4Iiwic29tZSIsInRva2VuIiwidG9rZW5JbmRleCIsInRva2VuRW5kT2ZMaW5lVG9rZW4iLCJpc0VuZE9mTGluZVRva2VuIiwiZ3JlYXRlc3RMaW5lSW5kZXgiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbiIsImdldExhc3RTaWduaWZpY2FudFRva2VuIiwibGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBMkJnQkEsa0NBQWtDO2VBQWxDQTs7SUF6QkFDLCtCQUErQjtlQUEvQkE7OztBQUFULFNBQVNBLGdDQUFnQ0MsSUFBSSxFQUFFQyxNQUFNO0lBQzFELElBQUlDLGlCQUFpQkMsV0FBVyxHQUFHO0lBRW5DLElBQU1DLHdCQUF3QkosS0FBS0ssd0JBQXdCLElBQ3JEQyw2QkFBNkJMLE9BQU9NLE9BQU8sQ0FBQ0g7SUFFbEQsSUFBSUksWUFBWTtJQUVoQlAsT0FBT1EsSUFBSSxDQUFDLFNBQUNDLE9BQU9DO1FBQ2xCLElBQUlBLGVBQWVMLDRCQUE0QjtZQUM3Q0osaUJBQWlCTSxXQUFZLEdBQUc7WUFFaEMsT0FBTztRQUNUO1FBRUEsSUFBTUksc0JBQXNCRixNQUFNRyxnQkFBZ0I7UUFFbEQsSUFBSUQscUJBQXFCO1lBQ3ZCSixhQUFhO1FBQ2Y7SUFDRjtJQUVBLE9BQU9OO0FBQ1Q7QUFFTyxTQUFTSixtQ0FBbUNFLElBQUksRUFBRUMsTUFBTTtJQUM3RCxJQUFJYSxvQkFBb0JYLFdBQVksR0FBRztJQUV2QyxJQUFNWSx1QkFBdUJmLEtBQUtnQix1QkFBdUIsSUFDbkRDLDRCQUE0QmhCLE9BQU9NLE9BQU8sQ0FBQ1E7SUFFakQsSUFBSVAsWUFBWTtJQUVoQlAsT0FBT1EsSUFBSSxDQUFDLFNBQUNDLE9BQU9DO1FBQ2xCLElBQUlBLGVBQWVNLDJCQUEyQjtZQUM1Q0gsb0JBQW9CTixXQUFZLEdBQUc7WUFFbkMsT0FBTztRQUNUO1FBRUEsSUFBTUksc0JBQXNCRixNQUFNRyxnQkFBZ0I7UUFFbEQsSUFBSUQscUJBQXFCO1lBQ3ZCSixhQUFhO1FBQ2Y7SUFDRjtJQUVBLE9BQU9NO0FBQ1QifQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdG9rZW5zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBsZXhlcnNVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tY3VzdG9tLWdyYW1tYXJzXCI7XG5cbmltcG9ydCB7IGNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21Ob3RoaW5nIH0gZnJvbSBcIi4vY3VzdG9tR3JhbW1hclwiO1xuXG5jb25zdCB7IGZsb3JlbmNlTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBsZXhlcnNVdGlsaXRpZXM7XG5cbmNvbnN0IGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IGNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21Ob3RoaW5nKCksXG4gICAgICBmbG9yZW5jZUxleGVyID0gZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoY29tYmluZWRDdXN0b21HcmFtbWFyKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsVG9rZW5zRnJvbUxhYmVsU3RyaW5nKGxhYmVsU3RyaW5nLCBsZXhlcikge1xuICBjb25zdCBsYWJlbENvbnRlbnQgPSBgJHtsYWJlbFN0cmluZ31gLFxuICAgICAgICBsYWJlbFRva2VucyA9IHRva2Vuc0Zyb21Db250ZW50QW5kTGV4ZXIobGFiZWxDb250ZW50LCBsZXhlcik7XG5cbiAgcmV0dXJuIGxhYmVsVG9rZW5zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JEZWNsYXJhdGlvblRva2Vuc0Zyb21UZXJtU3RyaW5nKHRlcm1TdHJpbmcsIGxleGVyKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Db250ZW50ID0gYENvbnN0cnVjdG9yICR7dGVybVN0cmluZ31cbmAsXG4gICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMgPSB0b2tlbnNGcm9tQ29udGVudEFuZExleGVyKGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Db250ZW50LCBsZXhlcik7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zRnJvbVZhcmlhYmxlU3RyaW5nKHZhcmlhYmxlU3RyaW5nLCBsZXhlcikge1xuICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uQ29udGVudCA9IGBWYXJpYWJsZSAke3ZhcmlhYmxlU3RyaW5nfVxuYCxcbiAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvblRva2VucyA9IHRva2Vuc0Zyb21Db250ZW50QW5kTGV4ZXIodmFyaWFibGVEZWNsYXJhdGlvbkNvbnRlbnQsIGxleGVyKTtcblxuICByZXR1cm4gdmFyaWFibGVEZWNsYXJhdGlvblRva2Vucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zRnJvbVN0YXRlbWVudFN0cmluZyhzdGF0ZW1lbnRTdHJpbmcsIGxleGVyKSB7XG4gIGNvbnN0IHVucXVhbGlmaWVkU3RhdGVtZW50Q29udGVudCA9IGAke3N0YXRlbWVudFN0cmluZ31cbmAsXG4gICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zID0gdG9rZW5zRnJvbUNvbnRlbnRBbmRMZXhlcih1bnF1YWxpZmllZFN0YXRlbWVudENvbnRlbnQsIGxleGVyKTtcblxuICByZXR1cm4gdW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVEZWNsYXJhdGlvblRva2Vuc0Zyb21NZXRhdmFyaWFibGVTdHJpbmcobWV0YXZhcmlhYmxlU3RyaW5nLCBsZXhlcikge1xuICBjb25zdCBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbkNvbnRlbnQgPSBgTWV0YXZhcmlhYmxlICR7bWV0YXZhcmlhYmxlU3RyaW5nfVxuYCxcbiAgICAgICAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ub2tlbnMgPSB0b2tlbnNGcm9tQ29udGVudEFuZExleGVyKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uQ29udGVudCwgbGV4ZXIpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVEZWNsYXJhdGlvblRva2Vucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFRva2Vuc0Zyb21NZXRhc3RhdGVtZW50U3RyaW5nKG1ldGFzdGF0ZW1lbnRTdHJpbmcsIGxleGVyKSB7XG4gIGNvbnN0IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudENvbnRlbnQgPSBgJHttZXRhc3RhdGVtZW50U3RyaW5nfVxuYCxcbiAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VG9rZW5zID0gdG9rZW5zRnJvbUNvbnRlbnRBbmRMZXhlcih1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRDb250ZW50LCBsZXhlcik7XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFRva2Vucztcbn1cblxuZnVuY3Rpb24gdG9rZW5zRnJvbUNvbnRlbnRBbmRMZXhlcihjb250ZW50LCBsZXhlciA9IGZsb3JlbmNlTGV4ZXIpIHtcbiAgY29uc3QgdG9rZW5zID0gbGV4ZXIudG9rZW5pc2UoY29udGVudCk7XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cbiJdLCJuYW1lcyI6WyJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zRnJvbVRlcm1TdHJpbmciLCJsYWJlbFRva2Vuc0Zyb21MYWJlbFN0cmluZyIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVG9rZW5zRnJvbU1ldGF2YXJpYWJsZVN0cmluZyIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFRva2Vuc0Zyb21NZXRhc3RhdGVtZW50U3RyaW5nIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tU3RhdGVtZW50U3RyaW5nIiwidmFyaWFibGVEZWNsYXJhdGlvblRva2Vuc0Zyb21WYXJpYWJsZVN0cmluZyIsImZsb3JlbmNlTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIiwibGV4ZXJzVXRpbGl0aWVzIiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbU5vdGhpbmciLCJmbG9yZW5jZUxleGVyIiwibGFiZWxTdHJpbmciLCJsZXhlciIsImxhYmVsQ29udGVudCIsImxhYmVsVG9rZW5zIiwidG9rZW5zRnJvbUNvbnRlbnRBbmRMZXhlciIsInRlcm1TdHJpbmciLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uQ29udGVudCIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMiLCJ2YXJpYWJsZVN0cmluZyIsInZhcmlhYmxlRGVjbGFyYXRpb25Db250ZW50IiwidmFyaWFibGVEZWNsYXJhdGlvblRva2VucyIsInN0YXRlbWVudFN0cmluZyIsInVucXVhbGlmaWVkU3RhdGVtZW50Q29udGVudCIsInVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Db250ZW50IiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ub2tlbnMiLCJtZXRhc3RhdGVtZW50U3RyaW5nIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Q29udGVudCIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFRva2VucyIsImNvbnRlbnQiLCJ0b2tlbnMiLCJ0b2tlbmlzZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBa0JnQkEsMENBQTBDO2VBQTFDQTs7SUFQQUMsMEJBQTBCO2VBQTFCQTs7SUErQkFDLG1EQUFtRDtlQUFuREE7O0lBUUFDLHFEQUFxRDtlQUFyREE7O0lBaEJBQyw2Q0FBNkM7ZUFBN0NBOztJQVJBQywyQ0FBMkM7ZUFBM0NBOzs7bUNBeEJnQjs2QkFFaUI7QUFFakQsSUFBTSxBQUFFQyx5Q0FBMkNDLG9DQUFlLENBQTFERDtBQUVSLElBQU1FLHdCQUF3QkMsSUFBQUEsK0NBQWdDLEtBQ3hEQyxnQkFBZ0JKLHVDQUF1Q0U7QUFFdEQsU0FBU1AsMkJBQTJCVSxXQUFXLEVBQUVDLEtBQUs7SUFDM0QsSUFBTUMsZUFBZSxBQUFDLEdBQWMsT0FBWkYsY0FDbEJHLGNBQWNDLDBCQUEwQkYsY0FBY0Q7SUFFNUQsT0FBT0U7QUFDVDtBQUVPLFNBQVNkLDJDQUEyQ2dCLFVBQVUsRUFBRUosS0FBSztJQUMxRSxJQUFNSyxnQ0FBZ0MsQUFBQyxlQUF5QixPQUFYRCxZQUFXLE9BRTFERSwrQkFBK0JILDBCQUEwQkUsK0JBQStCTDtJQUU5RixPQUFPTTtBQUNUO0FBRU8sU0FBU2IsNENBQTRDYyxjQUFjLEVBQUVQLEtBQUs7SUFDL0UsSUFBTVEsNkJBQTZCLEFBQUMsWUFBMEIsT0FBZkQsZ0JBQWUsT0FFeERFLDRCQUE0Qk4sMEJBQTBCSyw0QkFBNEJSO0lBRXhGLE9BQU9TO0FBQ1Q7QUFFTyxTQUFTakIsOENBQThDa0IsZUFBZSxFQUFFVixLQUFLO0lBQ2xGLElBQU1XLDhCQUE4QixBQUFDLEdBQWtCLE9BQWhCRCxpQkFBZ0IsT0FFakRFLDZCQUE2QlQsMEJBQTBCUSw2QkFBNkJYO0lBRTFGLE9BQU9ZO0FBQ1Q7QUFFTyxTQUFTdEIsb0RBQW9EdUIsa0JBQWtCLEVBQUViLEtBQUs7SUFDM0YsSUFBTWMsaUNBQWlDLEFBQUMsZ0JBQWtDLE9BQW5CRCxvQkFBbUIsT0FFcEVFLGdDQUFnQ1osMEJBQTBCVyxnQ0FBZ0NkO0lBRWhHLE9BQU9lO0FBQ1Q7QUFFTyxTQUFTeEIsc0RBQXNEeUIsbUJBQW1CLEVBQUVoQixLQUFLO0lBQzlGLElBQU1pQixrQ0FBa0MsQUFBQyxHQUFzQixPQUFwQkQscUJBQW9CLE9BRXpERSxpQ0FBaUNmLDBCQUEwQmMsaUNBQWlDakI7SUFFbEcsT0FBT2tCO0FBQ1Q7QUFFQSxTQUFTZiwwQkFBMEJnQixPQUFPO1FBQUVuQixRQUFBQSxpRUFBUUY7SUFDbEQsSUFBTXNCLFNBQVNwQixNQUFNcUIsUUFBUSxDQUFDRjtJQUU5QixPQUFPQztBQUNUIn0=
@@ -33,7 +33,7 @@ function verifyTypeAssertion(typeAssertionNode, assignments, derived, context) {
33
33
  context.debug("Verifying the '".concat(typeAssertionString, "' type assertion..."), typeAssertionNode);
34
34
  var typeNode = typeNodeQuery(typeAssertionNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = context.isTypePresentByTypeName(typeName);
35
35
  if (!typePresent) {
36
- context.error("The ".concat(typeName, " type is not present."), typeAssertionNode);
36
+ context.error("The '".concat(typeName, "' type is not present."), typeAssertionNode);
37
37
  } else {
38
38
  if (!typeAssertionVerified) {
39
39
  var variableTypeAssertionVerified = verifyVariableTypeAssertion(typeAssertionNode, assignments, derived, context);
@@ -112,4 +112,4 @@ function verifyTermTypeAssertion(typeAssertionNode, derived, context) {
112
112
  return termTypeAssertionVerified;
113
113
  }
114
114
 
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbmltcG9ydCBBc3NpZ25tZW50IGZyb20gXCIuLi8uLi9hc3NpZ25tZW50XCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlLCB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyB9IGZyb20gXCIuLi8uLi92ZXJpZnkvdGVybVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdGVybSFcIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0KSB7XG4gIGxldCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIGNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLi4uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICBjb250ZXh0LmVycm9yKGBUaGUgJHt0eXBlTmFtZX0gdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCF0eXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCk7XG5cbiAgICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkOyAgLy8vXG4gICAgfVxuXG4gICAgaWYgKCF0eXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUZXJtVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgZGVyaXZlZCwgY29udGV4dCk7XG5cbiAgICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7ICAvLy9cbiAgICB9XG4gIH1cblxuICBpZiAodHlwZUFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgY29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHN0YXRlbWVudCB0eXBlIGFzc2VydGlvbi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCkge1xuICBsZXQgdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4gICAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgICBhc3NlcnRlZFR5cGVOYW1lID0gdHlwZU5hbWUsICAvLy9cbiAgICAgICAgICBhc3NlcnRlZFR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZShhc3NlcnRlZFR5cGVOYW1lKTtcblxuICAgIGlmIChhc3NlcnRlZFR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZXJyb3IoYFRoZSAnJHthc3NlcnRlZFR5cGVOYW1lfScgYXNzZXJ0ZWQgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpcnN0VmFyaWFibGUgPSBmaXJzdCh2YXJpYWJsZXMpLFxuICAgICAgICAgICAgdmFyaWFibGUgPSBmaXJzdFZhcmlhYmxlLCAvLy9cbiAgICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlLmdldE5hbWUoKSxcbiAgICAgICAgICAgIHZhcmlhYmxlVHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKTtcblxuICAgICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgICAgY29uc3QgYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZWYXJpYWJsZVR5cGUgPSBhc3NlcnRlZFR5cGUuaXNFcXVhbFRvT3JTdXBlclR5cGVPZih2YXJpYWJsZVR5cGUpO1xuXG4gICAgICAgIGlmICghYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZWYXJpYWJsZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBhc3NlcnRlZFR5cGVOYW1lID0gYXNzZXJ0ZWRUeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZVR5cGVOYW1lID0gdmFyaWFibGVUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICAgIGNvbnRleHQuZXJyb3IoYFRoZSAnJHthc3NlcnRlZFR5cGVOYW1lfScgYXNzZXJ0ZWQgdHlwZSBpcyBub3QgZXF1YWwgdG8gb3IgYSBzdXBlci10eXBlIG9mIHRoZSAnJHt2YXJpYWJsZU5hbWV9JyB2YXJpYWJsZSdzICcke3ZhcmlhYmxlVHlwZU5hbWV9JyB0eXBlLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSA9IGFzc2VydGVkVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih2YXJpYWJsZVR5cGUpO1xuXG4gICAgICAgIGlmICghYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlKSB7XG4gICAgICAgICAgY29uc3QgYXNzZXJ0ZWRUeXBlTmFtZSA9IGFzc2VydGVkVHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlTmFtZSA9IHZhcmlhYmxlVHlwZS5nZXROYW1lKCk7XG5cbiAgICAgICAgICBjb250ZXh0LmVycm9yKGBUaGUgJyR7YXNzZXJ0ZWRUeXBlTmFtZX0nIGFzc2VydGVkIHR5cGUgaXMgbm90IGVxdWFsIHRvIG9yIGEgc3ViLXR5cGUgb2YgdGhlICcke3ZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlJ3MgJyR7dmFyaWFibGVUeXBlTmFtZX0nIHR5cGUuYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgICAgICB0eXBlID0gYXNzZXJ0ZWRUeXBlLCAgLy8vXG4gICAgICAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tTmFtZUFuZFR5cGUobmFtZSwgdHlwZSksXG4gICAgICAgICAgICAgICAgYXNzaWdubWVudCA9IEFzc2lnbm1lbnQuZnJvbVZhcmlhYmxlKHZhcmlhYmxlKTtcblxuICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICAgICAgICB2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBkZXJpdmVkLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMpIHtcbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgIGFzc2VydGVkVHlwZU5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIGFzc2VydGVkVHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKGFzc2VydGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKGFzc2VydGVkVHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke2Fzc2VydGVkVHlwZU5hbWV9JyBhc3NlcnRlZCB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgdGVybVR5cGUgPSBmaXJzdFR5cGU7IC8vL1xuXG4gICAgICBpZiAoZGVyaXZlZCkge1xuICAgICAgICBjb25zdCBhc3NlcnRlZFR5cGVJc0VxdWFsVG9PclN1cGVyVHlwZU9mVGVybVR5cGUgPSBhc3NlcnRlZFR5cGUuaXNFcXVhbFRvT3JTdXBlclR5cGVPZih0ZXJtVHlwZSk7XG5cbiAgICAgICAgaWYgKCFhc3NlcnRlZFR5cGVJc0VxdWFsVG9PclN1cGVyVHlwZU9mVGVybVR5cGUpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpLFxuICAgICAgICAgICAgICAgIHRlcm1UeXBlTmFtZSA9IHRlcm1UeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICBhc3NlcnRlZFR5cGVOYW1lID0gYXNzZXJ0ZWRUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICAgIGNvbnRleHQuZXJyb3IoYFRoZSAnJHthc3NlcnRlZFR5cGVOYW1lfScgYXNzZXJ0ZWQgdHlwZSBpcyBub3QgZXF1YWwgdG8gb3IgYSBzdXBlci10eXBlIG9mIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSdzICcke3Rlcm1UeXBlTmFtZX0nIHR5cGUuYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhc3NlcnRlZFR5cGVJc0VxdWFsVG9PclN1YlR5cGVPZlRlcm1UeXBlID0gYXNzZXJ0ZWRUeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHRlcm1UeXBlKTtcblxuICAgICAgICBpZiAoIWFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpLFxuICAgICAgICAgICAgICAgIHRlcm1UeXBlTmFtZSA9IHRlcm1UeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICBhc3NlcnRlZFR5cGVOYW1lID0gYXNzZXJ0ZWRUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICAgIGNvbnRleHQuZXJyb3IoYFRoZSAnJHthc3NlcnRlZFR5cGVOYW1lfScgYXNzZXJ0ZWQgdHlwZSBpcyBub3QgZXF1YWwgdG8gb3IgYSBzdWItdHlwZSBvZiB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0ncyAnJHt0ZXJtVHlwZU5hbWV9JyB0eXBlLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuXG4iXSwibmFtZXMiOlsidmVyaWZ5VHlwZUFzc2VydGlvbiIsInZlcmlmeVZhcmlhYmxlVHlwZUFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJjb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidHlwZUFzc2VydGlvblN0cmluZyIsIm5vZGVBc1N0cmluZyIsImRlYnVnIiwidHlwZU5vZGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsImVycm9yIiwidmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkIiwidmVyaWZ5VGVybVR5cGVBc3NlcnRpb24iLCJpbmZvIiwidmFyaWFibGVzIiwidGVybU5vZGUiLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJhc3NlcnRlZFR5cGVOYW1lIiwiYXNzZXJ0ZWRUeXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZmlyc3RWYXJpYWJsZSIsImZpcnN0IiwidmFyaWFibGUiLCJ2YXJpYWJsZU5hbWUiLCJnZXROYW1lIiwidmFyaWFibGVUeXBlIiwiZ2V0VHlwZSIsImFzc2VydGVkVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mVmFyaWFibGVUeXBlIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsInZhcmlhYmxlVHlwZU5hbWUiLCJhc3NlcnRlZFR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZWYXJpYWJsZVR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsIm5hbWUiLCJ0eXBlIiwiVmFyaWFibGUiLCJmcm9tTmFtZUFuZFR5cGUiLCJhc3NpZ25tZW50IiwiQXNzaWdubWVudCIsImZyb21WYXJpYWJsZSIsInB1c2giLCJ0eXBlcyIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMiLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsImZpcnN0VHlwZSIsInRlcm1UeXBlIiwiYXNzZXJ0ZWRUeXBlSXNFcXVhbFRvT3JTdXBlclR5cGVPZlRlcm1UeXBlIiwidGVybVN0cmluZyIsInRlcm1UeXBlTmFtZSIsImFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQVlBLE9BZ0NDO2VBaEN1QkE7O0lBa0NSQywyQkFBMkI7ZUFBM0JBOzs7K0RBNUNLO2lFQUNFO3FCQUVEO3FCQUMwQjtvQkFDb0I7Ozs7OztBQUVwRSxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMseUJBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0gsb0JBQW9CSyxpQkFBaUIsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLE9BQU87SUFDMUYsSUFBSUMsd0JBQXdCO0lBRTVCLElBQU1DLHNCQUFzQkYsUUFBUUcsWUFBWSxDQUFDTjtJQUVqREcsUUFBUUksS0FBSyxDQUFDLEFBQUMsa0JBQXFDLE9BQXBCRixxQkFBb0Isd0JBQXNCTDtJQUUxRSxJQUFNUSxXQUFXVCxjQUFjQyxvQkFDekJTLFdBQVdDLElBQUFBLDJCQUFvQixFQUFDRixXQUNoQ0csY0FBY1IsUUFBUVMsdUJBQXVCLENBQUNIO0lBRXBELElBQUksQ0FBQ0UsYUFBYTtRQUNoQlIsUUFBUVUsS0FBSyxDQUFDLEFBQUMsT0FBZSxPQUFUSixVQUFTLDBCQUF3QlQ7SUFDeEQsT0FBTztRQUNMLElBQUksQ0FBQ0ksdUJBQXVCO1lBQzFCLElBQU1VLGdDQUFnQ2xCLDRCQUE0QkksbUJBQW1CQyxhQUFhQyxTQUFTQztZQUUzR0Msd0JBQXdCVSwrQkFBZ0MsR0FBRztRQUM3RDtRQUVBLElBQUksQ0FBQ1YsdUJBQXVCO1lBQzFCLElBQU1XLDRCQUE0QkMsd0JBQXdCaEIsbUJBQW1CRSxTQUFTQztZQUV0RkMsd0JBQXdCVywyQkFBNEIsR0FBRztRQUN6RDtJQUNGO0lBRUEsSUFBSVgsdUJBQXVCO1FBQ3pCRCxRQUFRYyxJQUFJLENB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
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbmltcG9ydCBBc3NpZ25tZW50IGZyb20gXCIuLi8uLi9hc3NpZ25tZW50XCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlLCB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyB9IGZyb20gXCIuLi8uLi92ZXJpZnkvdGVybVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdGVybSFcIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0KSB7XG4gIGxldCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIGNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLi4uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICBjb250ZXh0LmVycm9yKGBUaGUgJyR7dHlwZU5hbWV9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgICAgY29uc3QgdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlWYXJpYWJsZVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0KTtcblxuICAgICAgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAoIXR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgICAgY29uc3QgdGVybVR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVRlcm1UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBkZXJpdmVkLCBjb250ZXh0KTtcblxuICAgICAgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gdGVybVR5cGVBc3NlcnRpb25WZXJpZmllZDsgIC8vL1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVtZW50IHR5cGUgYXNzZXJ0aW9uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlWYXJpYWJsZVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0KSB7XG4gIGxldCB2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgaWYgKHRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgIGFzc2VydGVkVHlwZU5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIGFzc2VydGVkVHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKGFzc2VydGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKGFzc2VydGVkVHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke2Fzc2VydGVkVHlwZU5hbWV9JyBhc3NlcnRlZCB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICB2YXJpYWJsZSA9IGZpcnN0VmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVOYW1lID0gdmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICBpZiAoZGVyaXZlZCkge1xuICAgICAgICBjb25zdCBhc3NlcnRlZFR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlZhcmlhYmxlVHlwZSA9IGFzc2VydGVkVHlwZS5pc0VxdWFsVG9PclN1cGVyVHlwZU9mKHZhcmlhYmxlVHlwZSk7XG5cbiAgICAgICAgaWYgKCFhc3NlcnRlZFR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgICAgICAgIGNvbnN0IGFzc2VydGVkVHlwZU5hbWUgPSBhc3NlcnRlZFR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlVHlwZU5hbWUgPSB2YXJpYWJsZVR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke2Fzc2VydGVkVHlwZU5hbWV9JyBhc3NlcnRlZCB0eXBlIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1cGVyLXR5cGUgb2YgdGhlICcke3ZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlJ3MgJyR7dmFyaWFibGVUeXBlTmFtZX0nIHR5cGUuYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlID0gYXNzZXJ0ZWRUeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHZhcmlhYmxlVHlwZSk7XG5cbiAgICAgICAgaWYgKCFhc3NlcnRlZFR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZWYXJpYWJsZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBhc3NlcnRlZFR5cGVOYW1lID0gYXNzZXJ0ZWRUeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZVR5cGVOYW1lID0gdmFyaWFibGVUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICAgIGNvbnRleHQuZXJyb3IoYFRoZSAnJHthc3NlcnRlZFR5cGVOYW1lfScgYXNzZXJ0ZWQgdHlwZSBpcyBub3QgZXF1YWwgdG8gb3IgYSBzdWItdHlwZSBvZiB0aGUgJyR7dmFyaWFibGVOYW1lfScgdmFyaWFibGUncyAnJHt2YXJpYWJsZVR5cGVOYW1lfScgdHlwZS5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICAgIHR5cGUgPSBhc3NlcnRlZFR5cGUsICAvLy9cbiAgICAgICAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21OYW1lQW5kVHlwZShuYW1lLCB0eXBlKSxcbiAgICAgICAgICAgICAgICBhc3NpZ25tZW50ID0gQXNzaWdubWVudC5mcm9tVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICAgICAgYXNzaWdubWVudHMucHVzaChhc3NpZ25tZW50KTtcblxuICAgICAgICAgIHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGRlcml2ZWQsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHR5cGVzLCBjb250ZXh0KTtcblxuICBpZiAodGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycykge1xuICAgIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgICAgYXNzZXJ0ZWRUeXBlTmFtZSA9IHR5cGVOYW1lLCAgLy8vXG4gICAgICAgICAgYXNzZXJ0ZWRUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUoYXNzZXJ0ZWRUeXBlTmFtZSk7XG5cbiAgICBpZiAoYXNzZXJ0ZWRUeXBlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmVycm9yKGBUaGUgJyR7YXNzZXJ0ZWRUeXBlTmFtZX0nIGFzc2VydGVkIHR5cGUgaXMgbm90IHByZXNlbnQuYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICB0ZXJtVHlwZSA9IGZpcnN0VHlwZTsgLy8vXG5cbiAgICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3VwZXJUeXBlT2ZUZXJtVHlwZSA9IGFzc2VydGVkVHlwZS5pc0VxdWFsVG9PclN1cGVyVHlwZU9mKHRlcm1UeXBlKTtcblxuICAgICAgICBpZiAoIWFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3VwZXJUeXBlT2ZUZXJtVHlwZSkge1xuICAgICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgICAgICAgICAgdGVybVR5cGVOYW1lID0gdGVybVR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIGFzc2VydGVkVHlwZU5hbWUgPSBhc3NlcnRlZFR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke2Fzc2VydGVkVHlwZU5hbWV9JyBhc3NlcnRlZCB0eXBlIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1cGVyLXR5cGUgb2YgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtJ3MgJyR7dGVybVR5cGVOYW1lfScgdHlwZS5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGVybVR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUgPSBhc3NlcnRlZFR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodGVybVR5cGUpO1xuXG4gICAgICAgIGlmICghYXNzZXJ0ZWRUeXBlSXNFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSkge1xuICAgICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgICAgICAgICAgdGVybVR5cGVOYW1lID0gdGVybVR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIGFzc2VydGVkVHlwZU5hbWUgPSBhc3NlcnRlZFR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke2Fzc2VydGVkVHlwZU5hbWV9JyBhc3NlcnRlZCB0eXBlIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1Yi10eXBlIG9mIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSdzICcke3Rlcm1UeXBlTmFtZX0nIHR5cGUuYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG5cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIiwidmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImNvbnRleHQiLCJ0eXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwiZXJyb3IiLCJ2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZCIsInRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtVHlwZUFzc2VydGlvbiIsImluZm8iLCJ2YXJpYWJsZXMiLCJ0ZXJtTm9kZSIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJ2ZXJpZnlUZXJtQXNWYXJpYWJsZSIsImFzc2VydGVkVHlwZU5hbWUiLCJhc3NlcnRlZFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJmaXJzdFZhcmlhYmxlIiwiZmlyc3QiLCJ2YXJpYWJsZSIsInZhcmlhYmxlTmFtZSIsImdldE5hbWUiLCJ2YXJpYWJsZVR5cGUiLCJnZXRUeXBlIiwiYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZWYXJpYWJsZVR5cGUiLCJpc0VxdWFsVG9PclN1cGVyVHlwZU9mIiwidmFyaWFibGVUeXBlTmFtZSIsImFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwibmFtZSIsInR5cGUiLCJWYXJpYWJsZSIsImZyb21OYW1lQW5kVHlwZSIsImFzc2lnbm1lbnQiLCJBc3NpZ25tZW50IiwiZnJvbVZhcmlhYmxlIiwicHVzaCIsInR5cGVzIiwidGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyIsInZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzIiwiZmlyc3RUeXBlIiwidGVybVR5cGUiLCJhc3NlcnRlZFR5cGVJc0VxdWFsVG9PclN1cGVyVHlwZU9mVGVybVR5cGUiLCJ0ZXJtU3RyaW5nIiwidGVybVR5cGVOYW1lIiwiYXNzZXJ0ZWRUeXBlSXNFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBWUEsT0FnQ0M7ZUFoQ3VCQTs7SUFrQ1JDLDJCQUEyQjtlQUEzQkE7OzsrREE1Q0s7aUVBQ0U7cUJBRUQ7cUJBQzBCO29CQUNvQjs7Ozs7O0FBRXBFLElBQU1DLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyx5QkFDMUJDLGdCQUFnQkQsSUFBQUEsZ0JBQVMsRUFBQztBQUVqQixTQUFTSCxvQkFBb0JLLGlCQUFpQixFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsT0FBTztJQUMxRixJQUFJQyx3QkFBd0I7SUFFNUIsSUFBTUMsc0JBQXNCRixRQUFRRyxZQUFZLENBQUNOO0lBRWpERyxRQUFRSSxLQUFLLENBQUMsQUFBQyxrQkFBcUMsT0FBcEJGLHFCQUFvQix3QkFBc0JMO0lBRTFFLElBQU1RLFdBQVdULGNBQWNDLG9CQUN6QlMsV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNGLFdBQ2hDRyxjQUFjUixRQUFRUyx1QkFBdUIsQ0FBQ0g7SUFFcEQsSUFBSSxDQUFDRSxhQUFhO1FBQ2hCUixRQUFRVSxLQUFLLENBQUMsQUFBQyxRQUFnQixPQUFUSixVQUFTLDJCQUF5QlQ7SUFDMUQsT0FBTztRQUNMLElBQUksQ0FBQ0ksdUJBQXVCO1lBQzFCLElBQU1VLGdDQUFnQ2xCLDRCQUE0QkksbUJBQW1CQyxhQUFhQyxTQUFTQztZQUUzR0Msd0JBQXdCVSwrQkFBZ0MsR0FBRztRQUM3RDtRQUVBLElBQUksQ0FBQ1YsdUJBQXVCO1lBQzFCLElBQU1XLDRCQUE0QkMsd0JBQXdCaEIsbUJBQW1CRSxTQUFTQztZQUV0RkMsd0JBQXdCVywyQkFBNEIsR0FBRztRQUN6RDtJQUNGO0lBRUEsSUFBSVgsdUJBQXVCO1FBQ3pCRCxRQUFRYyxJQUFJ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
@@ -159,11 +159,16 @@ var MetastatementVerifier = /*#__PURE__*/ function(Verifier) {
159
159
  var metastatementVerifier = new MetastatementVerifier();
160
160
  function verifyMetastatement(metastatementNode, derived, metaproofContext) {
161
161
  var metastatementVerified = false;
162
+ var metastatementString = metaproofContext.nodeAsString(metastatementNode);
163
+ metaproofContext.debug("Verifying the '".concat(metastatementString, "' metastatement..."), metastatementNode);
162
164
  if (!metastatementVerified) {
163
165
  var nonTerminalNodeA = metastatementNode, nonTerminalNodeB = metastatementNode, nonTerminalNodeVerified = metastatementVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, metaproofContext);
164
166
  metastatementVerified = nonTerminalNodeVerified; ///
165
167
  }
168
+ if (metastatementVerified) {
169
+ metaproofContext.debug("Verified the '".concat(metastatementString, "' metastatement."), metastatementNode);
170
+ }
166
171
  return metastatementVerified;
167
172
  }
168
173
 
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllclwiO1xuXG5pbXBvcnQgeyBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jbGFzcyBNZXRhc3RhdGVtZW50VmVyaWZpZXIgZXh0ZW5kcyBWZXJpZmllciB7XG4gIHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBtZXRhcHJvb2ZDb250ZXh0KSB7XG4gICAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub25UZXJtaW5hbE5vZGVBLCAvLy9cbiAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICAgIHN3aXRjaCAocnVsZU5hbWUpIHtcbiAgICAgIGNhc2UgTUVUQVZBUklBQkxFX1JVTEVfTkFNRToge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkOyAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgbm9kZXNBID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIG5vZGVzQiA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICBub2Rlc1ZlcmlmaWVkID0gdGhpcy52ZXJpZnlOb2Rlcyhub2Rlc0EsIG5vZGVzQiwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBub2Rlc1ZlcmlmaWVkOyAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBtZXRhcHJvb2ZDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIGlmICghbWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXByb29mQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIG1ldGFwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgaXMgbm90IHByZXNlbnQuYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVWZXJpZmllZDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWV0YXN0YXRlbWVudFZlcmlmaWVyID0gbmV3IE1ldGFzdGF0ZW1lbnRWZXJpZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhc3RhdGVtZW50KG1ldGFzdGF0ZW1lbnROb2RlLCBkZXJpdmVkLCBtZXRhcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBtZXRhc3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBpZiAoIW1ldGFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUEgPSBtZXRhc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlQiA9IG1ldGFzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG1ldGFzdGF0ZW1lbnRWZXJpZmllci52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQiwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICBtZXRhc3RhdGVtZW50VmVyaWZpZWQgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIG1ldGFzdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhc3RhdGVtZW50IiwibWV0YXN0YXRlbWVudFZlcmlmaWVyIiwiTWV0YXN0YXRlbWVudFZlcmlmaWVyIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJtZXRhcHJvb2ZDb250ZXh0Iiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJub25UZXJtaW5hbE5vZGUiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhdmFyaWFibGVOb2RlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJub2Rlc0EiLCJub2Rlc0IiLCJub2Rlc1ZlcmlmaWVkIiwidmVyaWZ5Tm9kZXMiLCJtZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZVN0cmluZyIsIm5vZGVBc1N0cmluZyIsImVycm9yIiwiVmVyaWZpZXIiLCJtZXRhc3RhdGVtZW50Tm9kZSIsImRlcml2ZWQiLCJtZXRhc3RhdGVtZW50VmVyaWZpZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQTJEQSxPQVlDO2VBWnVCQTs7SUFGWEMscUJBQXFCO2VBQXJCQTs7OytEQXZEUTt5QkFFa0I7cUJBQ2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFckQsSUFBQSxBQUFNQyxzQ0FrREgsQUFsREg7Y0FBTUE7K0JBQUFBO2FBQUFBO2dDQUFBQTs7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQkMsZ0JBQWdCLEVBQUVDLGdCQUFnQixFQUFFQyxnQkFBZ0I7Z0JBQ3hFLElBQUlDLDBCQUEwQjtnQkFFOUIsSUFBTUMsa0JBQWtCSixrQkFDbEJLLFdBQVdELGdCQUFnQkUsV0FBVyxJQUFJLEdBQUc7Z0JBRW5ELE9BQVFEO29CQUNOLEtBQUtFLGlDQUFzQjt3QkFBRTs0QkFDM0IsSUFBTUMsbUJBQW1CSixpQkFDbkJLLDJCQUEyQixJQUFJLENBQUNDLHNCQUFzQixDQUFDRixrQkFBa0JOOzRCQUUvRUMsMEJBQTBCTSwwQkFBMEIsR0FBRzs0QkFFdkQ7d0JBQ0Y7b0JBRUE7d0JBQVM7NEJBQ1AsSUFBTUUsYUFBYVAsZ0JBQWdCUSxhQUFhLElBQzFDQyxTQUFTRixZQUNURyxTQUFTSCxZQUNUSSxnQkFBZ0IsSUFBSSxDQUFDQyxXQUFXLENBQUNILFFBQVFDLFFBQVFaOzRCQUV2REMsMEJBQTBCWSxlQUFlLEdBQUc7NEJBRTVDO3dCQUNGO2dCQUNGO2dCQUVBLE9BQU9aO1lBQ1Q7OztZQUVBTyxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCRixnQkFBZ0IsRUFBRU4sZ0JBQWdCO2dCQUN2RCxJQUFJTywyQkFBMkI7Z0JBRS9CLElBQU1RLG1CQUFtQkMsSUFBQUEsMkNBQW9DLEVBQUNWLG1CQUN4RFcsc0JBQXNCakIsaUJBQWlCa0IsdUNBQXVDLENBQUNIO2dCQUVyRixJQUFJLENBQUNFLHFCQUFxQjtvQkFDeEIsSUFBTUUscUJBQXFCbkIsaUJBQWlCb0IsWUFBWSxDQUFDZDtvQkFFekROLGlCQUFpQnFCLEtBQUssQ0FBQyxBQUFDLFFBQTBCLE9BQW5CRixvQkFBbUIsbUNBQWlDYjtnQkFDckYsT0FBTztvQkFDTEMsMkJBQTJCO2dCQUM3QjtnQkFFQSxPQUFPQTtZQUNUOzs7V0EvQ0lYO0VBQThCMEIsaUJBQVE7QUFrRHJDLElBQU0zQix3QkFBd0IsSUFBSUM7QUFFMUIsU0FBU0Ysb0JBQW9CNkIsaUJBQWlCLEVBQUVDLE9BQU8sRUFBRXhCLGdCQUFnQjtJQUN0RixJQUFJeUIsd0JBQXdCO0lBRTVCLElBQUksQ0FBQ0EsdUJBQXVCO1FBQzFCLElBQU0zQixtQkFBbUJ5QixtQkFDbkJ4QixtQkFBbUJ3QixtQkFDbkJ0QiwwQkFBMEJOLHNCQUFzQkUscUJBQXFCLENBQUNDLGtCQUFrQkMsa0JBQWtCQztRQUVoSHlCLHdCQUF3QnhCLHlCQUEwQixHQUFHO0lBQ3ZEO0lBRUEsT0FBT3dCO0FBQ1QifQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllclwiO1xuXG5pbXBvcnQgeyBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jbGFzcyBNZXRhc3RhdGVtZW50VmVyaWZpZXIgZXh0ZW5kcyBWZXJpZmllciB7XG4gIHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBtZXRhcHJvb2ZDb250ZXh0KSB7XG4gICAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub25UZXJtaW5hbE5vZGVBLCAvLy9cbiAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICAgIHN3aXRjaCAocnVsZU5hbWUpIHtcbiAgICAgIGNhc2UgTUVUQVZBUklBQkxFX1JVTEVfTkFNRToge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkOyAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgbm9kZXNBID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIG5vZGVzQiA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICBub2Rlc1ZlcmlmaWVkID0gdGhpcy52ZXJpZnlOb2Rlcyhub2Rlc0EsIG5vZGVzQiwgbWV0YXByb29mQ29udGV4dCk7XG5cbiAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBub2Rlc1ZlcmlmaWVkOyAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBtZXRhcHJvb2ZDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIGlmICghbWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXByb29mQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIG1ldGFwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgaXMgbm90IHByZXNlbnQuYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVWZXJpZmllZDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWV0YXN0YXRlbWVudFZlcmlmaWVyID0gbmV3IE1ldGFzdGF0ZW1lbnRWZXJpZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhc3RhdGVtZW50KG1ldGFzdGF0ZW1lbnROb2RlLCBkZXJpdmVkLCBtZXRhcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBtZXRhc3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhc3RhdGVtZW50U3RyaW5nID0gbWV0YXByb29mQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gIG1ldGFwcm9vZkNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXN0YXRlbWVudFN0cmluZ30nIG1ldGFzdGF0ZW1lbnQuLi5gLCBtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKCFtZXRhc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBID0gbWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBtZXRhc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBtZXRhc3RhdGVtZW50VmVyaWZpZXIudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIG1ldGFwcm9vZkNvbnRleHQpO1xuXG4gICAgbWV0YXN0YXRlbWVudFZlcmlmaWVkID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7ICAvLy9cbiAgfVxuXG4gIGlmIChtZXRhc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBtZXRhcHJvb2ZDb250ZXh0LmRlYnVnKGBWZXJpZmllZCB0aGUgJyR7bWV0YXN0YXRlbWVudFN0cmluZ30nIG1ldGFzdGF0ZW1lbnQuYCwgbWV0YXN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFzdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhc3RhdGVtZW50IiwibWV0YXN0YXRlbWVudFZlcmlmaWVyIiwiTWV0YXN0YXRlbWVudFZlcmlmaWVyIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJtZXRhcHJvb2ZDb250ZXh0Iiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJub25UZXJtaW5hbE5vZGUiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhdmFyaWFibGVOb2RlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJub2Rlc0EiLCJub2Rlc0IiLCJub2Rlc1ZlcmlmaWVkIiwidmVyaWZ5Tm9kZXMiLCJtZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZVN0cmluZyIsIm5vZGVBc1N0cmluZyIsImVycm9yIiwiVmVyaWZpZXIiLCJtZXRhc3RhdGVtZW50Tm9kZSIsImRlcml2ZWQiLCJtZXRhc3RhdGVtZW50VmVyaWZpZWQiLCJtZXRhc3RhdGVtZW50U3RyaW5nIiwiZGVidWciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQTJEQSxPQW9CQztlQXBCdUJBOztJQUZYQyxxQkFBcUI7ZUFBckJBOzs7K0RBdkRRO3lCQUVrQjtxQkFDYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRCxJQUFBLEFBQU1DLHNDQWtESCxBQWxESDtjQUFNQTsrQkFBQUE7YUFBQUE7Z0NBQUFBOzs7a0JBQUFBOztZQUNKQyxLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCQyxnQkFBZ0IsRUFBRUMsZ0JBQWdCLEVBQUVDLGdCQUFnQjtnQkFDeEUsSUFBSUMsMEJBQTBCO2dCQUU5QixJQUFNQyxrQkFBa0JKLGtCQUNsQkssV0FBV0QsZ0JBQWdCRSxXQUFXLElBQUksR0FBRztnQkFFbkQsT0FBUUQ7b0JBQ04sS0FBS0UsaUNBQXNCO3dCQUFFOzRCQUMzQixJQUFNQyxtQkFBbUJKLGlCQUNuQkssMkJBQTJCLElBQUksQ0FBQ0Msc0JBQXNCLENBQUNGLGtCQUFrQk47NEJBRS9FQywwQkFBMEJNLDBCQUEwQixHQUFHOzRCQUV2RDt3QkFDRjtvQkFFQTt3QkFBUzs0QkFDUCxJQUFNRSxhQUFhUCxnQkFBZ0JRLGFBQWEsSUFDMUNDLFNBQVNGLFlBQ1RHLFNBQVNILFlBQ1RJLGdCQUFnQixJQUFJLENBQUNDLFdBQVcsQ0FBQ0gsUUFBUUMsUUFBUVo7NEJBRXZEQywwQkFBMEJZLGVBQWUsR0FBRzs0QkFFNUM7d0JBQ0Y7Z0JBQ0Y7Z0JBRUEsT0FBT1o7WUFDVDs7O1lBRUFPLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUJGLGdCQUFnQixFQUFFTixnQkFBZ0I7Z0JBQ3ZELElBQUlPLDJCQUEyQjtnQkFFL0IsSUFBTVEsbUJBQW1CQyxJQUFBQSwyQ0FBb0MsRUFBQ1YsbUJBQ3hEVyxzQkFBc0JqQixpQkFBaUJrQix1Q0FBdUMsQ0FBQ0g7Z0JBRXJGLElBQUksQ0FBQ0UscUJBQXFCO29CQUN4QixJQUFNRSxxQkFBcUJuQixpQkFBaUJvQixZQUFZLENBQUNkO29CQUV6RE4saUJBQWlCcUIsS0FBSyxDQUFDLEFBQUMsUUFBMEIsT0FBbkJGLG9CQUFtQixtQ0FBaUNiO2dCQUNyRixPQUFPO29CQUNMQywyQkFBMkI7Z0JBQzdCO2dCQUVBLE9BQU9BO1lBQ1Q7OztXQS9DSVg7RUFBOEIwQixpQkFBUTtBQWtEckMsSUFBTTNCLHdCQUF3QixJQUFJQztBQUUxQixTQUFTRixvQkFBb0I2QixpQkFBaUIsRUFBRUMsT0FBTyxFQUFFeEIsZ0JBQWdCO0lBQ3RGLElBQUl5Qix3QkFBd0I7SUFFNUIsSUFBTUMsc0JBQXNCMUIsaUJBQWlCb0IsWUFBWSxDQUFDRztJQUUxRHZCLGlCQUFpQjJCLEtBQUssQ0FBQyxBQUFDLGtCQUFxQyxPQUFwQkQscUJBQW9CLHVCQUFxQkg7SUFFbEYsSUFBSSxDQUFDRSx1QkFBdUI7UUFDMUIsSUFBTTNCLG1CQUFtQnlCLG1CQUNuQnhCLG1CQUFtQndCLG1CQUNuQnRCLDBCQUEwQk4sc0JBQXNCRSxxQkFBcUIsQ0FBQ0Msa0JBQWtCQyxrQkFBa0JDO1FBRWhIeUIsd0JBQXdCeEIseUJBQTBCLEdBQUc7SUFDdkQ7SUFFQSxJQUFJd0IsdUJBQXVCO1FBQ3pCekIsaUJBQWlCMkIsS0FBSyxDQUFDLEFBQUMsaUJBQW9DLE9BQXBCRCxxQkFBb0IscUJBQW1CSDtJQUNqRjtJQUVBLE9BQU9FO0FBQ1QifQ==