occam-parsers 23.3.81 → 23.3.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/definition.js CHANGED
@@ -87,11 +87,16 @@ class Definition {
87
87
  }, back);
88
88
  }
89
89
  compose(rule, definition, savedFrame, frame, state) {
90
- const nonTerminalNode = nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state);
91
- if (nonTerminalNode !== null) {
92
- const childNode = nonTerminalNode; ///
93
- frame = _frame.default.fromChildNode(childNode); ///
94
- frame = savedFrame.merge(frame); ///
90
+ const frameEmpty = frame.isEmpty();
91
+ if (!frameEmpty) {
92
+ const nonTerminalNode = nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state);
93
+ if (nonTerminalNode !== null) {
94
+ const childNode = nonTerminalNode; ///
95
+ frame = _frame.default.fromChildNode(childNode); ///
96
+ frame = savedFrame.merge(frame); ///
97
+ } else {
98
+ frame = null;
99
+ }
95
100
  } else {
96
101
  frame = null;
97
102
  }
@@ -132,13 +137,7 @@ function nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame,
132
137
  const opacity = rule.getOpacity(), ruleName = rule.getName(), childNodes = frame.getChildNodes(), precedence = frame.getPrecedence(definition), NonTerminalNode = rule.NonTerminalNodeFromRuleName(ruleName, state);
133
138
  nonTerminalNode = NonTerminalNode.fromRuleNameChildNodesPrecedenceAndOpacity(ruleName, childNodes, precedence, opacity);
134
139
  nonTerminalNode = nonTerminalNode.rewrite(state); ///
135
- if (nonTerminalNode !== null) {
136
- const invalid = nonTerminalNode.isInvalid();
137
- if (invalid) {
138
- nonTerminalNode = null;
139
- }
140
- }
141
140
  return nonTerminalNode;
142
141
  }
