occam-verify-cli 0.0.945 → 0.0.947

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.
@@ -142,7 +142,10 @@ _define_property(MetaLevelVerifier, "maps", [
142
142
  {
143
143
  nodeQuery: termNodeQuery,
144
144
  verify: function(termNode, localContext) {
145
- var terms = [], termVerified = (0, _term.default)(termNode, terms, localContext);
145
+ var terms = [], termVerified = (0, _term.default)(termNode, terms, localContext, function() {
146
+ var verifiedAhead = true;
147
+ return verifiedAhead;
148
+ });
146
149
  return termVerified;
147
150
  }
148
151
  }
@@ -150,4 +153,4 @@ _define_property(MetaLevelVerifier, "maps", [
150
153
  var metaLevelVerifier = new MetaLevelVerifier();
151
154
  var _default = metaLevelVerifier;
152
155
 
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9tZXRhTGV2ZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXJcIjtcbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IHZlcmlmeVZhcmlhYmxlIGZyb20gXCIuLi92ZXJpZnkvdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlNZXRhdmFyaWFibGUgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0hXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGUhXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZSFcIik7XG5cbmNsYXNzIE1ldGFMZXZlbFZlcmlmaWVyIGV4dGVuZHMgVmVyaWZpZXIge1xuICB2ZXJpZnkobm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB0aGlzLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICB2ZXJpZmllZCA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IG1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6ICh2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YXJpYWJsZVZlcmlmaWVkID0gdmVyaWZ5VmFyaWFibGUodmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZVZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAodGVybU5vZGUsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdGVybVZlcmlmaWVkO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgbWV0YUxldmVsVmVyaWZpZXIgPSBuZXcgTWV0YUxldmVsVmVyaWZpZXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgbWV0YUxldmVsVmVyaWZpZXI7XG4iXSwibmFtZXMiOlsidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInZhcmlhYmxlTm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiTWV0YUxldmVsVmVyaWZpZXIiLCJ2ZXJpZnkiLCJub2RlIiwibG9jYWxDb250ZXh0IiwidmVyaWZpZWQiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsIlZlcmlmaWVyIiwibWFwcyIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVWZXJpZmllZCIsInZlcmlmeU1ldGF2YXJpYWJsZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlVmVyaWZpZWQiLCJ2ZXJpZnlWYXJpYWJsZSIsInRlcm1Ob2RlIiwidGVybXMiLCJ0ZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwibWV0YUxldmVsVmVyaWZpZXIiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXdEQTs7O2VBQUE7OzsrREF0RHFCOzJEQUNFOytEQUNJO21FQUNJO3FCQUVMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsV0FDMUJDLG9CQUFvQkQsSUFBQUEsZ0JBQVMsRUFBQyxlQUM5QkUsd0JBQXdCRixJQUFBQSxnQkFBUyxFQUFDO0FBRXhDLElBQUEsQUFBTUcsa0NBQUQsQUFBTDtjQUFNQTthQUFBQTtnQ0FBQUE7aUNBQUFBOztrQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPQyxJQUFJLEVBQUVDLFlBQVk7Z0JBQ3ZCLElBQUlDO2dCQUVKLElBQU1DLGtCQUFrQkgsTUFDbEJJLDBCQUEwQixJQUFJLENBQUNDLHFCQUFxQixDQUFDRixpQkFBaUJGO2dCQUU1RUMsV0FBV0UseUJBQTBCLEdBQUc7Z0JBRXhDLE9BQU9GO1lBQ1Q7OztXQVZJSjtFQUEwQlEsaUJBQVE7QUFZdEMsaUJBWklSLG1CQVlHUyxRQUFPO0lBQ1o7UUFDRVosV0FBV0U7UUFDWEUsUUFBUSxTQUFDUyxrQkFBa0JQO1lBQ3pCLElBQU1RLHVCQUF1QkMsSUFBQUEscUJBQWtCLEVBQUNGLGtCQUFrQlA7WUFFbEUsT0FBT1E7UUFDVDtJQUNGO0lBQ0E7UUFDRWQsV0FBV0M7UUFDWEcsUUFBUSxTQUFDWSxjQUFjVjtZQUNyQixJQUFNVyxtQkFBbUJDLElBQUFBLGlCQUFjLEVBQUNGLGNBQWNWO1lBRXRELE9BQU9XO1FBQ1Q7SUFDRjtJQUNBO1FBQ0VqQixXQUFXRDtRQUNYSyxRQUFRLFNBQUNlLFVBQVViO1lBQ2pCLElBQU1jLFFBQVEsRUFBRSxFQUNWQyxlQUFlQyxJQUFBQSxhQUFVLEVBQUNILFVBQVVDLE9BQU9kO1lBRWpELE9BQU9lO1FBQ1Q7SUFDRjtDQUNEO0FBR0gsSUFBTUUsb0JBQW9CLElBQUlwQjtJQUU5QixXQUFlb0IifQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9tZXRhTGV2ZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXJcIjtcbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IHZlcmlmeVZhcmlhYmxlIGZyb20gXCIuLi92ZXJpZnkvdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlNZXRhdmFyaWFibGUgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0hXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGUhXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZSFcIik7XG5cbmNsYXNzIE1ldGFMZXZlbFZlcmlmaWVyIGV4dGVuZHMgVmVyaWZpZXIge1xuICB2ZXJpZnkobm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB0aGlzLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICB2ZXJpZmllZCA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IG1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6ICh2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YXJpYWJsZVZlcmlmaWVkID0gdmVyaWZ5VmFyaWFibGUodmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZVZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAodGVybU5vZGUsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm1WZXJpZmllZDtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IG1ldGFMZXZlbFZlcmlmaWVyID0gbmV3IE1ldGFMZXZlbFZlcmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGFMZXZlbFZlcmlmaWVyO1xuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsIm1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsIk1ldGFMZXZlbFZlcmlmaWVyIiwidmVyaWZ5Iiwibm9kZSIsImxvY2FsQ29udGV4dCIsInZlcmlmaWVkIiwibm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJWZXJpZmllciIsIm1hcHMiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhdmFyaWFibGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZVZlcmlmaWVkIiwidmVyaWZ5VmFyaWFibGUiLCJ0ZXJtTm9kZSIsInRlcm1zIiwidGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsInZlcmlmaWVkQWhlYWQiLCJtZXRhTGV2ZWxWZXJpZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBNERBOzs7ZUFBQTs7OytEQTFEcUI7MkRBQ0U7K0RBQ0k7bUVBQ0k7cUJBRUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1BLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyxXQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDLGVBQzlCRSx3QkFBd0JGLElBQUFBLGdCQUFTLEVBQUM7QUFFeEMsSUFBQSxBQUFNRyxrQ0FBRCxBQUFMO2NBQU1BO2FBQUFBO2dDQUFBQTtpQ0FBQUE7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLE9BQU9DLElBQUksRUFBRUMsWUFBWTtnQkFDdkIsSUFBSUM7Z0JBRUosSUFBTUMsa0JBQWtCSCxNQUNsQkksMEJBQTBCLElBQUksQ0FBQ0MscUJBQXFCLENBQUNGLGlCQUFpQkY7Z0JBRTVFQyxXQUFXRSx5QkFBMEIsR0FBRztnQkFFeEMsT0FBT0Y7WUFDVDs7O1dBVklKO0VBQTBCUSxpQkFBUTtBQVl0QyxpQkFaSVIsbUJBWUdTLFFBQU87SUFDWjtRQUNFWixXQUFXRTtRQUNYRSxRQUFRLFNBQUNTLGtCQUFrQlA7WUFDekIsSUFBTVEsdUJBQXVCQyxJQUFBQSxxQkFBa0IsRUFBQ0Ysa0JBQWtCUDtZQUVsRSxPQUFPUTtRQUNUO0lBQ0Y7SUFDQTtRQUNFZCxXQUFXQztRQUNYRyxRQUFRLFNBQUNZLGNBQWNWO1lBQ3JCLElBQU1XLG1CQUFtQkMsSUFBQUEsaUJBQWMsRUFBQ0YsY0FBY1Y7WUFFdEQsT0FBT1c7UUFDVDtJQUNGO0lBQ0E7UUFDRWpCLFdBQVdEO1FBQ1hLLFFBQVEsU0FBQ2UsVUFBVWI7WUFDakIsSUFBTWMsUUFBUSxFQUFFLEVBQ1ZDLGVBQWVDLElBQUFBLGFBQVUsRUFBQ0gsVUFBVUMsT0FBT2QsY0FBYztnQkFDdkQsSUFBTWlCLGdCQUFnQjtnQkFFdEIsT0FBT0E7WUFDVDtZQUVOLE9BQU9GO1FBQ1Q7SUFDRjtDQUNEO0FBR0gsSUFBTUcsb0JBQW9CLElBQUlyQjtJQUU5QixXQUFlcUIifQ==
@@ -135,7 +135,10 @@ _define_property(StatementAsCombinatorVerifier, "maps", [
135
135
  {
136
136
  nodeQuery: termNodeQuery,
137
137
  verify: function(termNode, localContext) {
138
- var terms = [], termVerified = (0, _term.default)(termNode, terms, localContext);
138
+ var terms = [], termVerified = (0, _term.default)(termNode, terms, localContext, function() {
139
+ var verifiedAhead = true;
140
+ return verifiedAhead;
141
+ });
139
142
  return termVerified;
140
143
  }
141
144
  },
@@ -150,4 +153,4 @@ _define_property(StatementAsCombinatorVerifier, "maps", [
150
153
  var statementAsCombinatorVerifier = new StatementAsCombinatorVerifier();
151
154
  var _default = statementAsCombinatorVerifier;
152
155
 
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9zdGF0ZW1lbnRBc0NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXJcIjtcbmltcG9ydCB2ZXJpZnlUeXBlIGZyb20gXCIuLi92ZXJpZnkvdHlwZVwiO1xuaW1wb3J0IHZlcmlmeVRlcm0gZnJvbSBcIi4uL3ZlcmlmeS90ZXJtXCI7XG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZSFcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50IVwiKTtcblxuY2xhc3MgU3RhdGVtZW50QXNDb21iaW5hdG9yVmVyaWZpZXIgZXh0ZW5kcyBWZXJpZmllciB7XG4gIHZlcmlmeShzdGF0ZW1lbnROb2RlLCBmaWxlQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzQ29tYmluYXRvcjtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHRoaXMudmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzQ29tYmluYXRvciA9IGNoaWxkTm9kZXNWZXJpZmllZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNDb21iaW5hdG9yO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZGVyaXZlZCA9IGZhbHNlLFxuICAgICAgICAgICAgICBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICB2ZXJpZnk6ICh0ZXJtTm9kZSwgbG9jYWxDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0ZXJtVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6ICh0eXBlTm9kZSwgbG9jYWxDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVWZXJpZmllZCA9IHZlcmlmeVR5cGUodHlwZU5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGVWZXJpZmllZDtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IHN0YXRlbWVudEFzQ29tYmluYXRvclZlcmlmaWVyID0gbmV3IFN0YXRlbWVudEFzQ29tYmluYXRvclZlcmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHN0YXRlbWVudEFzQ29tYmluYXRvclZlcmlmaWVyO1xuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwiU3RhdGVtZW50QXNDb21iaW5hdG9yVmVyaWZpZXIiLCJ2ZXJpZnkiLCJzdGF0ZW1lbnROb2RlIiwiZmlsZUNvbnRleHQiLCJzdGF0ZW1lbnRWZXJpZmllZEFzQ29tYmluYXRvciIsIm5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc1ZlcmlmaWVkIiwidmVyaWZ5Q2hpbGROb2RlcyIsIlZlcmlmaWVyIiwibWFwcyIsImxvY2FsQ29udGV4dCIsImRlcml2ZWQiLCJhc3NpZ25tZW50cyIsInN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5U3RhdGVtZW50IiwidGVybU5vZGUiLCJ0ZXJtcyIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm0iLCJ0eXBlTm9kZSIsInR5cGVWZXJpZmllZCIsInZlcmlmeVR5cGUiLCJzdGF0ZW1lbnRBc0NvbWJpbmF0b3JWZXJpZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBMkRBOzs7ZUFBQTs7OytEQXpEcUI7MkRBQ0U7MkRBQ0E7Z0VBQ0s7cUJBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1BLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyxXQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLFdBQzFCRSxxQkFBcUJGLElBQUFBLGdCQUFTLEVBQUM7QUFFckMsSUFBQSxBQUFNRyw4Q0FBRCxBQUFMO2NBQU1BO2FBQUFBO2dDQUFBQTtpQ0FBQUE7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLE9BQU9DLGFBQWEsRUFBRUMsV0FBVztnQkFDL0IsSUFBSUM7Z0JBRUosSUFBTUMsa0JBQWtCSCxlQUNsQkksYUFBYUQsZ0JBQWdCRSxhQUFhLElBQzFDQyxxQkFBcUIsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQ0gsWUFBWUg7Z0JBRTdEQyxnQ0FBZ0NJLG9CQUFxQixHQUFHO2dCQUV4RCxPQUFPSjtZQUNUOzs7V0FYSUo7RUFBc0NVLGlCQUFRO0FBYWxELGlCQWJJViwrQkFhR1csUUFBTztJQUNaO1FBQ0VkLFdBQVdFO1FBQ1hFLFFBQVEsU0FBQ0MsZUFBZVU7WUFDdEIsSUFBTUMsVUFBVSxPQUNWQyxjQUFjLEVBQUUsRUFDaEJDLG9CQUFvQkMsSUFBQUEsa0JBQWUsRUFBQ2QsZUFBZVksYUFBYUQsU0FBU0Q7WUFFL0UsT0FBT0c7UUFDVDtJQUNGO0lBQ0E7UUFDRWxCLFdBQVdEO1FBQ1hLLFFBQVEsU0FBQ2dCLFVBQVVMO1lBQ2pCLElBQU1NLFFBQVEsRUFBRSxFQUNWQyxlQUFlQyxJQUFBQSxhQUFVLEVBQUNILFVBQVVDLE9BQU9OO1lBRWpELE9BQU9PO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V0QixXQUFXQztRQUNYRyxRQUFRLFNBQUNvQixVQUFVVDtZQUNqQixJQUFNVSxlQUFlQyxJQUFBQSxhQUFVLEVBQUNGLFVBQVVUO1lBRTFDLE9BQU9VO1FBQ1Q7SUFDRjtDQUNEO0FBR0gsSUFBTUUsZ0NBQWdDLElBQUl4QjtJQUUxQyxXQUFld0IifQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9zdGF0ZW1lbnRBc0NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXJcIjtcbmltcG9ydCB2ZXJpZnlUeXBlIGZyb20gXCIuLi92ZXJpZnkvdHlwZVwiO1xuaW1wb3J0IHZlcmlmeVRlcm0gZnJvbSBcIi4uL3ZlcmlmeS90ZXJtXCI7XG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZSFcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50IVwiKTtcblxuY2xhc3MgU3RhdGVtZW50QXNDb21iaW5hdG9yVmVyaWZpZXIgZXh0ZW5kcyBWZXJpZmllciB7XG4gIHZlcmlmeShzdGF0ZW1lbnROb2RlLCBmaWxlQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzQ29tYmluYXRvcjtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHRoaXMudmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzQ29tYmluYXRvciA9IGNoaWxkTm9kZXNWZXJpZmllZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNDb21iaW5hdG9yO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZGVyaXZlZCA9IGZhbHNlLFxuICAgICAgICAgICAgICBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICB2ZXJpZnk6ICh0ZXJtTm9kZSwgbG9jYWxDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGVybVZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAodHlwZU5vZGUsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlVmVyaWZpZWQgPSB2ZXJpZnlUeXBlKHR5cGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0eXBlVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCBzdGF0ZW1lbnRBc0NvbWJpbmF0b3JWZXJpZmllciA9IG5ldyBTdGF0ZW1lbnRBc0NvbWJpbmF0b3JWZXJpZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCBzdGF0ZW1lbnRBc0NvbWJpbmF0b3JWZXJpZmllcjtcbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsIlN0YXRlbWVudEFzQ29tYmluYXRvclZlcmlmaWVyIiwidmVyaWZ5Iiwic3RhdGVtZW50Tm9kZSIsImZpbGVDb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3IiLCJub25UZXJtaW5hbE5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNoaWxkTm9kZXNWZXJpZmllZCIsInZlcmlmeUNoaWxkTm9kZXMiLCJWZXJpZmllciIsIm1hcHMiLCJsb2NhbENvbnRleHQiLCJkZXJpdmVkIiwiYXNzaWdubWVudHMiLCJzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVN0YXRlbWVudCIsInRlcm1Ob2RlIiwidGVybXMiLCJ0ZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwidmVyaWZpZWRBaGVhZCIsInR5cGVOb2RlIiwidHlwZVZlcmlmaWVkIiwidmVyaWZ5VHlwZSIsInN0YXRlbWVudEFzQ29tYmluYXRvclZlcmlmaWVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkErREE7OztlQUFBOzs7K0RBN0RxQjsyREFDRTsyREFDQTtnRUFDSztxQkFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsSUFBTUEsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLFdBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUMsV0FDMUJFLHFCQUFxQkYsSUFBQUEsZ0JBQVMsRUFBQztBQUVyQyxJQUFBLEFBQU1HLDhDQUFELEFBQUw7Y0FBTUE7YUFBQUE7Z0NBQUFBO2lDQUFBQTs7a0JBQUFBOztZQUNKQyxLQUFBQTttQkFBQUEsU0FBQUEsT0FBT0MsYUFBYSxFQUFFQyxXQUFXO2dCQUMvQixJQUFJQztnQkFFSixJQUFNQyxrQkFBa0JILGVBQ2xCSSxhQUFhRCxnQkFBZ0JFLGFBQWEsSUFDMUNDLHFCQUFxQixJQUFJLENBQUNDLGdCQUFnQixDQUFDSCxZQUFZSDtnQkFFN0RDLGdDQUFnQ0ksb0JBQXFCLEdBQUc7Z0JBRXhELE9BQU9KO1lBQ1Q7OztXQVhJSjtFQUFzQ1UsaUJBQVE7QUFhbEQsaUJBYklWLCtCQWFHVyxRQUFPO0lBQ1o7UUFDRWQsV0FBV0U7UUFDWEUsUUFBUSxTQUFDQyxlQUFlVTtZQUN0QixJQUFNQyxVQUFVLE9BQ1ZDLGNBQWMsRUFBRSxFQUNoQkMsb0JBQW9CQyxJQUFBQSxrQkFBZSxFQUFDZCxlQUFlWSxhQUFhRCxTQUFTRDtZQUUvRSxPQUFPRztRQUNUO0lBQ0Y7SUFDQTtRQUNFbEIsV0FBV0Q7UUFDWEssUUFBUSxTQUFDZ0IsVUFBVUw7WUFDakIsSUFBTU0sUUFBUSxFQUFFLEVBQ1ZDLGVBQWVDLElBQUFBLGFBQVUsRUFBQ0gsVUFBVUMsT0FBT04sY0FBYztnQkFDdkQsSUFBTVMsZ0JBQWdCO2dCQUV0QixPQUFPQTtZQUNUO1lBRU4sT0FBT0Y7UUFDVDtJQUNGO0lBQ0E7UUFDRXRCLFdBQVdDO1FBQ1hHLFFBQVEsU0FBQ3FCLFVBQVVWO1lBQ2pCLElBQU1XLGVBQWVDLElBQUFBLGFBQVUsRUFBQ0YsVUFBVVY7WUFFMUMsT0FBT1c7UUFDVDtJQUNGO0NBQ0Q7QUFHSCxJQUFNRSxnQ0FBZ0MsSUFBSXpCO0lBRTFDLFdBQWV5QiJ9
@@ -13,6 +13,7 @@ var _term = /*#__PURE__*/ _interop_require_default(require("../../verify/term"))
13
13
  var _variable1 = /*#__PURE__*/ _interop_require_default(require("../../assignment/variable"));
14
14
  var _array = require("../../utilities/array");
15
15
  var _query = require("../../utilities/query");
16
+ var _local = /*#__PURE__*/ _interop_require_default(require("../../context/local"));
16
17
  function _interop_require_default(obj) {
17
18
  return obj && obj.__esModule ? obj : {
18
19
  default: obj
@@ -43,23 +44,25 @@ function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, loc
43
44
  if (derived) {
44
45
  var typeAssertionString = localContext.nodeAsString(typeAssertionNode);
45
46
  localContext.trace("Verifying the '".concat(typeAssertionString, "' derived type assertion..."), typeAssertionNode);
47
+ var typeNode = typeNodeQuery(typeAssertionNode), type = localContext.findTypeByTypeNode(typeNode);
48
+ if (type === null) {
49
+ var typeString = localContext.nodeAsString(typeNode);
50
+ localContext.debug("The '".concat(typeString, "' type is not present."), typeNode);
51
+ }
46
52
  var terms = [], termNode = termNodeQuery(typeAssertionNode), termVerified = (0, _term.default)(termNode, terms, localContext, function() {
47
53
  var verifiedAhead = false;
48
- var typeNode = typeNodeQuery(typeAssertionNode), type = localContext.findTypeByTypeNode(typeNode);
49
- if (type !== null) {
50
- var firstTerm = (0, _array.first)(terms), term = firstTerm, termType = localContext.getTermType(term), typeEqualToOrSuperTypeOfTermType = type.isEqualToOrSuperTypeOf(termType);
51
- if (typeEqualToOrSuperTypeOfTermType) {
52
- var variableNode = variableNodeQuery(termNode);
53
- if (variableNode === null) {
54
- verifiedAhead = true;
55
- } else {
56
- var variable = localContext.findVariableByVariableNode(variableNode);
57
- variable = _variable.default.fromVariableAndType(variable, type);
58
- var variableAssignment = _variable1.default.fromVariable(variable), assignment = variableAssignment; ///
59
- assignments.push(assignment);
60
- verifiedAhead = true;
61
- assignments.pop();
62
- }
54
+ var firstTerm = (0, _array.first)(terms), term = firstTerm, termType = localContext.getTermType(term), typeEqualToOrSuperTypeOfTermType = type.isEqualToOrSuperTypeOf(termType);
55
+ if (typeEqualToOrSuperTypeOfTermType) {
56
+ var variableNode = variableNodeQuery(termNode);
57
+ if (variableNode === null) {
58
+ verifiedAhead = true;
59
+ } else {
60
+ var variable;
61
+ variable = localContext.findVariableByVariableNode(variableNode);
62
+ variable = _variable.default.fromVariableAndType(variable, type); ///
63
+ var variableAssignment = _variable1.default.fromVariable(variable), assignment = variableAssignment; ///
64
+ assignments.push(assignment);
65
+ verifiedAhead = true;
63
66
  }
64
67
  }
65
68
  return verifiedAhead;
@@ -76,23 +79,25 @@ function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, loca
76
79
  if (!derived) {
77
80
  var typeAssertionString = localContext.nodeAsString(typeAssertionNode);
78
81
  localContext.trace("Verifying the '".concat(typeAssertionString, "' stated type assertion..."), typeAssertionNode);
82
+ var typeNode = typeNodeQuery(typeAssertionNode), type = localContext.findTypeByTypeNode(typeNode);
83
+ if (type === null) {
84
+ var typeString = localContext.nodeAsString(typeNode);
85
+ localContext.debug("The '".concat(typeString, "' type is not present."), typeNode);
86
+ }
79
87
  var terms = [], termNode = termNodeQuery(typeAssertionNode), termVerified = (0, _term.default)(termNode, terms, localContext, function() {
80
88
  var verifiedAhead = false;
81
- var typeNode = typeNodeQuery(typeAssertionNode), type = localContext.findTypeByTypeNode(typeNode);
82
- if (type !== null) {
83
- var firstTerm = (0, _array.first)(terms), term = firstTerm, termType = term.getType(), typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
84
- if (typeEqualToOrSubTypeOfTermType) {
85
- var variableNode = variableNodeQuery(termNode);
86
- if (variableNode === null) {
87
- verifiedAhead = true;
88
- } else {
89
- var variable = localContext.findVariableByVariableNode(variableNode);
90
- variable = _variable.default.fromVariableAndType(variable, type);
91
- var variableAssignment = _variable1.default.fromVariable(variable), assignment = variableAssignment; ///
92
- assignments.push(assignment);
93
- verifiedAhead = true;
94
- assignments.pop();
95
- }
89
+ var firstTerm = (0, _array.first)(terms), term = firstTerm, termType = term.getType(), typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
90
+ if (typeEqualToOrSubTypeOfTermType) {
91
+ var variableNode = variableNodeQuery(termNode);
92
+ if (variableNode === null) {
93
+ verifiedAhead = true;
94
+ } else {
95
+ var variable;
96
+ variable = localContext.findVariableByVariableNode(variableNode);
97
+ variable = _variable.default.fromVariableAndType(variable, type); ///
98
+ var variableAssignment = _variable1.default.fromVariable(variable), assignment = variableAssignment; ///
99
+ assignments.push(assignment);
100
+ verifiedAhead = true;
96
101
  }
97
102
  }
98
103
  return verifiedAhead;
@@ -105,4 +110,4 @@ function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, loca
105
110
  return statedTypeAssertionVerified;
106
111
  }
107
112
 
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi8uLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IFZhcmlhYmxlQXNzaWdubWVudCBmcm9tIFwiLi4vLi4vYXNzaWdubWVudC92YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm0hXCIpLFxuICAgICAgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3R5cGUhXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHR5cGVBc3NlcnRpb25WZXJpZmllZDtcblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICBjb25zdCB2ZXJpZnlUeXBlQXNzZXJ0aW9uRnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeURlcml2ZWRUeXBlQXNzZXJ0aW9uLFxuICAgIHZlcmlmeVN0YXRlZFR5cGVBc3NlcnRpb25cbiAgXTtcblxuICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uRnVuY3Rpb25zLnNvbWUoKHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBpZiAodHlwZUFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0eXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5RGVyaXZlZFR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IGRlcml2ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBpZiAoZGVyaXZlZCkge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi4uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgdmVyaWZpZWRBaGVhZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgICAgICAgICAgdHlwZSA9IGxvY2FsQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5vZGUodHlwZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBjb25zdCBmaXJzdFRlcm0gPSBmaXJzdCh0ZXJtcyksXG4gICAgICAgICAgICAgICAgICAgIHRlcm0gPSBmaXJzdFRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgICB0ZXJtVHlwZSA9IGxvY2FsQ29udGV4dC5nZXRUZXJtVHlwZSh0ZXJtKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mVGVybVR5cGUgPSB0eXBlLmlzRXF1YWxUb09yU3VwZXJUeXBlT2YodGVybVR5cGUpO1xuXG4gICAgICAgICAgICAgIGlmICh0eXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZUZXJtVHlwZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZU5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdmFyaWFibGUgPSBsb2NhbENvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVmFyaWFibGVBbmRUeXBlKHZhcmlhYmxlLCB0eXBlKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50ID0gVmFyaWFibGVBc3NpZ25tZW50LmZyb21WYXJpYWJsZSh2YXJpYWJsZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50ID0gdmFyaWFibGVBc3NpZ25tZW50OyAgLy8vXG5cbiAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICAgICAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICBhc3NpZ25tZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBkZXJpdmVkVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdGVybVZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChkZXJpdmVkVHlwZUFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcml2ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlZFR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHN0YXRlZFR5cGVBc3NlcnRpb25WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmICghZGVyaXZlZCkge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIHR5cGUgYXNzZXJ0aW9uLi4uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgICAgICAgICB0eXBlID0gbG9jYWxDb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgICAgICAgdGVybSA9IGZpcnN0VGVybSwgLy8vXG4gICAgICAgICAgICAgICAgICAgIHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgICAgICAgIHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSA9IHR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodGVybVR5cGUpO1xuXG4gICAgICAgICAgICAgIGlmICh0eXBlRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodmFyaWFibGVOb2RlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbGV0IHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbVZhcmlhYmxlQW5kVHlwZSh2YXJpYWJsZSwgdHlwZSk7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlQXNzaWdubWVudCA9IFZhcmlhYmxlQXNzaWdubWVudC5mcm9tVmFyaWFibGUodmFyaWFibGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudCA9IHZhcmlhYmxlQXNzaWdubWVudDsgIC8vL1xuXG4gICAgICAgICAgICAgICAgICBhc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuXG4gICAgICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgYXNzaWdubWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICAgIH0pO1xuXG4gICAgc3RhdGVkVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdGVybVZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChzdGF0ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgdHlwZSBhc3NlcnRpb24uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VHlwZUFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInR5cGVBc3NlcnRpb25TdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbnMiLCJ2ZXJpZnlEZXJpdmVkVHlwZUFzc2VydGlvbiIsInZlcmlmeVN0YXRlZFR5cGVBc3NlcnRpb24iLCJzb21lIiwidmVyaWZ5VHlwZUFzc2VydGlvbkZ1bmN0aW9uIiwiZGVidWciLCJkZXJpdmVkVHlwZUFzc2VydGlvblZlcmlmaWVkIiwidGVybXMiLCJ0ZXJtTm9kZSIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm0iLCJ2ZXJpZmllZEFoZWFkIiwidHlwZU5vZGUiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOb2RlIiwiZmlyc3RUZXJtIiwiZmlyc3QiLCJ0ZXJtIiwidGVybVR5cGUiLCJnZXRUZXJtVHlwZSIsInR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlRlcm1UeXBlIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUiLCJWYXJpYWJsZSIsImZyb21WYXJpYWJsZUFuZFR5cGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnQiLCJWYXJpYWJsZUFzc2lnbm1lbnQiLCJmcm9tVmFyaWFibGUiLCJhc3NpZ25tZW50IiwicHVzaCIsInBvcCIsInN0YXRlZFR5cGVBc3NlcnRpb25WZXJpZmllZCIsImdldFR5cGUiLCJ0eXBlRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUF3QkE7OzsrREFYSDsyREFDRTtnRUFDUTtxQkFFVDtxQkFDSTs7Ozs7O0FBRTFCLElBQU1DLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyx5QkFDMUJDLGdCQUFnQkQsSUFBQUEsZ0JBQVMsRUFBQyx5QkFDMUJFLG9CQUFvQkYsSUFBQUEsZ0JBQVMsRUFBQztBQUVyQixTQUFTRixvQkFBb0JLLGlCQUFpQixFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUMvRixJQUFJQztJQUVKLElBQU1DLHNCQUFzQkYsYUFBYUcsWUFBWSxDQUFDTjtJQUV0REcsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQXFDLE9BQXBCRixxQkFBb0Isd0JBQXNCTDtJQUUvRSxJQUFNUSwrQkFBK0I7UUFDbkNDO1FBQ0FDO0tBQ0Q7SUFFRE4sd0JBQXdCSSw2QkFBNkJHLElBQUksQ0FBQyxTQUFDQztRQUN6RCxJQUFNUix3QkFBd0JRLDRCQUE0QlosbUJBQW1CQyxhQUFhQyxTQUFTQztRQUVuRyxJQUFJQyx1QkFBdUI7WUFDekIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFJQSx1QkFBdUI7UUFDekJELGFBQWFVLEtBQUssQ0FBQyxBQUFDLG9CQUF1QyxPQUFwQlIscUJBQW9CLHNCQUFvQkw7SUFDakY7SUFFQSxPQUFPSTtBQUNUO0FBRUEsU0FBU0ssMkJBQTJCVCxpQkFBaUIsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7SUFDdkYsSUFBSVcsK0JBQStCO0lBRW5DLElBQUlaLFNBQVM7UUFDWCxJQUFNRyxzQkFBc0JGLGFBQWFHLFlBQVksQ0FBQ047UUFFdERHLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUFxQyxPQUFwQkYscUJBQW9CLGdDQUE4Qkw7UUFFdkYsSUFBTWUsUUFBUSxFQUFFLEVBQ1ZDLFdBQVdwQixjQUFjSSxvQkFDekJpQixlQUFlQyxJQUFBQSxhQUFVLEVBQUNGLFVBQVVELE9BQU9aLGNBQWM7WUFDdkQsSUFBSWdCLGdCQUFnQjtZQUVwQixJQUFNQyxXQUFXdEIsY0FBY0Usb0JBQ3pCcUIsT0FBT2xCLGFBQWFtQixrQkFBa0IsQ0FBQ0Y7WUFFN0MsSUFBSUMsU0FBUyxNQUFNO2dCQUNqQixJQUFNRSxZQUFZQyxJQUFBQSxZQUFLLEVBQUNULFFBQ2xCVSxPQUFPRixXQUNQRyxXQUFXdkIsYUFBYXdCLFdBQVcsQ0FBQ0YsT0FDcENHLG1DQUFtQ1AsS0FBS1Esc0JBQXNCLENBQUNIO2dCQUVyRSxJQUFJRSxrQ0FBa0M7b0JBQ3BDLElBQU1FLGVBQWUvQixrQkFBa0JpQjtvQkFFdkMsSUFBSWMsaUJBQWlCLE1BQU07d0JBQ3pCWCxnQkFBZ0I7b0JBQ2xCLE9BQU87d0JBQ0wsSUFBSVksV0FBVzVCLGFBQWE2QiwwQkFBMEIsQ0FBQ0Y7d0JBRXZEQyxXQUFXRSxpQkFBUSxDQUFDQyxtQkFBbUIsQ0FBQ0gsVUFBVVY7d0JBRWxELElBQU1jLHFCQUFxQkMsa0JBQWtCLENBQUNDLFlBQVksQ0FBQ04sV0FDckRPLGFBQWFILG9CQUFxQixHQUFHO3dCQUUzQ2xDLFlBQVlzQyxJQUFJLENBQUNEO3dCQUVqQm5CLGdCQUFnQjt3QkFFaEJsQixZQUFZdUMsR0FBRztvQkFDakI7Z0JBQ0Y7WUFDRjtZQUVBLE9BQU9yQjtRQUNUO1FBRU5MLCtCQUErQkcsY0FBYyxHQUFHO1FBRWhELElBQUlILDhCQUE4QjtZQUNoQ1gsYUFBYVUsS0FBSyxDQUFDLEFBQUMsb0JBQXVDLE9BQXBCUixxQkFBb0IsOEJBQTRCTDtRQUN6RjtJQUNGO0lBRUEsT0FBT2M7QUFDVDtBQUVBLFNBQVNKLDBCQUEwQlYsaUJBQWlCLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQ3RGLElBQUlzQyw4QkFBOEI7SUFFbEMsSUFBSSxDQUFDdkMsU0FBUztRQUNaLElBQU1HLHNCQUFzQkYsYUFBYUcsWUFBWSxDQUFDTjtRQUV0REcsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQXFDLE9BQXBCRixxQkFBb0IsK0JBQTZCTDtRQUV0RixJQUFNZSxRQUFRLEVBQUUsRUFDVkMsV0FBV3BCLGNBQWNJLG9CQUN6QmlCLGVBQWVDLElBQUFBLGFBQVUsRUFBQ0YsVUFBVUQsT0FBT1osY0FBYztZQUN2RCxJQUFJZ0IsZ0JBQWdCO1lBRXBCLElBQU1DLFdBQVd0QixjQUFjRSxvQkFDekJxQixPQUFPbEIsYUFBYW1CLGtCQUFrQixDQUFDRjtZQUU3QyxJQUFJQyxTQUFTLE1BQU07Z0JBQ2pCLElBQU1FLFlBQVlDLElBQUFBLFlBQUssRUFBQ1QsUUFDbEJVLE9BQU9GLFdBQ1BHLFdBQVdELEtBQUtpQixPQUFPLElBQ3ZCQyxpQ0FBaUN0QixLQUFLdUIsb0JBQW9CLENBQUNsQjtnQkFFakUsSUFBSWlCLGdDQUFnQztvQkFDbEMsSUFBTWIsZUFBZS9CLGtCQUFrQmlCO29CQUV2QyxJQUFJYyxpQkFBaUIsTUFBTTt3QkFDekJYLGdCQUFnQjtvQkFDbEIsT0FBTzt3QkFDTCxJQUFJWSxXQUFXNUIsYUFBYTZCLDBCQUEwQixDQUFDRjt3QkFFdkRDLFdBQVdFLGlCQUFRLENBQUNDLG1CQUFtQixDQUFDSCxVQUFVVjt3QkFFbEQsSUFBTWMscUJBQXFCQyxrQkFBa0IsQ0FBQ0MsWUFBWSxDQUFDTixXQUNyRE8sYUFBYUgsb0JBQXFCLEdBQUc7d0JBRTNDbEMsWUFBWXNDLElBQUksQ0FBQ0Q7d0JBRWpCbkIsZ0JBQWdCO3dCQUVoQmxCLFlBQVl1QyxHQUFHO29CQUNqQjtnQkFDRjtZQUNGO1lBRUEsT0FBT3JCO1FBQ1Q7UUFFTnNCLDhCQUE4QnhCLGNBQWMsR0FBRztRQUUvQyxJQUFJd0IsNkJBQTZCO1lBQy9CdEMsYUFBYVUsS0FBSyxDQUFDLEFBQUMsb0JBQXVDLE9BQXBCUixxQkFBb0IsNkJBQTJCTDtRQUN4RjtJQUNGO0lBRUEsT0FBT3lDO0FBQ1QifQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi8uLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IFZhcmlhYmxlQXNzaWdubWVudCBmcm9tIFwiLi4vLi4vYXNzaWdubWVudC92YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCBsb2NhbCBmcm9tIFwiLi4vLi4vY29udGV4dC9sb2NhbFwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdGVybSFcIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZSFcIiksXG4gICAgICB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdHlwZUFzc2VydGlvblZlcmlmaWVkO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLi4uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIGNvbnN0IHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbnMgPSBbXG4gICAgdmVyaWZ5RGVyaXZlZFR5cGVBc3NlcnRpb24sXG4gICAgdmVyaWZ5U3RhdGVkVHlwZUFzc2VydGlvblxuICBdO1xuXG4gIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbnMuc29tZSgodmVyaWZ5VHlwZUFzc2VydGlvbkZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VHlwZUFzc2VydGlvbkZ1bmN0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmICh0eXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgZGVyaXZlZFR5cGVBc3NlcnRpb25WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmIChkZXJpdmVkKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICB0eXBlID0gbG9jYWxDb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodHlwZU5vZGUpO1xuXG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0eXBlTm9kZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgICAgIHRlcm0gPSBmaXJzdFRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybVR5cGUgPSBsb2NhbENvbnRleHQuZ2V0VGVybVR5cGUodGVybSksXG4gICAgICAgICAgICAgICAgICB0eXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZUZXJtVHlwZSA9IHR5cGUuaXNFcXVhbFRvT3JTdXBlclR5cGVPZih0ZXJtVHlwZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZUZXJtVHlwZSkge1xuICAgICAgICAgICAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCB2YXJpYWJsZTtcblxuICAgICAgICAgICAgICAgIHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21WYXJpYWJsZUFuZFR5cGUodmFyaWFibGUsIHR5cGUpOyAgLy8vXG5cbiAgICAgICAgICAgICAgICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnQgPSBWYXJpYWJsZUFzc2lnbm1lbnQuZnJvbVZhcmlhYmxlKHZhcmlhYmxlKSxcbiAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50ID0gdmFyaWFibGVBc3NpZ25tZW50OyAgLy8vXG5cbiAgICAgICAgICAgICAgICBhc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuXG4gICAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBkZXJpdmVkVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdGVybVZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChkZXJpdmVkVHlwZUFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcml2ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlZFR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHN0YXRlZFR5cGVBc3NlcnRpb25WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmICghZGVyaXZlZCkge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIHR5cGUgYXNzZXJ0aW9uLi4uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICB0eXBlID0gbG9jYWxDb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodHlwZU5vZGUpO1xuXG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0eXBlTm9kZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgICAgIHRlcm0gPSBmaXJzdFRlcm0sIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgICAgIHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSA9IHR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodGVybVR5cGUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZUVxdWFsVG9PclN1YlR5cGVPZlRlcm1UeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICAgICAgICAgICAgICBpZiAodmFyaWFibGVOb2RlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhcmlhYmxlO1xuXG4gICAgICAgICAgICAgICAgdmFyaWFibGUgPSBsb2NhbENvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbVZhcmlhYmxlQW5kVHlwZSh2YXJpYWJsZSwgdHlwZSk7ICAvLy9cblxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlQXNzaWdubWVudCA9IFZhcmlhYmxlQXNzaWdubWVudC5mcm9tVmFyaWFibGUodmFyaWFibGUpLFxuICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnQ7ICAvLy9cblxuICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICB9KTtcblxuICAgIHN0YXRlZFR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRlcm1WZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVkVHlwZUFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIHR5cGUgYXNzZXJ0aW9uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVkVHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVR5cGVBc3NlcnRpb24iLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInZhcmlhYmxlTm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJ0eXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uRnVuY3Rpb25zIiwidmVyaWZ5RGVyaXZlZFR5cGVBc3NlcnRpb24iLCJ2ZXJpZnlTdGF0ZWRUeXBlQXNzZXJ0aW9uIiwic29tZSIsInZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbiIsImRlYnVnIiwiZGVyaXZlZFR5cGVBc3NlcnRpb25WZXJpZmllZCIsInR5cGVOb2RlIiwidHlwZSIsImZpbmRUeXBlQnlUeXBlTm9kZSIsInR5cGVTdHJpbmciLCJ0ZXJtcyIsInRlcm1Ob2RlIiwidGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsInZlcmlmaWVkQWhlYWQiLCJmaXJzdFRlcm0iLCJmaXJzdCIsInRlcm0iLCJ0ZXJtVHlwZSIsImdldFRlcm1UeXBlIiwidHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mVGVybVR5cGUiLCJpc0VxdWFsVG9PclN1cGVyVHlwZU9mIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsIlZhcmlhYmxlIiwiZnJvbVZhcmlhYmxlQW5kVHlwZSIsInZhcmlhYmxlQXNzaWdubWVudCIsIlZhcmlhYmxlQXNzaWdubWVudCIsImZyb21WYXJpYWJsZSIsImFzc2lnbm1lbnQiLCJwdXNoIiwic3RhdGVkVHlwZUFzc2VydGlvblZlcmlmaWVkIiwiZ2V0VHlwZSIsInR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQXdCQTs7OytEQVpIOzJEQUNFO2dFQUNRO3FCQUVUO3FCQUNJOzREQUNSOzs7Ozs7QUFFbEIsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLHlCQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLHlCQUMxQkUsb0JBQW9CRixJQUFBQSxnQkFBUyxFQUFDO0FBRXJCLFNBQVNGLG9CQUFvQkssaUJBQWlCLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQy9GLElBQUlDO0lBRUosSUFBTUMsc0JBQXNCRixhQUFhRyxZQUFZLENBQUNOO0lBRXRERyxhQUFhSSxLQUFLLENBQUMsQUFBQyxrQkFBcUMsT0FBcEJGLHFCQUFvQix3QkFBc0JMO0lBRS9FLElBQU1RLCtCQUErQjtRQUNuQ0M7UUFDQUM7S0FDRDtJQUVETix3QkFBd0JJLDZCQUE2QkcsSUFBSSxDQUFDLFNBQUNDO1FBQ3pELElBQU1SLHdCQUF3QlEsNEJBQTRCWixtQkFBbUJDLGFBQWFDLFNBQVNDO1FBRW5HLElBQUlDLHVCQUF1QjtZQUN6QixPQUFPO1FBQ1Q7SUFDRjtJQUVBLElBQUlBLHVCQUF1QjtRQUN6QkQsYUFBYVUsS0FBSyxDQUFDLEFBQUMsb0JBQXVDLE9BQXBCUixxQkFBb0Isc0JBQW9CTDtJQUNqRjtJQUVBLE9BQU9JO0FBQ1Q7QUFFQSxTQUFTSywyQkFBMkJULGlCQUFpQixFQUFF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
@@ -12,7 +12,6 @@ var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
12
12
  var _term = /*#__PURE__*/ _interop_require_default(require("../term"));
13
13
  var _bracketed = /*#__PURE__*/ _interop_require_default(require("../constructor/bracketed"));
14
14
  var _termAgainstConstructor = /*#__PURE__*/ _interop_require_default(require("../unifier/termAgainstConstructor"));
15
- var _array = require("../utilities/array");
16
15
  var _query = require("../utilities/query");
17
16
  function _interop_require_default(obj) {
18
17
  return obj && obj.__esModule ? obj : {
@@ -81,55 +80,38 @@ function unifyTermAgainstConstructors(termNode, terms, localContext, verifyAhead
81
80
  }
82
81
  function unifyTermAgainstBracketedConstructor(termNode, terms, localContext, verifyAhead) {
83
82
  var termUnifiedAgainstBracketedConstructor;
84
- var termString = localContext.nodeAsString(termNode), bracketedConstructorString = _bracketed.default.getString();
85
- localContext.trace("Unifying the '".concat(termString, "' term against the '").concat(bracketedConstructorString, "' bracketed constructor..."), termNode);
86
- var bracketedConstructorTermNode = _bracketed.default.getTermNode(), termNodeA = termNode, constructorTermNodeB = bracketedConstructorTermNode, unified = _termAgainstConstructor.default.unify(termNodeA, constructorTermNodeB, localContext, function() {
83
+ var termString = localContext.nodeAsString(termNode), bracketedTerms = [];
84
+ localContext.trace("Unifying the '".concat(termString, "' term against the bracketed constructor..."), termNode);
85
+ termUnifiedAgainstBracketedConstructor = unifyTermAgainstConstructor(termNode, bracketedTerms, _bracketed.default, localContext, function() {
87
86
  var verifiedAhead;
88
87
  var bracketedTermNode = termNode; ///
89
- termNode = termNodeQuery(termNode); ///
90
- if (termNode === null) {
91
- verifiedAhead = false;
92
- } else {
93
- var type;
94
- verifyTerm(termNode, terms, localContext, function() {
95
- var verifiedAhead;
96
- var firstTerm = (0, _array.first)(terms), term = firstTerm; ///
97
- type = term.getType();
98
- verifiedAhead = true;
99
- return verifiedAhead;
100
- });
101
- terms.pop();
102
- termNode = bracketedTermNode; ///
103
- var term = _term.default.fromTermNodeAndType(termNode, type);
104
- terms.push(term);
105
- verifiedAhead = verifyAhead();
106
- terms.pop();
107
- }
88
+ termNode = termNodeQuery(bracketedTermNode); ///
89
+ var termVVerified = verifyTerm(termNode, terms, localContext, verifyAhead);
90
+ verifiedAhead = termVVerified; ///
108
91
  return verifiedAhead;
109
92
  });
110
- termUnifiedAgainstBracketedConstructor = unified; ///
111
93
  if (termUnifiedAgainstBracketedConstructor) {
112
- localContext.debug("...unified the '".concat(termString, "' term against the '").concat(bracketedConstructorString, "' constructor."), termNode);
94
+ localContext.debug("...unified the '".concat(termString, "' term against the bracketed constructor."), termNode);
113
95
  }
114
96
  return termUnifiedAgainstBracketedConstructor;
115
97
  }
116
98
  function unifyTermAgainstConstructor(termNode, terms, constructor, localContext, verifyAhead) {
117
- var termUnifiedAgainstConstructor;
118
- var termString = localContext.nodeAsString(termNode), constructorString = constructor.getString();
99
+ var termUnifiedAgainstConstructor = false;
100
+ var termString = localContext.nodeAsString(termNode), constructorString = constructor.getString(), constructorTermNode = constructor.getTermNode();
119
101
  localContext.trace("Unifying the '".concat(termString, "' term against the '").concat(constructorString, "' constructor..."), termNode);
120
- var constructorTermNode = constructor.getTermNode(), termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified = _termAgainstConstructor.default.unify(termNodeA, constructorTermNodeB, localContext, function() {
102
+ var termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified = _termAgainstConstructor.default.unify(termNodeA, constructorTermNodeB, localContext);
103
+ if (unified) {
121
104
  var verifiedAhead;
122
105
  var type = constructor.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
123
106
  terms.push(term);
124
107
  verifiedAhead = verifyAhead();
125
108
  terms.pop();
126
- return verifiedAhead;
127
- });
128
- termUnifiedAgainstConstructor = unified; ///
109
+ termUnifiedAgainstConstructor = verifiedAhead; ///
110
+ }
129
111
  if (termUnifiedAgainstConstructor) {
130
112
  localContext.debug("...unified the '".concat(termString, "' term against the '").concat(constructorString, "' constructor."), termNode);
131
113
  }
132
114
  return termUnifiedAgainstConstructor;
133
115
  }
134
116
 
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1BZ2FpbnN0Q29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1BZ2FpbnN0Q29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS9hcmd1bWVudC90ZXJtXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWQ7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmAsIHRlcm1Ob2RlKTtcblxuICBjb25zdCB2ZXJpZnlUZXJtRnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlLFxuICAgIHVuaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMsXG4gICAgdW5pZnlUZXJtQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yXG4gIF07XG5cbiAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlUZXJtRnVuY3Rpb24pID0+IHtcbiAgICBjb25zdCB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtRnVuY3Rpb24odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWQ7XG59XG5cbk9iamVjdC5hc3NpZ24oc2hpbSwge1xuICB2ZXJpZnlUZXJtXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdmVyaWZ5VGVybTtcblxuZnVuY3Rpb24gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS4uLmAsIHRlcm1Ob2RlKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGxldCB2ZXJpZmllZEFoZWFkO1xuXG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlQW5kVHlwZSh0ZXJtTm9kZSwgdHlwZSk7XG5cbiAgICAgIHRlcm1zLnB1c2godGVybSk7XG5cbiAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICB0ZXJtcy5wb3AoKTtcblxuICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3JTdHJpbmcgPSBicmFja2V0ZWRDb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSAnJHticmFja2V0ZWRDb25zdHJ1Y3RvclN0cmluZ30nIGJyYWNrZXRlZCBjb25zdHJ1Y3Rvci4uLmAsIHRlcm1Ob2RlKTtcblxuICBjb25zdCBicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlID0gYnJhY2tldGVkQ29uc3RydWN0b3IuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdGVybU5vZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZUIgPSBicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSB0ZXJtQWdhaW5zdENvbnN0cnVjdG9yVW5pZmllci51bmlmeSh0ZXJtTm9kZUEsIGNvbnN0cnVjdG9yVGVybU5vZGVCLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgICAgIGNvbnN0IGJyYWNrZXRlZFRlcm1Ob2RlID0gdGVybU5vZGU7IC8vL1xuXG4gICAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHRlcm1Ob2RlKTsgLy8vXG5cbiAgICAgICAgICBpZiAodGVybU5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHR5cGU7XG5cbiAgICAgICAgICAgIHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICAgICAgICAgICAgY29uc3QgZmlyc3RUZXJtID0gZmlyc3QodGVybXMpLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtID0gZmlyc3RUZXJtOyAvLy9cblxuICAgICAgICAgICAgICB0eXBlID0gdGVybS5nZXRUeXBlKCk7XG5cbiAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgICAgICAgIHRlcm1Ob2RlID0gYnJhY2tldGVkVGVybU5vZGU7IC8vL1xuXG4gICAgICAgICAgICBjb25zdCB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGVBbmRUeXBlKHRlcm1Ob2RlLCB0eXBlKTtcblxuICAgICAgICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICAgIHRlcm1zLnBvcCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICB9KTtcblxuICB0ZXJtVW5pZmllZEFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvciA9IHVuaWZpZWQ7ICAvLy9cblxuICBpZiAodGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlICcke2JyYWNrZXRlZENvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpLFxuICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IGNvbnN0cnVjdG9yLmdldFN0cmluZygpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm1Ob2RlQSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGVCID0gY29uc3RydWN0b3JUZXJtTm9kZSwgIC8vL1xuICAgICAgICB1bmlmaWVkID0gdGVybUFnYWluc3RDb25zdHJ1Y3RvclVuaWZpZXIudW5pZnkodGVybU5vZGVBLCBjb25zdHJ1Y3RvclRlcm1Ob2RlQiwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICAgICAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgfSk7XG5cbiAgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB1bmlmaWVkOyAgLy8vXG5cbiAgaWYgKHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcjtcbn1cblxuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsInZlcmlmeVRlcm0iLCJ0ZXJtTm9kZSIsInRlcm1zIiwibG9jYWxDb250ZXh0IiwidmVyaWZ5QWhlYWQiLCJ0ZXJtVmVyaWZpZWQiLCJ0ZXJtU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUZXJtRnVuY3Rpb25zIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzIiwidW5pZnlUZXJtQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yIiwic29tZSIsInZlcmlmeVRlcm1GdW5jdGlvbiIsImRlYnVnIiwiT2JqZWN0IiwiYXNzaWduIiwic2hpbSIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlIiwidmVyaWZpZWRBaGVhZCIsInR5cGUiLCJnZXRUeXBlIiwidGVybSIsIlRlcm0iLCJmcm9tVGVybU5vZGVBbmRUeXBlIiwicHVzaCIsInBvcCIsInRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IiLCJ1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllZEFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvciIsImJyYWNrZXRlZENvbnN0cnVjdG9yU3RyaW5nIiwiYnJhY2tldGVkQ29uc3RydWN0b3IiLCJnZXRTdHJpbmciLCJicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlQiIsInVuaWZpZWQiLCJ0ZXJtQWdhaW5zdENvbnN0cnVjdG9yVW5pZmllciIsInVuaWZ5IiwiYnJhY2tldGVkVGVybU5vZGUiLCJmaXJzdFRlcm0iLCJmaXJzdCIsImNvbnN0cnVjdG9yU3RyaW5nIiwiY29uc3RydWN0b3JUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBNkNBOzs7ZUFBQTs7OzJEQTNDaUI7MkRBQ0E7Z0VBQ2dCOzZFQUNTO3FCQUVwQjtxQkFDSTs7Ozs7O0FBRTFCLElBQU1BLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyx3QkFDMUJDLG9CQUFvQkQsSUFBQUEsZ0JBQVMsRUFBQztBQUVwQyxTQUFTRSxXQUFXQyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQzVELElBQUlDO0lBRUosSUFBTUMsYUFBYUgsYUFBYUksWUFBWSxDQUFDTjtJQUU3Q0UsYUFBYUssS0FBSyxDQUFDLEFBQUMsa0JBQTRCLE9BQVhGLFlBQVcsY0FBWUw7SUFFNUQsSUFBTVEsc0JBQXNCO1FBQzFCQztRQUNBQztRQUNBQztLQUNEO0lBRURQLGVBQWVJLG9CQUFvQkksSUFBSSxDQUFDLFNBQUNDO1FBQ3ZDLElBQU1ULGVBQWVTLG1CQUFtQmIsVUFBVUMsT0FBT0MsY0FBY0M7UUFFdkUsSUFBSUMsY0FBYztZQUNoQixPQUFPO1FBQ1Q7SUFDRjtJQUVBLElBQUlBLGNBQWM7UUFDaEJGLGFBQWFZLEtBQUssQ0FBQyxBQUFDLG9CQUE4QixPQUFYVCxZQUFXLFlBQVVMO0lBQzlEO0lBRUEsT0FBT0k7QUFDVDtBQUVBVyxPQUFPQyxNQUFNLENBQUNDLGFBQUksRUFBRTtJQUNsQmxCLFlBQUFBO0FBQ0Y7SUFFQSxXQUFlQTtBQUVmLFNBQVNVLHFCQUFxQlQsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLFlBQVksRUFBRUMsV0FBVztJQUN0RSxJQUFJZSx5QkFBeUI7SUFFN0IsSUFBTUMsZUFBZXJCLGtCQUFrQkU7SUFFdkMsSUFBSW1CLGlCQUFpQixNQUFNO1FBQ3pCLElBQU1kLGFBQWFILGFBQWFJLFlBQVksQ0FBQ047UUFFN0NFLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRixZQUFXLDRCQUEwQkw7UUFFMUUsSUFBTW9CLFdBQVdsQixhQUFhbUIsMEJBQTBCLENBQUNGO1FBRXpELElBQUlDLGFBQWEsTUFBTTtZQUNyQixJQUFJRTtZQUVKLElBQU1DLE9BQU9ILFNBQVNJLE9BQU8sSUFDdkJDLE9BQU9DLGFBQUksQ0FBQ0MsbUJBQW1CLENBQUMzQixVQUFVdUI7WUFFaER0QixNQUFNMkIsSUFBSSxDQUFDSDtZQUVYSCxnQkFBZ0JuQjtZQUVoQkYsTUFBTTRCLEdBQUc7WUFFVFgseUJBQXlCSSxlQUFnQixHQUFHO1FBQzlDO1FBRUEsSUFBSUosd0JBQXdCO1lBQzFCaEIsYUFBYVksS0FBSyxDQUFDLEFBQUMsb0JBQThCLE9BQVhULFlBQVcsMEJBQXdCTDtRQUM1RTtJQUNGO0lBRUEsT0FBT2tCO0FBQ1Q7QUFFQSxTQUFTUiw2QkFBNkJWLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxZQUFZLEVBQUVDLFdBQVc7SUFDOUUsSUFBSTJCLGlDQUFpQztJQUVyQyxJQUFNWCxlQUFlckIsa0JBQWtCRTtJQUV2QyxJQUFJbUIsaUJBQWlCLE1BQU07UUFDekIsSUFBTVksZUFBZTdCLGFBQWE4QixlQUFlO1FBRWpERixpQ0FBaUNDLGFBQWFuQixJQUFJLENBQUMsU0FBQ3FCO1lBQ2xELElBQU1DLGdDQUFnQ0MsNEJBQTRCbkMsVUFBVUMsT0FBT2dDLGFBQWEvQixjQUFjQztZQUU5RyxJQUFJK0IsK0JBQStCO2dCQUNqQyxPQUFPO1lBQ1Q7UUFDRjtJQUNGO0lBRUEsT0FBT0o7QUFDVDtBQUVBLFNBQVNuQixxQ0FBcUNYLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxZQUFZLEVBQUVDLFdBQVc7SUFDdEYsSUFBSWlDO0lBRUosSUFBTS9CLGFBQWFILGFBQWFJLFlBQVksQ0FBQ04sV0FDdkNxQyw2QkFBNkJDLGtCQUFvQixDQUFDQyxTQUFTO0lBRWpFckMsYUFBYUssS0FBSyxDQUFDLEFBQUMsaUJBQWlEOEIsT0FBakNoQyxZQUFXLHdCQUFpRCxPQUEzQmdDLDRCQUEyQiwrQkFBNkJyQztJQUU3SCxJQUFNd0MsK0JBQStCRixrQkFBb0IsQ0FBQ0csV0FBVyxJQUMvREMsWUFBWTFDLFVBQ1oyQyx1QkFBdUJILDhCQUN2QkksVUFBVUMsK0JBQTZCLENBQUNDLEtBQUssQ0FBQ0osV0FBV0Msc0JBQXNCekMsY0FBYztRQUMzRixJQUFJb0I7UUFFSixJQUFNeUIsb0JBQW9CL0MsVUFBVSxHQUFHO1FBRXZDQSxXQUFXSixjQUFjSSxXQUFXLEdBQUc7UUFFdkMsSUFBSUEsYUFBYSxNQUFNO1lBQ3JCc0IsZ0JBQWdCO1FBQ2xCLE9BQU87WUFDTCxJQUFJQztZQUVKeEIsV0FBV0MsVUFBVUMsT0FBT0MsY0FBYztnQkFDeEMsSUFBSW9CO2dCQUVKLElBQU0wQixZQUFZQyxJQUFBQSxZQUFLLEVBQUNoRCxRQUNsQndCLE9BQU91QixXQUFXLEdBQUc7Z0JBRTNCekIsT0FBT0UsS0FBS0QsT0FBTztnQkFFbkJGLGdCQUFnQjtnQkFFaEIsT0FBT0E7WUFDVDtZQUVBckIsTUFBTTRCLEdBQUc7WUFFVDdCLFdBQVcrQyxtQkFBbUIsR0FBRztZQUVqQyxJQUFNdEIsT0FBT0MsYUFBSSxDQUFDQyxtQkFBbUIsQ0FBQzNCLFVBQVV1QjtZQUVoRHRCLE1BQU0yQixJQUFJLENBQUNIO1lBRVhILGdCQUFnQm5CO1lBRWhCRixNQUFNNEIsR0FBRztRQUNYO1FBRUEsT0FBT1A7SUFDVDtJQUVOYyx5Q0FBeUNRLFNBQVUsR0FBRztJQUV0RCxJQUFJUix3Q0FBd0M7UUFDMUNsQyxhQUFhWSxLQUFLLENBQUMsQUFBQyxtQkFBbUR1QixPQUFqQ2hDLFlBQVcsd0JBQWlELE9BQTNCZ0MsNEJBQTJCLG1CQUFpQnJDO0lBQ3JIO0lBRUEsT0FBT29DO0FBQ1Q7QUFFQSxTQUFTRCw0QkFBNEJuQyxRQUFRLEVBQUVDLEtBQUssRUFBRWdDLFdBQVcsRUFBRS9CLFlBQVksRUFBRUMsV0FBVztJQUMxRixJQUFJK0I7SUFFSixJQUFNN0IsYUFBYUgsYUFBYUksWUFBWSxDQUFDTixXQUN2Q2tELG9CQUFvQmpCLFlBQVlNLFNBQVM7SUFFL0NyQyxhQUFhSyxLQUFLLENBQUMsQUFBQyxpQkFBaUQyQyxPQUFqQzdDLFlBQVcsd0JBQXdDLE9BQWxCNkMsbUJBQWtCLHFCQUFtQmxEO0lBRTFHLElBQU1tRCxzQkFBc0JsQixZQUFZUSxXQUFXLElBQzdDQyxZQUFZMUMsVUFDWjJDLHVCQUF1QlEscUJBQ3ZCUCxVQUFVQywrQkFBNkIsQ0FBQ0MsS0FBSyxDQUFDSixXQUFXQyxzQkFBc0J6QyxjQUFjO1FBQzNGLElBQUlvQjtRQUVKLElBQU1DLE9BQU9VLFlBQVlULE9BQU8sSUFDMUJDLE9BQU9DLGFBQUksQ0FBQ0MsbUJBQW1CLENBQUMzQixVQUFVdUI7UUFFaER0QixNQUFNMkIsSUFBSSxDQUFDSDtRQUVYSCxnQkFBZ0JuQjtRQUVoQkYsTUFBTTRCLEdBQUc7UUFFVCxPQUFPUDtJQUNUO0lBRU5ZLGdDQUFnQ1UsU0FBVSxHQUFHO0lBRTdDLElBQUlWLCtCQUErQjtRQUNqQ2hDLGFBQWFZLEtBQUssQ0FBQyxBQUFDLG1CQUFtRG9DLE9BQWpDN0MsWUFBVyx3QkFBd0MsT0FBbEI2QyxtQkFBa0IsbUJBQWlCbEQ7SUFDNUc7SUFFQSxPQUFPa0M7QUFDVCJ9
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1BZ2FpbnN0Q29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1BZ2FpbnN0Q29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vYXJndW1lbnQvdGVybVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5VGVybUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlUZXJtQXNWYXJpYWJsZSxcbiAgICB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzLFxuICAgIHVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvclxuICBdO1xuXG4gIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1GdW5jdGlvbnMuc29tZSgodmVyaWZ5VGVybUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9uKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgdmVyaWZ5VGVybVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHZlcmlmeVRlcm07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkVGVybXMgPSBbXTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgdGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIGJyYWNrZXRlZFRlcm1zLCBicmFja2V0ZWRDb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShicmFja2V0ZWRUZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgdGVybVZWZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB0ZXJtVlZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgfSk7XG5cblxuICBpZiAodGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlIGJyYWNrZXRlZCBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGNvbnN0cnVjdG9yLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSBjb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKSxcbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yLmdldFRlcm1Ob2RlKCk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYWdhaW5zdCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmAsIHRlcm1Ob2RlKTtcblxuICBjb25zdCB0ZXJtTm9kZUEgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICBjb25zdHJ1Y3RvclRlcm1Ob2RlQiA9IGNvbnN0cnVjdG9yVGVybU5vZGUsICAvLy9cbiAgICAgICAgdW5pZmllZCA9IHRlcm1BZ2FpbnN0Q29uc3RydWN0b3JVbmlmaWVyLnVuaWZ5KHRlcm1Ob2RlQSwgY29uc3RydWN0b3JUZXJtTm9kZUIsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKHVuaWZpZWQpIHtcbiAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgIGNvbnN0IHR5cGUgPSBjb25zdHJ1Y3Rvci5nZXRUeXBlKCksXG4gICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlQW5kVHlwZSh0ZXJtTm9kZSwgdHlwZSk7XG5cbiAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICB0ZXJtcy5wb3AoKTtcblxuICAgIHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yID0gdmVyaWZpZWRBaGVhZDsgIC8vL1xuICB9XG5cbiAgaWYgKHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcjtcbn1cblxuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsInZlcmlmeVRlcm0iLCJ0ZXJtTm9kZSIsInRlcm1zIiwibG9jYWxDb250ZXh0IiwidmVyaWZ5QWhlYWQiLCJ0ZXJtVmVyaWZpZWQiLCJ0ZXJtU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUZXJtRnVuY3Rpb25zIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzIiwidW5pZnlUZXJtQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yIiwic29tZSIsInZlcmlmeVRlcm1GdW5jdGlvbiIsImRlYnVnIiwiT2JqZWN0IiwiYXNzaWduIiwic2hpbSIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlIiwidmVyaWZpZWRBaGVhZCIsInR5cGUiLCJnZXRUeXBlIiwidGVybSIsIlRlcm0iLCJmcm9tVGVybU5vZGVBbmRUeXBlIiwicHVzaCIsInBvcCIsInRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IiLCJ1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllZEFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvciIsImJyYWNrZXRlZFRlcm1zIiwiYnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRUZXJtTm9kZSIsInRlcm1WVmVyaWZpZWQiLCJjb25zdHJ1Y3RvclN0cmluZyIsImdldFN0cmluZyIsImNvbnN0cnVjdG9yVGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsInRlcm1Ob2RlQSIsImNvbnN0cnVjdG9yVGVybU5vZGVCIiwidW5pZmllZCIsInRlcm1BZ2FpbnN0Q29uc3RydWN0b3JVbmlmaWVyIiwidW5pZnkiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQTRDQTs7O2VBQUE7OzsyREExQ2lCOzJEQUNBO2dFQUNnQjs2RUFDUztxQkFFaEI7Ozs7OztBQUUxQixJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsU0FBU0UsV0FBV0MsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLFlBQVksRUFBRUMsV0FBVztJQUM1RCxJQUFJQztJQUVKLElBQU1DLGFBQWFILGFBQWFJLFlBQVksQ0FBQ047SUFFN0NFLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRixZQUFXLGNBQVlMO0lBRTVELElBQU1RLHNCQUFzQjtRQUMxQkM7UUFDQUM7UUFDQUM7S0FDRDtJQUVEUCxlQUFlSSxvQkFBb0JJLElBQUksQ0FBQyxTQUFDQztRQUN2QyxJQUFNVCxlQUFlUyxt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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.945",
4
+ "version": "0.0.947",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -44,7 +44,11 @@ class MetaLevelVerifier extends Verifier {
44
44
  nodeQuery: termNodeQuery,
45
45
  verify: (termNode, localContext) => {
46
46
  const terms = [],
47
- termVerified = verifyTerm(termNode, terms, localContext);
47
+ termVerified = verifyTerm(termNode, terms, localContext, () => {
48
+ const verifiedAhead = true;
49
+
50
+ return verifiedAhead;
51
+ });
48
52
 
49
53
  return termVerified;
50
54
  }
@@ -39,7 +39,11 @@ class StatementAsCombinatorVerifier extends Verifier {
39
39
  nodeQuery: termNodeQuery,
40
40
  verify: (termNode, localContext) => {
41
41
  const terms = [],
42
- termVerified = verifyTerm(termNode, terms, localContext);
42
+ termVerified = verifyTerm(termNode, terms, localContext, () => {
43
+ const verifiedAhead = true;
44
+
45
+ return verifiedAhead;
46
+ });
43
47
 
44
48
  return termVerified;
45
49
  }
@@ -6,6 +6,7 @@ import VariableAssignment from "../../assignment/variable";
6
6
 
7
7
  import { first } from "../../utilities/array";
8
8
  import { nodeQuery } from "../../utilities/query";
9
+ import local from "../../context/local";
9
10
 
10
11
  const termNodeQuery = nodeQuery("/typeAssertion/term!"),
11
12
  typeNodeQuery = nodeQuery("/typeAssertion/type!"),
@@ -46,39 +47,43 @@ function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, loc
46
47
 
47
48
  localContext.trace(`Verifying the '${typeAssertionString}' derived type assertion...`, typeAssertionNode);
48
49
 
50
+ const typeNode = typeNodeQuery(typeAssertionNode),
51
+ type = localContext.findTypeByTypeNode(typeNode);
52
+
53
+ if (type === null) {
54
+ const typeString = localContext.nodeAsString(typeNode);
55
+
56
+ localContext.debug(`The '${typeString}' type is not present.`, typeNode);
57
+ }
58
+
49
59
  const terms = [],
50
60
  termNode = termNodeQuery(typeAssertionNode),
51
61
  termVerified = verifyTerm(termNode, terms, localContext, () => {
52
62
  let verifiedAhead = false;
53
63
 
54
- const typeNode = typeNodeQuery(typeAssertionNode),
55
- type = localContext.findTypeByTypeNode(typeNode);
56
-
57
- if (type !== null) {
58
- const firstTerm = first(terms),
59
- term = firstTerm, ///
60
- termType = localContext.getTermType(term),
61
- typeEqualToOrSuperTypeOfTermType = type.isEqualToOrSuperTypeOf(termType);
64
+ const firstTerm = first(terms),
65
+ term = firstTerm, ///
66
+ termType = localContext.getTermType(term),
67
+ typeEqualToOrSuperTypeOfTermType = type.isEqualToOrSuperTypeOf(termType);
62
68
 
63
- if (typeEqualToOrSuperTypeOfTermType) {
64
- const variableNode = variableNodeQuery(termNode);
69
+ if (typeEqualToOrSuperTypeOfTermType) {
70
+ const variableNode = variableNodeQuery(termNode);
65
71
 
66
- if (variableNode === null) {
67
- verifiedAhead = true;
68
- } else {
69
- let variable = localContext.findVariableByVariableNode(variableNode);
72
+ if (variableNode === null) {
73
+ verifiedAhead = true;
74
+ } else {
75
+ let variable;
70
76
 
71
- variable = Variable.fromVariableAndType(variable, type);
77
+ variable = localContext.findVariableByVariableNode(variableNode);
72
78
 
73
- const variableAssignment = VariableAssignment.fromVariable(variable),
74
- assignment = variableAssignment; ///
79
+ variable = Variable.fromVariableAndType(variable, type); ///
75
80
 
76
- assignments.push(assignment);
81
+ const variableAssignment = VariableAssignment.fromVariable(variable),
82
+ assignment = variableAssignment; ///
77
83
 
78
- verifiedAhead = true;
84
+ assignments.push(assignment);
79
85
 
80
- assignments.pop();
81
- }
86
+ verifiedAhead = true;
82
87
  }
83
88
  }
84
89
 
@@ -103,39 +108,43 @@ function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, loca
103
108
 
104
109
  localContext.trace(`Verifying the '${typeAssertionString}' stated type assertion...`, typeAssertionNode);
105
110
 
111
+ const typeNode = typeNodeQuery(typeAssertionNode),
112
+ type = localContext.findTypeByTypeNode(typeNode);
113
+
114
+ if (type === null) {
115
+ const typeString = localContext.nodeAsString(typeNode);
116
+
117
+ localContext.debug(`The '${typeString}' type is not present.`, typeNode);
118
+ }
119
+
106
120
  const terms = [],
107
121
  termNode = termNodeQuery(typeAssertionNode),
108
122
  termVerified = verifyTerm(termNode, terms, localContext, () => {
109
123
  let verifiedAhead = false;
110
124
 
111
- const typeNode = typeNodeQuery(typeAssertionNode),
112
- type = localContext.findTypeByTypeNode(typeNode);
113
-
114
- if (type !== null) {
115
- const firstTerm = first(terms),
116
- term = firstTerm, ///
117
- termType = term.getType(),
118
- typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
125
+ const firstTerm = first(terms),
126
+ term = firstTerm, ///
127
+ termType = term.getType(),
128
+ typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
119
129
 
120
- if (typeEqualToOrSubTypeOfTermType) {
121
- const variableNode = variableNodeQuery(termNode);
130
+ if (typeEqualToOrSubTypeOfTermType) {
131
+ const variableNode = variableNodeQuery(termNode);
122
132
 
123
- if (variableNode === null) {
124
- verifiedAhead = true;
125
- } else {
126
- let variable = localContext.findVariableByVariableNode(variableNode);
133
+ if (variableNode === null) {
134
+ verifiedAhead = true;
135
+ } else {
136
+ let variable;
127
137
 
128
- variable = Variable.fromVariableAndType(variable, type);
138
+ variable = localContext.findVariableByVariableNode(variableNode);
129
139
 
130
- const variableAssignment = VariableAssignment.fromVariable(variable),
131
- assignment = variableAssignment; ///
140
+ variable = Variable.fromVariableAndType(variable, type); ///
132
141
 
133
- assignments.push(assignment);
142
+ const variableAssignment = VariableAssignment.fromVariable(variable),
143
+ assignment = variableAssignment; ///
134
144
 
135
- verifiedAhead = true;
145
+ assignments.push(assignment);
136
146
 
137
- assignments.pop();
138
- }
147
+ verifiedAhead = true;
139
148
  }
140
149
  }
141
150
 
@@ -5,7 +5,6 @@ import Term from "../term";
5
5
  import bracketedConstructor from "../constructor/bracketed";
6
6
  import termAgainstConstructorUnifier from "../unifier/termAgainstConstructor";
7
7
 
8
- import { first } from "../utilities/array";
9
8
  import { nodeQuery } from "../utilities/query";
10
9
 
11
10
  const termNodeQuery = nodeQuery("/term/argument/term"),
@@ -69,7 +68,7 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
69
68
 
70
69
  terms.pop();
71
70
 
72
- termVerifiedAsVariable = verifiedAhead; ///
71
+ termVerifiedAsVariable = verifiedAhead; ///
73
72
  }
74
73
 
75
74
  if (termVerifiedAsVariable) {
@@ -104,90 +103,59 @@ function unifyTermAgainstBracketedConstructor(termNode, terms, localContext, ver
104
103
  let termUnifiedAgainstBracketedConstructor;
105
104
 
106
105
  const termString = localContext.nodeAsString(termNode),
107
- bracketedConstructorString = bracketedConstructor.getString();
106
+ bracketedTerms = [];
108
107
 
109
- localContext.trace(`Unifying the '${termString}' term against the '${bracketedConstructorString}' bracketed constructor...`, termNode);
108
+ localContext.trace(`Unifying the '${termString}' term against the bracketed constructor...`, termNode);
110
109
 
111
- const bracketedConstructorTermNode = bracketedConstructor.getTermNode(),
112
- termNodeA = termNode, ///
113
- constructorTermNodeB = bracketedConstructorTermNode, ///
114
- unified = termAgainstConstructorUnifier.unify(termNodeA, constructorTermNodeB, localContext, () => {
115
- let verifiedAhead;
110
+ termUnifiedAgainstBracketedConstructor = unifyTermAgainstConstructor(termNode, bracketedTerms, bracketedConstructor, localContext, () => {
111
+ let verifiedAhead;
116
112
 
117
- const bracketedTermNode = termNode; ///
113
+ const bracketedTermNode = termNode; ///
118
114
 
119
- termNode = termNodeQuery(termNode); ///
115
+ termNode = termNodeQuery(bracketedTermNode); ///
120
116
 
121
- if (termNode === null) {
122
- verifiedAhead = false;
123
- } else {
124
- let type;
117
+ const termVVerified = verifyTerm(termNode, terms, localContext, verifyAhead);
125
118
 
126
- verifyTerm(termNode, terms, localContext, () => {
127
- let verifiedAhead;
119
+ verifiedAhead = termVVerified; ///
128
120
 
129
- const firstTerm = first(terms),
130
- term = firstTerm; ///
131
-
132
- type = term.getType();
133
-
134
- verifiedAhead = true;
135
-
136
- return verifiedAhead;
137
- });
138
-
139
- terms.pop();
140
-
141
- termNode = bracketedTermNode; ///
142
-
143
- const term = Term.fromTermNodeAndType(termNode, type);
144
-
145
- terms.push(term);
146
-
147
- verifiedAhead = verifyAhead();
148
-
149
- terms.pop();
150
- }
151
-
152
- return verifiedAhead;
153
- });
121
+ return verifiedAhead;
122
+ });
154
123
 
155
- termUnifiedAgainstBracketedConstructor = unified; ///
156
124
 
157
125
  if (termUnifiedAgainstBracketedConstructor) {
158
- localContext.debug(`...unified the '${termString}' term against the '${bracketedConstructorString}' constructor.`, termNode);
126
+ localContext.debug(`...unified the '${termString}' term against the bracketed constructor.`, termNode);
159
127
  }
160
128
 
161
129
  return termUnifiedAgainstBracketedConstructor;
162
130
  }
163
131
 
164
132
  function unifyTermAgainstConstructor(termNode, terms, constructor, localContext, verifyAhead) {
165
- let termUnifiedAgainstConstructor;
133
+ let termUnifiedAgainstConstructor = false;
166
134
 
167
135
  const termString = localContext.nodeAsString(termNode),
168
- constructorString = constructor.getString();
136
+ constructorString = constructor.getString(),
137
+ constructorTermNode = constructor.getTermNode();
169
138
 
170
139
  localContext.trace(`Unifying the '${termString}' term against the '${constructorString}' constructor...`, termNode);
171
140
 
172
- const constructorTermNode = constructor.getTermNode(),
173
- termNodeA = termNode, ///
141
+ const termNodeA = termNode, ///
174
142
  constructorTermNodeB = constructorTermNode, ///
175
- unified = termAgainstConstructorUnifier.unify(termNodeA, constructorTermNodeB, localContext, () => {
176
- let verifiedAhead;
143
+ unified = termAgainstConstructorUnifier.unify(termNodeA, constructorTermNodeB, localContext);
177
144
 
178
- const type = constructor.getType(),
179
- term = Term.fromTermNodeAndType(termNode, type);
145
+ if (unified) {
146
+ let verifiedAhead;
180
147
 
181
- terms.push(term);
148
+ const type = constructor.getType(),
149
+ term = Term.fromTermNodeAndType(termNode, type);
182
150
 
183
- verifiedAhead = verifyAhead();
151
+ terms.push(term);
184
152
 
185
- terms.pop();
153
+ verifiedAhead = verifyAhead();
186
154
 
187
- return verifiedAhead;
188
- });
155
+ terms.pop();
189
156
 
190
- termUnifiedAgainstConstructor = unified; ///
157
+ termUnifiedAgainstConstructor = verifiedAhead; ///
158
+ }
191
159
 
192
160
  if (termUnifiedAgainstConstructor) {
193
161
  localContext.debug(`...unified the '${termString}' term against the '${constructorString}' constructor.`, termNode);