occam-verify-cli 1.0.913 → 1.0.920

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.
@@ -12,9 +12,6 @@ _export(exports, {
12
12
  get equivalencesFromEquality () {
13
13
  return equivalencesFromEquality;
14
14
  },
15
- get findEquivalenceByTerm () {
16
- return findEquivalenceByTerm;
17
- },
18
15
  get findEquivalenceByTermNodes () {
19
16
  return findEquivalenceByTermNodes;
20
17
  },
@@ -43,15 +40,6 @@ function mergeEquivalences(equivalencesA, equivalencesB, context) {
43
40
  });
44
41
  return equivalencesA;
45
42
  }
46
- function findEquivalenceByTerm(equivalences, term) {
47
- const equivalence = equivalences.find((equivalence)=>{
48
- const equivalenceEqualToTerm = equivalence.isEqualTo(term);
49
- if (equivalenceEqualToTerm) {
50
- return true;
51
- }
52
- }) || null;
53
- return equivalence;
54
- }
55
43
  function equivalencesFromEquality(equality, context) {
56
44
  const { Equivalence } = _elements.default, eaulivalence = Equivalence.fromEquality(equality, context), equivalences = [
57
45
  eaulivalence
@@ -143,4 +131,4 @@ function groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquiva
143
131
  });
144
132
  }