143
142
 
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRnJhbWUgZnJvbSBcIi4vZnJhbWVcIjtcblxuaW1wb3J0IHsgZW1wdHlGcmFtZSB9IGZyb20gXCIuL2ZyYW1lXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGV2ZXJ5IGFzIGxpbmVhckV2ZXJ5ICB9IGZyb20gXCIuL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IGV2ZXJ5IGFzIGJyYW5jaGluZ0V2ZXJ5ICB9IGZyb20gXCIuL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVmaW5pdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHBhcnRzLCBwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRQYXJ0cygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cztcbiAgfVxuXG4gIGdldFByZWNlZGVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlY2VkZW5jZTtcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdLCBjaGVja0ZvckN1dFBhcnRzID0gZmFsc2UpIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSB0aGlzLnBhcnRzLnNvbWUoKHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN1bWluZyA9IHBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzLCBjaGVja0ZvckN1dFBhcnRzKTtcblxuICAgICAgaWYgKGNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShydWxlLCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXZlZEZyYW1lID0gZnJhbWUsIC8vL1xuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgZXZlcnkgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgICBicmFuY2hpbmdFdmVyeSA6XG4gICAgICAgICAgICAgICAgICAgICAgbGluZWFyRXZlcnk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5wYXJ0cywgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBlbXB0eUZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKTsgIC8vL1xuXG4gICAgICBpZiAoZnJhbWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoZnJhbWUsIHN0YXRlLCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpO1xuXG4gICAgaWYgKG5vblRlcm1pbmFsTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9uVGVybWluYWxOb2RlOyAgLy8vXG5cbiAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUNoaWxkTm9kZShjaGlsZE5vZGUpOyAvLy9cblxuICAgICAgZnJhbWUgPSBzYXZlZEZyYW1lLm1lcmdlKGZyYW1lKTsgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGZyYW1lID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBwYXJ0c1N0cmluZyA9IHBhcnRzU3RyaW5nRnJvbVBhcnRzKHRoaXMucGFydHMpLFxuICAgICAgICAgIHByZWNlZGVuY2VTdHJpbmcgPSAodGhpcy5wcmVjZWRlbmNlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVjZWRlbmNlLmFzU3RyaW5nKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HLFxuICAgICAgICAgIHN0cmluZyA9IGAke3BhcnRzU3RyaW5nfSR7cHJlY2VkZW5jZVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGFydHMoQ2xhc3MsIHBhcnRzKSB7XG4gICAgaWYgKHBhcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnRzID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBEZWZpbml0aW9uOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBkZWZpbml0aW9uID0gbmV3IENsYXNzKHBhcnRzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0c0FuZFByZWNlZGVuY2UoQ2xhc3MsIHBhcnRzLCBwcmVjZWRlbmNlKSB7XG4gICAgaWYgKHByZWNlZGVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJlY2VkZW5jZSA9IHBhcnRzOyAvLy9cblxuICAgICAgcGFydHMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IERlZmluaXRpb247IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBuZXcgQ2xhc3MocGFydHMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFydHNTdHJpbmdGcm9tUGFydHMocGFydHMpIHtcbiAgY29uc3QgcGFydHNTdHJpbmcgPSBwYXJ0cy5yZWR1Y2UoKHBhcnRzU3RyaW5nLCBwYXJ0KSA9PiB7XG4gICAgY29uc3QgcGFydFN0cmluZyA9IHBhcnQuYXNTdHJpbmcoKTtcblxuICAgIHBhcnRzU3RyaW5nID0gKHBhcnRzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgIGAke3BhcnRzU3RyaW5nfSAke3BhcnRTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgcGFydFN0cmluZzsgLy8vXG5cbiAgICByZXR1cm4gcGFydHNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwYXJ0c1N0cmluZztcbn1cblxuZnVuY3Rpb24gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZTtcblxuICBjb25zdCBvcGFjaXR5ID0gcnVsZS5nZXRPcGFjaXR5KCksXG4gICAgICAgIHJ1bGVOYW1lID0gcnVsZS5nZXROYW1lKCksXG4gICAgICAgIGNoaWxkTm9kZXMgPSBmcmFtZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIHByZWNlZGVuY2UgPSBmcmFtZS5nZXRQcmVjZWRlbmNlKGRlZmluaXRpb24pLFxuICAgICAgICBOb25UZXJtaW5hbE5vZGUgPSBydWxlLk5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZShydWxlTmFtZSwgc3RhdGUpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkocnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpO1xuXG4gIG5vblRlcm1pbmFsTm9kZSA9IG5vblRlcm1pbmFsTm9kZS5yZXdyaXRlKHN0YXRlKTsgLy8vXG5cbiAgaWYgKG5vblRlcm1pbmFsTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGludmFsaWQgPSBub25UZXJtaW5hbE5vZGUuaXNJbnZhbGlkKCk7XG5cbiAgICBpZiAoaW52YWxpZCkge1xuICAgICAgbm9uVGVybWluYWxOb2RlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xufVxuIl0sIm5hbWVzIjpbIkRlZmluaXRpb24iLCJwYXJ0cyIsInByZWNlZGVuY2UiLCJnZXRQYXJ0cyIsImdldFByZWNlZGVuY2UiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjaGVja0ZvckN1dFBhcnRzIiwiY29uc3VtaW5nIiwic29tZSIsInBhcnQiLCJwYXJzZSIsInJ1bGUiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJzYXZlZEZyYW1lIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJldmVyeSIsImJyYW5jaGluZ0V2ZXJ5IiwibGluZWFyRXZlcnkiLCJlbXB0eUZyYW1lIiwiZGVmaW5pdGlvbiIsImNvbXBvc2UiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVGcm9tUnVsZURlZmluaXRpb25GcmFtZUFuZFN0YXRlIiwiY2hpbGROb2RlIiwiRnJhbWUiLCJmcm9tQ2hpbGROb2RlIiwibWVyZ2UiLCJhc1N0cmluZyIsInBhcnRzU3RyaW5nIiwicGFydHNTdHJpbmdGcm9tUGFydHMiLCJwcmVjZWRlbmNlU3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwic3RyaW5nIiwiZnJvbVBhcnRzIiwiQ2xhc3MiLCJ1bmRlZmluZWQiLCJmcm9tUGFydHNBbmRQcmVjZWRlbmNlIiwicmVkdWNlIiwicGFydFN0cmluZyIsIm9wYWNpdHkiLCJnZXRPcGFjaXR5IiwicnVsZU5hbWUiLCJnZXROYW1lIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJOb25UZXJtaW5hbE5vZGUiLCJOb25UZXJtaW5hbE5vZGVGcm9tUnVsZU5hbWUiLCJmcm9tUnVsZU5hbWVDaGlsZE5vZGVzUHJlY2VkZW5jZUFuZE9wYWNpdHkiLCJyZXdyaXRlIiwiaW52YWxpZCIsImlzSW52YWxpZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUFxQkE7OzsrREFQSDsyQkFHVzt3QkFDUzsyQkFDRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU1BO0lBQ25CLFlBQVlDLEtBQUssRUFBRUMsVUFBVSxDQUFFO1FBQzdCLElBQUksQ0FBQ0QsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNGLEtBQUs7SUFDbkI7SUFFQUcsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsWUFBWUMsT0FBTyxFQUFFQyxlQUFlLEVBQUUsRUFBRUMsbUJBQW1CLEtBQUssRUFBRTtRQUNoRSxNQUFNQyxZQUFZLElBQUksQ0FBQ1IsS0FBSyxDQUFDUyxJQUFJLENBQUMsQ0FBQ0M7WUFDakMsTUFBTUYsWUFBWUUsS0FBS04sV0FBVyxDQUFDQyxTQUFTQyxjQUFjQztZQUUxRCxJQUFJQyxXQUFXO2dCQUNiLE9BQU87WUFDVDtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBRyxNQUFNQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN2QyxNQUFNQyxhQUFhSixPQUNiSyxZQUFZSixNQUFNSyxXQUFXLElBQzdCQyxRQUFRRixZQUNFRyxnQkFBYyxHQUNaQyxhQUFXO1FBRTdCLE9BQU9GLE1BQU0sSUFBSSxDQUFDcEIsS0FBSyxFQUFFLENBQUNVLE1BQU1HLE9BQU9DLE9BQU9DLFNBQVNDO1lBQ3JELE9BQU9OLEtBQUtDLEtBQUssQ0FBQ0UsT0FBT0MsT0FBT0MsU0FBU0M7UUFDM0MsR0FBR08saUJBQVUsRUFBRVQsT0FBTyxDQUFDRCxPQUFPQyxPQUFPRTtZQUNuQyxNQUFNUSxhQUFhLElBQUksRUFBRyxHQUFHO1lBRTdCWCxRQUFRLElBQUksQ0FBQ1ksT0FBTyxDQUFDYixNQUFNWSxZQUFZUCxZQUFZSixPQUFPQyxRQUFTLEdBQUc7WUFFdEUsSUFBSUQsVUFBVSxNQUFNO2dCQUNsQixPQUFPRztZQUNUO1lBRUEsT0FBT0QsUUFBUUYsT0FBT0MsT0FBT0U7UUFDL0IsR0FBR0E7SUFDTDtJQUVBUyxRQUFRYixJQUFJLEVBQUVZLFVBQVUsRUFBRVAsVUFBVSxFQUFFSixLQUFLLEVBQUVDLEtBQUssRUFBRTtRQUNsRCxNQUFNWSxrQkFBa0JDLCtDQUErQ2YsTUFBTVksWUFBWVgsT0FBT0M7UUFFaEcsSUFBSVksb0JBQW9CLE1BQU07WUFDNUIsTUFBTUUsWUFBWUYsaUJBQWtCLEdBQUc7WUFFdkNiLFFBQVFnQixjQUFLLENBQUNDLGFBQWEsQ0FBQ0YsWUFBWSxHQUFHO1lBRTNDZixRQUFRSSxXQUFXYyxLQUFLLENBQUNsQixRQUFRLEdBQUc7UUFDdEMsT0FBTztZQUNMQSxRQUFRO1FBQ1Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFtQixXQUFXO1FBQ1QsTUFBTUMsY0FBY0MscUJBQXFCLElBQUksQ0FBQ2xDLEtBQUssR0FDN0NtQyxtQkFBbUIsQUFBQyxJQUFJLENBQUNsQyxVQUFVLEtBQUssT0FDbkIsSUFBSSxDQUFDQSxVQUFVLENBQUMrQixRQUFRLEtBQ3RCSSx1QkFBWSxFQUNuQ0MsU0FBUyxHQUFHSixjQUFjRSxrQkFBa0I7UUFFbEQsT0FBT0U7SUFDVDtJQUVBLE9BQU9DLFVBQVVDLEtBQUssRUFBRXZDLEtBQUssRUFBRTtRQUM3QixJQUFJQSxVQUFVd0MsV0FBVztZQUN2QnhDLFFBQVF1QyxPQUFRLEdBQUc7WUFFbkJBLFFBQVF4QyxZQUFZLEdBQUc7UUFDekI7UUFFQSxNQUFNRSxhQUFhLE1BQ2J1QixhQUFhLElBQUllLE1BQU12QyxPQUFPQztRQUVwQyxPQUFPdUI7SUFDVDtJQUVBLE9BQU9pQix1QkFBdUJGLEtBQUssRUFBRXZDLEtBQUssRUFBRUMsVUFBVSxFQUFFO1FBQ3RELElBQUlBLGVBQWV1QyxXQUFXO1lBQzVCdkMsYUFBYUQsT0FBTyxHQUFHO1lBRXZCQSxRQUFRdUMsT0FBUSxHQUFHO1lBRW5CQSxRQUFReEMsWUFBWSxHQUFHO1FBQ3pCO1FBRUEsTUFBTXlCLGFBQWEsSUFBSWUsTUFBTXZDLE9BQU9DO1FBRXBDLE9BQU91QjtJQUNUO0FBQ0Y7QUFFQSxTQUFTVSxxQkFBcUJsQyxLQUFLO0lBQ2pDLE1BQU1pQyxjQUFjakMsTUFBTTBDLE1BQU0sQ0FBQyxDQUFDVCxhQUFhdkI7UUFDN0MsTUFBTWlDLGFBQWFqQyxLQUFLc0IsUUFBUTtRQUVoQ0MsY0FBYyxBQUFDQSxnQkFBZ0IsT0FDZixHQUFHQSxZQUFZLENBQUMsRUFBRVUsWUFBWSxHQUM1QkEsWUFBWSxHQUFHO1FBRWpDLE9BQU9WO0lBQ1QsR0FBRztJQUVILE9BQU9BO0FBQ1Q7QUFFQSxTQUFTTiwrQ0FBK0NmLElBQUksRUFBRVksVUFBVSxFQUFFWCxLQUFLLEVBQUVDLEtBQUs7SUFDcEYsSUFBSVk7SUFFSixNQUFNa0IsVUFBVWhDLEtBQUtpQyxVQUFVLElBQ3pCQyxXQUFXbEMsS0FBS21DLE9BQU8sSUFDdkJDLGFBQWFuQyxNQUFNb0MsYUFBYSxJQUNoQ2hELGFBQWFZLE1BQU1WLGFBQWEsQ0FBQ3FCLGFBQ2pDMEIsa0JBQWtCdEMsS0FBS3VDLDJCQUEyQixDQUFDTCxVQUFVaEM7SUFFbkVZLGtCQUFrQndCLGdCQUFnQkUsMENBQTBDLENBQUNOLFVBQVVFLFlBQVkvQyxZQUFZMkM7SUFFL0dsQixrQkFBa0JBLGdCQUFnQjJCLE9BQU8sQ0FBQ3ZDLFFBQVEsR0FBRztJQUVyRCxJQUFJWSxvQkFBb0IsTUFBTTtRQUM1QixNQUFNNEIsVUFBVTVCLGdCQUFnQjZCLFNBQVM7UUFFekMsSUFBSUQsU0FBUztZQUNYNUIsa0JBQWtCO1FBQ3BCO0lBQ0Y7SUFFQSxPQUFPQTtBQUNUIn0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRnJhbWUgZnJvbSBcIi4vZnJhbWVcIjtcblxuaW1wb3J0IHsgZW1wdHlGcmFtZSB9IGZyb20gXCIuL2ZyYW1lXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGV2ZXJ5IGFzIGxpbmVhckV2ZXJ5ICB9IGZyb20gXCIuL3V0aWxpdGllcy9saW5lYXJcIjtcbmltcG9ydCB7IGV2ZXJ5IGFzIGJyYW5jaGluZ0V2ZXJ5ICB9IGZyb20gXCIuL3V0aWxpdGllcy9icmFuY2hpbmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVmaW5pdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHBhcnRzLCBwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRQYXJ0cygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cztcbiAgfVxuXG4gIGdldFByZWNlZGVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlY2VkZW5jZTtcbiAgfVxuXG4gIGlzQ29uc3VtaW5nKHJ1bGVNYXAsIHZpc2l0ZWRSdWxlcyA9IFtdLCBjaGVja0ZvckN1dFBhcnRzID0gZmFsc2UpIHtcbiAgICBjb25zdCBjb25zdW1pbmcgPSB0aGlzLnBhcnRzLnNvbWUoKHBhcnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN1bWluZyA9IHBhcnQuaXNDb25zdW1pbmcocnVsZU1hcCwgdmlzaXRlZFJ1bGVzLCBjaGVja0ZvckN1dFBhcnRzKTtcblxuICAgICAgaWYgKGNvbnN1bWluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb25zdW1pbmc7XG4gIH1cblxuICBwYXJzZShydWxlLCBmcmFtZSwgc3RhdGUsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXZlZEZyYW1lID0gZnJhbWUsIC8vL1xuICAgICAgICAgIGJyYW5jaGluZyA9IHN0YXRlLmlzQnJhbmNoaW5nKCksXG4gICAgICAgICAgZXZlcnkgPSBicmFuY2hpbmcgP1xuICAgICAgICAgICAgICAgICAgICBicmFuY2hpbmdFdmVyeSA6XG4gICAgICAgICAgICAgICAgICAgICAgbGluZWFyRXZlcnk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5wYXJ0cywgKHBhcnQsIGZyYW1lLCBzdGF0ZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcnQucGFyc2UoZnJhbWUsIHN0YXRlLCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBlbXB0eUZyYW1lLCBzdGF0ZSwgKGZyYW1lLCBzdGF0ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgZnJhbWUgPSB0aGlzLmNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKTsgIC8vL1xuXG4gICAgICBpZiAoZnJhbWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoZnJhbWUsIHN0YXRlLCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGNvbXBvc2UocnVsZSwgZGVmaW5pdGlvbiwgc2F2ZWRGcmFtZSwgZnJhbWUsIHN0YXRlKSB7XG4gICAgY29uc3QgZnJhbWVFbXB0eSA9IGZyYW1lLmlzRW1wdHkoKTtcblxuICAgIGlmICghZnJhbWVFbXB0eSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9uVGVybWluYWxOb2RlRnJvbVJ1bGVEZWZpbml0aW9uRnJhbWVBbmRTdGF0ZShydWxlLCBkZWZpbml0aW9uLCBmcmFtZSwgc3RhdGUpO1xuXG4gICAgICBpZiAobm9uVGVybWluYWxOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgIC8vL1xuXG4gICAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUNoaWxkTm9kZShjaGlsZE5vZGUpOyAvLy9cblxuICAgICAgICBmcmFtZSA9IHNhdmVkRnJhbWUubWVyZ2UoZnJhbWUpOyAvLy9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyYW1lID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZnJhbWUgPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGNvbnN0IHBhcnRzU3RyaW5nID0gcGFydHNTdHJpbmdGcm9tUGFydHModGhpcy5wYXJ0cyksXG4gICAgICAgICAgcHJlY2VkZW5jZVN0cmluZyA9ICh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWNlZGVuY2UuYXNTdHJpbmcoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgc3RyaW5nID0gYCR7cGFydHNTdHJpbmd9JHtwcmVjZWRlbmNlU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXJ0cyhDbGFzcywgcGFydHMpIHtcbiAgICBpZiAocGFydHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFydHMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IERlZmluaXRpb247IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHByZWNlZGVuY2UgPSBudWxsLFxuICAgICAgICAgIGRlZmluaXRpb24gPSBuZXcgQ2xhc3MocGFydHMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVBhcnRzQW5kUHJlY2VkZW5jZShDbGFzcywgcGFydHMsIHByZWNlZGVuY2UpIHtcbiAgICBpZiAocHJlY2VkZW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcmVjZWRlbmNlID0gcGFydHM7IC8vL1xuXG4gICAgICBwYXJ0cyA9IENsYXNzOyAgLy8vXG5cbiAgICAgIENsYXNzID0gRGVmaW5pdGlvbjsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5pdGlvbiA9IG5ldyBDbGFzcyhwYXJ0cywgcHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJ0c1N0cmluZ0Zyb21QYXJ0cyhwYXJ0cykge1xuICBjb25zdCBwYXJ0c1N0cmluZyA9IHBhcnRzLnJlZHVjZSgocGFydHNTdHJpbmcsIHBhcnQpID0+IHtcbiAgICBjb25zdCBwYXJ0U3RyaW5nID0gcGFydC5hc1N0cmluZygpO1xuXG4gICAgcGFydHNTdHJpbmcgPSAocGFydHNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgYCR7cGFydHNTdHJpbmd9ICR7cGFydFN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICBwYXJ0U3RyaW5nOyAvLy9cblxuICAgIHJldHVybiBwYXJ0c1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHBhcnRzU3RyaW5nO1xufVxuXG5mdW5jdGlvbiBub25UZXJtaW5hbE5vZGVGcm9tUnVsZURlZmluaXRpb25GcmFtZUFuZFN0YXRlKHJ1bGUsIGRlZmluaXRpb24sIGZyYW1lLCBzdGF0ZSkge1xuICBsZXQgbm9uVGVybWluYWxOb2RlO1xuXG4gIGNvbnN0IG9wYWNpdHkgPSBydWxlLmdldE9wYWNpdHkoKSxcbiAgICAgICAgcnVsZU5hbWUgPSBydWxlLmdldE5hbWUoKSxcbiAgICAgICAgY2hpbGROb2RlcyA9IGZyYW1lLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgcHJlY2VkZW5jZSA9IGZyYW1lLmdldFByZWNlZGVuY2UoZGVmaW5pdGlvbiksXG4gICAgICAgIE5vblRlcm1pbmFsTm9kZSA9IHJ1bGUuTm9uVGVybWluYWxOb2RlRnJvbVJ1bGVOYW1lKHJ1bGVOYW1lLCBzdGF0ZSk7XG5cbiAgbm9uVGVybWluYWxOb2RlID0gTm9uVGVybWluYWxOb2RlLmZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eShydWxlTmFtZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSk7XG5cbiAgbm9uVGVybWluYWxOb2RlID0gbm9uVGVybWluYWxOb2RlLnJld3JpdGUoc3RhdGUpOyAvLy9cblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xufVxuIl0sIm5hbWVzIjpbIkRlZmluaXRpb24iLCJwYXJ0cyIsInByZWNlZGVuY2UiLCJnZXRQYXJ0cyIsImdldFByZWNlZGVuY2UiLCJpc0NvbnN1bWluZyIsInJ1bGVNYXAiLCJ2aXNpdGVkUnVsZXMiLCJjaGVja0ZvckN1dFBhcnRzIiwiY29uc3VtaW5nIiwic29tZSIsInBhcnQiLCJwYXJzZSIsInJ1bGUiLCJmcmFtZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJzYXZlZEZyYW1lIiwiYnJhbmNoaW5nIiwiaXNCcmFuY2hpbmciLCJldmVyeSIsImJyYW5jaGluZ0V2ZXJ5IiwibGluZWFyRXZlcnkiLCJlbXB0eUZyYW1lIiwiZGVmaW5pdGlvbiIsImNvbXBvc2UiLCJmcmFtZUVtcHR5IiwiaXNFbXB0eSIsIm5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZUZyb21SdWxlRGVmaW5pdGlvbkZyYW1lQW5kU3RhdGUiLCJjaGlsZE5vZGUiLCJGcmFtZSIsImZyb21DaGlsZE5vZGUiLCJtZXJnZSIsImFzU3RyaW5nIiwicGFydHNTdHJpbmciLCJwYXJ0c1N0cmluZ0Zyb21QYXJ0cyIsInByZWNlZGVuY2VTdHJpbmciLCJFTVBUWV9TVFJJTkciLCJzdHJpbmciLCJmcm9tUGFydHMiLCJDbGFzcyIsInVuZGVmaW5lZCIsImZyb21QYXJ0c0FuZFByZWNlZGVuY2UiLCJyZWR1Y2UiLCJwYXJ0U3RyaW5nIiwib3BhY2l0eSIsImdldE9wYWNpdHkiLCJydWxlTmFtZSIsImdldE5hbWUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsIk5vblRlcm1pbmFsTm9kZSIsIk5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZSIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eSIsInJld3JpdGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBcUJBOzs7K0RBUEg7MkJBR1c7d0JBQ1M7MkJBQ0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixNQUFNQTtJQUNuQixZQUFZQyxLQUFLLEVBQUVDLFVBQVUsQ0FBRTtRQUM3QixJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDRixLQUFLO0lBQ25CO0lBRUFHLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRixVQUFVO0lBQ3hCO0lBRUFHLFlBQVlDLE9BQU8sRUFBRUMsZUFBZSxFQUFFLEVBQUVDLG1CQUFtQixLQUFLLEVBQUU7UUFDaEUsTUFBTUMsWUFBWSxJQUFJLENBQUNSLEtBQUssQ0FBQ1MsSUFBSSxDQUFDLENBQUNDO1lBQ2pDLE1BQU1GLFlBQVlFLEtBQUtOLFdBQVcsQ0FBQ0MsU0FBU0MsY0FBY0M7WUFFMUQsSUFBSUMsV0FBVztnQkFDYixPQUFPO1lBQ1Q7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQUcsTUFBTUMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDdkMsTUFBTUMsYUFBYUosT0FDYkssWUFBWUosTUFBTUssV0FBVyxJQUM3QkMsUUFBUUYsWUFDRUcsZ0JBQWMsR0FDWkMsYUFBVztRQUU3QixPQUFPRixNQUFNLElBQUksQ0FBQ3BCLEtBQUssRUFBRSxDQUFDVSxN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
package/lib/frame.js CHANGED
@@ -51,10 +51,18 @@ class Frame {
51
51
  const isolated = this.precedence === _precedence.isolatedPrecedence;
52
52
  return isolated;
53
53
  }
