occam-furtle 2.0.340 → 2.0.342

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.
@@ -15,8 +15,8 @@ _export(exports, {
15
15
  get everyStringFromVariableAndAnonymousProcedure () {
16
16
  return everyStringFromVariableAndAnonymousProcedure;
17
17
  },
18
- get expressionStringFromPrimitiveAndProperties () {
19
- return expressionStringFromPrimitiveAndProperties;
18
+ get expressionStringFromProperties () {
19
+ return expressionStringFromProperties;
20
20
  },
21
21
  get primtiveStringFromBoolean () {
22
22
  return primtiveStringFromBoolean;
@@ -103,6 +103,16 @@ function termsStringFromTermsArray(termsArray) {
103
103
  }, null); ///
104
104
  return termsString;
105
105
  }
106
+ function expressionStringFromProperties(properties) {
107
+ var expressionString;
108
+ properties.forEach(function(property) {
109
+ if (property !== null) {
110
+ var propertyString = property.getString();
111
+ expressionString = propertyString; ///
112
+ }
113
+ });
114
+ return expressionString;
115
+ }
106
116
  function primtiveStringFromStringLiteral(stringLiteral) {
107
117
  var string = (0, _stringLiteral.stringFromStringLiteral)(stringLiteral), primtiveString = string; ///
108
118
  return primtiveString;
@@ -132,23 +142,6 @@ function returnBlockStringFromReturnStatementNode(returnStatement) {
132
142
  var returnStatementString = returnStatement.getString(), returnBlockString = "{ ... ".concat(returnStatementString, " }");
133
143
  return returnBlockString;
134
144
  }
135
- function expressionStringFromPrimitiveAndProperties(primitive, properties) {
136
- var expressionString;
137
- if (false) {
138
- ///
139
- } else if (primitive !== null) {
140
- var primitiveString = primitive.getString();
141
- expressionString = primitiveString; ///
142
- } else {
143
- properties.forEach(function(property) {
144
- if (property !== null) {
145
- var propertyString = property.getString();
146
- expressionString = propertyString; ///
147
- }
148
- });
149
- }
150
- return expressionString;
151
- }
152
145
  function variableAssignmentStringFromTypeAndVariable(type, variable) {
153
146
  var variableString = variable.getString(), variableAssignmentString = "".concat(type, " ").concat(variableString, " = ... ;");
154
147
  return variableAssignmentString;
@@ -187,4 +180,4 @@ function reduceStringFromVariableInitialExpressionAndAnonymousProcedure(variable
187
180
  return reduceString;
188
181
  }
189
182
 
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgbnVsbE5vZGUgZnJvbSBcIi4uL251bGxOb2RlXCI7XG5cbmltcG9ydCB7IE5VTEwgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCB9IGZyb20gXCIuL3N0cmluZ0xpdGVyYWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm5hcnlTdHJpbmdGcm9tVGVybSh0ZXJtKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJuYXJ5U3RyaW5nID0gYGlmICgke3Rlcm1TdHJpbmd9KSB7IC4uLiB9IGVsc2UgeyAuLi4gfWA7XG5cbiAgcmV0dXJuIHRlcm5hcnlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZVN0cmluZ0Zyb21OYW1lKG5hbWUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tTm9kZShub2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHByaW10aXZlU3RyaW5nID0gKG5vZGUgPT09IG51bGxOb2RlKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpO1xuXG4gIHJldHVybiBwcmltdGl2ZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW10aXZlU3RyaW5nRnJvbU5vZGVzKG5vZGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IGNvbnRleHQubm9kZXNBc1N0cmluZyhub2RlcyksXG4gICAgICAgIHByaW10aXZlU3RyaW5nID0gc3RyaW5nOyAgLy8vXG5cbiAgcmV0dXJuIHByaW10aXZlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tQm9vbGVhbihib29sZWFuKSB7XG4gIGNvbnN0IGV4cHJlc3NzaW9uU3RyaW5nID0gYCR7Ym9vbGVhbn1gO1xuXG4gIHJldHVybiBleHByZXNzc2lvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zU3RyaW5nRnJvbVRlcm1zQXJyYXkodGVybXNBcnJheSkge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zQXJyYXkucmVkdWNlKCh0ZXJtc1N0cmluZywgdGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgdGVybXNTdHJpbmcgPSAodGVybXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgdGVybVN0cmluZyA6XG4gICAgICAgICAgICAgICAgICAgICBgJHt0ZXJtc1N0cmluZ30sICR7dGVybVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHRlcm1zU3RyaW5nO1xuICB9LCBudWxsKTsgLy8vXG5cbiAgcmV0dXJuIHRlcm1zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsKSB7XG4gIGNvbnN0IHN0cmluZyA9IHN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsKHN0cmluZ0xpdGVyYWwpLFxuICAgICAgICBwcmltdGl2ZVN0cmluZyA9IHN0cmluZzsgIC8vL1xuXG4gIHJldHVybiBwcmltdGl2ZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1TdHJpbmdGcm9tUHJpbWl0aXZlQW5kUHJvcGVydGllcyhwcmltaXRpdmUsIHByb3BlcnRpZXMpIHtcbiAgbGV0IHRlcm1TdHJpbmc7XG5cbiAgaWYgKGZhbHNlKSB7XG4gICAgLy8vXG4gIH0gZWxzZSBpZiAocHJpbWl0aXZlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcHJpbWl0aXZlU3RyaW5nID0gcHJpbWl0aXZlLmdldFN0cmluZygpO1xuXG4gICAgdGVybVN0cmluZyA9IHByaW1pdGl2ZVN0cmluZzsgLy8vXG4gIH0gZWxzZSB7XG4gICAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5U3RyaW5nID0gcHJvcGVydHkuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgdGVybVN0cmluZyA9IHByb3BlcnR5U3RyaW5nOyAgLy8vXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdGVybVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZURlY2xhcmF0aW9uU3RyaW5nRnJvbVByb2NlZHVyZShwcm9jZWR1cmUpIHtcbiAgY29uc3QgdHlwZSA9IHByb2NlZHVyZS5nZXRUeXBlKCksXG4gICAgICAgIGxhYmVsID0gcHJvY2VkdXJlLmdldExhYmVsKCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBwcm9jZWR1cmUuZ2V0UGFyYW1ldGVycygpLFxuICAgICAgICByZXR1cm5TdGF0ZW1lbnQgPSBwcm9jZWR1cmUuZ2V0UmV0dXJuU3RhdGVtZW50KCksXG4gICAgICAgIGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5TdGF0ZW1lbnRTdHJpbmcgPSByZXR1cm5TdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIHByb2NlZHVyZURlbGNhcmF0aW9uU3RyaW5nID0gYCR7dHlwZX0gJHtsYWJlbFN0cmluZyB9KCR7cGFyYW1ldGVyc1N0cmluZ30pIHsgLi4uICR7cmV0dXJuU3RhdGVtZW50U3RyaW5nfSB9YDtcblxuICByZXR1cm4gcHJvY2VkdXJlRGVsY2FyYXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja1N0cmluZ0Zyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudCkge1xuICBjb25zdCByZXR1cm5TdGF0ZW1lbnRTdHJpbmcgPSByZXR1cm5TdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJldHVybkJsb2NrU3RyaW5nID0gYHsgLi4uICR7cmV0dXJuU3RhdGVtZW50U3RyaW5nfSB9YDtcblxuICByZXR1cm4gcmV0dXJuQmxvY2tTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uU3RyaW5nRnJvbVByaW1pdGl2ZUFuZFByb3BlcnRpZXMocHJpbWl0aXZlLCBwcm9wZXJ0aWVzKSB7XG4gIGxldCBleHByZXNzaW9uU3RyaW5nO1xuXG4gIGlmIChmYWxzZSkge1xuICAgIC8vL1xuICB9IGVsc2UgaWYgKHByaW1pdGl2ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHByaW1pdGl2ZVN0cmluZyA9IHByaW1pdGl2ZS5nZXRTdHJpbmcoKTtcblxuICAgIGV4cHJlc3Npb25TdHJpbmcgPSBwcmltaXRpdmVTdHJpbmc7IC8vL1xuICB9IGVsc2Uge1xuICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBwcm9wZXJ0eVN0cmluZzsgIC8vL1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlKHR5cGUsIHZhcmlhYmxlKSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZyA9IGAke3R5cGV9ICR7dmFyaWFibGVTdHJpbmd9ID0gLi4uIDtgO1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlLmdldFN0cmluZygpLFxuICAgICAgICBzb21lU3RyaW5nID0gYFNvbWUoJHt2YXJpYWJsZVN0cmluZ30sICR7YW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nfSkgYDtcblxuICByZXR1cm4gc29tZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5U3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlLmdldFN0cmluZygpLFxuICAgICAgICBldmVyeVN0cmluZyA9IGBFdmVyeSgke3ZhcmlhYmxlU3RyaW5nfSwgJHthbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmd9KSBgO1xuXG4gIHJldHVybiBldmVyeVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21WYXJpYWJsZUFzc2lnbm1lbnQodmFyaWFibGVBc3NpZ25tZW50KSB7XG4gIGNvbnN0IHZhcmlhYmxlID0gdmFyaWFibGVBc3NpZ25tZW50LmdldFZhcmlhYmxlKCksXG4gICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZyA9IGAke3ZhcmlhYmxlU3RyaW5nfSA9IC4uLmA7XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2sodHlwZSwgbGFiZWwsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLCAgLy8vXG4gICAgICAgIGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IHJldHVybkJsb2NrLmdldFN0cmluZygpLFxuICAgICAgICBwcm9jZWR1cmVTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfSAke2xhYmVsU3RyaW5nfSgke3BhcmFtZXRlcnNTdHJpbmd9KSAke3JldHVybkJsb2NrU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFub255bW91c1Byb2NlZHVyZVN0cmluZ0Zyb21UeXBlUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrKHR5cGUsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLCAgLy8vXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IHJldHVybkJsb2NrLmdldFN0cmluZygpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfSAoJHtwYXJhbWV0ZXJzU3RyaW5nfSkgJHtyZXR1cm5CbG9ja1N0cmluZ31gO1xuXG4gIHJldHVybiBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkpIHtcbiAgbGV0IHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkucmVkdWNlKCh2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nLCB2YXJpYWJsZUFzc2lnbm1lbnQpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVmFyaWFibGVBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdubWVudCk7XG5cbiAgICB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nID0gKHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZyA6XG4gICAgICBgJHt2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nfSwgJHt2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmd9YDtcblxuICAgIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nO1xuICB9LCBudWxsKTsgLy8vXG5cbiAgdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyA9IGAke3R5cGV9ICR7dmFyaWFibGVBc3NpZ25tZW50c1N0cmluZ30gO2A7IC8vL1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlU3RyaW5nRnJvbVZhcmlhYmxlSW5pdGlhbEV4cHJlc3Npb25BbmRBbm9ueW1vdXNQcm9jZWR1cmUodmFyaWFibGUsIGluaXRpYWxFeHByZXNzaW9uLCBhbm9ueW1vdXNQcm9jZWR1cmUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgaW5pdGlhbEV4cHJlc3Npb25TdHJpbmcgPSBpbml0aWFsRXhwcmVzc2lvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYW5vbnltb3VzUHJvY2VkdXJlLmdldFN0cmluZygpLFxuICAgICAgICByZWR1Y2VTdHJpbmcgPSBgUmVkdWNlKCR7dmFyaWFibGVTdHJpbmd9LCAke2Fub255bW91c1Byb2NlZHVyZVN0cmluZ30sICR7aW5pdGlhbEV4cHJlc3Npb25TdHJpbmd9KWA7XG5cbiAgcmV0dXJuIHJlZHVjZVN0cmluZztcbn1cblxuIl0sIm5hbWVzIjpbImFub255bW91c1Byb2NlZHVyZVN0cmluZ0Zyb21UeXBlUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrIiwiZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJleHByZXNzaW9uU3RyaW5nRnJvbVByaW1pdGl2ZUFuZFByb3BlcnRpZXMiLCJwcmltdGl2ZVN0cmluZ0Zyb21Cb29sZWFuIiwicHJpbXRpdmVTdHJpbmdGcm9tTm9kZSIsInByaW10aXZlU3RyaW5nRnJvbU5vZGVzIiwicHJpbXRpdmVTdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCIsInByb2NlZHVyZURlY2xhcmF0aW9uU3RyaW5nRnJvbVByb2NlZHVyZSIsInByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2siLCJyZWR1Y2VTdHJpbmdGcm9tVmFyaWFibGVJbml0aWFsRXhwcmVzc2lvbkFuZEFub255bW91c1Byb2NlZHVyZSIsInJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUiLCJzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwidGVybVN0cmluZ0Zyb21QcmltaXRpdmVBbmRQcm9wZXJ0aWVzIiwidGVybXNTdHJpbmdGcm9tVGVybXNBcnJheSIsInRlcm5hcnlTdHJpbmdGcm9tVGVybSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21WYXJpYWJsZUFzc2lnbm1lbnQiLCJ2YXJpYWJsZVN0cmluZ0Zyb21OYW1lIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0ZXJuYXJ5U3RyaW5nIiwibmFtZSIsInZhcmlhYmxlU3RyaW5nIiwibm9kZSIsImNvbnRleHQiLCJwcmltdGl2ZVN0cmluZyIsIm51bGxOb2RlIiwiTlVMTCIsIm5vZGVBc1N0cmluZyIsIm5vZGVzIiwic3RyaW5nIiwibm9kZXNBc1N0cmluZyIsImJvb2xlYW4iLCJleHByZXNzc2lvblN0cmluZyIsInRlcm1zQXJyYXkiLCJ0ZXJtc1N0cmluZyIsInJlZHVjZSIsInN0cmluZ0xpdGVyYWwiLCJzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCIsInByaW1pdGl2ZSIsInByb3BlcnRpZXMiLCJwcmltaXRpdmVTdHJpbmciLCJmb3JFYWNoIiwicHJvcGVydHkiLCJwcm9wZXJ0eVN0cmluZyIsInByb2NlZHVyZSIsInR5cGUiLCJnZXRUeXBlIiwibGFiZWwiLCJnZXRMYWJlbCIsInBhcmFtZXRlcnMiLCJnZXRQYXJhbWV0ZXJzIiwicmV0dXJuU3RhdGVtZW50IiwiZ2V0UmV0dXJuU3RhdGVtZW50IiwibGFiZWxTdHJpbmciLCJwYXJhbWV0ZXJzU3RyaW5nIiwicmV0dXJuU3RhdGVtZW50U3RyaW5nIiwicHJvY2VkdXJlRGVsY2FyYXRpb25TdHJpbmciLCJyZXR1cm5CbG9ja1N0cmluZyIsImV4cHJlc3Npb25TdHJpbmciLCJ2YXJpYWJsZSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZyIsImFub255bW91c1Byb2NlZHVyZSIsImFub255bW91c1Byb2NlZHVyZVN0cmluZyIsInNvbWVTdHJpbmciLCJldmVyeVN0cmluZyIsInZhcmlhYmxlQXNzaWdubWVudCIsImdldFZhcmlhYmxlIiwicmV0dXJuQmxvY2siLCJ0eXBlU3RyaW5nIiwicHJvY2VkdXJlU3RyaW5nIiwidmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyIsImluaXRpYWxFeHByZXNzaW9uIiwiaW5pdGlhbEV4cHJlc3Npb25TdHJpbmciLCJyZWR1Y2VTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXVLZ0JBO2VBQUFBOztRQTFCQUM7ZUFBQUE7O1FBckNBQztlQUFBQTs7UUFyRUFDO2VBQUFBOztRQWZBQztlQUFBQTs7UUFRQUM7ZUFBQUE7O1FBMkJBQztlQUFBQTs7UUE2QkFDO2VBQUFBOztRQXlFQUM7ZUFBQUE7O1FBbUNBQztlQUFBQTs7UUEvRkFDO2VBQUFBOztRQW9DQUM7ZUFBQUE7O1FBdkVBQztlQUFBQTs7UUFyQkFDO2VBQUFBOztRQWxDQUM7ZUFBQUE7O1FBdUhBQztlQUFBQTs7UUFrREFDO2VBQUFBOztRQTNCQUM7ZUFBQUE7O1FBdklBQztlQUFBQTs7OytEQVpLO3lCQUVBOzZCQUNtQjs7Ozs7O0FBRWpDLFNBQVNKLHNCQUFzQkssSUFBSTtJQUN4QyxJQUFNQyxhQUFhRCxLQUFLRSxTQUFTLElBQzNCQyxnQkFBZ0IsQUFBQyxPQUFpQixPQUFYRixZQUFXO0lBRXhDLE9BQU9FO0FBQ1Q7QUFFTyxTQUFTSix1QkFBdUJLLElBQUk7SUFDekMsSUFBTUMsaUJBQWlCRCxNQUFPLEdBQUc7SUFFakMsT0FBT0M7QUFDVDtBQUVPLFNBQVNwQix1QkFBdUJxQixJQUFJLEVBQUVDLE9BQU87SUFDbEQsSUFBTUMsaUJBQWlCLEFBQUNGLFNBQVNHLGlCQUFRLEdBQ2RDLGVBQUksR0FDRkgsUUFBUUksWUFBWSxDQUFDTDtJQUVsRCxPQUFPRTtBQUNUO0FBRU8sU0FBU3RCLHdCQUF3QjBCLEtBQUssRUFBRUwsT0FBTztJQUNwRCxJQUFNTSxTQUFTTixRQUFRTyxhQUFhLENBQUNGLFFBQy9CSixpQkFBaUJLLFFBQVMsR0FBRztJQUVuQyxPQUFPTDtBQUNUO0FBRU8sU0FBU3hCLDBCQUEwQitCLE9BQU87SUFDL0MsSUFBTUMsb0JBQW9CLEFBQUMsR0FBVSxPQUFSRDtJQUU3QixPQUFPQztBQUNUO0FBRU8sU0FBU3RCLDBCQUEwQnVCLFVBQVU7SUFDbEQsSUFBTUMsY0FBY0QsV0FBV0UsTUFBTSxDQUFDLFNBQUNELGFBQWFsQjtRQUNsRCxJQUFNQyxhQUFhRCxLQUFLRSxTQUFTO1FBRWpDZ0IsY0FBYyxBQUFDQSxnQkFBZ0IsT0FDZmpCLGFBQ0MsQUFBQyxHQUFrQkEsT0FBaEJpQixhQUFZLE1BQWUsT0FBWGpCO1FBRXBDLE9BQU9pQjtJQUNULEdBQUcsT0FBTyxHQUFHO0lBRWIsT0FBT0E7QUFDVDtBQUVPLFNBQVMvQixnQ0FBZ0NpQyxhQUFhO0lBQzNELElBQU1QLFNBQVNRLElBQUFBLHNDQUF1QixFQUFDRCxnQkFDakNaLGlCQUFpQkssUUFBUyxHQUFHO0lBRW5DLE9BQU9MO0FBQ1Q7QUFFTyxTQUFTZixxQ0FBcUM2QixTQUFTLEVBQUVDLFVBQVU7SUFDeEUsSUFBSXRCO0lBRUosSUFBSSxPQUFPO0lBQ1QsR0FBRztJQUNMLE9BQU8sSUFBSXFCLGNBQWMsTUFBTTtRQUM3QixJQUFNRSxrQkFBa0JGLFVBQVVwQixTQUFTO1FBRTNDRCxhQUFhdUIsaUJBQWlCLEdBQUc7SUFDbkMsT0FBTztRQUNMRCxXQUFXRSxPQUFPLENBQUMsU0FBQ0M7WUFDbEIsSUFBSUEsYUFBYSxNQUFNO2dCQUNyQixJQUFNQyxpQkFBaUJELFNBQVN4QixTQUFTO2dCQUV6Q0QsYUFBYTBCLGdCQUFpQixHQUFHO1lBQ25DO1FBQ0Y7SUFDRjtJQUVBLE9BQU8xQjtBQUNUO0FBRU8sU0FBU2Isd0NBQXdDd0MsU0FBUztJQUMvRCxJQUFNQyxPQUFPRCxVQUFVRSxPQUFPLElBQ3hCQyxRQUFRSCxVQUFVSSxRQUFRLElBQzFCQyxhQUFhTCxVQUFVTSxhQUFhLElBQ3BDQyxrQkFBa0JQLFVBQVVRLGtCQUFrQixJQUM5Q0MsY0FBY04sTUFBTTdCLFNBQVMsSUFDN0JvQyxtQkFBbUJMLFdBQVcvQixTQUFTLElBQ3ZDcUMsd0JBQXdCSixnQkFBZ0JqQyxTQUFTLElBQ2pEc0MsNkJBQTZCLEFBQUMsR0FBVUgsT0FBUlIsTUFBSyxLQUFtQlMsT0FBaEJELGFBQWEsS0FBOEJFLE9BQTNCRCxrQkFBaUIsWUFBZ0MsT0FBdEJDLHVCQUFzQjtJQUUvRyxPQUFPQztBQUNUO0FBRU8sU0FBU2pELHlDQUF5QzRDLGVBQWU7SUFDdEUsSUFBTUksd0JBQXdCSixnQkFBZ0JqQyxTQUFTLElBQ2pEdUMsb0JBQW9CLEFBQUMsU0FBOEIsT0FBdEJGLHVCQUFzQjtJQUV6RCxPQUFPRTtBQUNUO0FBRU8sU0FBUzFELDJDQUEyQ3VDLFNBQVMsRUFBRUMsVUFBVTtJQUM5RSxJQUFJbUI7SUFFSixJQUFJLE9BQU87SUFDVCxHQUFHO0lBQ0wsT0FBTyxJQUFJcEIsY0FBYyxNQUFNO1FBQzdCLElBQU1FLGtCQUFrQkYsVUFBVXBCLFNBQVM7UUFFM0N3QyxtQkFBbUJsQixpQkFBaUIsR0FBRztJQUN6QyxPQUFPO1FBQ0xELFdBQVdFLE9BQU8sQ0FBQyxTQUFDQztZQUNsQixJQUFJQSxhQUFhLE1BQU07Z0JBQ3JCLElBQU1DLGlCQUFpQkQsU0FBU3hCLFNBQVM7Z0JBRXpDd0MsbUJBQW1CZixnQkFBaUIsR0FBRztZQUN6QztRQUNGO0lBQ0Y7SUFFQSxPQUFPZTtBQUNUO0FBRU8sU0FBUzlDLDRDQUE0Q2lDLElBQUksRUFBRWMsUUFBUTtJQUN4RSxJQUFNdEMsaUJBQWlCc0MsU0FBU3pDLFNBQVMsSUFDbkMwQywyQkFBMkIsQUFBQyxHQUFVdkMsT0FBUndCLE1BQUssS0FBa0IsT0FBZnhCLGdCQUFlO0lBRTNELE9BQU91QztBQUNUO0FBRU8sU0FBU3BELDRDQUE0Q21ELFFBQVEsRUFBRUUsa0JBQWtCO0lBQ3RGLElBQU14QyxpQkFBaUJzQyxTQUFTekMsU0FBUyxJQUNuQzRDLDJCQUEyQkQsbUJBQW1CM0MsU0FBUyxJQUN2RDZDLGFBQWEsQUFBQyxRQUEwQkQsT0FBbkJ6QyxnQkFBZSxNQUE2QixPQUF6QnlDLDBCQUF5QjtJQUV2RSxPQUFPQztBQUNUO0FBRU8sU0FBU2pFLDZDQUE2QzZELFFBQVEsRUFBRUUsa0JBQWtCO0lBQ3ZGLElBQU14QyxpQkFBaUJzQyxTQUFTekMsU0FBUyxJQUNuQzRDLDJCQUEyQkQsbUJBQW1CM0MsU0FBUyxJQUN2RDhDLGNBQWMsQUFBQyxTQUEyQkYsT0FBbkJ6QyxnQkFBZSxNQUE2QixPQUF6QnlDLDBCQUF5QjtJQUV6RSxPQUFPRTtBQUNUO0FBRU8sU0FBU2xELCtDQUErQ21ELGtCQUFrQjtJQUMvRSxJQUFNTixXQUFXTSxtQkFBbUJDLFdBQVcsSUFDekM3QyxpQkFBaUJzQyxTQUFTekMsU0FBUyxJQUNuQzBDLDJCQUEyQixBQUFDLEdBQWlCLE9BQWZ2QyxnQkFBZTtJQUVuRCxPQUFPdUM7QUFDVDtBQUVPLFNBQVN2RCxxREFBcUR3QyxJQUFJLEVBQUVFLEtBQUssRUFBRUUsVUFBVSxFQUFFa0IsV0FBVztJQUN2RyxJQUFNQyxhQUFhdkIsTUFDYlEsY0FBY04sTUFBTTdCLFNBQVMsSUFDN0JvQyxtQkFBbUJMLFdBQVcvQixTQUFTLElBQ3ZDdUMsb0JBQW9CVSxZQUFZakQsU0FBUyxJQUN6Q21ELGtCQUFrQixBQUFDLEdBQWdCaEIsT0FBZGUsWUFBVyxLQUFrQmQsT0FBZkQsYUFBWSxLQUF3QkksT0FBckJILGtCQUFpQixNQUFzQixPQUFsQkc7SUFFN0UsT0FBT1k7QUFDVDtBQUVPLFNBQVN4RSx5REFBeURnRCxJQUFJLEVBQUVJLFVBQVUsRUFBRWtCLFdBQVc7SUFDcEcsSUFBTUMsYUFBYXZCLE1BQ2JTLG1CQUFtQkwsV0FBVy9CLFNBQVMsSUFDdkN1QyxvQkFBb0JVLFlBQVlqRCxTQUFTLElBQ3pDNEMsMkJBQTJCLEFBQUMsR0FBaUJSLE9BQWZjLFlBQVcsTUFBeUJYLE9BQXJCSCxrQkFBaUIsTUFBc0IsT0FBbEJHO0lBRXhFLE9BQU9LO0FBQ1Q7QUFFTyxTQUFTakQsNERBQTREZ0MsSUFBSSxFQUFFeUIsd0JBQXdCO0lBQ3hHLElBQUlDLDRCQUE0QkQseUJBQXlCbkMsTUFBTSxDQUFDLFNBQUNvQywyQkFBMkJOO1FBQzFGLElBQU1MLDJCQUEyQjlDLCtDQUErQ21EO1FBRWhGTSw0QkFBNEIsQUFBQ0EsOEJBQThCLE9BQ3pEWCwyQkFDQSxBQUFDLEdBQWdDQSxPQUE5QlcsMkJBQTBCLE1BQTZCLE9BQXpCWDtRQUVuQyxPQUFPVztJQUNULEdBQUcsT0FBTyxHQUFHO0lBRWJBLDRCQUE0QixBQUFDLEdBQVVBLE9BQVIxQixNQUFLLEtBQTZCLE9BQTFCMEIsMkJBQTBCLE9BQUssR0FBRztJQUV6RSxPQUFPQTtBQUNUO0FBRU8sU0FBU2pFLCtEQUErRHFELFFBQVEsRUFBRWEsaUJBQWlCLEVBQUVYLGtCQUFrQjtJQUM1SCxJQUFNeEMsaUJBQWlCc0MsU0FBU3pDLFNBQVMsSUFDbkN1RCwwQkFBMEJELGtCQUFrQnRELFNBQVMsSUFDckQ0QywyQkFBMkJELG1CQUFtQjNDLFNBQVMsSUFDdkR3RCxlQUFlLEFBQUMsVUFBNEJaLE9BQW5CekMsZ0JBQWUsTUFBaUNvRCxPQUE3QlgsMEJBQXlCLE1BQTRCLE9BQXhCVyx5QkFBd0I7SUFFdkcsT0FBT0M7QUFDVCJ9
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgbnVsbE5vZGUgZnJvbSBcIi4uL251bGxOb2RlXCI7XG5cbmltcG9ydCB7IE5VTEwgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbCB9IGZyb20gXCIuL3N0cmluZ0xpdGVyYWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm5hcnlTdHJpbmdGcm9tVGVybSh0ZXJtKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJuYXJ5U3RyaW5nID0gYGlmICgke3Rlcm1TdHJpbmd9KSB7IC4uLiB9IGVsc2UgeyAuLi4gfWA7XG5cbiAgcmV0dXJuIHRlcm5hcnlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZVN0cmluZ0Zyb21OYW1lKG5hbWUpIHtcbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tTm9kZShub2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHByaW10aXZlU3RyaW5nID0gKG5vZGUgPT09IG51bGxOb2RlKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpO1xuXG4gIHJldHVybiBwcmltdGl2ZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW10aXZlU3RyaW5nRnJvbU5vZGVzKG5vZGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IGNvbnRleHQubm9kZXNBc1N0cmluZyhub2RlcyksXG4gICAgICAgIHByaW10aXZlU3RyaW5nID0gc3RyaW5nOyAgLy8vXG5cbiAgcmV0dXJuIHByaW10aXZlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbXRpdmVTdHJpbmdGcm9tQm9vbGVhbihib29sZWFuKSB7XG4gIGNvbnN0IGV4cHJlc3NzaW9uU3RyaW5nID0gYCR7Ym9vbGVhbn1gO1xuXG4gIHJldHVybiBleHByZXNzc2lvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zU3RyaW5nRnJvbVRlcm1zQXJyYXkodGVybXNBcnJheSkge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zQXJyYXkucmVkdWNlKCh0ZXJtc1N0cmluZywgdGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgdGVybXNTdHJpbmcgPSAodGVybXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgdGVybVN0cmluZyA6XG4gICAgICAgICAgICAgICAgICAgICBgJHt0ZXJtc1N0cmluZ30sICR7dGVybVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHRlcm1zU3RyaW5nO1xuICB9LCBudWxsKTsgLy8vXG5cbiAgcmV0dXJuIHRlcm1zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwcmVzc2lvblN0cmluZ0Zyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMpIHtcbiAgbGV0IGV4cHJlc3Npb25TdHJpbmc7XG5cbiAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgICAgZXhwcmVzc2lvblN0cmluZyA9IHByb3BlcnR5U3RyaW5nOyAgLy8vXG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZXhwcmVzc2lvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW10aXZlU3RyaW5nRnJvbVN0cmluZ0xpdGVyYWwoc3RyaW5nTGl0ZXJhbCkge1xuICBjb25zdCBzdHJpbmcgPSBzdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsKSxcbiAgICAgICAgcHJpbXRpdmVTdHJpbmcgPSBzdHJpbmc7ICAvLy9cblxuICByZXR1cm4gcHJpbXRpdmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3RyaW5nRnJvbVByaW1pdGl2ZUFuZFByb3BlcnRpZXMocHJpbWl0aXZlLCBwcm9wZXJ0aWVzKSB7XG4gIGxldCB0ZXJtU3RyaW5nO1xuXG4gIGlmIChmYWxzZSkge1xuICAgIC8vL1xuICB9IGVsc2UgaWYgKHByaW1pdGl2ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHByaW1pdGl2ZVN0cmluZyA9IHByaW1pdGl2ZS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1TdHJpbmcgPSBwcmltaXRpdmVTdHJpbmc7IC8vL1xuICB9IGVsc2Uge1xuICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICAgIHRlcm1TdHJpbmcgPSBwcm9wZXJ0eVN0cmluZzsgIC8vL1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVEZWNsYXJhdGlvblN0cmluZ0Zyb21Qcm9jZWR1cmUocHJvY2VkdXJlKSB7XG4gIGNvbnN0IHR5cGUgPSBwcm9jZWR1cmUuZ2V0VHlwZSgpLFxuICAgICAgICBsYWJlbCA9IHByb2NlZHVyZS5nZXRMYWJlbCgpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcHJvY2VkdXJlLmdldFBhcmFtZXRlcnMoKSxcbiAgICAgICAgcmV0dXJuU3RhdGVtZW50ID0gcHJvY2VkdXJlLmdldFJldHVyblN0YXRlbWVudCgpLFxuICAgICAgICBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVycy5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmV0dXJuU3RhdGVtZW50U3RyaW5nID0gcmV0dXJuU3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBwcm9jZWR1cmVEZWxjYXJhdGlvblN0cmluZyA9IGAke3R5cGV9ICR7bGFiZWxTdHJpbmcgfSgke3BhcmFtZXRlcnNTdHJpbmd9KSB7IC4uLiAke3JldHVyblN0YXRlbWVudFN0cmluZ30gfWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZURlbGNhcmF0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuQmxvY2tTdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZShyZXR1cm5TdGF0ZW1lbnQpIHtcbiAgY29uc3QgcmV0dXJuU3RhdGVtZW50U3RyaW5nID0gcmV0dXJuU3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IGB7IC4uLiAke3JldHVyblN0YXRlbWVudFN0cmluZ30gfWA7XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZSh0eXBlLCB2YXJpYWJsZSkge1xuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSBgJHt0eXBlfSAke3ZhcmlhYmxlU3RyaW5nfSA9IC4uLiA7YDtcblxuICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IGFub255bW91c1Byb2NlZHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc29tZVN0cmluZyA9IGBTb21lKCR7dmFyaWFibGVTdHJpbmd9LCAke2Fub255bW91c1Byb2NlZHVyZVN0cmluZ30pIGA7XG5cbiAgcmV0dXJuIHNvbWVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVyeVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IGFub255bW91c1Byb2NlZHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgZXZlcnlTdHJpbmcgPSBgRXZlcnkoJHt2YXJpYWJsZVN0cmluZ30sICR7YW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nfSkgYDtcblxuICByZXR1cm4gZXZlcnlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVmFyaWFibGVBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdubWVudCkge1xuICBjb25zdCB2YXJpYWJsZSA9IHZhcmlhYmxlQXNzaWdubWVudC5nZXRWYXJpYWJsZSgpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSBgJHt2YXJpYWJsZVN0cmluZ30gPSAuLi5gO1xuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVTdHJpbmdGcm9tVHlwZUxhYmVsUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrKHR5cGUsIGxhYmVsLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jaykge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZSwgIC8vL1xuICAgICAgICBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVycy5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmV0dXJuQmxvY2tTdHJpbmcgPSByZXR1cm5CbG9jay5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJvY2VkdXJlU3RyaW5nID0gYCR7dHlwZVN0cmluZ30gJHtsYWJlbFN0cmluZ30oJHtwYXJhbWV0ZXJzU3RyaW5nfSkgJHtyZXR1cm5CbG9ja1N0cmluZ31gO1xuXG4gIHJldHVybiBwcm9jZWR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jaykge1xuICBjb25zdCB0eXBlU3RyaW5nID0gdHlwZSwgIC8vL1xuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVycy5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmV0dXJuQmxvY2tTdHJpbmcgPSByZXR1cm5CbG9jay5nZXRTdHJpbmcoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nID0gYCR7dHlwZVN0cmluZ30gKCR7cGFyYW1ldGVyc1N0cmluZ30pICR7cmV0dXJuQmxvY2tTdHJpbmd9YDtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c0FycmF5KSB7XG4gIGxldCB2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50c0FycmF5LnJlZHVjZSgodmFyaWFibGVBc3NpZ25tZW50c1N0cmluZywgdmFyaWFibGVBc3NpZ25tZW50KSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVZhcmlhYmxlQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbm1lbnQpO1xuXG4gICAgdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZyA9ICh2YXJpYWJsZUFzc2lnbm1lbnRzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgOlxuICAgICAgYCR7dmFyaWFibGVBc3NpZ25tZW50c1N0cmluZ30sICR7dmFyaWFibGVBc3NpZ25tZW50U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZztcbiAgfSwgbnVsbCk7IC8vL1xuXG4gIHZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmcgPSBgJHt0eXBlfSAke3ZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmd9IDtgOyAvLy9cblxuICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50c1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBpbml0aWFsRXhwcmVzc2lvbiwgYW5vbnltb3VzUHJvY2VkdXJlKSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGluaXRpYWxFeHByZXNzaW9uU3RyaW5nID0gaW5pdGlhbEV4cHJlc3Npb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZVN0cmluZyA9IGFub255bW91c1Byb2NlZHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVkdWNlU3RyaW5nID0gYFJlZHVjZSgke3ZhcmlhYmxlU3RyaW5nfSwgJHthbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmd9LCAke2luaXRpYWxFeHByZXNzaW9uU3RyaW5nfSlgO1xuXG4gIHJldHVybiByZWR1Y2VTdHJpbmc7XG59XG5cbiJdLCJuYW1lcyI6WyJhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayIsImV2ZXJ5U3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwiZXhwcmVzc2lvblN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwicHJpbXRpdmVTdHJpbmdGcm9tQm9vbGVhbiIsInByaW10aXZlU3RyaW5nRnJvbU5vZGUiLCJwcmltdGl2ZVN0cmluZ0Zyb21Ob2RlcyIsInByaW10aXZlU3RyaW5nRnJvbVN0cmluZ0xpdGVyYWwiLCJwcm9jZWR1cmVEZWNsYXJhdGlvblN0cmluZ0Zyb21Qcm9jZWR1cmUiLCJwcm9jZWR1cmVTdHJpbmdGcm9tVHlwZUxhYmVsUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrIiwicmVkdWNlU3RyaW5nRnJvbVZhcmlhYmxlSW5pdGlhbEV4cHJlc3Npb25BbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJyZXR1cm5CbG9ja1N0cmluZ0Zyb21SZXR1cm5TdGF0ZW1lbnROb2RlIiwic29tZVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSIsInRlcm1TdHJpbmdGcm9tUHJpbWl0aXZlQW5kUHJvcGVydGllcyIsInRlcm1zU3RyaW5nRnJvbVRlcm1zQXJyYXkiLCJ0ZXJuYXJ5U3RyaW5nRnJvbVRlcm0iLCJ2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlIiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkiLCJ2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVmFyaWFibGVBc3NpZ25tZW50IiwidmFyaWFibGVTdHJpbmdGcm9tTmFtZSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidGVybmFyeVN0cmluZyIsIm5hbWUiLCJ2YXJpYWJsZVN0cmluZyIsIm5vZGUiLCJjb250ZXh0IiwicHJpbXRpdmVTdHJpbmciLCJudWxsTm9kZSIsIk5VTEwiLCJub2RlQXNTdHJpbmciLCJub2RlcyIsInN0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJib29sZWFuIiwiZXhwcmVzc3Npb25TdHJpbmciLCJ0ZXJtc0FycmF5IiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJwcm9wZXJ0aWVzIiwiZXhwcmVzc2lvblN0cmluZyIsImZvckVhY2giLCJwcm9wZXJ0eSIsInByb3BlcnR5U3RyaW5nIiwic3RyaW5nTGl0ZXJhbCIsInN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIiwicHJpbWl0aXZlIiwicHJpbWl0aXZlU3RyaW5nIiwicHJvY2VkdXJlIiwidHlwZSIsImdldFR5cGUiLCJsYWJlbCIsImdldExhYmVsIiwicGFyYW1ldGVycyIsImdldFBhcmFtZXRlcnMiLCJyZXR1cm5TdGF0ZW1lbnQiLCJnZXRSZXR1cm5TdGF0ZW1lbnQiLCJsYWJlbFN0cmluZyIsInBhcmFtZXRlcnNTdHJpbmciLCJyZXR1cm5TdGF0ZW1lbnRTdHJpbmciLCJwcm9jZWR1cmVEZWxjYXJhdGlvblN0cmluZyIsInJldHVybkJsb2NrU3RyaW5nIiwidmFyaWFibGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmciLCJhbm9ueW1vdXNQcm9jZWR1cmUiLCJhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmciLCJzb21lU3RyaW5nIiwiZXZlcnlTdHJpbmciLCJ2YXJpYWJsZUFzc2lnbm1lbnQiLCJnZXRWYXJpYWJsZSIsInJldHVybkJsb2NrIiwidHlwZVN0cmluZyIsInByb2NlZHVyZVN0cmluZyIsInZhcmlhYmxlQXNzaWdubWVudHNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudHNTdHJpbmciLCJpbml0aWFsRXhwcmVzc2lvbiIsImluaXRpYWxFeHByZXNzaW9uU3RyaW5nIiwicmVkdWNlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUErSmdCQTtlQUFBQTs7UUExQkFDO2VBQUFBOztRQTlFQUM7ZUFBQUE7O1FBcEJBQztlQUFBQTs7UUFmQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQXlDQUM7ZUFBQUE7O1FBNkJBQztlQUFBQTs7UUFtREFDO2VBQUFBOztRQW1DQUM7ZUFBQUE7O1FBekVBQztlQUFBQTs7UUFjQUM7ZUFBQUE7O1FBakRBQztlQUFBQTs7UUFuQ0FDO2VBQUFBOztRQWxDQUM7ZUFBQUE7O1FBK0dBQztlQUFBQTs7UUFrREFDO2VBQUFBOztRQTNCQUM7ZUFBQUE7O1FBL0hBQztlQUFBQTs7OytEQVpLO3lCQUVBOzZCQUNtQjs7Ozs7O0FBRWpDLFNBQVNKLHNCQUFzQkssSUFBSTtJQUN4QyxJQUFNQyxhQUFhRCxLQUFLRSxTQUFTLElBQzNCQyxnQkFBZ0IsQUFBQyxPQUFpQixPQUFYRixZQUFXO0lBRXhDLE9BQU9FO0FBQ1Q7QUFFTyxTQUFTSix1QkFBdUJLLElBQUk7SUFDekMsSUFBTUMsaUJBQWlCRCxNQUFPLEdBQUc7SUFFakMsT0FBT0M7QUFDVDtBQUVPLFNBQVNwQix1QkFBdUJxQixJQUFJLEVBQUVDLE9BQU87SUFDbEQsSUFBTUMsaUJBQWlCLEFBQUNGLFNBQVNHLGlCQUFRLEdBQ2RDLGVBQUksR0FDRkgsUUFBUUksWUFBWSxDQUFDTDtJQUVsRCxPQUFPRTtBQUNUO0FBRU8sU0FBU3RCLHdCQUF3QjBCLEtBQUssRUFBRUwsT0FBTztJQUNwRCxJQUFNTSxTQUFTTixRQUFRTyxhQUFhLENBQUNGLFFBQy9CSixpQkFBaUJLLFFBQVMsR0FBRztJQUVuQyxPQUFPTDtBQUNUO0FBRU8sU0FBU3hCLDBCQUEwQitCLE9BQU87SUFDL0MsSUFBTUMsb0JBQW9CLEFBQUMsR0FBVSxPQUFSRDtJQUU3QixPQUFPQztBQUNUO0FBRU8sU0FBU3RCLDBCQUEwQnVCLFVBQVU7SUFDbEQsSUFBTUMsY0FBY0QsV0FBV0UsTUFBTSxDQUFDLFNBQUNELGFBQWFsQjtRQUNsRCxJQUFNQyxhQUFhRCxLQUFLRSxTQUFTO1FBRWpDZ0IsY0FBYyxBQUFDQSxnQkFBZ0IsT0FDZmpCLGFBQ0MsQUFBQyxHQUFrQkEsT0FBaEJpQixhQUFZLE1BQWUsT0FBWGpCO1FBRXBDLE9BQU9pQjtJQUNULEdBQUcsT0FBTyxHQUFHO0lBRWIsT0FBT0E7QUFDVDtBQUVPLFNBQVNuQywrQkFBK0JxQyxVQUFVO0lBQ3ZELElBQUlDO0lBRUpELFdBQVdFLE9BQU8sQ0FBQyxTQUFDQztRQUNsQixJQUFJQSxhQUFhLE1BQU07WUFDckIsSUFBTUMsaUJBQWlCRCxTQUFTckIsU0FBUztZQUV6Q21CLG1CQUFtQkcsZ0JBQWlCLEdBQUc7UUFDekM7SUFDRjtJQUVBLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTbEMsZ0NBQWdDc0MsYUFBYTtJQUMzRCxJQUFNWixTQUFTYSxJQUFBQSxzQ0FBdUIsRUFBQ0QsZ0JBQ2pDakIsaUJBQWlCSyxRQUFTLEdBQUc7SUFFbkMsT0FBT0w7QUFDVDtBQUVPLFNBQVNmLHFDQUFxQ2tDLFNBQVMsRUFBRVAsVUFBVTtJQUN4RSxJQUFJbkI7SUFFSixJQUFJLE9BQU87SUFDVCxHQUFHO0lBQ0wsT0FBTyxJQUFJMEIsY0FBYyxNQUFNO1FBQzdCLElBQU1DLGtCQUFrQkQsVUFBVXpCLFNBQVM7UUFFM0NELGFBQWEyQixpQkFBaUIsR0FBRztJQUNuQyxPQUFPO1FBQ0xSLFdBQVdFLE9BQU8sQ0FBQyxTQUFDQztZQUNsQixJQUFJQSxhQUFhLE1BQU07Z0JBQ3JCLElBQU1DLGlCQUFpQkQsU0FBU3JCLFNBQVM7Z0JBRXpDRCxhQUFhdUIsZ0JBQWlCLEdBQUc7WUFDbkM7UUFDRjtJQUNGO0lBRUEsT0FBT3ZCO0FBQ1Q7QUFFTyxTQUFTYix3Q0FBd0N5QyxTQUFTO0lBQy9ELElBQU1DLE9BQU9ELFVBQVVFLE9BQU8sSUFDeEJDLFFBQVFILFVBQVVJLFFBQVEsSUFDMUJDLGFBQWFMLFVBQVVNLGFBQWEsSUFDcENDLGtCQUFrQlAsVUFBVVEsa0JBQWtCLElBQzlDQyxjQUFjTixNQUFNOUIsU0FBUyxJQUM3QnFDLG1CQUFtQkwsV0FBV2hDLFNBQVMsSUFDdkNzQyx3QkFBd0JKLGdCQUFnQmxDLFNBQVMsSUFDakR1Qyw2QkFBNkIsQUFBQyxHQUFVSCxPQUFSUixNQUFLLEtBQW1CUyxPQUFoQkQsYUFBYSxLQUE4QkUsT0FBM0JELGtCQUFpQixZQUFnQyxPQUF0QkMsdUJBQXNCO0lBRS9HLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTbEQseUNBQXlDNkMsZUFBZTtJQUN0RSxJQUFNSSx3QkFBd0JKLGdCQUFnQmxDLFNBQVMsSUFDakR3QyxvQkFBb0IsQUFBQyxTQUE4QixPQUF0QkYsdUJBQXNCO0lBRXpELE9BQU9FO0FBQ1Q7QUFFTyxTQUFTOUMsNENBQTRDa0MsSUFBSSxFQUFFYSxRQUFRO0lBQ3hFLElBQU10QyxpQkFBaUJzQyxTQUFTekMsU0FBUyxJQUNuQzBDLDJCQUEyQixBQUFDLEdBQVV2QyxPQUFSeUIsTUFBSyxLQUFrQixPQUFmekIsZ0JBQWU7SUFFM0QsT0FBT3VDO0FBQ1Q7QUFFTyxTQUFTcEQsNENBQTRDbUQsUUFBUSxFQUFFRSxrQkFBa0I7SUFDdEYsSUFBTXhDLGlCQUFpQnNDLFNBQVN6QyxTQUFTLElBQ25DNEMsMkJBQTJCRCxtQkFBbUIzQyxTQUFTLElBQ3ZENkMsYUFBYSxBQUFDLFFBQTBCRCxPQUFuQnpDLGdCQUFlLE1BQTZCLE9BQXpCeUMsMEJBQXlCO0lBRXZFLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTakUsNkNBQTZDNkQsUUFBUSxFQUFFRSxrQkFBa0I7SUFDdkYsSUFBTXhDLGlCQUFpQnNDLFNBQVN6QyxTQUFTLElBQ25DNEMsMkJBQTJCRCxtQkFBbUIzQyxTQUFTLElBQ3ZEOEMsY0FBYyxBQUFDLFNBQTJCRixPQUFuQnpDLGdCQUFlLE1BQTZCLE9BQXpCeUMsMEJBQXlCO0lBRXpFLE9BQU9FO0FBQ1Q7QUFFTyxTQUFTbEQsK0NBQStDbUQsa0JBQWtCO0lBQy9FLElBQU1OLFdBQVdNLG1CQUFtQkMsV0FBVyxJQUN6QzdDLGlCQUFpQnNDLFNBQVN6QyxTQUFTLElBQ25DMEMsMkJBQTJCLEFBQUMsR0FBaUIsT0FBZnZDLGdCQUFlO0lBRW5ELE9BQU91QztBQUNUO0FBRU8sU0FBU3ZELHFEQUFxRHlDLElBQUksRUFBRUUsS0FBSyxFQUFFRSxVQUFVLEVBQUVpQixXQUFXO0lBQ3ZHLElBQU1DLGFBQWF0QixNQUNiUSxjQUFjTixNQUFNOUIsU0FBUyxJQUM3QnFDLG1CQUFtQkwsV0FBV2hDLFNBQVMsSUFDdkN3QyxvQkFBb0JTLFlBQVlqRCxTQUFTLElBQ3pDbUQsa0JBQWtCLEFBQUMsR0FBZ0JmLE9BQWRjLFlBQVcsS0FBa0JiLE9BQWZELGFBQVksS0FBd0JJLE9BQXJCSCxrQkFBaUIsTUFBc0IsT0FBbEJHO0lBRTdFLE9BQU9XO0FBQ1Q7QUFFTyxTQUFTeEUseURBQXlEaUQsSUFBSSxFQUFFSSxVQUFVLEVBQUVpQixXQUFXO0lBQ3BHLElBQU1DLGFBQWF0QixNQUNiUyxtQkFBbUJMLFdBQVdoQyxTQUFTLElBQ3ZDd0Msb0JBQW9CUyxZQUFZakQsU0FBUyxJQUN6QzRDLDJCQUEyQixBQUFDLEdBQWlCUCxPQUFmYSxZQUFXLE1BQXlCVixPQUFyQkgsa0JBQWlCLE1BQXNCLE9BQWxCRztJQUV4RSxPQUFPSTtBQUNUO0FBRU8sU0FBU2pELDREQUE0RGlDLElBQUksRUFBRXdCLHdCQUF3QjtJQUN4RyxJQUFJQyw0QkFBNEJELHlCQUF5Qm5DLE1BQU0sQ0FBQyxTQUFDb0MsMkJBQTJCTjtRQUMxRixJQUFNTCwyQkFBMkI5QywrQ0FBK0NtRDtRQUVoRk0sNEJBQTRCLEFBQUNBLDhCQUE4QixPQUN6RFgsMkJBQ0EsQUFBQyxHQUFnQ0EsT0FBOUJXLDJCQUEwQixNQUE2QixPQUF6Qlg7UUFFbkMsT0FBT1c7SUFDVCxHQUFHLE9BQU8sR0FBRztJQUViQSw0QkFBNEIsQUFBQyxHQUFVQSxPQUFSekIsTUFBSyxLQUE2QixPQUExQnlCLDJCQUEwQixPQUFLLEdBQUc7SUFFekUsT0FBT0E7QUFDVDtBQUVPLFNBQVNqRSwrREFBK0RxRCxRQUFRLEVBQUVhLGlCQUFpQixFQUFFWCxrQkFBa0I7SUFDNUgsSUFBTXhDLGlCQUFpQnNDLFNBQVN6QyxTQUFTLElBQ25DdUQsMEJBQTBCRCxrQkFBa0J0RCxTQUFTLElBQ3JENEMsMkJBQTJCRCxtQkFBbUIzQyxTQUFTLElBQ3ZEd0QsZUFBZSxBQUFDLFVBQTRCWixPQUFuQnpDLGdCQUFlLE1BQWlDb0QsT0FBN0JYLDBCQUF5QixNQUE0QixPQUF4QlcseUJBQXdCO0lBRXZHLE9BQU9DO0FBQ1QifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-furtle",
3
3
  "author": "James Smith",
4
- "version": "2.0.340",
4
+ "version": "2.0.342",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-furtle",
7
7
  "description": "Occam's Furtle language.",
@@ -42,7 +42,8 @@ export default define(class ArrayAssigment {
42
42
  throw exception;
43
43
  }
44
44
 
45
- const nodes = term.getNodes(),
45
+ const primitiveValue = term.getPrimitiveValue(),
46
+ nodes = primitiveValue, ///
46
47
  nodesLength = nodes.length,
47
48
  parametersLength = this.parameters.getLength();
48
49
 
@@ -104,7 +104,8 @@ export default define(class ObjectAssigment {
104
104
  throw exception;
105
105
  }
106
106
 
107
- const node = term.getNode(),
107
+ const primitiveValue = term.getPrimitiveValue(),
108
+ node = primitiveValue, ///
108
109
  nodeTerminalNode = node.isTerminalNode();
109
110
 
110
111
  if (!nodeTerminalNode) {
@@ -143,7 +144,8 @@ export default define(class ObjectAssigment {
143
144
  throw exception;
144
145
  }
145
146
 
146
- const node = term.getNode(),
147
+ const primitiveValue = term.getPrimitiveValue(),
148
+ node = primitiveValue, ///
147
149
  nodeTerminalNode = node.isTerminalNode(),
148
150
  terminal = nodeTerminalNode; ///
149
151
 
@@ -172,7 +174,8 @@ export default define(class ObjectAssigment {
172
174
  throw exception;
173
175
  }
174
176
 
175
- const node = term.getNode(),
177
+ const primitiveValue = term.getPrimitiveValue(),
178
+ node = primitiveValue, ///
176
179
  nodeNonTerminalNode = node.isNonTerminalNode();
177
180
 
178
181
  if (!nodeNonTerminalNode) {
@@ -3,10 +3,9 @@
3
3
  import { define } from "../elements";
4
4
 
5
5
  export default define(class Expression {
6
- constructor(string, variable, primitive, some, every, reduce, ternary, nodeQuery, nodesQuery, returnBlock, procedureCall) {
6
+ constructor(string, term, some, every, reduce, ternary, nodeQuery, nodesQuery, returnBlock, procedureCall) {
7
7
  this.string = string;
8
- this.variable = variable;
9
- this.primitive = primitive;
8
+ this.term = term;
10
9
  this.some = some;
11
10
  this.every = every;
12
11
  this.reduce = reduce;
@@ -21,12 +20,8 @@ export default define(class Expression {
21
20
  return this.string;
22
21
  }
23
22
 
24
- getVariable() {
25
- return this.variable;
26
- }
27
-
28
- getPrimitive() {
29
- return this.primitive;
23
+ getTerm() {
24
+ return this.term;
30
25
  }
31
26
 
32
27
  getSome() {
@@ -61,25 +56,13 @@ export default define(class Expression {
61
56
  return this.procedureCall;
62
57
  }
63
58
 
64
- getNode() { return this.primitive.getNode(); }
65
-
66
- getNodes() { return this.primitive.getNodes(); }
67
-
68
- getNumber() { return this.primitive.getNumber(); }
69
-
70
- getBoolean() { return this.primitive.getBoolean(); }
71
-
72
- getStringLiteral() { return this.primitive.getStringLiteral(); }
73
-
74
59
  getType() {
75
60
  let type;
76
61
 
77
62
  if (false) {
78
63
  ///
79
- } else if (this.variable !== null) {
80
- type = this.variable.getType();
81
- } else if (this.primitive !== null) {
82
- type = this.primitive.getType();
64
+ } else if (this.term !== null) {
65
+ type = this.term.getType();
83
66
  } else if (this.some !== null) {
84
67
  type = this.some.getType();
85
68
  } else if (this.every !== null) {
@@ -106,10 +89,8 @@ export default define(class Expression {
106
89
 
107
90
  if (false) {
108
91
  ///
109
- } else if (this.variable !== null) {
110
- term = this.variable.evaluate(context);
111
- } else if (this.primitive !== null) {
112
- term = this.primitive.evaluate(context);
92
+ } else if (this.term !== null) {
93
+ term = this.term.evaluate(context);
113
94
  } else if (this.some !== null) {
114
95
  term = this.some.evaluate(context);
115
96
  } else if (this.every !== null) {
@@ -55,9 +55,13 @@ export default define(class NodeQuery {
55
55
  throw exception;
56
56
  }
57
57
 
58
- const termNode = term.getNode();
58
+ let node;
59
+
60
+ const primitiveValue = term.getPrimitiveValue();
61
+
62
+ node = primitiveValue; ///
59
63
 
60
- if (termNode === null) {
64
+ if (node === null) {
61
65
  const termString = term.getString(),
62
66
  message = `The '${termString}' term's node is null.`,
63
67
  exception = Exception.fromMessage(message);
@@ -65,10 +69,6 @@ export default define(class NodeQuery {
65
69
  throw exception;
66
70
  }
67
71
 
68
- let node;
69
-
70
- node = termNode; ///
71
-
72
72
  const nodes = this.query.execute(node),
73
73
  nodesLength = nodes.length;
74
74
 
@@ -51,9 +51,13 @@ export default define(class NodesQuery {
51
51
  throw exception;
52
52
  }
53
53
 
54
- const termNode = term.getNode();
54
+ let node;
55
+
56
+ const primitiveValue = term.getPrimitiveValue();
57
+
58
+ node = primitiveValue; ///
55
59
 
56
- if (termNode === null) {
60
+ if (node === null) {
57
61
  const termString = term.getString(),
58
62
  message = `The '${termString}' term's node is null.`,
59
63
  exception = Exception.fromMessage(message);
@@ -61,10 +65,6 @@ export default define(class NodesQuery {
61
65
  throw exception;
62
66
  }
63
67
 
64
- let node;
65
-
66
- node = termNode; ///
67
-
68
68
  const nodes = this.query.execute(node);
69
69
 
70
70
  term = termFromNodes(nodes, context);
@@ -29,56 +29,6 @@ export default define(class Primitive {
29
29
  return this.value;
30
30
  }
31
31
 
32
- getNode() {
33
- let node = null;
34
-
35
- if (this.type === NODE_TYPE) {
36
- node = this.value; ///
37
- }
38
-
39
- return node;
40
- }
41
-
42
- getNodes() {
43
- let nodes = null;
44
-
45
- if (this.type === NODES_TYPE) {
46
- nodes = this.value; ///
47
- }
48
-
49
- return nodes;
50
- }
51
-
52
- getNumber() {
53
- let number = null;
54
-
55
- if (this.type === NUMBER_TYPE) {
56
- number = this.value; ///
57
- }
58
-
59
- return number;
60
- }
61
-
62
- getBoolean() {
63
- let boolean = null;
64
-
65
- if (this.type === BOOLEAN_TYPE) {
66
- boolean = this.value; ///
67
- }
68
-
69
- return boolean;
70
- }
71
-
72
- getStringLiteral() {
73
- let stringLiteral = null;
74
-
75
- if (this.type === STRING_TYPE) {
76
- stringLiteral = this.value; ///
77
- }
78
-
79
- return stringLiteral;
80
- }
81
-
82
32
  evaluate(context) {
83
33
  const { Term } = elements,
84
34
  primitive = this,
@@ -45,7 +45,8 @@ export default define(class Some {
45
45
  throw exception;
46
46
  }
47
47
 
48
- const nodes = term.getNodes(),
48
+ const primitiveValue = term.getPrimitiveValue(),
49
+ nodes = primitiveValue, ///
49
50
  boolean = nodes.some((node) => {
50
51
  let term;
51
52
 
@@ -66,7 +67,8 @@ export default define(class Some {
66
67
  throw exception;
67
68
  }
68
69
 
69
- const boolean = term.getBoolean();
70
+ const primitiveValue = term.getPrimitiveValue(),
71
+ boolean = primitiveValue; ///
70
72
 
71
73
  return boolean;
72
74
  });
@@ -63,11 +63,13 @@ export default define(class LogicalTerm {
63
63
  throw exception;
64
64
  }
65
65
 
66
- const leftTermBoolean = leftTerm.getBoolean(),
67
- rightTermBoolean = rightTerm.getBoolean(),
66
+ const leftTermPrimitiveValue = leftTerm.getPrimitiveValue(),
67
+ rightTermPrimitiveValue = rightTerm.getPrimitiveValue(),
68
+ leftBoolean =leftTermPrimitiveValue, ///
69
+ rightBoolean = rightTermPrimitiveValue, ///
68
70
  boolean = this.disjunction ?
69
- (leftTermBoolean || rightTermBoolean) :
70
- (leftTermBoolean && rightTermBoolean);
71
+ (leftBoolean || rightBoolean) :
72
+ (leftBoolean && rightBoolean);
71
73
 
72
74
  term = termFromBoolean(boolean, context);
73
75
 
@@ -44,7 +44,11 @@ export default define(class NegatedTerm {
44
44
  throw exception;
45
45
  }
46
46
 
47
- let boolean = term.getBoolean();
47
+ let boolean;
48
+
49
+ const primitiveValue = term.getPrimitiveValue();
50
+
51
+ boolean = primitiveValue; ///
48
52
 
49
53
  boolean = !boolean;
50
54
 
@@ -41,15 +41,11 @@ export default define(class Term {
41
41
  return this.comparisonTerm;
42
42
  }
43
43
 
44
- getNode() { return this.primitive.getNode(); }
44
+ getPrimitiveValue() {
45
+ const primitiveValue = this.primitive.getValue();
45
46
 
46
- getNodes() { return this.primitive.getNodes(); }
47
-
48
- getNumber() { return this.primitive.getNumber(); }
49
-
50
- getBoolean() { return this.primitive.getBoolean(); }
51
-
52
- getStringLiteral() { return this.primitive.getStringLiteral(); }
47
+ return primitiveValue;
48
+ }
53
49
 
54
50
  getType() {
55
51
  let type;
@@ -48,7 +48,8 @@ export default define(class Ternary {
48
48
  throw exception;
49
49
  }
50
50
 
51
- const boolean = term.getBoolean();
51
+ const primitiveValue = term.getPrimitiveValue(),
52
+ boolean = primitiveValue; ///
52
53
 
53
54
  term = boolean ?
54
55
  this.ifExpression.evaluate(context) :
@@ -2,18 +2,24 @@
2
2
 
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
- import { SOME_RULE_NAME,
5
+ import { TERM_RULE_NAME,
6
+ SOME_RULE_NAME,
6
7
  EVERY_RULE_NAME,
7
8
  REDUCE_RULE_NAME,
8
9
  TERNARY_RULE_NAME,
9
- VARIABLE_RULE_NAME,
10
- PRIMITIVE_RULE_NAME,
11
10
  NODE_QUERY_RULE_NAME,
12
11
  NODES_QUERY_RULE_NAME,
13
12
  RETURN_BLOCK_RULE_NAME,
14
13
  PROCEDURE_CALL_RULE_NAME } from "../ruleNames";
15
14
 
16
15
  export default class ExpressionNode extends NonTerminalNode {
16
+ getTermNode() {
17
+ const ruleName = TERM_RULE_NAME,
18
+ termNode = this.getNodeByRuleName(ruleName);
19
+
20
+ return termNode;
21
+ }
22
+
17
23
  getSomeNode() {
18
24
  const ruleName = SOME_RULE_NAME,
19
25
  someNode = this.getNodeByRuleName(ruleName);
@@ -42,20 +48,6 @@ export default class ExpressionNode extends NonTerminalNode {
42
48
  return ternaryNode;
43
49
  }
44
50
 
45
- getVariableNode() {
46
- const ruleName = VARIABLE_RULE_NAME,
47
- variableNode = this.getNodeByRuleName(ruleName);
48
-
49
- return variableNode;
50
- }
51
-
52
- getPrimitiveNode() {
53
- const ruleName = PRIMITIVE_RULE_NAME,
54
- primitiveNode = this.getNodeByRuleName(ruleName);
55
-
56
- return primitiveNode;
57
- }
58
-
59
51
  getNodeQueryNode() {
60
52
  const ruleName = NODE_QUERY_RULE_NAME,
61
53
  nodeQueryNode = this.getNodeByRuleName(ruleName);
@@ -7,10 +7,10 @@ import elements from "../elements";
7
7
  import { BOOLEAN_TYPE } from "../types";
8
8
  import { ternaryStringFromTerm,
9
9
  variableStringFromName,
10
+ expressionStringFromProperties,
10
11
  termStringFromPrimitiveAndProperties,
11
12
  procedureDeclarationStringFromProcedure,
12
13
  returnBlockStringFromReturnStatementNode,
13
- expressionStringFromPrimitiveAndProperties,
14
14
  variableAssignmentStringFromTypeAndVariable,
15
15
  someStringFromVariableAndAnonymousProcedure,
16
16
  everyStringFromVariableAndAnonymousProcedure,
@@ -215,8 +215,7 @@ export function parametersFromParametersNode(parametersNode, context) {
215
215
 
216
216
  export function expressionFromExpressionNode(expressionNode, context) {
217
217
  const { Expression } = elements,
218
- variable = variableFromExpressionNode(expressionNode, context),
219
- primitive = primitiveFromExpressionNode(expressionNode, context),
218
+ term = termFromExpressionNode(expressionNode, context),
220
219
  some = someFromExpressionNode(expressionNode, context),
221
220
  every = everyFromExpressionNode(expressionNode, context),
222
221
  reduce = reduceFromExpressionNode(expressionNode, context),
@@ -226,19 +225,19 @@ export function expressionFromExpressionNode(expressionNode, context) {
226
225
  returnBlock = returnBlockFromExpressionNode(expressionNode, context),
227
226
  procedureCall = procedureCallFromExpressionNode(expressionNode, context),
228
227
  properties = [
228
+ term,
229
229
  some,
230
230
  every,
231
231
  reduce,
232
232
  ternary,
233
- variable,
234
233
  nodeQuery,
235
234
  nodesQuery,
236
235
  returnBlock,
237
236
  procedureCall
238
237
  ],
239
- expressionString = expressionStringFromPrimitiveAndProperties(primitive, properties, context),
238
+ expressionString = expressionStringFromProperties(properties, context),
240
239
  string = expressionString, ///
241
- expression = new Expression(string, variable, primitive, some, every, reduce, ternary, nodeQuery, nodesQuery, returnBlock, procedureCall);
240
+ expression = new Expression(string, term, some, every, reduce, ternary, nodeQuery, nodesQuery, returnBlock, procedureCall);
242
241
 
243
242
  return expression;
244
243
  }
@@ -457,6 +456,18 @@ export function variableFromReduceNode(reduceNode, context) {
457
456
  return variable;
458
457
  }
459
458
 
459
+ export function termFromExpressionNode(expressionNode, context) {
460
+ let term = null;
461
+
462
+ const termNode = expressionNode.getTermNode();
463
+
464
+ if (termNode !== null) {
465
+ term = termFromTermNode(termNode, context);
466
+ }
467
+
468
+ return term;
469
+ }
470
+
460
471
  export function someFromExpressionNode(expressionNode, context) {
461
472
  let some = null;
462
473
 
@@ -533,9 +544,15 @@ export function typeFromLogicalTermNode(logicalTermNode, context) {
533
544
  return type;
534
545
  }
535
546
 
547
+ export function typeFromNegatedTermNode(logicalTermNode, context) {
548
+ const type = BOOLEAN_TYPE;
549
+
550
+ return type;
551
+ }
552
+
536
553
  export function termFromNegatedTermNode(negatedTermNode, context) {
537
554
  const termNode = negatedTermNode.getTermNode(),
538
- term = termFromTermNode(termNode, context);
555
+ term = termFromTermNode(termNode, context);
539
556
 
540
557
  return term;
541
558
  }
@@ -633,18 +650,6 @@ export function variableFromNodesQueryNode(nodesQueryNode, context) {
633
650
  return variable;
634
651
  }
635
652
 
636
- export function variableFromExpressionNode(expressionNode, context) {
637
- let variable = null;
638
-
639
- const variableNode = expressionNode.getVariableNode();
640
-
641
- if (variableNode !== null) {
642
- variable = variableFromVariableNode(variableNode, context);
643
- }
644
-
645
- return variable;
646
- }
647
-
648
653
  export function termsFromProcedureCallNode(procedureCallNode, context) {
649
654
  const termsNode = procedureCallNode.getTermsNode(),
650
655
  terms = termsFromTermsNode(termsNode, context);
@@ -690,18 +695,6 @@ export function ifExpressionFromTernaryNode(ternaryNode, context) {
690
695
  return ifExpression;
691
696
  }
692
697
 
693
- export function primitiveFromExpressionNode(expressionNode, context) {
694
- let primitive = null;
695
-
696
- const primitiveNode = expressionNode.getPrimitiveNode();
697
-
698
- if (primitiveNode !== null) {
699
- primitive = primitiveFromPrimitiveNode(primitiveNode, context);
700
- }
701
-
702
- return primitive;
703
- }
704
-
705
698
  export function nodeQueryFromExpressionNode(expressionNode, context) {
706
699
  let nodeQuery = null;
707
700
 
@@ -53,6 +53,20 @@ export function termsStringFromTermsArray(termsArray) {
53
53
  return termsString;
54
54
  }
55
55
 
56
+ export function expressionStringFromProperties(properties) {
57
+ let expressionString;
58
+
59
+ properties.forEach((property) => {
60
+ if (property !== null) {
61
+ const propertyString = property.getString();
62
+
63
+ expressionString = propertyString; ///
64
+ }
65
+ });
66
+
67
+ return expressionString;
68
+ }
69
+
56
70
  export function primtiveStringFromStringLiteral(stringLiteral) {
57
71
  const string = stringFromStringLiteral(stringLiteral),
58
72
  primtiveString = string; ///
@@ -102,28 +116,6 @@ export function returnBlockStringFromReturnStatementNode(returnStatement) {
102
116
  return returnBlockString;
103
117
  }
104
118
 
105
- export function expressionStringFromPrimitiveAndProperties(primitive, properties) {
106
- let expressionString;
107
-
108
- if (false) {
109
- ///
110
- } else if (primitive !== null) {
111
- const primitiveString = primitive.getString();
112
-
113
- expressionString = primitiveString; ///
114
- } else {
115
- properties.forEach((property) => {
116
- if (property !== null) {
117
- const propertyString = property.getString();
118
-
119
- expressionString = propertyString; ///
120
- }
121
- });
122
- }
123
-
124
- return expressionString;
125
- }
126
-
127
119
  export function variableAssignmentStringFromTypeAndVariable(type, variable) {
128
120
  const variableString = variable.getString(),
129
121
  variableAssignmentString = `${type} ${variableString} = ... ;`;
package/test/main.js CHANGED
@@ -31,8 +31,9 @@ const free = true,
31
31
 
32
32
  // try {
33
33
  const context = fileContext, ///
34
- expression = procedure.call(terms, context),
35
- boolean = expression.getBoolean();
34
+ term = procedure.call(terms, context),
35
+ primitiveValue = term.getPrimitiveValue(),
36
+ boolean = primitiveValue; ///
36
37
 
37
38
  console.log(boolean);
38
39
  // } catch (exception) {