145
133
 
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZXF1aXZhbGVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBzZXBhcmF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBjb250ZXh0KSB7XG4gIGVxdWl2YWxlbmNlc0EgPSBbICAvLy9cbiAgICAuLi5lcXVpdmFsZW5jZXNBXG4gIF07XG5cbiAgZXF1aXZhbGVuY2VzQi5mb3JFYWNoKChlcXVpdmFsZW5jZUIpID0+IHtcbiAgICBlcXVpdmFsZW5jZXNBID0gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpO1xuICB9KTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRFcXVpdmFsZW5jZUJ5VGVybShlcXVpdmFsZW5jZXMsIHRlcm0pIHtcbiAgY29uc3QgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZXMuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZUVxdWFsVG9UZXJtID0gZXF1aXZhbGVuY2UuaXNFcXVhbFRvKHRlcm0pO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlRXF1YWxUb1Rlcm0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSkgfHwgbnVsbDtcblxuICByZXR1cm4gZXF1aXZhbGVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVpdmFsZW5jZXNGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpIHtcbiAgY29uc3QgeyBFcXVpdmFsZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGVhdWxpdmFsZW5jZSA9IEVxdWl2YWxlbmNlLmZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCksXG4gICAgICAgIGVxdWl2YWxlbmNlcyA9IFtcbiAgICAgICAgICBlYXVsaXZhbGVuY2VcbiAgICAgICAgXTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEVxdWl2YWxlbmNlQnlUZXJtTm9kZXMoZXF1aXZhbGVuY2VzLCB0ZXJtTm9kZXMpIHtcbiAgY29uc3QgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZXMuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSBlcXVpdmFsZW5jZS5tYXRjaFRlcm1Ob2Rlcyh0ZXJtTm9kZXMpO1xuXG4gICAgaWYgKHRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KSB8fCBudWxsO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMoZXF1aXZhbGVuY2VzLCBncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gIGxldCBncm91bmRlZEVxdWl2YWxlbmNlcyxcbiAgICAgIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyxcbiAgICAgIGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzO1xuXG4gIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyA9IFtdO1xuXG4gIGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzID0gW107XG5cbiAgc2VwYXJhdGVJbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIGNvbnRleHQpO1xuXG4gIGNvbnN0IGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMubGVuZ3RoO1xuXG4gIGlmIChpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA+IDApIHtcbiAgICBncm91bmRlZEVxdWl2YWxlbmNlcyA9IGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzOyAvLy9cblxuICAgIGxldCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSAxO1xuXG4gICAgd2hpbGUgKGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA+IDApIHtcbiAgICAgIGxldCBkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gMCxcbiAgICAgICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IC0xO1xuXG4gICAgICB3aGlsZSAoZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA+IHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCkge1xuICAgICAgICBwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzTGVuZ3RoOyAgLy8vXG5cbiAgICAgICAgZ3JvdW5kZWRUZXJtc0Zyb21Hcm91bmRlZEVxdWl2YWxlbmNlc0FuZERlZmluZWRWYXJpYWJsZXMoZ3JvdW5kZWRFcXVpdmFsZW5jZXMsIGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyhncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgICBkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gZGVmaW5lZFZhcmlhYmxlcy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGVxdWl2YWxlbmNlcyA9IHJlbWFpbmluZ0VxdWl2YWxlbmNlczsgLy8vXG5cbiAgICAgIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICAgICAgc2VwYXJhdGVJbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzLCByZW1haW5pbmdFcXVpdmFsZW5jZXMsIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICAgIHB1c2goZ3JvdW5kZWRFcXVpdmFsZW5jZXMsIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyk7XG5cbiAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcy5sZW5ndGg7ICAvLy9cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpIHtcbiAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2VzID0gW107XG5cbiAgZXF1aXZhbGVuY2VzQS5mb3JFYWNoKChlcXVpdmFsZW5jZUEpID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZUJEaXNqb2ludEZyb21FcXVpdmFsZW5jZUEgPSBlcXVpdmFsZW5jZUIuaXNEaXNqb2ludEZyb20oZXF1aXZhbGVuY2VBKTtcblxuICAgIGlmIChlcXVpdmFsZW5jZUJEaXNqb2ludEZyb21FcXVpdmFsZW5jZUEpIHtcbiAgICAgIGNvbnN0IG1lcmdlZEVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2VCOyAgLy8vXG5cbiAgICAgIG1lcmdlZEVxdWl2YWxlbmNlcy5wdXNoKG1lcmdlZEVxdWl2YWxlbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXF1aXZhbGVuY2VCID0gZXF1aXZhbGVuY2VCLm1lcmdlZFdpdGgoZXF1aXZhbGVuY2VBLCBjb250ZXh0KTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IG1lcmdlZEVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2VCOyAgLy8vXG5cbiAgbWVyZ2VkRXF1aXZhbGVuY2VzLnB1c2gobWVyZ2VkRXF1aXZhbGVuY2UpO1xuXG4gIGVxdWl2YWxlbmNlc0EgPSBtZXJnZWRFcXVpdmFsZW5jZXM7ICAvLy9cblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZnVuY3Rpb24gZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgZ3JvdW5kZWRUZXJtcy5mb3JFYWNoKChncm91bmRlZFRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtID0gZ3JvdW5kZWRUZXJtLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gdmFyaWFibGVzRnJvbVRlcm0odGVybSwgY29udGV4dCk7XG5cbiAgICB2YXJpYWJsZXMuZm9yRWFjaCgodmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuaW5jbHVkZXModmFyaWFibGUpO1xuXG4gICAgICBpZiAoIWRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSkge1xuICAgICAgICBjb25zdCBkZWZpbmVkVmFyaWFibGUgPSB2YXJpYWJsZTsgIC8vL1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXMucHVzaChkZWZpbmVkVmFyaWFibGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VwYXJhdGVJbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIGNvbnRleHQpIHtcbiAgc2VwYXJhdGUoZXF1aXZhbGVuY2VzLCByZW1haW5pbmdFcXVpdmFsZW5jZXMsIGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCAoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbml0aWFsbHlHcm91bmRlZChjb250ZXh0KTtcblxuICAgIGlmICghZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VwYXJhdGVJbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzLCByZW1haW5pbmdFcXVpdmFsZW5jZXMsIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBzZXBhcmF0ZShlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCAoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCA9IGVxdWl2YWxlbmNlLmlzSW1wbGljaXRseUdyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ3JvdW5kZWRUZXJtc0Zyb21Hcm91bmRlZEVxdWl2YWxlbmNlc0FuZERlZmluZWRWYXJpYWJsZXMoZ3JvdW5kZWRFcXVpdmFsZW5jZXMsIGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpIHtcbiAgZ3JvdW5kZWRFcXVpdmFsZW5jZXMuZm9yRWFjaCgoZ3JvdW5kZWRFcXVpdmFsZW5jZSkgPT4ge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2UuZ2V0R3JvdW5kZWRUZXJtcyhkZWZpbmVkVmFyaWFibGVzLCBncm91bmRlZFRlcm1zLCBjb250ZXh0KTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiZXF1aXZhbGVuY2VzRnJvbUVxdWFsaXR5IiwiZmluZEVxdWl2YWxlbmNlQnlUZXJtIiwiZmluZEVxdWl2YWxlbmNlQnlUZXJtTm9kZXMiLCJtZXJnZUVxdWl2YWxlbmNlcyIsInNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMiLCJwdXNoIiwic2VwYXJhdGUiLCJhcnJheVV0aWxpdGllcyIsImVxdWl2YWxlbmNlc0EiLCJlcXVpdmFsZW5jZXNCIiwiY29udGV4dCIsImZvckVhY2giLCJlcXVpdmFsZW5jZUIiLCJtZXJnZUVxdWl2YWxlbmNlIiwiZXF1aXZhbGVuY2VzIiwidGVybSIsImVxdWl2YWxlbmNlIiwiZmluZCIsImVxdWl2YWxlbmNlRXF1YWxUb1Rlcm0iLCJpc0VxdWFsVG8iLCJlcXVhbGl0eSIsIkVxdWl2YWxlbmNlIiwiZWxlbWVudHMiLCJlYXVsaXZhbGVuY2UiLCJmcm9tRXF1YWxpdHkiLCJ0ZXJtTm9kZXMiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJyZW1haW5pbmdFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsInNlcGFyYXRlSW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImxlbmd0aCIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImRlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyIsImRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyIsInNlcGFyYXRlSW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwibWVyZ2VkRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VBIiwiZXF1aXZhbGVuY2VCRGlzam9pbnRGcm9tRXF1aXZhbGVuY2VBIiwiaXNEaXNqb2ludEZyb20iLCJtZXJnZWRFcXVpdmFsZW5jZSIsIm1lcmdlZFdpdGgiLCJncm91bmRlZFRlcm0iLCJ2YXJpYWJsZXMiLCJ2YXJpYWJsZXNGcm9tVGVybSIsInZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlIiwiaW5jbHVkZXMiLCJkZWZpbmVkVmFyaWFibGUiLCJlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkIiwiaXNJbml0aWFsbHlHcm91bmRlZCIsImVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkIiwiaXNJbXBsaWNpdGx5R3JvdW5kZWQiLCJncm91bmRlZEVxdWl2YWxlbmNlIiwiZ2V0R3JvdW5kZWRUZXJtcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBa0NnQkE7ZUFBQUE7O1FBWkFDO2VBQUFBOztRQXNCQUM7ZUFBQUE7O1FBbENBQztlQUFBQTs7UUE4Q0FDO2VBQUFBOzs7MkJBdERlO2lFQUVWOzZCQUVhOzs7Ozs7QUFFbEMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyx5QkFBYztBQUVsQyxTQUFTSixrQkFBa0JLLGFBQWEsRUFBRUMsYUFBYSxFQUFFQyxPQUFPO0lBQ3JFRixnQkFBZ0I7V0FDWEE7S0FDSjtJQUVEQyxjQUFjRSxPQUFPLENBQUMsQ0FBQ0M7UUFDckJKLGdCQUFnQkssaUJBQWlCTCxlQUFlSSxjQUFjRjtJQUNoRTtJQUVBLE9BQU9GO0FBQ1Q7QUFFTyxTQUFT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
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZXF1aXZhbGVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBzZXBhcmF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBjb250ZXh0KSB7XG4gIGVxdWl2YWxlbmNlc0EgPSBbICAvLy9cbiAgICAuLi5lcXVpdmFsZW5jZXNBXG4gIF07XG5cbiAgZXF1aXZhbGVuY2VzQi5mb3JFYWNoKChlcXVpdmFsZW5jZUIpID0+IHtcbiAgICBlcXVpdmFsZW5jZXNBID0gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpO1xuICB9KTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlc0Zyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCkge1xuICBjb25zdCB7IEVxdWl2YWxlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZWF1bGl2YWxlbmNlID0gRXF1aXZhbGVuY2UuZnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgZXF1aXZhbGVuY2VzID0gW1xuICAgICAgICAgIGVhdWxpdmFsZW5jZVxuICAgICAgICBdO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlcyhlcXVpdmFsZW5jZXMsIHRlcm1Ob2Rlcykge1xuICBjb25zdCBlcXVpdmFsZW5jZSA9IGVxdWl2YWxlbmNlcy5maW5kKChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IGVxdWl2YWxlbmNlLm1hdGNoVGVybU5vZGVzKHRlcm1Ob2Rlcyk7XG5cbiAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgbGV0IGdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzLFxuICAgICAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsXG4gICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7XG5cbiAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcy5sZW5ndGg7XG5cbiAgaWYgKGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2VzID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7IC8vL1xuXG4gICAgbGV0IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IDE7XG5cbiAgICB3aGlsZSAoaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSAwLFxuICAgICAgICAgICAgcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gLTE7XG5cbiAgICAgIHdoaWxlIChkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID4gcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoKSB7XG4gICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IGRlZmluZWRWYXJpYWJsZXNMZW5ndGg7ICAvLy9cblxuICAgICAgICBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCk7XG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgZXF1aXZhbGVuY2VzID0gcmVtYWluaW5nRXF1aXZhbGVuY2VzOyAvLy9cblxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgcHVzaChncm91bmRlZEVxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKTtcblxuICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLmxlbmd0aDsgIC8vL1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlc0EsIGVxdWl2YWxlbmNlQiwgY29udGV4dCkge1xuICBjb25zdCBtZXJnZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBlcXVpdmFsZW5jZXNBLmZvckVhY2goKGVxdWl2YWxlbmNlQSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSA9IGVxdWl2YWxlbmNlQi5pc0Rpc2pvaW50RnJvbShlcXVpdmFsZW5jZUEpO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSkge1xuICAgICAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7ICAvLy9cblxuICAgICAgbWVyZ2VkRXF1aXZhbGVuY2VzLnB1c2gobWVyZ2VkRXF1aXZhbGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcXVpdmFsZW5jZUIgPSBlcXVpdmFsZW5jZUIubWVyZ2VkV2l0aChlcXVpdmFsZW5jZUEsIGNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7ICAvLy9cblxuICBtZXJnZWRFcXVpdmFsZW5jZXMucHVzaChtZXJnZWRFcXVpdmFsZW5jZSk7XG5cbiAgZXF1aXZhbGVuY2VzQSA9IG1lcmdlZEVxdWl2YWxlbmNlczsgIC8vL1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXNBO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMoZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBncm91bmRlZFRlcm1zLmZvckVhY2goKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm0gPSBncm91bmRlZFRlcm0sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIHZhcmlhYmxlcy5mb3JFYWNoKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5pbmNsdWRlcyh2YXJpYWJsZSk7XG5cbiAgICAgIGlmICghZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcy5wdXNoKGRlZmluZWRWYXJpYWJsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCkge1xuICBzZXBhcmF0ZShlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW5pdGlhbGx5R3JvdW5kZWQgPSBlcXVpdmFsZW5jZS5pc0luaXRpYWxseUdyb3VuZGVkKGNvbnRleHQpO1xuXG4gICAgaWYgKCFlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gIHNlcGFyYXRlKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCkge1xuICBncm91bmRlZEVxdWl2YWxlbmNlcy5mb3JFYWNoKChncm91bmRlZEVxdWl2YWxlbmNlKSA9PiB7XG4gICAgZ3JvdW5kZWRFcXVpdmFsZW5jZS5nZXRHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJlcXVpdmFsZW5jZXNGcm9tRXF1YWxpdHkiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlcyIsIm1lcmdlRXF1aXZhbGVuY2VzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInB1c2giLCJzZXBhcmF0ZSIsImFycmF5VXRpbGl0aWVzIiwiZXF1aXZhbGVuY2VzQSIsImVxdWl2YWxlbmNlc0IiLCJjb250ZXh0IiwiZm9yRWFjaCIsImVxdWl2YWxlbmNlQiIsIm1lcmdlRXF1aXZhbGVuY2UiLCJlcXVhbGl0eSIsIkVxdWl2YWxlbmNlIiwiZWxlbWVudHMiLCJlYXVsaXZhbGVuY2UiLCJmcm9tRXF1YWxpdHkiLCJlcXVpdmFsZW5jZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZSIsImZpbmQiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJyZW1haW5pbmdFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsInNlcGFyYXRlSW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImxlbmd0aCIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImRlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyIsImRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyIsInNlcGFyYXRlSW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwibWVyZ2VkRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VBIiwiZXF1aXZhbGVuY2VCRGlzam9pbnRGcm9tRXF1aXZhbGVuY2VBIiwiaXNEaXNqb2ludEZyb20iLCJtZXJnZWRFcXVpdmFsZW5jZSIsIm1lcmdlZFdpdGgiLCJncm91bmRlZFRlcm0iLCJ0ZXJtIiwidmFyaWFibGVzIiwidmFyaWFibGVzRnJvbVRlcm0iLCJ2YXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSIsImluY2x1ZGVzIiwiZGVmaW5lZFZhcmlhYmxlIiwiZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZSIsImdldEdyb3VuZGVkVGVybXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXNCZ0JBO2VBQUFBOztRQVVBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQWtDQUM7ZUFBQUE7OzsyQkExQ2U7aUVBRVY7NkJBRWE7Ozs7OztBQUVsQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFLEdBQUdDLHlCQUFjO0FBRWxDLFNBQVNKLGtCQUFrQkssYUFBYSxFQUFFQyxhQUFhLEVBQUVDLE9BQU87SUFDckVGLGdCQUFnQjtXQUNYQTtLQUNKO0lBRURDLGNBQWNFLE9BQU8sQ0FBQyxDQUFDQztRQUNyQkosZ0JBQWdCSyxpQkFBaUJMLGVBQWVJLGNBQWNGO0lBQ2hFO0lBRUEsT0FBT0Y7QUFDVDtBQUVPLFNBQVNQLHlCQUF5QmEsUUFBUSxFQUFFSixPQUFPO0lBQ3hELE1BQU0sRUFBRUssV0FBVyxFQUFFLEdBQUdDLGlCQUFRLEVBQzFCQyxlQUFlRixZQUFZRyxZQUFZLENBQUNKLFVBQVVKLFVBQ2xEUyxlQUFlO1FBQ2JGO0tBQ0Q7SUFFUCxPQUFPRTtBQUNUO0FBRU8sU0FBU2pCLDJCQUEyQmlCLFlBQVksRUFBRUMsU0FBUztJQUNoRSxNQUFNQyxjQUFjRixhQUFhRyxJQUFJLENBQUMsQ0FBQ0Q7UUFDckMsTUFBTUUsa0JBQWtCRixZQUFZRyxjQUFjLENBQUNKO1FBRW5ELElBQUlHLGlCQUFpQjtZQUNuQixPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRU4sT0FBT0Y7QUFDVDtBQUVPLFNBQVNqQix5Q0FBeUNlLFlBQVksRUFBRU0sYUFBYSxFQUFFQyxnQkFBZ0IsRUFBRWhC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
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "unifySteps", {
8
8
  return unifySteps;
9
9
  }