54
+ isSingular() {
55
+ const childNodesLength = this.childNodes.length, singular = childNodesLength === 1;
56
+ return singular;
57
+ }
58
+ isEmpty() {
59
+ const childNodesLength = this.childNodes.length, empty = childNodesLength === 0;
60
+ return empty;
61
+ }
54
62
  getNode() {
55
63
  let node = null;
56
- const childNodesLength = this.childNodes.length;
57
- if (childNodesLength === 1) {
64
+ const singluar = this.isIsolated();
65
+ if (singluar) {
58
66
  const firstChildNode = first(this.childNodes);
59
67
  node = firstChildNode; ///
60
68
  }
@@ -89,4 +97,4 @@ class Frame {
89
97
  }
90
98
  const emptyFrame = Frame.fromNothing();
91
99
 
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mcmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBpc29sYXRlZFByZWNlZGVuY2UgfSBmcm9tIFwiLi9wcmVjZWRlbmNlXCI7XG5cbmNvbnN0IHsgZmlyc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZSB7XG4gIGNvbnN0cnVjdG9yKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRDaGlsZE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXM7XG4gIH1cblxuICBnZXRQcmVjZWRlbmNlKGRlZmluaXRpb24gPSBudWxsKSB7XG4gICAgbGV0IHByZWNlZGVuY2U7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gbnVsbCkge1xuICAgICAgcHJlY2VkZW5jZSA9IHRoaXMucHJlY2VkZW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNvbGF0ZWQgPSB0aGlzLmlzSXNvbGF0ZWQoKTtcblxuICAgICAgaWYgKGlzb2xhdGVkKSB7XG4gICAgICAgIHByZWNlZGVuY2UgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlY2VkZW5jZSA9ICh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlY2VkZW5jZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24uZ2V0UHJlY2VkZW5jZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgfVxuXG4gIHNldFByZWNlZGVuY2UocHJlY2VkZW5jZSkge1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBpc0lzb2xhdGVkKCkge1xuICAgIGNvbnN0IGlzb2xhdGVkID0gKHRoaXMucHJlY2VkZW5jZSA9PT0gaXNvbGF0ZWRQcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBpc29sYXRlZDtcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgbGV0IG5vZGUgPSBudWxsO1xuXG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RDaGlsZE5vZGUgPSBmaXJzdCh0aGlzLmNoaWxkTm9kZXMpO1xuXG4gICAgICBub2RlID0gZmlyc3RDaGlsZE5vZGU7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIG1lcmdlKGZyYW1lKSB7XG4gICAgbGV0IGNoaWxkTm9kZXMsXG4gICAgICAgIHByZWNlZGVuY2U7XG5cbiAgICBjaGlsZE5vZGVzID0gZnJhbWUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgcHJlY2VkZW5jZSA9IGZyYW1lLmdldFByZWNlZGVuY2UoKTtcblxuICAgIGNoaWxkTm9kZXMgPSBbICAvLy9cbiAgICAgIC4uLnRoaXMuY2hpbGROb2RlcyxcbiAgICAgIC4uLmNoaWxkTm9kZXNcbiAgICBdO1xuXG4gICAgcHJlY2VkZW5jZSA9IHByZWNlZGVuY2UgfHwgdGhpcy5wcmVjZWRlbmNlOyAvLy9cblxuICAgIGZyYW1lID0gbmV3IEZyYW1lKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBbXSxcbiAgICAgICAgICBwcmVjZWRlbmNlID0gbnVsbCxcbiAgICAgICAgICBmcmFtZSA9IG5ldyBGcmFtZShjaGlsZE5vZGVzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ2hpbGROb2RlKGNoaWxkTm9kZSkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBbXG4gICAgICAgICAgICBjaGlsZE5vZGVcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSBudWxsLFxuICAgICAgICAgIGZyYW1lID0gbmV3IEZyYW1lKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgc3RhdGljIGZyb21DaGlsZE5vZGVzQW5kUHJlY2VkZW5jZShjaGlsZE5vZGVzLCBwcmVjZWRlbmNlKSB7XG4gICAgY29uc3QgZnJhbWUgPSBuZXcgRnJhbWUoY2hpbGROb2RlcywgcHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGVtcHR5RnJhbWUgPSBGcmFtZS5mcm9tTm90aGluZygpOyJdLCJuYW1lcyI6WyJGcmFtZSIsImVtcHR5RnJhbWUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiY2hpbGROb2RlcyIsInByZWNlZGVuY2UiLCJnZXRDaGlsZE5vZGVzIiwiZ2V0UHJlY2VkZW5jZSIsImRlZmluaXRpb24iLCJpc29sYXRlZCIsImlzSXNvbGF0ZWQiLCJzZXRDaGlsZE5vZGVzIiwic2V0UHJlY2VkZW5jZSIsImlzb2xhdGVkUHJlY2VkZW5jZSIsImdldE5vZGUiLCJub2RlIiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsImZpcnN0Q2hpbGROb2RlIiwibWVyZ2UiLCJmcmFtZSIsImZyb21Ob3RoaW5nIiwiZnJvbUNoaWxkTm9kZSIsImNoaWxkTm9kZSIsImZyb21DaGlsZE5vZGVzQW5kUHJlY2VkZW5jZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBT0E7ZUFBcUJBOztRQXVHUkM7ZUFBQUE7OzsyQkE1R2tCOzRCQUNJO0FBRW5DLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO0FBRWpCLE1BQU1IO0lBQ25CLFlBQVlJLFVBQVUsRUFBRUMsVUFBVSxDQUFFO1FBQ2xDLElBQUksQ0FBQ0QsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsY0FBY0MsYUFBYSxJQUFJLEVBQUU7UUFDL0IsSUFBSUg7UUFFSixJQUFJRyxlQUFlLE1BQU07WUFDdkJILGFBQWEsSUFBSSxDQUFDQSxVQUFVO1FBQzlCLE9BQU87WUFDTCxNQUFNSSxXQUFXLElBQUksQ0FBQ0MsVUFBVTtZQUVoQyxJQUFJRCxVQUFVO2dCQUNaSixhQUFhO1lBQ2YsT0FBTztnQkFDTEEsYUFBYSxBQUFDLElBQUksQ0FBQ0EsVUFBVSxLQUFLLE9BQ2xCLElBQUksQ0FBQ0EsVUFBVSxHQUNiRyxXQUFXRCxhQUFhO1lBQzVDO1FBQ0Y7UUFFQSxPQUFPRjtJQUNUO0lBRUFNLGNBQWNQLFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7SUFDcEI7SUFFQVEsY0FBY1AsVUFBVSxFQUFFO1FBQ3hCLElBQUksQ0FBQ0EsVUFBVSxHQUFHQTtJQUNwQjtJQUVBSyxhQUFhO1FBQ1gsTUFBTUQsV0FBWSxJQUFJLENBQUNKLFVBQVUsS0FBS1EsOEJBQWtCO1FBRXhELE9BQU9KO0lBQ1Q7SUFFQUssVUFBVTtRQUNSLElBQUlDLE9BQU87UUFFWCxNQUFNQyxtQkFBbUIsSUFBSSxDQUFDWixVQUFVLENBQUNhLE1BQU07UUFFL0MsSUFBSUQscUJBQXFCLEdBQUc7WUFDMUIsTUFBTUUsaUJBQWlCaEIsTUFBTSxJQUFJLENBQUNFLFVBQVU7WUFFNUNXLE9BQU9HLGdCQUFpQixHQUFHO1FBQzdCO1FBRUEsT0FBT0g7SUFDVDtJQUVBSSxNQUFNQyxLQUFLLEVBQUU7UUFDWCxJQUFJaEIsWUFDQUM7UUFFSkQsYUFBYWdCLE1BQU1kLGFBQWE7UUFFaENELGFBQWFlLE1BQU1iLGFBQWE7UUFFaENILGFBQWE7ZUFDUixJQUFJLENBQUNBLFVBQVU7ZUFDZkE7U0FDSjtRQUVEQyxhQUFhQSxjQUFjLElBQUksQ0FBQ0EsVUFBVSxFQUFFLEdBQUc7UUFFL0NlLFFBQVEsSUFBSXBCLE1BQU1JLFlBQVlDO1FBRTlCLE9BQU9lO0lBQ1Q7SUFFQSxPQUFPQyxjQUFjO1FBQ25CLE1BQU1qQixhQUFhLEVBQUUsRUFDZkMsYUFBYSxNQUNiZSxRQUFRLElBQUlwQixNQUFNSSxZQUFZQztRQUVwQyxPQUFPZTtJQUNUO0lBRUEsT0FBT0UsY0FBY0MsU0FBUyxFQUFFO1FBQzlCLE1BQU1uQixhQUFhO1lBQ1htQjtTQUNELEVBQ0RsQixhQUFhLE1BQ2JlLFFBQVEsSUFBSXBCLE1BQU1JLFlBQVlDO1FBRXBDLE9BQU9lO0lBQ1Q7SUFFQSxPQUFPSSw0QkFBNEJwQixVQUFVLEVBQUVDLFVBQVUsRUFBRTtRQUN6RCxNQUFNZSxRQUFRLElBQUlwQixNQUFNSSxZQUFZQztRQUVwQyxPQUFPZTtJQUNUO0FBQ0Y7QUFFTyxNQUFNbkIsYUFBYUQsTUFBTXFCLFdBQVcifQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mcmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBpc29sYXRlZFByZWNlZGVuY2UgfSBmcm9tIFwiLi9wcmVjZWRlbmNlXCI7XG5cbmNvbnN0IHsgZmlyc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZSB7XG4gIGNvbnN0cnVjdG9yKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRDaGlsZE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXM7XG4gIH1cblxuICBnZXRQcmVjZWRlbmNlKGRlZmluaXRpb24gPSBudWxsKSB7XG4gICAgbGV0IHByZWNlZGVuY2U7XG5cbiAgICBpZiAoZGVmaW5pdGlvbiA9PT0gbnVsbCkge1xuICAgICAgcHJlY2VkZW5jZSA9IHRoaXMucHJlY2VkZW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNvbGF0ZWQgPSB0aGlzLmlzSXNvbGF0ZWQoKTtcblxuICAgICAgaWYgKGlzb2xhdGVkKSB7XG4gICAgICAgIHByZWNlZGVuY2UgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlY2VkZW5jZSA9ICh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlY2VkZW5jZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24uZ2V0UHJlY2VkZW5jZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgfVxuXG4gIHNldFByZWNlZGVuY2UocHJlY2VkZW5jZSkge1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBpc0lzb2xhdGVkKCkge1xuICAgIGNvbnN0IGlzb2xhdGVkID0gKHRoaXMucHJlY2VkZW5jZSA9PT0gaXNvbGF0ZWRQcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBpc29sYXRlZDtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgc2luZ3VsYXIgPSAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gMSk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICAgIGVtcHR5ID0gKGNoaWxkTm9kZXNMZW5ndGggPT09IDApO1xuXG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICBsZXQgbm9kZSA9IG51bGw7XG5cbiAgICBjb25zdCBzaW5nbHVhciA9IHRoaXMuaXNJc29sYXRlZCgpO1xuXG4gICAgaWYgKHNpbmdsdWFyKSB7XG4gICAgICBjb25zdCBmaXJzdENoaWxkTm9kZSA9IGZpcnN0KHRoaXMuY2hpbGROb2Rlcyk7XG5cbiAgICAgIG5vZGUgPSBmaXJzdENoaWxkTm9kZTsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgbWVyZ2UoZnJhbWUpIHtcbiAgICBsZXQgY2hpbGROb2RlcyxcbiAgICAgICAgcHJlY2VkZW5jZTtcblxuICAgIGNoaWxkTm9kZXMgPSBmcmFtZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICBwcmVjZWRlbmNlID0gZnJhbWUuZ2V0UHJlY2VkZW5jZSgpO1xuXG4gICAgY2hpbGROb2RlcyA9IFsgIC8vL1xuICAgICAgLi4udGhpcy5jaGlsZE5vZGVzLFxuICAgICAgLi4uY2hpbGROb2Rlc1xuICAgIF07XG5cbiAgICBwcmVjZWRlbmNlID0gcHJlY2VkZW5jZSB8fCB0aGlzLnByZWNlZGVuY2U7IC8vL1xuXG4gICAgZnJhbWUgPSBuZXcgRnJhbWUoY2hpbGROb2RlcywgcHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgY2hpbGROb2RlcyA9IFtdLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSBudWxsLFxuICAgICAgICAgIGZyYW1lID0gbmV3IEZyYW1lKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgc3RhdGljIGZyb21DaGlsZE5vZGUoY2hpbGROb2RlKSB7XG4gICAgY29uc3QgY2hpbGROb2RlcyA9IFtcbiAgICAgICAgICAgIGNoaWxkTm9kZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IG51bGwsXG4gICAgICAgICAgZnJhbWUgPSBuZXcgRnJhbWUoY2hpbGROb2RlcywgcHJlY2VkZW5jZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNoaWxkTm9kZXNBbmRQcmVjZWRlbmNlKGNoaWxkTm9kZXMsIHByZWNlZGVuY2UpIHtcbiAgICBjb25zdCBmcmFtZSA9IG5ldyBGcmFtZShjaGlsZE5vZGVzLCBwcmVjZWRlbmNlKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZW1wdHlGcmFtZSA9IEZyYW1lLmZyb21Ob3RoaW5nKCk7Il0sIm5hbWVzIjpbIkZyYW1lIiwiZW1wdHlGcmFtZSIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJjaGlsZE5vZGVzIiwicHJlY2VkZW5jZSIsImdldENoaWxkTm9kZXMiLCJnZXRQcmVjZWRlbmNlIiwiZGVmaW5pdGlvbiIsImlzb2xhdGVkIiwiaXNJc29sYXRlZCIsInNldENoaWxkTm9kZXMiLCJzZXRQcmVjZWRlbmNlIiwiaXNvbGF0ZWRQcmVjZWRlbmNlIiwiaXNTaW5ndWxhciIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJzaW5ndWxhciIsImlzRW1wdHkiLCJlbXB0eSIsImdldE5vZGUiLCJub2RlIiwic2luZ2x1YXIiLCJmaXJzdENoaWxkTm9kZSIsIm1lcmdlIiwiZnJhbWUiLCJmcm9tTm90aGluZyIsImZyb21DaGlsZE5vZGUiLCJjaGlsZE5vZGUiLCJmcm9tQ2hpbGROb2Rlc0FuZFByZWNlZGVuY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQU9BO2VBQXFCQTs7UUFxSFJDO2VBQUFBOzs7MkJBMUhrQjs0QkFDSTtBQUVuQyxNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztBQUVqQixNQUFNSDtJQUNuQixZQUFZSSxVQUFVLEVBQUVDLFVBQVUsQ0FBRTtRQUNsQyxJQUFJLENBQUNELFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRixVQUFVO0lBQ3hCO0lBRUFHLGNBQWNDLGFBQWEsSUFBSSxFQUFFO1FBQy9CLElBQUlIO1FBRUosSUFBSUcsZUFBZSxNQUFNO1lBQ3ZCSCxhQUFhLElBQUksQ0FBQ0EsVUFBVTtRQUM5QixPQUFPO1lBQ0wsTUFBTUksV0FBVyxJQUFJLENBQUNDLFVBQVU7WUFFaEMsSUFBSUQsVUFBVTtnQkFDWkosYUFBYTtZQUNmLE9BQU87Z0JBQ0xBLGFBQWEsQUFBQyxJQUFJLENBQUNBLFVBQVUsS0FBSyxPQUNsQixJQUFJLENBQUNBLFVBQVUsR0FDYkcsV0FBV0QsYUFBYTtZQUM1QztRQUNGO1FBRUEsT0FBT0Y7SUFDVDtJQUVBTSxjQUFjUCxVQUFVLEVBQUU7UUFDeEIsSUFBSSxDQUFDQSxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFRLGNBQWNQLFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUssYUFBYTtRQUNYLE1BQU1ELFdBQVksSUFBSSxDQUFDSixVQUFVLEtBQUtRLDhCQUFrQjtRQUV4RCxPQUFPSjtJQUNUO0lBRUFLLGFBQWE7UUFDWCxNQUFNQyxtQkFBbUIsSUFBSSxDQUFDWCxVQUFVLENBQUNZLE1BQU0sRUFDekNDLFdBQVlGLHFCQUFxQjtRQUV2QyxPQUFPRTtJQUNUO0lBRUFDLFVBQVU7UUFDUixNQUFNSCxtQkFBbUIsSUFBSSxDQUFDWCxVQUFVLENBQUNZLE1BQU0sRUFDekNHLFFBQVNKLHFCQUFxQjtRQUVwQyxPQUFPSTtJQUNUO0lBRUFDLFVBQVU7UUFDUixJQUFJQyxPQUFPO1FBRVgsTUFBTUMsV0FBVyxJQUFJLENBQUNaLFVBQVU7UUFFaEMsSUFBSVksVUFBVTtZQUNaLE1BQU1DLGlCQUFpQnJCLE1BQU0sSUFBSSxDQUFDRSxVQUFVO1lBRTVDaUIsT0FBT0UsZ0JBQWlCLEdBQUc7UUFDN0I7UUFFQSxPQUFPRjtJQUNUO0lBRUFHLE1BQU1DLEtBQUssRUFBRTtRQUNYLElBQUlyQixZQUNBQztRQUVKRCxhQUFhcUIsTUFBTW5CLGFBQWE7UUFFaENELGFBQWFvQixNQUFNbEIsYUFBYTtRQUVoQ0gsYUFBYTtlQUNSLElBQUksQ0FBQ0EsVUFBVTtlQUNmQTtTQUNKO1FBRURDLGFBQWFBLGNBQWMsSUFBSSxDQUFDQSxVQUFVLEVBQUUsR0FBRztRQUUvQ29CLFFBQVEsSUFBSXpCLE1BQU1JLFlBQVlDO1FBRTlCLE9BQU9vQjtJQUNUO0lBRUEsT0FBT0MsY0FBYztRQUNuQixNQUFNdEIsYUFBYSxFQUFFLEVBQ2ZDLGFBQWEsTUFDYm9CLFFBQVEsSUFBSXpCLE1BQU1JLFlBQVlDO1FBRXBDLE9BQU9vQjtJQUNUO0lBRUEsT0FBT0UsY0FBY0MsU0FBUyxFQUFFO1FBQzlCLE1BQU14QixhQUFhO1lBQ1h3QjtTQUNELEVBQ0R2QixhQUFhLE1BQ2JvQixRQUFRLElBQUl6QixNQUFNSSxZQUFZQztRQUVwQyxPQUFPb0I7SUFDVDtJQUVBLE9BQU9JLDRCQUE0QnpCLFVBQVUsRUFBRUMsVUFBVSxFQUFFO1FBQ3pELE1BQU1vQixRQUFRLElBQUl6QixNQUFNSSxZQUFZQztRQUVwQyxPQUFPb0I7SUFDVDtBQUNGO0FBRU8sTUFBTXhCLGFBQWFELE1BQU0wQixXQUFXIn0=
@@ -117,22 +117,6 @@ class NonTerminalNode {
117
117
  const multiplicity = this.getMultiplicity(), singular = multiplicity === 1;
118
118
  return singular;
119
119
  }
120
- isInvalid() {
121
- let invalid = false;
122
- const empty = this.isEmpty(), unprecedented = this.isUnprecedented();
123
- if (empty || unprecedented) {
124
- invalid = true;
125
- }
126
- return invalid;
127
- }
128
- isEmpty() {
129
- const multiplicity = this.getMultiplicity(), empty = multiplicity === 0;
130
- return empty;
131
- }
132
- isMutable() {
133
- const mutable = false;
134
- return mutable;
135
- }
136
120
  isUnprecedented() {
137
121
  let unprecedented = true;
138
122
  const childNodesPrecedenceCompares = this.compareChildNodesPrecedence();
@@ -242,4 +226,4 @@ function cloneChildNodes(childNodes) {
242
226
  return childNodes;
243
227
  }
244
228
 
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuaW1wb3J0IHsgdHJhbnNwYXJlbnRQcmVjZWRlbmNlIH0gZnJvbSBcIi4uL3ByZWNlZGVuY2VcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQcmVjZWRlbmNlKHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGlzT3BhcXVlKCkge1xuICAgIGNvbnN0IG9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IG9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIG9wYXF1ZTtcbiAgfVxuXG4gIGlzU2VtaU9wYXF1ZSgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gc2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIHNlbWlPcGFxdWU7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHNlbWlPcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBudWxsKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgaXNOb25UZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdHJ1ZTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKSB7XG4gICAgcmV0dXJuIGRlc2NlbmRhbnROb2RlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAobGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5nZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2Vucyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNJbnZhbGlkKCkge1xuICAgIGxldCBpbnZhbGlkID0gZmFsc2U7XG5cbiAgICBjb25zdCBlbXB0eSA9IHRoaXMuaXNFbXB0eSgpLFxuICAgICAgICAgIHVucHJlY2VkZW50ZWQgPSB0aGlzLmlzVW5wcmVjZWRlbnRlZCgpO1xuXG4gICAgaWYgKGVtcHR5IHx8IHVucHJlY2VkZW50ZWQpIHtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBpbnZhbGlkO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpLFxuICAgICAgICAgIGVtcHR5ID0gKG11bHRpcGxpY2l0eSA9PT0gMCk7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBpc011dGFibGUoKSB7XG4gICAgY29uc3QgbXV0YWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG11dGFibGU7XG4gIH1cblxuICBpc1VucHJlY2VkZW50ZWQoKSB7XG4gICAgbGV0IHVucHJlY2VkZW50ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyA9IHRoaXMuY29tcGFyZUNoaWxkTm9kZXNQcmVjZWRlbmNlKCk7XG5cbiAgICBpZiAoY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcykge1xuICAgICAgdW5wcmVjZWRlbnRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB1bnByZWNlZGVudGVkO1xuICB9XG5cbiAgY29tcGFyZVByZWNlZGVuY2UocHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpIHtcbiAgICBsZXQgcHJlY2VkZW5jZUNvbXBhcmVzO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gbnVsbCkge1xuICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gdHJhbnNwYXJlbnRQcmVjZWRlbmNlKSB7XG4gICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLmNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMgPSBjaGlsZE5vZGUuY29tcGFyZVByZWNlZGVuY2UocHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZWNlZGVuY2VDb21wYXJlcyA9IHRoaXMucHJlY2VkZW5jZS5jb21wYXJlKHByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlY2VkZW5jZUNvbXBhcmVzO1xuICB9XG5cbiAgY29tcGFyZUNoaWxkTm9kZXNQcmVjZWRlbmNlKCkge1xuICAgIGxldCBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzID0gdHJ1ZTtcblxuICAgIGlmICgodGhpcy5wcmVjZWRlbmNlICE9PSBudWxsKSAmJiAodGhpcy5wcmVjZWRlbmNlICE9PSB0cmFuc3BhcmVudFByZWNlZGVuY2UpKSB7XG4gICAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpLFxuICAgICAgICAgICAgbGFzdEluZGV4ID0gKG11bHRpcGxpY2l0eSAtIDEpLFxuICAgICAgICAgICAgZmlyc3RJbmRleCA9IDA7XG5cbiAgICAgIGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLmNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdCA9IChpbmRleCA9PT0gbGFzdEluZGV4KSxcbiAgICAgICAgICAgICAgZmlyc3QgPSAoaW5kZXggPT09IGZpcnN0SW5kZXgpLFxuICAgICAgICAgICAgICBjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMgPSBjaGlsZE5vZGUuY29tcGFyZVByZWNlZGVuY2UodGhpcy5wcmVjZWRlbmNlLCBmaXJzdCwgbGFzdCk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZVByZWNlZGVuY2VDb21wYXJlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcztcbiAgfVxuXG4gIGFzUGFyc2VUcmVlKHRva2Vucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgPSBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUuZnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2VucyksXG4gICAgICAgICAgcGFyc2VUcmVlID0gbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyc2VUcmVlO1xuICB9XG5cbiAgbWF0Y2gobm9kZSwgZGVwdGggPSBJbmZpbml0eSwgZXhhY3RseSA9IGZhbHNlKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gICAgICBpZiAodGhpcy5ydWxlTmFtZSA9PT0gbm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlT3BhY2l0eSA9IG5vblRlcm1pbmFsTm9kZS5nZXRPcGFjaXR5KCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3BhY2l0eSA9PT0gbm9uVGVybWluYWxOb2RlT3BhY2l0eSkge1xuICAgICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLmdldFByZWNlZGVuY2UoKSxcbiAgICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlID0gbm9uVGVybWluYWxOb2RlLmdldFByZWNlZGVuY2UoKTtcblxuICAgICAgICAgIGlmIChwcmVjZWRlbmNlID09PSBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICBkZXB0aC0tO1xuXG4gICAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICAgICAgICAgICAgICBtYXRjaGVzID0gbWF0Y2godGhpcy5jaGlsZE5vZGVzLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAoY2hpbGROb2RlLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlID0gY2hpbGROb2RlLm1hdGNoKG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSwgZGVwdGgsIGV4YWN0bHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICByZXdyaXRlKHN0YXRlKSB7XG4gICAgY29uc3QgcmV3cml0dGVuTm9uVGVybWluYWxOb2RlID0gdGhpczsgIC8vL1xuXG4gICAgcmV0dXJuIHJld3JpdHRlbk5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JFYWNoQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsO1xuXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gbnVsbDtcbiAgfVxuXG4gIGNsb25lKC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IENsYXNzID0gdGhpcy5jb25zdHJ1Y3RvcixcbiAgICAgICAgICBwYXJlbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBydWxlTmFtZSA9IHRoaXMucnVsZU5hbWUsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IGNsb25lQ2hpbGROb2Rlcyh0aGlzLmNoaWxkTm9kZXMpLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSB0aGlzLnByZWNlZGVuY2UsXG4gICAgICAgICAgb3BhY2l0eSA9IHRoaXMub3BhY2l0eSxcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBuZXcgQ2xhc3MocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub25UZXJtaW5hbE5vZGUuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoKTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5KENsYXNzLCBydWxlTmFtZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKG9wYWNpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3BhY2l0eSA9IHByZWNlZGVuY2U7IC8vL1xuXG4gICAgICBwcmVjZWRlbmNlID0gY2hpbGROb2RlczsgLy8vXG5cbiAgICAgIGNoaWxkTm9kZXMgPSBydWxlTmFtZTsgIC8vL1xuXG4gICAgICBydWxlTmFtZSA9IENsYXNzOyAvLy9cblxuICAgICAgQ2xhc3MgPSBOb25UZXJtaW5hbE5vZGU7ICAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBuZXcgQ2xhc3MocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub25UZXJtaW5hbE5vZGUuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoKTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihOb25UZXJtaW5hbE5vZGUucHJvdG90eXBlLCBub2RlTWl4aW5zKTtcblxuZnVuY3Rpb24gY2xvbmVDaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXMubWFwKChjaGlsZE5vZGUpID0+IHsgIC8vL1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jbG9uZSgpOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGROb2RlO1xuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJOb25UZXJtaW5hbE5vZGUiLCJtYXRjaCIsImFycmF5VXRpbGl0aWVzIiwib3BhcXVlIiwib3BhcXVlU3BlY2lhbFN5bWJvbCIsInNlbWlPcGFxdWUiLCJzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCIsInNwZWNpYWxTeW1ib2xzIiwicnVsZU5hbWUiLCJwYXJlbnROb2RlIiwiY2hpbGROb2RlcyIsInByZWNlZGVuY2UiLCJvcGFjaXR5IiwiZ2V0UnVsZU5hbWUiLCJnZXRQYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlcyIsImdldFByZWNlZGVuY2UiLCJnZXRPcGFjaXR5Iiwic2V0UnVsZU5hbWUiLCJzZXRQYXJlbnROb2RlIiwic2V0Q2hpbGROb2RlcyIsInN0YXJ0SW5kZXgiLCJkZWxldGVDb3VudCIsIkluZmluaXR5IiwiYWRkZWRDaGlsZE5vZGVzIiwic3BsaWNlQ2hpbGROb2RlcyIsInNldFByZWNlZGVuY2UiLCJzZXRPcGFjaXR5IiwiaXNPcGFxdWUiLCJpc1NlbWlPcGFxdWUiLCJpc1RyYW5zcGFyZW50IiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImdldERlc2NlbmRhbnROb2RlcyIsImRlc2NlbmRhbnROb2RlcyIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwidG9rZW5zIiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJmb3J3YXJkc1NvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiLCJub2RlIiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJiYWNrd2FyZHNTb21lQ2hpbGROb2RlIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbnMiLCJzaWduaWZpY2FudFRva2VucyIsImZvckVhY2giLCJnZXRNdWx0aXBsaWNpdHkiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwibXVsdGlwbGljaXR5IiwiaXNTaW5ndWxhciIsInNpbmd1bGFyIiwiaXNJbnZhbGlkIiwiaW52YWxpZCIsImVtcHR5IiwiaXNFbXB0eSIsInVucHJlY2VkZW50ZWQiLCJpc1VucHJlY2VkZW50ZWQiLCJpc011dGFibGUiLCJtdXRhYmxlIiwiY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyIsImNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSIsImNvbXBhcmVQcmVjZWRlbmNlIiwiZmlyc3QiLCJsYXN0IiwicHJlY2VkZW5jZUNvbXBhcmVzIiwidHJhbnNwYXJlbnRQcmVjZWRlbmNlIiwiZXZlcnkiLCJjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMiLCJjb21wYXJlIiwibGFzdEluZGV4IiwiZmlyc3RJbmRleCIsImluZGV4IiwiYXNQYXJzZVRyZWUiLCJub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJmcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zIiwicGFyc2VUcmVlIiwiZGVwdGgiLCJleGFjdGx5IiwibWF0Y2hlcyIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsIm5vblRlcm1pbmFsTm9kZU9wYWNpdHkiLCJub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsIm5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsImNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUiLCJyZXdyaXRlIiwic3RhdGUiLCJyZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGUiLCJkZXN0cm95IiwiZm9yRWFjaENoaWxkTm9kZSIsImNsb25lIiwicmVtYWluaW5nQXJndW1lbnRzIiwiQ2xhc3MiLCJjbG9uZUNoaWxkTm9kZXMiLCJzZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eSIsInVuZGVmaW5lZCIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsIm5vZGVNaXhpbnMiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBcUJBOzs7MkJBWFU7NkJBQ0E7NkRBRVI7d0VBQ2M7NEJBRUM7Ozs7OztBQUV0QyxNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUMxQixFQUFFQyxRQUFRQyxtQkFBbUIsRUFBR0MsWUFBWUMsdUJBQXVCLEVBQUUsR0FBR0MsMkJBQWM7QUFFN0UsTUFBTVA7SUFDbkIsWUFBWVEsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLENBQUU7UUFDakUsSUFBSSxDQUFDSixRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsVUFB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
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuaW1wb3J0IHsgdHJhbnNwYXJlbnRQcmVjZWRlbmNlIH0gZnJvbSBcIi4uL3ByZWNlZGVuY2VcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQcmVjZWRlbmNlKHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGlzT3BhcXVlKCkge1xuICAgIGNvbnN0IG9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IG9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIG9wYXF1ZTtcbiAgfVxuXG4gIGlzU2VtaU9wYXF1ZSgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gc2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIHNlbWlPcGFxdWU7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHNlbWlPcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBudWxsKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgaXNOb25UZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdHJ1ZTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKSB7XG4gICAgcmV0dXJuIGRlc2NlbmRhbnROb2RlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAobGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5nZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2Vucyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNVbnByZWNlZGVudGVkKCkge1xuICAgIGxldCB1bnByZWNlZGVudGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLmNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgIHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIGNvbXBhcmVQcmVjZWRlbmNlKHByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KSB7XG4gICAgbGV0IHByZWNlZGVuY2VDb21wYXJlcztcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IG51bGwpIHtcbiAgICAgIHByZWNlZGVuY2VDb21wYXJlcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IHRyYW5zcGFyZW50UHJlY2VkZW5jZSkge1xuICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzID0gY2hpbGROb2RlLmNvbXBhcmVQcmVjZWRlbmNlKHByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLnByZWNlZGVuY2UuY29tcGFyZShwcmVjZWRlbmNlLCBmaXJzdCwgbGFzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWNlZGVuY2VDb21wYXJlcztcbiAgfVxuXG4gIGNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpIHtcbiAgICBsZXQgY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyA9IHRydWU7XG5cbiAgICBpZiAoKHRoaXMucHJlY2VkZW5jZSAhPT0gbnVsbCkgJiYgKHRoaXMucHJlY2VkZW5jZSAhPT0gdHJhbnNwYXJlbnRQcmVjZWRlbmNlKSkge1xuICAgICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICAgIGxhc3RJbmRleCA9IChtdWx0aXBsaWNpdHkgLSAxKSxcbiAgICAgICAgICAgIGZpcnN0SW5kZXggPSAwO1xuXG4gICAgICBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3QgPSAoaW5kZXggPT09IGxhc3RJbmRleCksXG4gICAgICAgICAgICAgIGZpcnN0ID0gKGluZGV4ID09PSBmaXJzdEluZGV4KSxcbiAgICAgICAgICAgICAgY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzID0gY2hpbGROb2RlLmNvbXBhcmVQcmVjZWRlbmNlKHRoaXMucHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXM7XG4gIH1cblxuICBhc1BhcnNlVHJlZSh0b2tlbnMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlID0gTm9uVGVybWluYWxOb2RlUGFyc2VUcmVlLmZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpLFxuICAgICAgICAgIHBhcnNlVHJlZSA9IG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZTsgIC8vL1xuXG4gICAgcmV0dXJuIHBhcnNlVHJlZTtcbiAgfVxuXG4gIG1hdGNoKG5vZGUsIGRlcHRoID0gSW5maW5pdHksIGV4YWN0bHkgPSBmYWxzZSkge1xuICAgIGxldCBtYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBub2RlTm9uVGVybWluYWxOb2RlID0gbm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgICAgaWYgKHRoaXMucnVsZU5hbWUgPT09IG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkgPSBub25UZXJtaW5hbE5vZGUuZ2V0T3BhY2l0eSgpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wYWNpdHkgPT09IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkpIHtcbiAgICAgICAgICBjb25zdCBwcmVjZWRlbmNlID0gdGhpcy5nZXRQcmVjZWRlbmNlKCksXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRQcmVjZWRlbmNlKCk7XG5cbiAgICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgZGVwdGgtLTtcblxuICAgICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoKHRoaXMuY2hpbGROb2Rlcywgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgKGNoaWxkTm9kZSwgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSA9IGNoaWxkTm9kZS5tYXRjaChub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUsIGRlcHRoLCBleGFjdGx5KTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgcmV3cml0ZShzdGF0ZSkge1xuICAgIGNvbnN0IHJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSA9IHRoaXM7ICAvLy9cblxuICAgIHJldHVybiByZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZm9yRWFjaENoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjaGlsZE5vZGUuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDtcblxuICAgIHRoaXMuY2hpbGROb2RlcyA9IG51bGw7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgcnVsZU5hbWUgPSB0aGlzLnJ1bGVOYW1lLFxuICAgICAgICAgIGNoaWxkTm9kZXMgPSBjbG9uZUNoaWxkTm9kZXModGhpcy5jaGlsZE5vZGVzKSxcbiAgICAgICAgICBwcmVjZWRlbmNlID0gdGhpcy5wcmVjZWRlbmNlLFxuICAgICAgICAgIG9wYWNpdHkgPSB0aGlzLm9wYWNpdHksXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChvcGFjaXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wYWNpdHkgPSBwcmVjZWRlbmNlOyAvLy9cblxuICAgICAgcHJlY2VkZW5jZSA9IGNoaWxkTm9kZXM7IC8vL1xuXG4gICAgICBjaGlsZE5vZGVzID0gcnVsZU5hbWU7ICAvLy9cblxuICAgICAgcnVsZU5hbWUgPSBDbGFzczsgLy8vXG5cbiAgICAgIENsYXNzID0gTm9uVGVybWluYWxOb2RlOyAgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oTm9uVGVybWluYWxOb2RlLnByb3RvdHlwZSwgbm9kZU1peGlucyk7XG5cbmZ1bmN0aW9uIGNsb25lQ2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gIGNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzLm1hcCgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY2xvbmUoKTsgIC8vL1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXM7XG59XG4iXSwibmFtZXMiOlsiTm9uVGVybWluYWxOb2RlIiwibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm9wYXF1ZSIsIm9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzZW1pT3BhcXVlIiwic2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzcGVjaWFsU3ltYm9scyIsInJ1bGVOYW1lIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJwcmVjZWRlbmNlIiwib3BhY2l0eSIsImdldFJ1bGVOYW1lIiwiZ2V0UGFyZW50Tm9kZSIsImdldENoaWxkTm9kZXMiLCJnZXRQcmVjZWRlbmNlIiwiZ2V0T3BhY2l0eSIsInNldFJ1bGVOYW1lIiwic2V0UGFyZW50Tm9kZSIsInNldENoaWxkTm9kZXMiLCJzdGFydEluZGV4IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFkZGVkQ2hpbGROb2RlcyIsInNwbGljZUNoaWxkTm9kZXMiLCJzZXRQcmVjZWRlbmNlIiwic2V0T3BhY2l0eSIsImlzT3BhcXVlIiwiaXNTZW1pT3BhcXVlIiwiaXNUcmFuc3BhcmVudCIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJnZXREZXNjZW5kYW50Tm9kZXMiLCJkZXNjZW5kYW50Tm9kZXMiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInRva2VucyIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZm9yd2FyZHNTb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIiwibm9kZSIsImdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiYmFja3dhcmRzU29tZUNoaWxkTm9kZSIsImdldFNpZ25pZmljYW50VG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbnMiLCJmb3JFYWNoIiwiZ2V0TXVsdGlwbGljaXR5IiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIm11bHRpcGxpY2l0eSIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzVW5wcmVjZWRlbnRlZCIsInVucHJlY2VkZW50ZWQiLCJjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzIiwiY29tcGFyZUNoaWxkTm9kZXNQcmVjZWRlbmNlIiwiY29tcGFyZVByZWNlZGVuY2UiLCJmaXJzdCIsImxhc3QiLCJwcmVjZWRlbmNlQ29tcGFyZXMiLCJ0cmFuc3BhcmVudFByZWNlZGVuY2UiLCJldmVyeSIsImNoaWxkTm9kZVByZWNlZGVuY2VDb21wYXJlcyIsImNvbXBhcmUiLCJsYXN0SW5kZXgiLCJmaXJzdEluZGV4IiwiaW5kZXgiLCJhc1BhcnNlVHJlZSIsIm5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsIk5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsImZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJwYXJzZVRyZWUiLCJkZXB0aCIsImV4YWN0bHkiLCJtYXRjaGVzIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlT3BhY2l0eSIsIm5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UiLCJub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlIiwiY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsInJld3JpdGUiLCJzdGF0ZSIsInJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSIsImRlc3Ryb3kiLCJmb3JFYWNoQ2hpbGROb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNsb25lQ2hpbGROb2RlcyIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibm9kZU1peGlucyIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYVTs2QkFDQTs2REFFUjt3RUFDYzs0QkFFQzs7Ozs7O0FBRXRDLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjLEVBQzFCLEVBQUVDLFFBQVFDLG1CQUFtQixFQUFHQyxZQUFZQyx1QkFBdUIsRUFBRSxHQUFHQywyQkFBYztBQUU3RSxNQUFNUDtJQUNuQixZQUFZUSxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sQ0FBRTtRQUNqRSxJQUFJLENBQUNKLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxPQUFPLEdBQUdBO0lBQ2pCO0lBRUFDLGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQ0wsUUFBUTtJQUN0QjtJQUVBTSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0wsVUFBVTtJQUN4QjtJQUVBTSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0wsVUFBVTtJQUN4QjtJQUVBTSxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0wsVUFBVTtJQUN4QjtJQUVBTSxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUNMLE9BQU87SUFDckI7SUFFQU0sWUFBWVYsUUFBUSxFQUFFO1FBQ3BCLElBQUksQ0FBQ0EsUUFBUSxHQUFHQTtJQUNsQjtJQUVBVyxjQUFjVixVQUFVLEVBQUU7UUFDeEIsSUFBSSxDQUFDQSxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFXLGNBQWNWLFVBQVUsRUFBRTtRQUN4QixNQUFNVyxhQUFhLEdBQ2JDLGNBQWNDLFVBQ2RDLGtCQUFrQmQsWUFB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
@@ -57,10 +57,6 @@ class TerminalNode {
57
57
  getContent() {
58
58
  return this.significantToken.getContent();
59
59
  }
60
- isMutable() {
61
- const mutable = false;
62
- return mutable;
63
- }
64
60
  isUnprecedented() {
65
61
  let unprecedented = false;
66
62
  return unprecedented;
@@ -211,4 +207,4 @@ class TerminalNode {
211
207
  }
212
208
  }
213
209
 
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL3Rlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVGVybWluYWxOb2RlUGFyc2VUcmVlIGZyb20gXCIuLi9wYXJzZVRyZWUvdGVybWluYWxOb2RlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlcm1pbmFsTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHNpZ25pZmljYW50VG9rZW4sIHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnNpZ25pZmljYW50VG9rZW4gPSBzaWduaWZpY2FudFRva2VuO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25pZmljYW50VG9rZW47XG4gIH1cblxuICBnZXRQYXJlbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGU7XG4gIH1cblxuICBzZXRTaWduaWZpY2FudFRva2VuKHNpZ25pZmljYW50VG9rZW4pIHtcbiAgICB0aGlzLnNpZ25pZmljYW50VG9rZW4gPSBzaWduaWZpY2FudFRva2VuO1xuICB9XG5cbiAgc2V0UGFyZW50Tm9kZShwYXJlbnROb2RlKSB7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgfVxuXG4gIGlzTm9XaGl0ZXNwYWNlTm9kZSgpIHtcbiAgICBjb25zdCBub1doaXRlc3BhY2VOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbm9XaGl0ZXNwYWNlTm9kZTtcbiAgfVxuXG4gIGlzQ3V0Tm9kZSgpIHtcbiAgICBjb25zdCBjdXROb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gY3V0Tm9kZTtcbiAgfVxuXG4gIGlzRXBzaWxvbk5vZGUoKSB7XG4gICAgY29uc3QgZXBzaWxvbk5vZGUgPSBmYWxzZTtcblxuICAgIHJldHVybiBlcHNpbG9uTm9kZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IHRydWU7XG4gICAgXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7IHJldHVybiB0aGlzLnNpZ25pZmljYW50VG9rZW4uZ2V0VHlwZSgpOyB9XG5cbiAgZ2V0Q29udGVudCgpIHsgcmV0dXJuIHRoaXMuc2lnbmlmaWNhbnRUb2tlbi5nZXRDb250ZW50KCk7IH1cblxuICBpc011dGFibGUoKSB7XG4gICAgY29uc3QgbXV0YWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG11dGFibGU7XG4gIH1cblxuICBpc1VucHJlY2VkZW50ZWQoKSB7XG4gICAgbGV0IHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiB1bnByZWNlZGVudGVkO1xuICB9XG5cbiAgY29tcGFyZVByZWNlZGVuY2UocHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpIHtcbiAgICBjb25zdCBwcmVjZWRlbmNlQ29tcGFyZXMgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHByZWNlZGVuY2VDb21wYXJlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGNvbnN0IHNpZ25pZmljYW50VG9rZW5JbmRleCA9IHRoaXMuZ2V0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBzaWduaWZpY2FudFRva2VuSW5kZXg7IC8vL1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBjb25zdCBzaWduaWZpY2FudFRva2VuSW5kZXggPSB0aGlzLmdldFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBzaWduaWZpY2FudFRva2VuSW5kZXg7IC8vL1xuXG4gICAgcmV0dXJuIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgbGV0IHNpZ25pZmljYW50VG9rZW5JbmRleCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5zaWduaWZpY2FudFRva2VuICE9PSBudWxsKSB7XG4gICAgICBzaWduaWZpY2FudFRva2VuSW5kZXggPSB0b2tlbnMuaW5kZXhPZih0aGlzLnNpZ25pZmljYW50VG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2VucyA9IFtdKSB7XG4gICAgaWYgKHRoaXMuc2lnbmlmaWNhbnRUb2tlbiAhPT0gbnVsbCkge1xuICAgICAgc2lnbmlmaWNhbnRUb2tlbnMucHVzaCh0aGlzLnNpZ25pZmljYW50VG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduaWZpY2FudFRva2VucztcbiAgfVxuXG4gIGdldEFuY2VzdG9yTm9kZXMoKSB7XG4gICAgY29uc3QgYW5jZXN0b3JOb2RlcyA9IFtdO1xuXG4gICAgbGV0IGFuY2VzdG9yTm9kZSA9IHRoaXMucGFyZW50Tm9kZTsgLy8vXG5cbiAgICB3aGlsZSAoYW5jZXN0b3JOb2RlICE9PSBudWxsKSB7XG4gICAgICBhbmNlc3Rvck5vZGVzLnB1c2goYW5jZXN0b3JOb2RlKTtcblxuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IGFuY2VzdG9yTm9kZS5nZXRQYXJlbnROb2RlKCk7XG5cbiAgICAgIGFuY2VzdG9yTm9kZSA9IHBhcmVudE5vZGU7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JOb2RlcztcbiAgfVxuXG4gIG1hcEFuY2VzdG9yTm9kZShjYWxsYmFjaykge1xuICAgIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSB0aGlzLmdldEFuY2VzdG9yTm9kZXMoKTtcblxuICAgIHJldHVybiBhbmNlc3Rvck5vZGVzLm1hcChjYWxsYmFjayk7XG4gIH1cblxuICBzb21lQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgbGV0IGluZGV4ID0gMCxcbiAgICAgICAgYW5jZXN0b3JOb2RlID0gdGhpcy5wYXJlbnROb2RlOyAvLy9cblxuICAgIHdoaWxlIChhbmNlc3Rvck5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdCA9ICEhY2FsbGJhY2soYW5jZXN0b3JOb2RlLCBpbmRleCk7IC8vL1xuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gYW5jZXN0b3JOb2RlLmdldFBhcmVudE5vZGUoKTtcblxuICAgICAgYW5jZXN0b3JOb2RlID0gcGFyZW50Tm9kZTsgIC8vL1xuXG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmaW5kQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IGluZGV4ID0gMCxcbiAgICAgICAgYW5jZXN0b3JOb2RlID0gdGhpcy5wYXJlbnROb2RlOyAvLy9cblxuICAgIHdoaWxlIChhbmNlc3Rvck5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGFuY2VzdG9yTm9kZSwgaW5kZXgpO1xuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBhbmNlc3Rvck5vZGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBhbmNlc3Rvck5vZGUuZ2V0UGFyZW50Tm9kZSgpO1xuXG4gICAgICBhbmNlc3Rvck5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgYW5jZXN0b3JOb2RlID0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIGFuY2VzdG9yTm9kZTtcbiAgfVxuXG4gIGV2ZXJ5QW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBsZXQgaW5kZXggPSAwLFxuICAgICAgICBhbmNlc3Rvck5vZGUgPSB0aGlzLnBhcmVudE5vZGU7IC8vL1xuXG4gICAgd2hpbGUgKGFuY2VzdG9yTm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gISFjYWxsYmFjayhhbmNlc3Rvck5vZGUsIGluZGV4KTsgLy8vXG5cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gYW5jZXN0b3JOb2RlLmdldFBhcmVudE5vZGUoKTtcblxuICAgICAgYW5jZXN0b3JOb2RlID0gcGFyZW50Tm9kZTsgIC8vL1xuXG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmaWx0ZXJBbmNlc3Rvck5vZGUoY2FsbGJhY2spIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gdGhpcy5nZXRBbmNlc3Rvck5vZGVzKCk7XG5cbiAgICByZXR1cm4gYW5jZXN0b3JOb2Rlcy5maWx0ZXIoY2FsbGJhY2spO1xuICB9XG5cbiAgcmVkdWNlQW5jZXN0b3JOb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gdGhpcy5nZXRBbmNlc3Rvck5vZGVzKCk7XG5cbiAgICByZXR1cm4gYW5jZXN0b3JOb2Rlcy5yZWR1Y2UoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSk7XG4gIH1cblxuICBmb3JFYWNoQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYW5jZXN0b3JOb2RlcyA9IHRoaXMuZ2V0QW5jZXN0b3JOb2RlcygpO1xuXG4gICAgYW5jZXN0b3JOb2Rlcy5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldERlc2NlbmRhbnROb2RlcyhkZXNjZW5kYW50Tm9kZXMgPSBbXSkge1xuICAgIHJldHVybiBkZXNjZW5kYW50Tm9kZXM7XG4gIH1cblxuICBzb21lRGVzY2VuZGFudE5vZGUoY2FsbGJhY2spIHtcbiAgICBjb25zdCByZXN1bHQgPSBmYWxzZTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmaW5kRGVzY2VuZGFudE5vZGUoY2FsbGJhY2spIHtcbiAgICBsZXQgZGVzY2VuZGFudE5vZGUgPSB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gZGVzY2VuZGFudE5vZGU7XG4gIH1cblxuICBldmVyeURlc2NlbmRhbnROb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXNQYXJzZVRyZWUodG9rZW5zKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIHRlcm1pbmFsTm9kZVBhcnNlVHJlZSA9IFRlcm1pbmFsTm9kZVBhcnNlVHJlZS5mcm9tVGVybWluYWxOb2RlQW5kVG9rZW5zKHRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgICBwYXJzZVRyZWUgPSB0ZXJtaW5hbE5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBtYXRjaChub2RlLCBkZXB0aCA9IEluZmluaXR5LCBleGFjdGx5ID0gZmFsc2UpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBzaWduaWZpY2FudFRva2VuID0gdGVybWluYWxOb2RlLmdldFNpZ25pZmljYW50VG9rZW4oKTtcblxuICAgICAgbWF0Y2hlcyA9IGV4YWN0bHkgP1xuICAgICAgICAgICAgICAgICAgKHRoaXMuc2lnbmlmaWNhbnRUb2tlbiA9PT0gc2lnbmlmaWNhbnRUb2tlbikgOlxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaWduaWZpY2FudFRva2VuLm1hdGNoKHNpZ25pZmljYW50VG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgY2xvbmUoLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgQ2xhc3MgPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHNpZ25pZmljYW50VG9rZW4gPSB0aGlzLnNpZ25pZmljYW50VG9rZW4sXG4gICAgICAgICAgdGVybWluYWxOb2RlID0gbmV3IENsYXNzKHNpZ25pZmljYW50VG9rZW4sIHBhcmVudE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsO1xuICAgIHRoaXMuc2lnbmlmaWNhbnRUb2tlbiA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoQ2xhc3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChDbGFzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBDbGFzcyA9IFRlcm1pbmFsTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmlmaWNhbnRUb2tlbiA9IG51bGwsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgdGVybWluYWxOb2RlID0gbmV3IENsYXNzKHNpZ25pZmljYW50VG9rZW4sIHBhcmVudE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TaWduaWZpY2FudFRva2VuKENsYXNzLCBzaWduaWZpY2FudFRva2VuLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAoc2lnbmlmaWNhbnRUb2tlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzaWduaWZpY2FudFRva2VuID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IFRlcm1pbmFsTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgdGVybWluYWxOb2RlID0gbmV3IENsYXNzKHNpZ25pZmljYW50VG9rZW4sIHBhcmVudE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG59XG4iXSwibmFtZXMiOlsiVGVybWluYWxOb2RlIiwic2lnbmlmaWNhbnRUb2tlbiIsInBhcmVudE5vZGUiLCJnZXRTaWduaWZpY2FudFRva2VuIiwiZ2V0UGFyZW50Tm9kZSIsInNldFNpZ25pZmljYW50VG9rZW4iLCJzZXRQYXJlbnROb2RlIiwiaXNOb1doaXRlc3BhY2VOb2RlIiwibm9XaGl0ZXNwYWNlTm9kZSIsImlzQ3V0Tm9kZSIsImN1dE5vZGUiLCJpc0Vwc2lsb25Ob2RlIiwiZXBzaWxvbk5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0VHlwZSIsImdldENvbnRlbnQiLCJpc011dGFibGUiLCJtdXRhYmxlIiwiaXNVbnByZWNlZGVudGVkIiwidW5wcmVjZWRlbnRlZCIsImNvbXBhcmVQcmVjZWRlbmNlIiwicHJlY2VkZW5jZSIsImZpcnN0IiwibGFzdCIsInByZWNlZGVuY2VDb21wYXJlcyIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwidG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwibGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImluZGV4T2YiLCJnZXRTaWduaWZpY2FudFRva2VucyIsInNpZ25pZmljYW50VG9rZW5zIiwicHVzaCIsImdldEFuY2VzdG9yTm9kZXMiLCJhbmNlc3Rvck5vZGVzIiwiYW5jZXN0b3JOb2RlIiwibWFwQW5jZXN0b3JOb2RlIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lQW5jZXN0b3JOb2RlIiwicmVzdWx0IiwiaW5kZXgiLCJmaW5kQW5jZXN0b3JOb2RlIiwidW5kZWZpbmVkIiwiZXZlcnlBbmNlc3Rvck5vZGUiLCJmaWx0ZXJBbmNlc3Rvck5vZGUiLCJmaWx0ZXIiLCJyZWR1Y2VBbmNlc3Rvck5vZGUiLCJpbml0aWFsVmFsdWUiLCJyZWR1Y2UiLCJmb3JFYWNoQW5jZXN0b3JOb2RlIiwiZm9yRWFjaCIsImdldERlc2NlbmRhbnROb2RlcyIsImRlc2NlbmRhbnROb2RlcyIsInNvbWVEZXNjZW5kYW50Tm9kZSIsImZpbmREZXNjZW5kYW50Tm9kZSIsImRlc2NlbmRhbnROb2RlIiwiZXZlcnlEZXNjZW5kYW50Tm9kZSIsImFzUGFyc2VUcmVlIiwidGVybWluYWxOb2RlUGFyc2VUcmVlIiwiVGVybWluYWxOb2RlUGFyc2VUcmVlIiwiZnJvbVRlcm1pbmFsTm9kZUFuZFRva2VucyIsInBhcnNlVHJlZSIsIm1hdGNoIiwibm9kZSIsImRlcHRoIiwiSW5maW5pdHkiLCJleGFjdGx5IiwibWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJjbG9uZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsIkNsYXNzIiwiZGVzdHJveSIsImZyb21Ob3RoaW5nIiwiZnJvbVNpZ25pZmljYW50VG9rZW4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBcUJBOzs7cUVBRmE7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
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL3Rlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVGVybWluYWxOb2RlUGFyc2VUcmVlIGZyb20gXCIuLi9wYXJzZVRyZWUvdGVybWluYWxOb2RlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlcm1pbmFsTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHNpZ25pZmljYW50VG9rZW4sIHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnNpZ25pZmljYW50VG9rZW4gPSBzaWduaWZpY2FudFRva2VuO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25pZmljYW50VG9rZW47XG4gIH1cblxuICBnZXRQYXJlbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGU7XG4gIH1cblxuICBzZXRTaWduaWZpY2FudFRva2VuKHNpZ25pZmljYW50VG9rZW4pIHtcbiAgICB0aGlzLnNpZ25pZmljYW50VG9rZW4gPSBzaWduaWZpY2FudFRva2VuO1xuICB9XG5cbiAgc2V0UGFyZW50Tm9kZShwYXJlbnROb2RlKSB7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgfVxuXG4gIGlzTm9XaGl0ZXNwYWNlTm9kZSgpIHtcbiAgICBjb25zdCBub1doaXRlc3BhY2VOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbm9XaGl0ZXNwYWNlTm9kZTtcbiAgfVxuXG4gIGlzQ3V0Tm9kZSgpIHtcbiAgICBjb25zdCBjdXROb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gY3V0Tm9kZTtcbiAgfVxuXG4gIGlzRXBzaWxvbk5vZGUoKSB7XG4gICAgY29uc3QgZXBzaWxvbk5vZGUgPSBmYWxzZTtcblxuICAgIHJldHVybiBlcHNpbG9uTm9kZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IHRydWU7XG4gICAgXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7IHJldHVybiB0aGlzLnNpZ25pZmljYW50VG9rZW4uZ2V0VHlwZSgpOyB9XG5cbiAgZ2V0Q29udGVudCgpIHsgcmV0dXJuIHRoaXMuc2lnbmlmaWNhbnRUb2tlbi5nZXRDb250ZW50KCk7IH1cblxuICBpc1VucHJlY2VkZW50ZWQoKSB7XG4gICAgbGV0IHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiB1bnByZWNlZGVudGVkO1xuICB9XG5cbiAgY29tcGFyZVByZWNlZGVuY2UocHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpIHtcbiAgICBjb25zdCBwcmVjZWRlbmNlQ29tcGFyZXMgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHByZWNlZGVuY2VDb21wYXJlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGNvbnN0IHNpZ25pZmljYW50VG9rZW5JbmRleCA9IHRoaXMuZ2V0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBzaWduaWZpY2FudFRva2VuSW5kZXg7IC8vL1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBjb25zdCBzaWduaWZpY2FudFRva2VuSW5kZXggPSB0aGlzLmdldFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBzaWduaWZpY2FudFRva2VuSW5kZXg7IC8vL1xuXG4gICAgcmV0dXJuIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgbGV0IHNpZ25pZmljYW50VG9rZW5JbmRleCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5zaWduaWZpY2FudFRva2VuICE9PSBudWxsKSB7XG4gICAgICBzaWduaWZpY2FudFRva2VuSW5kZXggPSB0b2tlbnMuaW5kZXhPZih0aGlzLnNpZ25pZmljYW50VG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2VucyA9IFtdKSB7XG4gICAgaWYgKHRoaXMuc2lnbmlmaWNhbnRUb2tlbiAhPT0gbnVsbCkge1xuICAgICAgc2lnbmlmaWNhbnRUb2tlbnMucHVzaCh0aGlzLnNpZ25pZmljYW50VG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduaWZpY2FudFRva2VucztcbiAgfVxuXG4gIGdldEFuY2VzdG9yTm9kZXMoKSB7XG4gICAgY29uc3QgYW5jZXN0b3JOb2RlcyA9IFtdO1xuXG4gICAgbGV0IGFuY2VzdG9yTm9kZSA9IHRoaXMucGFyZW50Tm9kZTsgLy8vXG5cbiAgICB3aGlsZSAoYW5jZXN0b3JOb2RlICE9PSBudWxsKSB7XG4gICAgICBhbmNlc3Rvck5vZGVzLnB1c2goYW5jZXN0b3JOb2RlKTtcblxuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IGFuY2VzdG9yTm9kZS5nZXRQYXJlbnROb2RlKCk7XG5cbiAgICAgIGFuY2VzdG9yTm9kZSA9IHBhcmVudE5vZGU7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JOb2RlcztcbiAgfVxuXG4gIG1hcEFuY2VzdG9yTm9kZShjYWxsYmFjaykge1xuICAgIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSB0aGlzLmdldEFuY2VzdG9yTm9kZXMoKTtcblxuICAgIHJldHVybiBhbmNlc3Rvck5vZGVzLm1hcChjYWxsYmFjayk7XG4gIH1cblxuICBzb21lQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgbGV0IGluZGV4ID0gMCxcbiAgICAgICAgYW5jZXN0b3JOb2RlID0gdGhpcy5wYXJlbnROb2RlOyAvLy9cblxuICAgIHdoaWxlIChhbmNlc3Rvck5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdCA9ICEhY2FsbGJhY2soYW5jZXN0b3JOb2RlLCBpbmRleCk7IC8vL1xuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gYW5jZXN0b3JOb2RlLmdldFBhcmVudE5vZGUoKTtcblxuICAgICAgYW5jZXN0b3JOb2RlID0gcGFyZW50Tm9kZTsgIC8vL1xuXG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmaW5kQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IGluZGV4ID0gMCxcbiAgICAgICAgYW5jZXN0b3JOb2RlID0gdGhpcy5wYXJlbnROb2RlOyAvLy9cblxuICAgIHdoaWxlIChhbmNlc3Rvck5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGFuY2VzdG9yTm9kZSwgaW5kZXgpO1xuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBhbmNlc3Rvck5vZGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBhbmNlc3Rvck5vZGUuZ2V0UGFyZW50Tm9kZSgpO1xuXG4gICAgICBhbmNlc3Rvck5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgYW5jZXN0b3JOb2RlID0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIGFuY2VzdG9yTm9kZTtcbiAgfVxuXG4gIGV2ZXJ5QW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBsZXQgaW5kZXggPSAwLFxuICAgICAgICBhbmNlc3Rvck5vZGUgPSB0aGlzLnBhcmVudE5vZGU7IC8vL1xuXG4gICAgd2hpbGUgKGFuY2VzdG9yTm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gISFjYWxsYmFjayhhbmNlc3Rvck5vZGUsIGluZGV4KTsgLy8vXG5cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gYW5jZXN0b3JOb2RlLmdldFBhcmVudE5vZGUoKTtcblxuICAgICAgYW5jZXN0b3JOb2RlID0gcGFyZW50Tm9kZTsgIC8vL1xuXG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmaWx0ZXJBbmNlc3Rvck5vZGUoY2FsbGJhY2spIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gdGhpcy5nZXRBbmNlc3Rvck5vZGVzKCk7XG5cbiAgICByZXR1cm4gYW5jZXN0b3JOb2Rlcy5maWx0ZXIoY2FsbGJhY2spO1xuICB9XG5cbiAgcmVkdWNlQW5jZXN0b3JOb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gdGhpcy5nZXRBbmNlc3Rvck5vZGVzKCk7XG5cbiAgICByZXR1cm4gYW5jZXN0b3JOb2Rlcy5yZWR1Y2UoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSk7XG4gIH1cblxuICBmb3JFYWNoQW5jZXN0b3JOb2RlKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYW5jZXN0b3JOb2RlcyA9IHRoaXMuZ2V0QW5jZXN0b3JOb2RlcygpO1xuXG4gICAgYW5jZXN0b3JOb2Rlcy5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldERlc2NlbmRhbnROb2RlcyhkZXNjZW5kYW50Tm9kZXMgPSBbXSkge1xuICAgIHJldHVybiBkZXNjZW5kYW50Tm9kZXM7XG4gIH1cblxuICBzb21lRGVzY2VuZGFudE5vZGUoY2FsbGJhY2spIHtcbiAgICBjb25zdCByZXN1bHQgPSBmYWxzZTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmaW5kRGVzY2VuZGFudE5vZGUoY2FsbGJhY2spIHtcbiAgICBsZXQgZGVzY2VuZGFudE5vZGUgPSB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gZGVzY2VuZGFudE5vZGU7XG4gIH1cblxuICBldmVyeURlc2NlbmRhbnROb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXNQYXJzZVRyZWUodG9rZW5zKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIHRlcm1pbmFsTm9kZVBhcnNlVHJlZSA9IFRlcm1pbmFsTm9kZVBhcnNlVHJlZS5mcm9tVGVybWluYWxOb2RlQW5kVG9rZW5zKHRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgICBwYXJzZVRyZWUgPSB0ZXJtaW5hbE5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBtYXRjaChub2RlLCBkZXB0aCA9IEluZmluaXR5LCBleGFjdGx5ID0gZmFsc2UpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBzaWduaWZpY2FudFRva2VuID0gdGVybWluYWxOb2RlLmdldFNpZ25pZmljYW50VG9rZW4oKTtcblxuICAgICAgbWF0Y2hlcyA9IGV4YWN0bHkgP1xuICAgICAgICAgICAgICAgICAgKHRoaXMuc2lnbmlmaWNhbnRUb2tlbiA9PT0gc2lnbmlmaWNhbnRUb2tlbikgOlxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaWduaWZpY2FudFRva2VuLm1hdGNoKHNpZ25pZmljYW50VG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgY2xvbmUoLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgQ2xhc3MgPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHNpZ25pZmljYW50VG9rZW4gPSB0aGlzLnNpZ25pZmljYW50VG9rZW4sXG4gICAgICAgICAgdGVybWluYWxOb2RlID0gbmV3IENsYXNzKHNpZ25pZmljYW50VG9rZW4sIHBhcmVudE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsO1xuICAgIHRoaXMuc2lnbmlmaWNhbnRUb2tlbiA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoQ2xhc3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChDbGFzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBDbGFzcyA9IFRlcm1pbmFsTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmlmaWNhbnRUb2tlbiA9IG51bGwsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgdGVybWluYWxOb2RlID0gbmV3IENsYXNzKHNpZ25pZmljYW50VG9rZW4sIHBhcmVudE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TaWduaWZpY2FudFRva2VuKENsYXNzLCBzaWduaWZpY2FudFRva2VuLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAoc2lnbmlmaWNhbnRUb2tlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzaWduaWZpY2FudFRva2VuID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IFRlcm1pbmFsTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgdGVybWluYWxOb2RlID0gbmV3IENsYXNzKHNpZ25pZmljYW50VG9rZW4sIHBhcmVudE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG59XG4iXSwibmFtZXMiOlsiVGVybWluYWxOb2RlIiwic2lnbmlmaWNhbnRUb2tlbiIsInBhcmVudE5vZGUiLCJnZXRTaWduaWZpY2FudFRva2VuIiwiZ2V0UGFyZW50Tm9kZSIsInNldFNpZ25pZmljYW50VG9rZW4iLCJzZXRQYXJlbnROb2RlIiwiaXNOb1doaXRlc3BhY2VOb2RlIiwibm9XaGl0ZXNwYWNlTm9kZSIsImlzQ3V0Tm9kZSIsImN1dE5vZGUiLCJpc0Vwc2lsb25Ob2RlIiwiZXBzaWxvbk5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0VHlwZSIsImdldENvbnRlbnQiLCJpc1VucHJlY2VkZW50ZWQiLCJ1bnByZWNlZGVudGVkIiwiY29tcGFyZVByZWNlZGVuY2UiLCJwcmVjZWRlbmNlIiwiZmlyc3QiLCJsYXN0IiwicHJlY2VkZW5jZUNvbXBhcmVzIiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJ0b2tlbnMiLCJzaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRTaWduaWZpY2FudFRva2VuSW5kZXgiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiaW5kZXhPZiIsImdldFNpZ25pZmljYW50VG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbnMiLCJwdXNoIiwiZ2V0QW5jZXN0b3JOb2RlcyIsImFuY2VzdG9yTm9kZXMiLCJhbmNlc3Rvck5vZGUiLCJtYXBBbmNlc3Rvck5vZGUiLCJjYWxsYmFjayIsIm1hcCIsInNvbWVBbmNlc3Rvck5vZGUiLCJyZXN1bHQiLCJpbmRleCIsImZpbmRBbmNlc3Rvck5vZGUiLCJ1bmRlZmluZWQiLCJldmVyeUFuY2VzdG9yTm9kZSIsImZpbHRlckFuY2VzdG9yTm9kZSIsImZpbHRlciIsInJlZHVjZUFuY2VzdG9yTm9kZSIsImluaXRpYWxWYWx1ZSIsInJlZHVjZSIsImZvckVhY2hBbmNlc3Rvck5vZGUiLCJmb3JFYWNoIiwiZ2V0RGVzY2VuZGFudE5vZGVzIiwiZGVzY2VuZGFudE5vZGVzIiwic29tZURlc2NlbmRhbnROb2RlIiwiZmluZERlc2NlbmRhbnROb2RlIiwiZGVzY2VuZGFudE5vZGUiLCJldmVyeURlc2NlbmRhbnROb2RlIiwiYXNQYXJzZVRyZWUiLCJ0ZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJUZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJmcm9tVGVybWluYWxOb2RlQW5kVG9rZW5zIiwicGFyc2VUcmVlIiwibWF0Y2giLCJub2RlIiwiZGVwdGgiLCJJbmZpbml0eSIsImV4YWN0bHkiLCJtYXRjaGVzIiwibm9kZVRlcm1pbmFsTm9kZSIsImNsb25lIiwicmVtYWluaW5nQXJndW1lbnRzIiwiQ2xhc3MiLCJkZXN0cm95IiwiZnJvbU5vdGhpbmciLCJmcm9tU2lnbmlmaWNhbnRUb2tlbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztxRUFGYTs7Ozs7O0FBRW5CLE1BQU1BO0lBQ25CLFlBQVlDLGdCQUFnQixFQUFFQyxVQUFVLENBQUU7UUFDeEMsSUFBSSxDQUFDRCxnQkFBZ0IsR0FBR0E7UUFDeEIsSUFBSSxDQUFD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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-parsers",
3
3
  "author": "James Smith",
4
- "version": "23.3.81",
4
+ "version": "23.3.83",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-parsers",
7
7
  "description": "Occam's parsers.",
package/src/definition.js CHANGED
@@ -56,14 +56,20 @@ export default class Definition {
56
56
  }
57
57
 
58
58
  compose(rule, definition, savedFrame, frame, state) {
59
- const nonTerminalNode = nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state);
59
+ const frameEmpty = frame.isEmpty();
60
60
 
61
- if (nonTerminalNode !== null) {
62
- const childNode = nonTerminalNode; ///
61
+ if (!frameEmpty) {
62
+ const nonTerminalNode = nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame, state);
63
63
 
64
- frame = Frame.fromChildNode(childNode); ///
64
+ if (nonTerminalNode !== null) {
65
+ const childNode = nonTerminalNode; ///
65
66
 
66
- frame = savedFrame.merge(frame); ///
67
+ frame = Frame.fromChildNode(childNode); ///
68
+
69
+ frame = savedFrame.merge(frame); ///
70
+ } else {
71
+ frame = null;
72
+ }
67
73
  } else {
68
74
  frame = null;
69
75
  }
@@ -136,13 +142,5 @@ function nonTerminalNodeFromRuleDefinitionFrameAndState(rule, definition, frame,
136
142
 
137
143
  nonTerminalNode = nonTerminalNode.rewrite(state); ///
138
144
 
139
- if (nonTerminalNode !== null) {
140
- const invalid = nonTerminalNode.isInvalid();
141
-
142
- if (invalid) {
143
- nonTerminalNode = null;
144
- }
145
- }
146
-
147
145
  return nonTerminalNode;
148
146
  }
package/src/frame.js CHANGED
@@ -49,12 +49,26 @@ export default class Frame {
49
49
  return isolated;
50
50
  }
51
51
 
52
+ isSingular() {
53
+ const childNodesLength = this.childNodes.length,
54
+ singular = (childNodesLength === 1);
55
+
56
+ return singular;
57
+ }
58
+
59
+ isEmpty() {
60
+ const childNodesLength = this.childNodes.length,
61
+ empty = (childNodesLength === 0);
62
+
63
+ return empty;
64
+ }
65
+
52
66
  getNode() {
53
67
  let node = null;
54
68
 
55
- const childNodesLength = this.childNodes.length;
69
+ const singluar = this.isIsolated();
56
70
 
57
- if (childNodesLength === 1) {
71
+ if (singluar) {
58
72
  const firstChildNode = first(this.childNodes);
59
73
 
60
74
  node = firstChildNode; ///
@@ -152,32 +152,6 @@ export default class NonTerminalNode {
152
152
  return singular;
153
153
  }
154
154
 
155
- isInvalid() {
156
- let invalid = false;
157
-
158
- const empty = this.isEmpty(),
159
- unprecedented = this.isUnprecedented();
160
-
161
- if (empty || unprecedented) {
162
- invalid = true;
163
- }
164
-
165
- return invalid;
166
- }
167
-
168
- isEmpty() {
169
- const multiplicity = this.getMultiplicity(),
170
- empty = (multiplicity === 0);
171
-
172
- return empty;
173
- }
174
-
175
- isMutable() {
176
- const mutable = false;
177
-
178
- return mutable;
179
- }
180
-
181
155
  isUnprecedented() {
182
156
  let unprecedented = true;
183
157
 
@@ -58,12 +58,6 @@ export default class TerminalNode {
58
58
 
59
59
  getContent() { return this.significantToken.getContent(); }
60
60
 
61
- isMutable() {
62
- const mutable = false;
63
-
64
- return mutable;
65
- }
66
-
67
61
  isUnprecedented() {
68
62
  let unprecedented = false;
69
63