10
10
  });
11
- const _necessary = require("necessary");
12
11
  const _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
13
12
  const _context = require("./context");
14
13
  function _interop_require_default(obj) {
@@ -16,12 +15,11 @@ function _interop_require_default(obj) {
16
15
  default: obj
17
16
  };
18
17
  }
19
- const { backwardsSome } = _necessary.arrayUtilities;
20
18
  async function unifyStepWithRule(step, context) {
21
19
  let stepUnifiesWithRule = false;
22
- const qualified = step.isQualified();
23
- if (qualified) {
24
- const reference = step.getReference(), rule = context.findRuleByReference(reference);
20
+ const reference = step.getReference();
21
+ if (reference !== null) {
22
+ const rule = context.findRuleByReference(reference);
25
23
  if (rule !== null) {
26
24
  const stepString = step.getString(), ruleString = rule.getString();
27
25
  context.trace(`Unifying the '${stepString}' step with the '${ruleString}' rule...`);
@@ -38,9 +36,9 @@ async function unifyStepWithRule(step, context) {
38
36
  }
39
37
  async function unifyStepWithReference(step, context) {
40
38
  let stepUnifiesWithReference = false;
41
- const qualified = step.isQualified();
42
- if (qualified) {
43
- const reference = step.getReference(), stepString = step.getString(), referenceString = reference.getString();
39
+ const reference = step.getReference();
40
+ if (reference !== null) {
41
+ const stepString = step.getString(), referenceString = reference.getString();
44
42
  context.trace(`Unifying the '${stepString}' step with the '${referenceString}' reference...`);
45
43
  const topLevelAssertion = context.findTopLevelAssertionByReference(reference);
46
44
  if (topLevelAssertion !== null) {
@@ -64,57 +62,11 @@ async function unifyStepWithReference(step, context) {
64
62
  }
65
63
  return stepUnifiesWithReference;
66
64
  }
67
- async function unifyStepAsSignatureAssertion(step, context) {
68
- let stepUnifiesAsSignatureAssertion = false;
69
- const { SignatureAssertion } = _elements.default;
70
- const signatureAssertion = SignatureAssertion.fromStep(step, context);
71
- if (signatureAssertion !== null) {
72
- const stepString = step.getString();
73
- context.trace(`Unifying the '${stepString}' step as a signature assertion...`);
74
- (0, _context.descend)((context)=>{
75
- signatureAssertion.verifySignature(context);
76
- }, context);
77
- const unqualified = step.isUnqualified();
78
- if (unqualified) {
79
- const subproofOrProofAssertions = context.getSubproofOrProofAssertions();
80
- stepUnifiesAsSignatureAssertion = backwardsSome(subproofOrProofAssertions, (stepsOrSubproof)=>{
81
- const stepOrSubProofUnifiesWIthSignatureAssertion = stepsOrSubproof.unifyWithSignatureAssertion(signatureAssertion, context);
82
- if (stepOrSubProofUnifiesWIthSignatureAssertion) {
83
- return true;
84
- }
85
- });
86
- } else {
87
- const reference = signatureAssertion.getReference(), topLevelAssertion = context.findTopLevelAssertionByReference(reference);
88
- if (topLevelAssertion !== null) {
89
- const axiom = context.findAxiomByReference(reference);
90
- if (axiom !== null) {
91
- const satisfiable = axiom.isSatisfiable();
92
- if (satisfiable) {
93
- const topLevelAssertionUnifies = axiom.unifyTopLevelAssertion(topLevelAssertion, context);
94
- if (topLevelAssertionUnifies) {
95
- const substitutionsCorrelates = signatureAssertion.correlateSubstitutions(substitutions, context);
96
- if (substitutionsCorrelates) {
97
- stepUnifiesAsSignatureAssertion = true;
98
- }
99
- }
100
- } else {
101
- const axiomString = axiom.getString();
102
- context.debug(`Unable to unify with the '${axiomString}' because it is not satisfiable.`);
103
- }
104
- }
105
- }
106
- }
107
- if (stepUnifiesAsSignatureAssertion) {
108
- context.debug(`...unified the '${stepString}' step as a signature assertion.`);
109
- }
110
- }
111
- return stepUnifiesAsSignatureAssertion;
112
- }
113
65
  async function unifyStepWithTopLevelAssertion(step, context) {
114
66
  let stepUnifiesWithTopLevelAssertion = false;
115
- const qualified = step.isQualified();
116
- if (qualified) {
117
- const reference = step.getReference(), topLevelAssertion = context.findTopLevelAssertionByReference(reference);
67
+ const reference = step.getReference();
68
+ if (reference !== null) {
69
+ const topLevelAssertion = context.findTopLevelAssertionByReference(reference);
118
70
  if (topLevelAssertion !== null) {
119
71
  const stepString = step.getString(), topLevelAssertionString = reference.getString();
120
72
  context.trace(`Unifying the '${stepString}' step with the '${topLevelAssertionString}' top level assertion...`);
@@ -129,97 +81,123 @@ async function unifyStepWithTopLevelAssertion(step, context) {
129
81
  }
130
82
  return stepUnifiesWithTopLevelAssertion;
131
83
  }
132
- async function unifyStepAsEquality(step, context) {
133
- let stepUnifiesAEquality = false;
84
+ async function unifyStepWithSignatureAssertion(step, context) {
85
+ let stepUnifiesWithSignatureAssertion = false;
86
+ const signatureAssertion = step.getSignatureAssertion();
87
+ if (signatureAssertion !== null) {
88
+ const stepString = step.getString(), signatureAssertionString = signatureAssertion.getString();
89
+ context.trace(`Unifying the '${stepString}' step with the '${signatureAssertionString}' signature assertion...`);
90
+ const subproofOrProofAssertions = context.getSubproofOrProofAssertions(), stepAndSubproofOrProofAssertionsUnify = await signatureAssertion.unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context);
91
+ if (stepAndSubproofOrProofAssertionsUnify) {
92
+ stepUnifiesWithSignatureAssertion = true;
93
+ }
94
+ if (stepUnifiesWithSignatureAssertion) {
95
+ context.debug(`...unified the '${stepString}' step with the '${signatureAssertionString}' signature assertion.`);
96
+ }
97
+ }
98
+ return stepUnifiesWithSignatureAssertion;
99
+ }
100
+ async function unifyStepAsUnqualifiedEquality(step, context) {
101
+ let stepUnifiesAUnqualifiedEquality = false;
134
102
  const unqualified = step.isUnqualified();
135
103
  if (unqualified) {
136
104
  const { Equality } = _elements.default, statement = step.getStatement(), equality = Equality.fromStatement(statement, context);
137
105
  if (equality !== null) {
138
106
  const stepString = step.getString();
139
- context.trace(`Unifying the '${stepString}' step as an equality...`);
140
- const equalityEqual = equality.isEqual(context);
141
- if (equalityEqual) {
142
- stepUnifiesAEquality = true;
143
- }
144
- if (stepUnifiesAEquality) {
145
- context.debug(`...unified the '${stepString}' step as an equality.`);
107
+ context.trace(`Unifying the '${stepString}' step as an unqualified equality...`);
108
+ stepUnifiesAUnqualifiedEquality = true;
109
+ if (stepUnifiesAUnqualifiedEquality) {
110
+ context.debug(`...unified the '${stepString}' step as an unqualified equality.`);
146
111
  }
147
112
  }
148
113
  }
149
- return stepUnifiesAEquality;
114
+ return stepUnifiesAUnqualifiedEquality;
150
115
  }
151
- async function unifyStepAsJudgement(step, context) {
152
- let stepUnifiesAsJudgement = false;
116
+ async function unifyStepAsUNqualifiedJudgement(step, context) {
117
+ let stepUnifiesAsUnqualifiedJudgement = false;
153
118
  const unqualified = step.isUnqualified();
154
119
  if (unqualified) {
155
120
  const { Judgement } = _elements.default, statement = step.getStatement(), judgement = Judgement.fromStatement(statement, context);
156
121
  if (judgement !== null) {
157
122
  const stepString = step.getString();
158
- context.trace(`Unifying the '${stepString}' step as a judgement...`);
159
- stepUnifiesAsJudgement = true;
160
- if (stepUnifiesAsJudgement) {
161
- context.debug(`...unified the '${stepString}' step as a judgement.`);
123
+ context.trace(`Unifying the '${stepString}' step as an unqualified judgement...`);
124
+ stepUnifiesAsUnqualifiedJudgement = true;
125
+ if (stepUnifiesAsUnqualifiedJudgement) {
126
+ context.debug(`...unified the '${stepString}' step as an unqualified judgement.`);
162
127
  }
163
128
  }
164
129
  }
165
- return stepUnifiesAsJudgement;
130
+ return stepUnifiesAsUnqualifiedJudgement;
166
131
  }
167
- async function unifyStepAsTypeAssertion(step, context) {
168
- let stepUnifiesAsTypeAssertion = false;
132
+ async function unifyStepAsUnqualifiedTypeAssertion(step, context) {
133
+ let stepUnifiesAsUnqualifiedTypeAssertion = false;
169
134
  const unqualified = step.isUnqualified();
170
135
  if (unqualified) {
171
136
  const { TypeAssertion } = _elements.default, statement = step.getStatement(), typeAssertion = TypeAssertion.fromStatement(statement, context);
172
137
  if (typeAssertion !== null) {
173
138
  const stepString = step.getString();
174
- context.trace(`Unifying the '${stepString}' step as a type assertion...`);
175
- stepUnifiesAsTypeAssertion = true;
176
- context.debug(`...unified the '${stepString}' step as a type assertion.`);
139
+ context.trace(`Unifying the '${stepString}' step as an unqualified type assertion...`);
140
+ stepUnifiesAsUnqualifiedTypeAssertion = true;
141
+ if (stepUnifiesAsUnqualifiedTypeAssertion) {
142
+ context.debug(`...unified the '${stepString}' step as an unqualified type assertion.`);
143
+ }
177
144
  }
178
145
  }
179
- return stepUnifiesAsTypeAssertion;
146
+ return stepUnifiesAsUnqualifiedTypeAssertion;
180
147
  }
181
- async function unifyStepAsPropertyAssertion(step, context) {
182
- let stepUnifiesAsPropertyAssertion = false;
148
+ async function unifyStepAsUnqualifiedPropertyAssertion(step, context) {
149
+ let stepUnifiesAsUnqualifiedPropertyAssertion = false;
183
150
  const unqualified = step.isUnqualified();
184
151
  if (unqualified) {
185
152
  const { PropertyAssertion } = _elements.default, statement = step.getStatement(), propertyAssertion = PropertyAssertion.fromStatement(statement, context);
186
153
  if (propertyAssertion !== null) {
187
154
  const stepString = step.getString();
188
- context.trace(`Unifying the '${stepString}' step as a property assertion...`);
189
- const term = propertyAssertion.getTerm(), equivalence = context.findEquivalenceByTerm(term);
190
- if (equivalence !== null) {
191
- const propertyAssertionMatches = equivalence.someOtherTerm(term, (term)=>{
192
- const propertyRelation = propertyAssertion.getPropertyRelation(), comparesToTermAndPropertyRelation = context.compareTermAndPropertyRelation(term, propertyRelation);
193
- if (comparesToTermAndPropertyRelation) {
194
- return true;
195
- }
196
- });
197
- if (propertyAssertionMatches) {
198
- stepUnifiesAsPropertyAssertion = true;
199
- }
200
- }
201
- if (stepUnifiesAsPropertyAssertion) {
202
- context.debug(`...unified the '${stepString}' step as a property assertion.`);
155
+ context.trace(`Unifying the '${stepString}' step as an unqualified property assertion...`);
156
+ stepUnifiesAsUnqualifiedPropertyAssertion = true;
157
+ if (stepUnifiesAsUnqualifiedPropertyAssertion) {
158
+ context.debug(`...unified the '${stepString}' step as an unqualified property assertion.`);
203
159
  }
204
160
  }
205
161
  }
206
- return stepUnifiesAsPropertyAssertion;
162
+ return stepUnifiesAsUnqualifiedPropertyAssertion;
207
163
  }
208
- async function unifyStepWithSignatureAssertion(step, context) {
209
- let stepUnifiesWithSignatureAssertion = false;
210
- const signatureAssertion = step.getSignatureAssertion();
211
- if (signatureAssertion !== null) {
212
- const stepString = step.getString(), signatureAssertionString = signatureAssertion.getString();
213
- context.trace(`Unifying the '${stepString}' step with the '${signatureAssertionString}' signature assertion...`);
214
- const subproofOrProofAssertions = context.getSubproofOrProofAssertions(), stepUnifies = signatureAssertion.unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context);
215
- if (stepUnifies) {
216
- stepUnifiesWithSignatureAssertion = true;
164
+ async function unifyStepAsUnqualifiedSignatureAssertion(step, context) {
165
+ let stepUnifiesAsUnqualifiedSignatureAssertion = false;
166
+ const unqualified = step.isUnqualified();
167
+ if (unqualified) {
168
+ const { SignatureAssertion } = _elements.default, statement = step.getStatement(), signatureAssertion = SignatureAssertion.fromStatement(statement, context);
169
+ if (signatureAssertion !== null) {
170
+ const stepString = step.getString();
171
+ context.trace(`Unifying the '${stepString}' step as a signature assertion...`);
172
+ stepUnifiesAsUnqualifiedSignatureAssertion = true;
173
+ if (stepUnifiesAsUnqualifiedSignatureAssertion) {
174
+ context.debug(`...unified the '${stepString}' step as a signature assertion.`);
175
+ }
217
176
  }
218
- if (stepUnifiesWithSignatureAssertion) {
219
- context.debug(`...unified the '${stepString}' step with the '${signatureAssertionString}' signature assertion.`);
177
+ }
178
+ return stepUnifiesAsUnqualifiedSignatureAssertion;
179
+ }
180
+ async function unifyStepAsSignatureAssertionWithReference(step, context) {
181
+ let stepUnifiesAsSignatureAssertionWithReference = false;
182
+ const reference = step.getReference();
183
+ if (reference !== null) {
184
+ const topLevelAssertion = context.findTopLevelAssertionByReference(reference);
185
+ if (topLevelAssertion !== null) {
186
+ const statementNode = step.getStatementNode(), signatureAssertionNode = statementNode.getSignatureAssertionNode();
187
+ if (signatureAssertionNode !== null) {
188
+ const stepString = step.getString(), referenceString = reference.getString(), signatureAssertion = context.findAssertionByAssertionNode(signatureAssertionNode);
189
+ context.trace(`Unifying the '${stepString}' step as a signature assertion with the '${referenceString}' reference...`);
190
+ const unifyTopLevelAssertion = await signatureAssertion.unifyTopLevelAssertion(topLevelAssertion, context);
191
+ if (unifyTopLevelAssertion) {
192
+ stepUnifiesAsSignatureAssertionWithReference = true;
193
+ }
194
+ if (stepUnifiesAsSignatureAssertionWithReference) {
195
+ context.debug(`...unified the '${stepString}' step as a signature assertion with the '${referenceString}' reference.`);
196
+ }
197
+ }
220
198
  }
221
199
  }
222
- return stepUnifiesWithSignatureAssertion;
200
+ return stepUnifiesAsSignatureAssertionWithReference;
223
201
  }
224
202
  async function compareStepWithSubproofOrProofAssertions(step, context) {
225
203
  let stepComparesToSubproofOrProofAssertions = false;
@@ -240,14 +218,15 @@ async function compareStepWithSubproofOrProofAssertions(step, context) {
240
218
  const unifySteps = [
241
219
  unifyStepWithRule,
242
220
  unifyStepWithReference,
243
- unifyStepAsSignatureAssertion,
244
221
  unifyStepWithTopLevelAssertion,
245
- unifyStepAsEquality,
246
- unifyStepAsJudgement,
247
- unifyStepAsTypeAssertion,
248
- unifyStepAsPropertyAssertion,
249
222
  unifyStepWithSignatureAssertion,
223
+ unifyStepAsUnqualifiedEquality,
224
+ unifyStepAsUNqualifiedJudgement,
225
+ unifyStepAsUnqualifiedTypeAssertion,
226
+ unifyStepAsUnqualifiedPropertyAssertion,
227
+ unifyStepAsUnqualifiedSignatureAssertion,
228
+ unifyStepAsSignatureAssertionWithReference,
250
229
  compareStepWithSubproofOrProofAssertions
251
230
  ];
252
231
 
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdW5pZmljYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlc2NlbmQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYmFja3dhcmRzU29tZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcFdpdGhSdWxlKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzV2l0aFJ1bGUgPSBmYWxzZTtcblxuICBjb25zdCBxdWFsaWZpZWQgPSBzdGVwLmlzUXVhbGlmaWVkKCk7XG5cbiAgaWYgKHF1YWxpZmllZCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCksXG4gICAgICAgICAgcnVsZSA9IGNvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgICAgcnVsZVN0cmluZyA9IHJ1bGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZS4uLmApO1xuXG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXdhaXQgcnVsZS51bmlmeVN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN0ZXAsIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSkge1xuICAgICAgICBzdGVwVW5pZmllc1dpdGhSdWxlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzV2l0aFJ1bGUpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzV2l0aFJ1bGU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcFdpdGhSZWZlcmVuY2Uoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlID0gZmFsc2U7XG5cbiAgY29uc3QgcXVhbGlmaWVkID0gc3RlcC5pc1F1YWxpZmllZCgpO1xuXG4gIGlmIChxdWFsaWZpZWQpIHtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpLFxuICAgICAgICAgIHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uID0gY29udGV4dC5maW5kVG9wTGV2ZWxBc3NlcnRpb25CeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKHRvcExldmVsQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXdhaXQgdG9wTGV2ZWxBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gICAgICBpZiAobWV0YUxldmVsKSB7XG4gICAgICAgIGRlc2NlbmQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCB7IE1ldGFMZXZlbEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb24gPSBNZXRhTGV2ZWxBc3N1bXB0aW9uLmZyb21TdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbi52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgICAgICAgIHN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSA9IHRydWU7XG4gICAgICAgIH0sIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGVwVW5pZmllc1dpdGhSZWZlcmVuY2UpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgeyBTaWduYXR1cmVBc3NlcnRpb24gfSA9IGVsZW1lbnRzO1xuXG4gIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IFNpZ25hdHVyZUFzc2VydGlvbi5mcm9tU3RlcChzdGVwLCBjb250ZXh0KTtcblxuICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICBzaWduYXR1cmVBc3NlcnRpb24udmVyaWZ5U2lnbmF0dXJlKGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICAgIGlmICh1bnF1YWxpZmllZCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpO1xuXG4gICAgICBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uID0gYmFja3dhcmRzU29tZShzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCAoc3RlcHNPclN1YnByb29mKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBPclN1YlByb29mVW5pZmllc1dJdGhTaWduYXR1cmVBc3NlcnRpb24gPSBzdGVwc09yU3VicHJvb2YudW5pZnlXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0ZXBPclN1YlByb29mVW5pZmllc1dJdGhTaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHNpZ25hdHVyZUFzc2VydGlvbi5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uID0gY29udGV4dC5maW5kVG9wTGV2ZWxBc3NlcnRpb25CeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgICBpZiAodG9wTGV2ZWxBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3Qgc2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgICBpZiAoc2F0aXNmaWFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uVW5pZmllcyA9IGF4aW9tLnVuaWZ5VG9wTGV2ZWxBc3NlcnRpb24odG9wTGV2ZWxBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAodG9wTGV2ZWxBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnNDb3JyZWxhdGVzID0gc2lnbmF0dXJlQXNzZXJ0aW9uLmNvcnJlbGF0ZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbnNDb3JyZWxhdGVzKSB7XG4gICAgICAgICAgICAgICAgc3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXhpb21TdHJpbmcgPSBheGlvbS5nZXRTdHJpbmcoKTtcblxuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHVuaWZ5IHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYmVjYXVzZSBpdCBpcyBub3Qgc2F0aXNmaWFibGUuYClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoVG9wTGV2ZWxBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCBxdWFsaWZpZWQgPSBzdGVwLmlzUXVhbGlmaWVkKCk7XG5cbiAgaWYgKHF1YWxpZmllZCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRUb3BMZXZlbEFzc2VydGlvbkJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAodG9wTGV2ZWxBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgICAgc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSA9IGF3YWl0IHRvcExldmVsQXNzZXJ0aW9uLnVuaWZ5U3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3RlcCwgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5KSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzRXF1YWxpdHkoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBRXF1YWxpdHkgPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gZXF1YWxpdHkuLi5gKTtcblxuICAgICAgY29uc3QgZXF1YWxpdHlFcXVhbCA9IGVxdWFsaXR5LmlzRXF1YWwoY29udGV4dCk7XG5cbiAgICAgIGlmIChlcXVhbGl0eUVxdWFsKSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzQUVxdWFsaXR5ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzQUVxdWFsaXR5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGFuIGVxdWFsaXR5LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FFcXVhbGl0eTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwQXNKdWRnZW1lbnQoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc0p1ZGdlbWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBqdWRnZW1lbnQuLi5gKTtcblxuICAgICAgc3RlcFVuaWZpZXNBc0p1ZGdlbWVudCA9IHRydWU7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc0FzSnVkZ2VtZW50KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEganVkZ2VtZW50LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzSnVkZ2VtZW50O1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1R5cGVBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc1R5cGVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgVHlwZUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAodHlwZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHN0ZXBVbmlmaWVzQXNUeXBlQXNzZXJ0aW9uID0gdHJ1ZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNBc1R5cGVBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzUHJvcGVydHlBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc1Byb3BlcnR5QXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICBpZiAodW5xdWFsaWZpZWQpIHtcbiAgICBjb25zdCB7IFByb3BlcnR5QXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uID0gUHJvcGVydHlBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIGNvbnN0IHRlcm0gPSBwcm9wZXJ0eUFzc2VydGlvbi5nZXRUZXJtKCksXG4gICAgICAgICAgICBlcXVpdmFsZW5jZSA9IGNvbnRleHQuZmluZEVxdWl2YWxlbmNlQnlUZXJtKHRlcm0pO1xuXG4gICAgICBpZiAoZXF1aXZhbGVuY2UgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlBc3NlcnRpb25NYXRjaGVzID0gZXF1aXZhbGVuY2Uuc29tZU90aGVyVGVybSh0ZXJtLCAodGVybSkgPT4geyAgLy8vXG4gICAgICAgICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uLmdldFByb3BlcnR5UmVsYXRpb24oKSxcbiAgICAgICAgICAgICAgICBjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb24gPSBjb250ZXh0LmNvbXBhcmVUZXJtQW5kUHJvcGVydHlSZWxhdGlvbih0ZXJtLCBwcm9wZXJ0eVJlbGF0aW9uKTtcblxuICAgICAgICAgIGlmIChjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uTWF0Y2hlcykge1xuICAgICAgICAgIHN0ZXBVbmlmaWVzQXNQcm9wZXJ0eUFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzQXNQcm9wZXJ0eUFzc2VydGlvbikge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNBc1Byb3BlcnR5QXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzV2l0aFNpZ25hdHVyZUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IHN0ZXAuZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uKCk7XG5cbiAgaWYgKHNpZ25hdHVyZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHNpZ25hdHVyZUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgc3RlcFVuaWZpZXMgPSBzaWduYXR1cmVBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGVwVW5pZmllcykge1xuICAgICAgc3RlcFVuaWZpZXNXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RlcFVuaWZpZXNXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbXBhcmVTdGVwV2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcENvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gZmFsc2U7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICBpZiAodW5xdWFsaWZpZWQpIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYENvbXBhcmluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgc3VicHJvb2ZzIG9yIHByb29mIGFzc3NlcnRpb25zLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgY29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBzdGVwLmNvbXBhcmVTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpO1xuXG4gICAgaWYgKGNvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKSB7XG4gICAgICBzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNvbXBhcmVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSBzdWJwcm9vZnMgb3IgcHJvb2YgYXNzc2VydGlvbnMuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IHVuaWZ5U3RlcHMgPSBbXG4gIHVuaWZ5U3RlcFdpdGhSdWxlLFxuICB1bmlmeVN0ZXBXaXRoUmVmZXJlbmNlLFxuICB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbixcbiAgdW5pZnlTdGVwV2l0aFRvcExldmVsQXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBBc0VxdWFsaXR5LFxuICB1bmlmeVN0ZXBBc0p1ZGdlbWVudCxcbiAgdW5pZnlTdGVwQXNUeXBlQXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBBc1Byb3BlcnR5QXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uLFxuICBjb21wYXJlU3RlcFdpdGhTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zXG5dO1xuIl0sIm5hbWVzIjpbInVuaWZ5U3RlcHMiLCJiYWNrd2FyZHNTb21lIiwiYXJyYXlVdGlsaXRpZXMiLCJ1bmlmeVN0ZXBXaXRoUnVsZSIsInN0ZXAiLCJjb250ZXh0Iiwic3RlcFVuaWZpZXNXaXRoUnVsZSIsInF1YWxpZmllZCIsImlzUXVhbGlmaWVkIiwicmVmZXJlbmNlIiwiZ2V0UmVmZXJlbmNlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2UiLCJzdGVwU3RyaW5nIiwiZ2V0U3RyaW5nIiwicnVsZVN0cmluZyIsInRyYWNlIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5IiwidW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImRlYnVnIiwidW5pZnlTdGVwV2l0aFJlZmVyZW5jZSIsInN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsInRvcExldmVsQXNzZXJ0aW9uIiwiZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UiLCJtZXRhTGV2ZWwiLCJpc01ldGFMZXZlbCIsImRlc2NlbmQiLCJNZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJtZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZnJvbVN0ZXAiLCJ2YWxpZGF0ZSIsInVuaWZ5U3RlcEFzU2lnbmF0dXJlQXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvbiIsInZlcmlmeVNpZ25hdHVyZSIsInVucXVhbGlmaWVkIiwiaXNVbnF1YWxpZmllZCIsInN0ZXBzT3JTdWJwcm9vZiIsInN0ZXBPclN1YlByb29mVW5pZmllc1dJdGhTaWduYXR1cmVBc3NlcnRpb24iLCJ1bmlmeVdpdGhTaWduYXR1cmVBc3NlcnRpb24iLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwic2F0aXNmaWFibGUiLCJpc1NhdGlzZmlhYmxlIiwidG9wTGV2ZWxBc3NlcnRpb25VbmlmaWVzIiwidW5pZnlUb3BMZXZlbEFzc2VydGlvbiIsInN1YnN0aXR1dGlvbnNDb3JyZWxhdGVzIiwiY29ycmVsYXRlU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJheGlvbVN0cmluZyIsInVuaWZ5U3RlcFdpdGhUb3BMZXZlbEFzc2VydGlvbiIsInN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJ1bmlmeVN0ZXBBc0VxdWFsaXR5Iiwic3RlcFVuaWZpZXNBRXF1YWxpdHkiLCJFcXVhbGl0eSIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImVxdWFsaXR5IiwiZnJvbVN0YXRlbWVudCIsImVxdWFsaXR5RXF1YWwiLCJpc0VxdWFsIiwidW5pZnlTdGVwQXNKdWRnZW1lbnQiLCJzdGVwVW5pZmllc0FzSnVkZ2VtZW50IiwiSnVkZ2VtZW50IiwianVkZ2VtZW50IiwidW5pZnlTdGVwQXNUeXBlQXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNBc1R5cGVBc3NlcnRpb24iLCJUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInVuaWZ5U3RlcEFzUHJvcGVydHlBc3NlcnRpb24iLCJzdGVwVW5pZmllc0FzUHJvcGVydHlBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uIiwidGVybSIsImdldFRlcm0iLCJlcXVpdmFsZW5jZSIsImZpbmRFcXVpdmFsZW5jZUJ5VGVybSIsInByb3BlcnR5QXNzZXJ0aW9uTWF0Y2hlcyIsInNvbWVPdGhlclRlcm0iLCJwcm9wZXJ0eVJlbGF0aW9uIiwiZ2V0UHJvcGVydHlSZWxhdGlvbiIsImNvbXBhcmVzVG9UZXJtQW5kUHJvcGVydHlSZWxhdGlvbiIsImNvbXBhcmVUZXJtQW5kUHJvcGVydHlSZWxhdGlvbiIsInVuaWZ5U3RlcFdpdGhTaWduYXR1cmVBc3NlcnRpb24iLCJzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24iLCJnZXRTaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJzdGVwVW5pZmllcyIsImNvbXBhcmVTdGVwV2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJjb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImNvbXBhcmVTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrV2FBOzs7ZUFBQUE7OzsyQkFoV2tCO2lFQUVWO3lCQUVHOzs7Ozs7QUFFeEIsTUFBTSxFQUFFQyxhQUFhLEVBQUUsR0FBR0MseUJBQWM7QUFFeEMsZUFBZUMsa0JBQWtCQyxJQUFJLEVBQUVDLE9BQU87SUFDNUMsSUFBSUMsc0JBQXNCO0lBRTFCLE1BQU1DLFlBQVlILEtBQUtJLFdBQVc7SUFFbEMsSUFBSUQsV0FBVztRQUNiLE1BQU1FLFlBQVlMLEtBQUtNLFlBQVksSUFDN0JDLE9BQU9OLFFBQVFPLG1CQUFtQixDQUFDSDtRQUV6QyxJQUFJRSxTQUFTLE1BQU07WUFDakIsTUFBTUUsYUFBYVQsS0FBS1UsU0FBUyxJQUMzQkMsYUFBYUosS0FBS0csU0FBUztZQUVqQ1QsUUFBUVcsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFSCxXQUFXLGlCQUFpQixFQUFFRSxXQUFXLFNBQVMsQ0FBQztZQUVsRixNQUFNRSw0QkFBNEJaLFFBQVFhLDRCQUE0QixJQUNoRUMsd0NBQXdDLE1BQU1SLEtBQUtTLHFDQUFxQyxDQUFDaEIsTUFBTWEsMkJBQTJC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
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdW5pZmljYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVzY2VuZCB9IGZyb20gXCIuL2NvbnRleHRcIjtcblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwV2l0aFJ1bGUoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoUnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCk7XG5cbiAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuLi5gKTtcblxuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgICAgc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSA9IGF3YWl0IHJ1bGUudW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoUnVsZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhSdWxlKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3J1bGVTdHJpbmd9JyBydWxlLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc1dpdGhSdWxlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoUmVmZXJlbmNlKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCk7XG5cbiAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uID0gY29udGV4dC5maW5kVG9wTGV2ZWxBc3NlcnRpb25CeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKHRvcExldmVsQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXdhaXQgdG9wTGV2ZWxBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gICAgICBpZiAobWV0YUxldmVsKSB7XG4gICAgICAgIGRlc2NlbmQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCB7IE1ldGFMZXZlbEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb24gPSBNZXRhTGV2ZWxBc3N1bXB0aW9uLmZyb21TdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbi52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgICAgICAgIHN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSA9IHRydWU7XG4gICAgICAgIH0sIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGVwVW5pZmllc1dpdGhSZWZlcmVuY2UpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoVG9wTGV2ZWxBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpO1xuXG4gIGlmIChyZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IGNvbnRleHQuZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmICh0b3BMZXZlbEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXdhaXQgdG9wTGV2ZWxBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc1dpdGhUb3BMZXZlbEFzc2VydGlvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwV2l0aFNpZ25hdHVyZUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb24gPSBzdGVwLmdldFNpZ25hdHVyZUFzc2VydGlvbigpO1xuXG4gIGlmIChzaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSBzaWduYXR1cmVBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgIHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSBhd2FpdCBzaWduYXR1cmVBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5KSB7XG4gICAgICBzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzV2l0aFNpZ25hdHVyZUFzc2VydGlvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwQXNVbnF1YWxpZmllZEVxdWFsaXR5KHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzQVVucXVhbGlmaWVkRXF1YWxpdHkgPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgICAgc3RlcFVuaWZpZXNBVW5xdWFsaWZpZWRFcXVhbGl0eSA9IHRydWU7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc0FVbnF1YWxpZmllZEVxdWFsaXR5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGFuIHVucXVhbGlmaWVkIGVxdWFsaXR5LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FVbnF1YWxpZmllZEVxdWFsaXR5O1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1VOcXVhbGlmaWVkSnVkZ2VtZW50KHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZEp1ZGdlbWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQganVkZ2VtZW50Li4uYCk7XG5cbiAgICAgIHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZEp1ZGdlbWVudCA9IHRydWU7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRKdWRnZW1lbnQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQganVkZ2VtZW50LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRKdWRnZW1lbnQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRUeXBlQXNzZXJ0aW9uKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgVHlwZUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAodHlwZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRUeXBlQXNzZXJ0aW9uID0gdHJ1ZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQgdHlwZSBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBQcm9wZXJ0eUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbiA9IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChwcm9wZXJ0eUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCBwcm9wZXJ0eSBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkUHJvcGVydHlBc3NlcnRpb24gPSB0cnVlO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkUHJvcGVydHlBc3NlcnRpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQgcHJvcGVydHkgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRTaWduYXR1cmVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgU2lnbmF0dXJlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IFNpZ25hdHVyZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRTaWduYXR1cmVBc3NlcnRpb24gPSB0cnVlO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkU2lnbmF0dXJlQXNzZXJ0aW9uKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkU2lnbmF0dXJlQXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbldpdGhSZWZlcmVuY2Uoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbldpdGhSZWZlcmVuY2UgPSBmYWxzZTtcblxuICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpO1xuXG4gIGlmIChyZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IGNvbnRleHQuZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmICh0b3BMZXZlbEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0ZXAuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSA9IHN0YXRlbWVudE5vZGUuZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSgpO1xuXG4gICAgICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgc2lnbmF0dXJlIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgICAgICBjb25zdCB1bmlmeVRvcExldmVsQXNzZXJ0aW9uID0gYXdhaXQgc2lnbmF0dXJlQXNzZXJ0aW9uLnVuaWZ5VG9wTGV2ZWxBc3NlcnRpb24odG9wTGV2ZWxBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGlmICh1bmlmeVRvcExldmVsQXNzZXJ0aW9uKSB7XG4gICAgICAgICAgc3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbldpdGhSZWZlcmVuY2UgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXBVbmlmaWVzQXNTaWduYXR1cmVBc3NlcnRpb25XaXRoUmVmZXJlbmNlKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uIHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uV2l0aFJlZmVyZW5jZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29tcGFyZVN0ZXBXaXRoU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQ29tcGFyaW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSBzdWJwcm9vZnMgb3IgcHJvb2YgYXNzc2VydGlvbnMuLi5gKTtcblxuICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBjb250ZXh0LmdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoKSxcbiAgICAgICAgICBjb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IHN0ZXAuY29tcGFyZVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgY29udGV4dCk7XG5cbiAgICBpZiAoY29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMpIHtcbiAgICAgIHN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uY29tcGFyZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlIHN1YnByb29mcyBvciBwcm9vZiBhc3NzZXJ0aW9ucy5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcENvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zO1xufVxuXG5leHBvcnQgY29uc3QgdW5pZnlTdGVwcyA9IFtcbiAgdW5pZnlTdGVwV2l0aFJ1bGUsXG4gIHVuaWZ5U3RlcFdpdGhSZWZlcmVuY2UsXG4gIHVuaWZ5U3RlcFdpdGhUb3BMZXZlbEFzc2VydGlvbixcbiAgdW5pZnlTdGVwV2l0aFNpZ25hdHVyZUFzc2VydGlvbixcbiAgdW5pZnlTdGVwQXNVbnF1YWxpZmllZEVxdWFsaXR5LFxuICB1bmlmeVN0ZXBBc1VOcXVhbGlmaWVkSnVkZ2VtZW50LFxuICB1bmlmeVN0ZXBBc1VucXVhbGlmaWVkVHlwZUFzc2VydGlvbixcbiAgdW5pZnlTdGVwQXNVbnF1YWxpZmllZFByb3BlcnR5QXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBBc1VucXVhbGlmaWVkU2lnbmF0dXJlQXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbldpdGhSZWZlcmVuY2UsXG4gIGNvbXBhcmVTdGVwV2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNcbl07XG4iXSwibmFtZXMiOlsidW5pZnlTdGVwcyIsInVuaWZ5U3RlcFdpdGhSdWxlIiwic3RlcCIsImNvbnRleHQiLCJzdGVwVW5pZmllc1dpdGhSdWxlIiwicmVmZXJlbmNlIiwiZ2V0UmVmZXJlbmNlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2UiLCJzdGVwU3RyaW5nIiwiZ2V0U3RyaW5nIiwicnVsZVN0cmluZyIsInRyYWNlIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5IiwidW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImRlYnVnIiwidW5pZnlTdGVwV2l0aFJlZmVyZW5jZSIsInN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsInRvcExldmVsQXNzZXJ0aW9uIiwiZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UiLCJtZXRhTGV2ZWwiLCJpc01ldGFMZXZlbCIsImRlc2NlbmQiLCJNZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJtZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZnJvbVN0ZXAiLCJ2YWxpZGF0ZSIsInVuaWZ5U3RlcFdpdGhUb3BMZXZlbEFzc2VydGlvbiIsInN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJ1bmlmeVN0ZXBXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwidW5pZnlTdGVwQXNVbnF1YWxpZmllZEVxdWFsaXR5Iiwic3RlcFVuaWZpZXNBVW5xdWFsaWZpZWRFcXVhbGl0eSIsInVucXVhbGlmaWVkIiwiaXNVbnF1YWxpZmllZCIsIkVxdWFsaXR5Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZXF1YWxpdHkiLCJmcm9tU3RhdGVtZW50IiwidW5pZnlTdGVwQXNVTnF1YWxpZmllZEp1ZGdlbWVudCIsInN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZEp1ZGdlbWVudCIsIkp1ZGdlbWVudCIsImp1ZGdlbWVudCIsInVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRUeXBlQXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkVHlwZUFzc2VydGlvbiIsIlR5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uIiwidW5pZnlTdGVwQXNVbnF1YWxpZmllZFByb3BlcnR5QXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkUHJvcGVydHlBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uIiwidW5pZnlTdGVwQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbiIsInN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsInVuaWZ5U3RlcEFzU2lnbmF0dXJlQXNzZXJ0aW9uV2l0aFJlZmVyZW5jZSIsInN0ZXBVbmlmaWVzQXNTaWduYXR1cmVBc3NlcnRpb25XaXRoUmVmZXJlbmNlIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJ1bmlmeVRvcExldmVsQXNzZXJ0aW9uIiwiY29tcGFyZVN0ZXBXaXRoU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImNvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwiY29tcGFyZVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXFVYUE7OztlQUFBQTs7O2lFQW5VUTt5QkFFRzs7Ozs7O0FBRXhCLGVBQWVDLGtCQUFrQkMsSUFBSSxFQUFFQyxPQUFPO0lBQzVDLElBQUlDLHNCQUFzQjtJQUUxQixNQUFNQyxZQUFZSCxLQUFLSSxZQUFZO0lBRW5DLElBQUlELGNBQWMsTUFBTTtRQUN0QixNQUFNRSxPQUFPSixRQUFRSyxtQkFBbUIsQ0FBQ0g7UUFFekMsSUFBSUUsU0FBUyxN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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": "1.0.913",
4
+ "version": "1.0.920",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -12,12 +12,12 @@
12
12
  "dependencies": {
13
13
  "argumentative": "^2.0.47",
14
14
  "necessary": "^17.1.7",
15
- "occam-furtle": "^3.0.195",
15
+ "occam-furtle": "^3.0.197",
16
16
  "occam-grammars": "^1.3.524",
17
- "occam-languages": "^0.0.199",
17
+ "occam-languages": "^0.0.202",
18
18
  "occam-lexers": "^23.1.44",
19
19
  "occam-model": "^1.0.506",
20
- "occam-nominal": "^1.0.103",
20
+ "occam-nominal": "^1.0.105",
21
21
  "occam-parsers": "^23.1.50",
22
22
  "occam-server": "^7.0.7"
23
23
  },
@@ -4,7 +4,7 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import Context from "../context";
6
6
 
7
- import { mergeEquivalences, findEquivalenceByTerm, equivalencesFromEquality, separateGroundedTermsAndDefinedVariables } from "../utilities/equivalences";
7
+ import { mergeEquivalences, equivalencesFromEquality, separateGroundedTermsAndDefinedVariables } from "../utilities/equivalences";
8
8
 
9
9
  const { last, filter } = arrayUtilities;
10
10
 
@@ -240,8 +240,6 @@ class BoundedContext extends Context {
240
240
  return comparesToTermAndPropertyRelation;
241
241
  }
242
242
 
243
- findEquivalenceByTerm(term) { return findEquivalenceByTerm(this.equivalences, term); }
244
-
245
243
  findDeclaredJudgementByMetavariableNode(metavariableNode) {
246
244
  const declaredJudgements = this.getDeclaredJudgements(),
247
245
  declaredJudgement = declaredJudgements.find((declaredJudgement) => {