occam-nominal 1.0.639 → 1.0.641

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.
@@ -37,7 +37,7 @@ const _state = require("../utilities/state");
37
37
  const _element = require("../utilities/element");
38
38
  const _metaTypeNames = require("../metaTypeNames");
39
39
  const { nodeQuery } = _occamquery.queryUtilities;
40
- const typeNodeQuery = nodeQuery("/type"), termNodeQuery = nodeQuery("/term"), frameNodeQuery = nodeQuery("/frame"), metaTypeNodeQuery = nodeQuery("/metaType"), statementNodeQuery = nodeQuery("/statement"), termVariableNodeQuery = nodeQuery("/term/variable!"), statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
40
+ const typeNodeQuery = nodeQuery("/type"), termNodeQuery = nodeQuery("/term"), metaTypeNodeQuery = nodeQuery("/metaType"), statementNodeQuery = nodeQuery("/statement"), termVariableNodeQuery = nodeQuery("/term/variable!"), statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
41
41
  class UnifyTermIntrinsicallyPass extends _occamlanguages.ContinuationZipPass {
42
42
  static maps = [
43
43
  {
@@ -201,23 +201,6 @@ class UnifyStatementWithCombinatorPass extends _occamlanguages.ContinuationZipPa
201
201
  });
202
202
  }
203
203
  },
204
- {
205
- generalNodeQuery: metaTypeNodeQuery,
206
- specificNodeQuery: frameNodeQuery,
207
- run: (generalMetaTypeNode, specificFrameNode, generalContext, specificContext, forward, back)=>{
208
- const metaTypeNode = generalMetaTypeNode, metaTypeName = metaTypeNode.getMetaTypeName(), metaTypeNameFrameMetaTypeName = metaTypeName === _metaTypeNames.FRAME_META_TYPE_NAME;
209
- if (metaTypeNameFrameMetaTypeName) {
210
- return back();
211
- }
212
- const frameNode = specificFrameNode, context = specificContext, frame = (0, _element.frameFromFrameNode)(frameNode, context);
213
- return (0, _state.declare)((state)=>{
214
- return frame.validate(state, context, (frame, context, back)=>{
215
- const specificContext = context; ///
216
- return forward(generalContext, specificContext, back);
217
- }, back);
218
- });
219
- }
220
- },
221
204
  {
222
205
  generalNodeQuery: typeNodeQuery,
223
206
  specificNodeQuery: termNodeQuery,
@@ -270,4 +253,4 @@ function unifyStatementWithCombinator(statement, combinator, generalContext, spe
270
253
  return unifyStatementWithCombinatorPass.descend(combinatorStatementChildNodes, statementChildNodes, generalContext, specificContext, forward, back);
271
254
  }
272
255
 
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuXG5pbXBvcnQgeyBDb250aW51YXRpb25aaXBQYXNzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUsIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuLi9tZXRhVHlwZU5hbWVzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1Ob2RlLCBmcmFtZUZyb21GcmFtZU5vZGUsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgbm9kZVF1ZXJ5IH0gPSBxdWVyeVV0aWxpdGllcztcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlXCIpLFxuICAgICAgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtXCIpLFxuICAgICAgZnJhbWVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZnJhbWVcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhVHlwZVwiKSxcbiAgICAgIHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnRcIiksXG4gICAgICB0ZXJtVmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIiksXG4gICAgICBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L21ldGF2YXJpYWJsZSFcIik7XG5cbmNsYXNzIFVuaWZ5VGVybUludHJpbnNpY2FsbHlQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGU7IC8vL1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGVOb2RlLmdldFZhcmlhYmxlSWRlbnRpZmllcigpLFxuICAgICAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllciksXG4gICAgICAgICAgICAgIHZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZTsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZS51bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVN0YXRlbWVudEludHJpc2ljYWxseVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHN0YXRlbWVudE5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICAgIHJldHVybiBtZXRhdmFyaWFibGUudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGU7IC8vL1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGVOb2RlLmdldFZhcmlhYmxlSWRlbnRpZmllcigpLFxuICAgICAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllciksXG4gICAgICAgICAgICAgIHZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZTsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZS51bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeU1ldGF2YXJpYWJsZUludHJpc2ljYWxseVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICAgICAgdmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIFVuaWZ5VGVybVdpdGhQcm9wZXJ0eVBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdHlwZS52YWxpZGF0ZShjb250ZXh0LCAodHlwZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRlcm0udmFsaWRhdGVHaXZlblR5cGUoc3RyaWN0LCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdHlwZS52YWxpZGF0ZShjb250ZXh0LCAodHlwZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRlcm0udmFsaWRhdGVHaXZlblR5cGUoc3RyaWN0LCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVHlwZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGU7IC8vL1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0eXBlLnZhbGlkYXRlKGNvbnRleHQsICh0eXBlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgIHN0cmljdCA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGVybS52YWxpZGF0ZUdpdmVuVHlwZShzdHJpY3QsIHR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICAgICAgICB9LCBiYWNrKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBtZXRhVHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsTWV0YVR5cGVOb2RlLCBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgbWV0YVR5cGVOb2RlID0gZ2VuZXJhbE1ldGFUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG1ldGFUeXBlTm9kZS5nZXRNZXRhVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgbWV0YVR5cGVOYW1lU3RhdGVtZW50TWV0YVR5cGVOYW1lID0gKG1ldGFUeXBlTmFtZSA9PT0gU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FKTtcblxuICAgICAgICBpZiAoIW1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSkge1xuICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgICAgICB9LCBiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBtZXRhVHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBmcmFtZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxNZXRhVHlwZU5vZGUsIHNwZWNpZmljRnJhbWVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFUeXBlTm9kZSA9IGdlbmVyYWxNZXRhVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5vZGUuZ2V0TWV0YVR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZUZyYW1lTWV0YVR5cGVOYW1lID0gKG1ldGFUeXBlTmFtZSA9PT0gRlJBTUVfTUVUQV9UWVBFX05BTUUpO1xuXG4gICAgICAgIGlmIChtZXRhVHlwZU5hbWVGcmFtZU1ldGFUeXBlTmFtZSkge1xuICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmcmFtZU5vZGUgPSBzcGVjaWZpY0ZyYW1lTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICAgIGZyYW1lID0gZnJhbWVGcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZyYW1lLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZnJhbWUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdHlwZS52YWxpZGF0ZShjb250ZXh0LCAodHlwZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRlcm0udmFsaWRhdGVHaXZlblR5cGUoc3RyaWN0LCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgdW5pZnlUZXJtSW5zdHJpbnNpY2FsbHlQYXNzID0gbmV3IFVuaWZ5VGVybUludHJpbnNpY2FsbHlQYXNzKCksXG4gICAgICB1bmlmeVN0YXRlbWVudEludHJpbnNpY2FsbHlQYXNzID0gbmV3IFVuaWZ5U3RhdGVtZW50SW50cmlzaWNhbGx5UGFzcygpLFxuICAgICAgdW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzID0gbmV3IFVuaWZ5TWV0YXZhcmlhYmxlSW50cmlzaWNhbGx5UGFzcygpLFxuICAgICAgdW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcyA9IG5ldyBVbmlmeVRlcm1XaXRoUHJvcGVydHlQYXNzKCksXG4gICAgICB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcyA9IG5ldyBVbmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcygpLFxuICAgICAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcyA9IG5ldyBVbmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzKCksXG4gICAgICB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcyA9IG5ldyBVbmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcygpO1xuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtSW50cmluc2ljYWxseShnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGdlbmVyYWxUZXJtTm9kZSA9IGdlbmVyYWxUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNUZXJtTm9kZSA9IHNwZWNpZmljVGVybS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNUZXJtTm9kZTsgLy8vXG5cbiAgcmV0dXJuIHVuaWZ5VGVybUluc3RyaW5zaWNhbGx5UGFzcy5ydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVN0YXRlbWVudEludHJpbnNpY2FsbHkoZ2VuZXJhbFN0YXRlbWVudCwgc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudE5vZGUgPSBnZW5lcmFsU3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNTdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlOyAgLy8vXG5cbiAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50SW50cmluc2ljYWxseVBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5KGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbE1ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgIHNwZWNpZmljTWV0YXZhcmlhYmxlTm9kZSA9IHNwZWNpZmljTWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSwgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljTWV0YXZhcmlhYmxlTm9kZTtcblxuICByZXR1cm4gdW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzLnJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhQcm9wZXJ0eSh0ZXJtLCBwcm9wZXJ0eSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBwcm9wZXJ0eVRlcm0gPSBwcm9wZXJ0eS5nZXRUZXJtKCksXG4gICAgICAgIHRlcm1DaGlsZE5vZGVzID0gdGVybU5vZGUuZ2V0Q2hpbGROb2RlcygpLCAgLy8vXG4gICAgICAgIHByb3BlcnR5VGVybU5vZGUgPSBwcm9wZXJ0eVRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBwcm9wZXJ0eVRlcm1DaGlsZE5vZGVzID0gcHJvcGVydHlUZXJtTm9kZS5nZXRDaGlsZE5vZGVzKCk7ICAvLy9cblxuICByZXR1cm4gdW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcy5kZXNjZW5kKHByb3BlcnR5VGVybUNoaWxkTm9kZXMsIHRlcm1DaGlsZE5vZGVzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IodGVybSwgZ2VuZXJhdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYXRvclRlcm0gPSBnZW5lcmF0b3IuZ2V0VGVybSgpLFxuICAgICAgICB0ZXJtQ2hpbGROb2RlcyA9IHRlcm1Ob2RlLmdldENoaWxkTm9kZXMoKSwgIC8vL1xuICAgICAgICBnZW5lcmF0b3JUZXJtTm9kZSA9IGdlbmVyYXRvclRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmF0b3JUZXJtQ2hpbGROb2RlcyA9IGdlbmVyYXRvclRlcm1Ob2RlLmdldENoaWxkTm9kZXMoKTsgIC8vL1xuXG4gIHJldHVybiB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcy5kZXNjZW5kKGdlbmVyYXRvclRlcm1DaGlsZE5vZGVzLCB0ZXJtQ2hpbGROb2RlcywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29uc3RydWN0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgdGVybUNoaWxkTm9kZXMgPSB0ZXJtTm9kZS5nZXRDaGlsZE5vZGVzKCksIC8vL1xuICAgICAgICBjb25zdHJ1Y3RvclRlcm0gPSBjb25zdHJ1Y3Rvci5nZXRUZXJtKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3RvclRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBjb25zdHJ1Y3RvclRlcm1DaGlsZE5vZGVzID0gY29uc3RydWN0b3JUZXJtTm9kZS5nZXRDaGlsZE5vZGVzKCk7ICAvLy9cblxuICByZXR1cm4gdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcy5kZXNjZW5kKGNvbnN0cnVjdG9yVGVybUNoaWxkTm9kZXMsIHRlcm1DaGlsZE5vZGVzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBjb21iaW5hdG9yU3RhdGVtZW50ID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgc3RhdGVtZW50Q2hpbGROb2RlcyA9IHN0YXRlbWVudE5vZGUuZ2V0Q2hpbGROb2RlcygpLCAgLy8vXG4gICAgICAgIGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gY29tYmluYXRvclN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGNvbWJpbmF0b3JTdGF0ZW1lbnRDaGlsZE5vZGVzID0gY29tYmluYXRvclN0YXRlbWVudE5vZGUuZ2V0Q2hpbGROb2RlcygpOyAvLy9cblxuICByZXR1cm4gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MuZGVzY2VuZChjb21iaW5hdG9yU3RhdGVtZW50Q2hpbGROb2Rlcywgc3RhdGVtZW50Q2hpbGROb2RlcywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG59XG4iXSwibmFtZXMiOlsidW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5IiwidW5pZnlTdGF0ZW1lbnRJbnRyaW5zaWNhbGx5IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciIsInVuaWZ5VGVybUludHJpbnNpY2FsbHkiLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IiLCJ1bmlmeVRlcm1XaXRoR2VuZXJhdG9yIiwidW5pZnlUZXJtV2l0aFByb3BlcnR5Iiwibm9kZVF1ZXJ5IiwicXVlcnlVdGlsaXRpZXMiLCJ0eXBlTm9kZVF1ZXJ5IiwidGVybU5vZGVRdWVyeSIsImZyYW1lTm9kZVF1ZXJ5IiwibWV0YVR5cGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJ0ZXJtVmFyaWFibGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJVbmlmeVRlcm1JbnRyaW5zaWNhbGx5UGFzcyIsIkNvbnRpbnVhdGlvblppcFBhc3MiLCJtYXBzIiwiZ2VuZXJhbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwicnVuIiwiZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUiLCJzcGVjaWZpY1Rlcm1Ob2RlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsInRlcm1Ob2RlIiwidmFyaWFibGVOb2RlIiwiY29udGV4dCIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGUiLCJ0ZXJtIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidW5pZnlUZXJtIiwiVW5pZnlTdGF0ZW1lbnRJbnRyaXNpY2FsbHlQYXNzIiwiZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY1N0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnQiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwidW5pZnlTdGF0ZW1lbnQiLCJVbmlmeU1ldGF2YXJpYWJsZUludHJpc2ljYWxseVBhc3MiLCJVbmlmeVRlcm1XaXRoUHJvcGVydHlQYXNzIiwiZ2VuZXJhbFR5cGVOb2RlIiwidHlwZU5vZGUiLCJ0eXBlIiwidHlwZUZyb21UeXBlTm9kZSIsInZhbGlkYXRlIiwidGVybUZyb21UZXJtTm9kZSIsInN0cmljdCIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlR2l2ZW5UeXBlIiwiVW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MiLCJVbmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzIiwiVW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MiLCJnZW5lcmFsTWV0YVR5cGVOb2RlIiwibWV0YVR5cGVOb2RlIiwibWV0YVR5cGVOYW1lIiwiZ2V0TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lU3RhdGVtZW50TWV0YVR5cGVOYW1lIiwiU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJzcGVjaWZpY0ZyYW1lTm9kZSIsIm1ldGFUeXBlTmFtZUZyYW1lTWV0YVR5cGVOYW1lIiwiRlJBTUVfTUVUQV9UWVBFX05BTUUiLCJmcmFtZU5vZGUiLCJmcmFtZSIsImZyYW1lRnJvbUZyYW1lTm9kZSIsInVuaWZ5VGVybUluc3RyaW5zaWNhbGx5UGFzcyIsInVuaWZ5U3RhdGVtZW50SW50cmluc2ljYWxseVBhc3MiLCJ1bmlmeU1ldGF2YXJpYWJsZUludHJpc2ljYWxseVBhc3MiLCJ1bmlmeVRlcm1XaXRoUHJvcGVydHlQYXNzIiwidW5pZnlUZXJtV2l0aEdlbmVyYXRvclBhc3MiLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzIiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MiLCJnZW5lcmFsVGVybSIsInNwZWNpZmljVGVybSIsImdlbmVyYWxUZXJtTm9kZSIsImdldE5vZGUiLCJnZW5lcmFsTm9kZSIsInNwZWNpZmljTm9kZSIsImdlbmVyYWxTdGF0ZW1lbnQiLCJzcGVjaWZpY1N0YXRlbWVudCIsImdlbmVyYWxTdGF0ZW1lbnROb2RlIiwiZ2VuZXJhbE1ldGF2YXJpYWJsZSIsInNwZWNpZmljTWV0YXZhcmlhYmxlIiwiZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUiLCJwcm9wZXJ0eSIsInByb3BlcnR5VGVybSIsImdldFRlcm0iLCJ0ZXJtQ2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJwcm9wZXJ0eVRlcm1Ob2RlIiwicHJvcGVydHlUZXJtQ2hpbGROb2RlcyIsImRlc2NlbmQiLCJnZW5lcmF0b3IiLCJnZW5lcmF0b3JUZXJtIiwiZ2VuZXJhdG9yVGVybU5vZGUiLCJnZW5lcmF0b3JUZXJtQ2hpbGROb2RlcyIsImNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JUZXJtIiwiY29uc3RydWN0b3JUZXJtTm9kZSIsImNvbnN0cnVjdG9yVGVybUNoaWxkTm9kZXMiLCJjb21iaW5hdG9yIiwiY29tYmluYXRvclN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInN0YXRlbWVudENoaWxkTm9kZXMiLCJjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSIsImNvbWJpbmF0b3JTdGF0ZW1lbnRDaGlsZE5vZGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFzVmdCQTtlQUFBQTs7UUFUQUM7ZUFBQUE7O1FBZ0RBQztlQUFBQTs7UUF6REFDO2VBQUFBOztRQStDQUM7ZUFBQUE7O1FBVkFDO2VBQUFBOztRQVZBQztlQUFBQTs7OzRCQTdWZTtnQ0FFSzt1QkFFWjt5QkFDUzsrQkFDOEI7QUFHL0QsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMEJBQWM7QUFFcEMsTUFBTUMsZ0JBQWdCRixVQUFVLFVBQzFCRyxnQkFBZ0JILFVBQVUsVUFDMUJJLGlCQUFpQkosVUFBVSxXQUMzQkssb0JBQW9CTCxVQUFVLGNBQzlCTSxxQkFBcUJOLFVBQVUsZUFDL0JPLHdCQUF3QlAsVUFBVSxvQkFDbENRLGlDQUFpQ1IsVUFBVTtBQUVqRCxNQUFNUyxtQ0FBbUNDLG1DQUFtQjtJ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
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuXG5pbXBvcnQgeyBDb250aW51YXRpb25aaXBQYXNzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUsIFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSB9IGZyb20gXCIuLi9tZXRhVHlwZU5hbWVzXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1Ob2RlLCBmcmFtZUZyb21GcmFtZU5vZGUsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgbm9kZVF1ZXJ5IH0gPSBxdWVyeVV0aWxpdGllcztcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlXCIpLFxuICAgICAgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtXCIpLFxuICAgICAgbWV0YVR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YVR5cGVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgdGVybVZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpLFxuICAgICAgc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9tZXRhdmFyaWFibGUhXCIpO1xuXG5jbGFzcyBVbmlmeVRlcm1JbnRyaW5zaWNhbGx5UGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0ZXJtVmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlTm9kZS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgICAgICB2YXJpYWJsZSA9IGRlY2xhcmVkVmFyaWFibGU7ICAvLy9cblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICByZXR1cm4gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlTdGF0ZW1lbnRJbnRyaXNpY2FsbHlQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGU7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICByZXR1cm4gbWV0YXZhcmlhYmxlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0ZXJtVmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlTm9kZS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgICAgICB2YXJpYWJsZSA9IGRlY2xhcmVkVmFyaWFibGU7ICAvLy9cblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICByZXR1cm4gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGU7IC8vL1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGVOb2RlLmdldFZhcmlhYmxlSWRlbnRpZmllcigpLFxuICAgICAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllciksXG4gICAgICAgICAgICAgIHZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZTsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZS51bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBVbmlmeVRlcm1XaXRoUHJvcGVydHlQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGUudmFsaWRhdGUoY29udGV4dCwgKHR5cGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgICAgc3RyaWN0ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0ZXJtLnZhbGlkYXRlR2l2ZW5UeXBlKHN0cmljdCwgdHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgICAgICAgIH0sIGJhY2spO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIFVuaWZ5VGVybVdpdGhHZW5lcmF0b3JQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZTsgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGUudmFsaWRhdGUoY29udGV4dCwgKHR5cGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgICAgc3RyaWN0ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0ZXJtLnZhbGlkYXRlR2l2ZW5UeXBlKHN0cmljdCwgdHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgICAgICAgIH0sIGJhY2spO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIFVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdHlwZS52YWxpZGF0ZShjb250ZXh0LCAodHlwZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRlcm0udmFsaWRhdGVHaXZlblR5cGUoc3RyaWN0LCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25aaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogbWV0YVR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbE1ldGFUeXBlTm9kZSwgc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFUeXBlTm9kZSA9IGdlbmVyYWxNZXRhVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5vZGUuZ2V0TWV0YVR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSA9IChtZXRhVHlwZU5hbWUgPT09IFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSk7XG5cbiAgICAgICAgaWYgKCFtZXRhVHlwZU5hbWVTdGF0ZW1lbnRNZXRhVHlwZU5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlOyAvLy9cblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdHlwZS52YWxpZGF0ZShjb250ZXh0LCAodHlwZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzdHJpY3QgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRlcm0udmFsaWRhdGVHaXZlblR5cGUoc3RyaWN0LCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgdW5pZnlUZXJtSW5zdHJpbnNpY2FsbHlQYXNzID0gbmV3IFVuaWZ5VGVybUludHJpbnNpY2FsbHlQYXNzKCksXG4gICAgICB1bmlmeVN0YXRlbWVudEludHJpbnNpY2FsbHlQYXNzID0gbmV3IFVuaWZ5U3RhdGVtZW50SW50cmlzaWNhbGx5UGFzcygpLFxuICAgICAgdW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzID0gbmV3IFVuaWZ5TWV0YXZhcmlhYmxlSW50cmlzaWNhbGx5UGFzcygpLFxuICAgICAgdW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcyA9IG5ldyBVbmlmeVRlcm1XaXRoUHJvcGVydHlQYXNzKCksXG4gICAgICB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcyA9IG5ldyBVbmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcygpLFxuICAgICAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcyA9IG5ldyBVbmlmeVRlcm1XaXRoQ29uc3RydWN0b3JQYXNzKCksXG4gICAgICB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcyA9IG5ldyBVbmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcygpO1xuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtSW50cmluc2ljYWxseShnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGdlbmVyYWxUZXJtTm9kZSA9IGdlbmVyYWxUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNUZXJtTm9kZSA9IHNwZWNpZmljVGVybS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNUZXJtTm9kZTsgLy8vXG5cbiAgcmV0dXJuIHVuaWZ5VGVybUluc3RyaW5zaWNhbGx5UGFzcy5ydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVN0YXRlbWVudEludHJpbnNpY2FsbHkoZ2VuZXJhbFN0YXRlbWVudCwgc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudE5vZGUgPSBnZW5lcmFsU3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNTdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlOyAgLy8vXG5cbiAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50SW50cmluc2ljYWxseVBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5KGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbE1ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgIHNwZWNpZmljTWV0YXZhcmlhYmxlTm9kZSA9IHNwZWNpZmljTWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSwgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljTWV0YXZhcmlhYmxlTm9kZTtcblxuICByZXR1cm4gdW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzLnJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhQcm9wZXJ0eSh0ZXJtLCBwcm9wZXJ0eSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBwcm9wZXJ0eVRlcm0gPSBwcm9wZXJ0eS5nZXRUZXJtKCksXG4gICAgICAgIHRlcm1DaGlsZE5vZGVzID0gdGVybU5vZGUuZ2V0Q2hpbGROb2RlcygpLCAgLy8vXG4gICAgICAgIHByb3BlcnR5VGVybU5vZGUgPSBwcm9wZXJ0eVRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBwcm9wZXJ0eVRlcm1DaGlsZE5vZGVzID0gcHJvcGVydHlUZXJtTm9kZS5nZXRDaGlsZE5vZGVzKCk7ICAvLy9cblxuICByZXR1cm4gdW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcy5kZXNjZW5kKHByb3BlcnR5VGVybUNoaWxkTm9kZXMsIHRlcm1DaGlsZE5vZGVzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IodGVybSwgZ2VuZXJhdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYXRvclRlcm0gPSBnZW5lcmF0b3IuZ2V0VGVybSgpLFxuICAgICAgICB0ZXJtQ2hpbGROb2RlcyA9IHRlcm1Ob2RlLmdldENoaWxkTm9kZXMoKSwgIC8vL1xuICAgICAgICBnZW5lcmF0b3JUZXJtTm9kZSA9IGdlbmVyYXRvclRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmF0b3JUZXJtQ2hpbGROb2RlcyA9IGdlbmVyYXRvclRlcm1Ob2RlLmdldENoaWxkTm9kZXMoKTsgIC8vL1xuXG4gIHJldHVybiB1bmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcy5kZXNjZW5kKGdlbmVyYXRvclRlcm1DaGlsZE5vZGVzLCB0ZXJtQ2hpbGROb2RlcywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29uc3RydWN0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgdGVybUNoaWxkTm9kZXMgPSB0ZXJtTm9kZS5nZXRDaGlsZE5vZGVzKCksIC8vL1xuICAgICAgICBjb25zdHJ1Y3RvclRlcm0gPSBjb25zdHJ1Y3Rvci5nZXRUZXJtKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3RvclRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBjb25zdHJ1Y3RvclRlcm1DaGlsZE5vZGVzID0gY29uc3RydWN0b3JUZXJtTm9kZS5nZXRDaGlsZE5vZGVzKCk7ICAvLy9cblxuICByZXR1cm4gdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcy5kZXNjZW5kKGNvbnN0cnVjdG9yVGVybUNoaWxkTm9kZXMsIHRlcm1DaGlsZE5vZGVzLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBjb21iaW5hdG9yU3RhdGVtZW50ID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgc3RhdGVtZW50Q2hpbGROb2RlcyA9IHN0YXRlbWVudE5vZGUuZ2V0Q2hpbGROb2RlcygpLCAgLy8vXG4gICAgICAgIGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gY29tYmluYXRvclN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGNvbWJpbmF0b3JTdGF0ZW1lbnRDaGlsZE5vZGVzID0gY29tYmluYXRvclN0YXRlbWVudE5vZGUuZ2V0Q2hpbGROb2RlcygpOyAvLy9cblxuICByZXR1cm4gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvclBhc3MuZGVzY2VuZChjb21iaW5hdG9yU3RhdGVtZW50Q2hpbGROb2Rlcywgc3RhdGVtZW50Q2hpbGROb2RlcywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG59XG4iXSwibmFtZXMiOlsidW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5IiwidW5pZnlTdGF0ZW1lbnRJbnRyaW5zaWNhbGx5IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciIsInVuaWZ5VGVybUludHJpbnNpY2FsbHkiLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IiLCJ1bmlmeVRlcm1XaXRoR2VuZXJhdG9yIiwidW5pZnlUZXJtV2l0aFByb3BlcnR5Iiwibm9kZVF1ZXJ5IiwicXVlcnlVdGlsaXRpZXMiLCJ0eXBlTm9kZVF1ZXJ5IiwidGVybU5vZGVRdWVyeSIsIm1ldGFUeXBlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwidGVybVZhcmlhYmxlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiVW5pZnlUZXJtSW50cmluc2ljYWxseVBhc3MiLCJDb250aW51YXRpb25aaXBQYXNzIiwibWFwcyIsImdlbmVyYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsInJ1biIsImdlbmVyYWxUZXJtVmFyaWFibGVOb2RlIiwic3BlY2lmaWNUZXJtTm9kZSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJ0ZXJtTm9kZSIsInZhcmlhYmxlTm9kZSIsImNvbnRleHQiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZFZhcmlhYmxlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlIiwidGVybSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInVuaWZ5VGVybSIsIlVuaWZ5U3RhdGVtZW50SW50cmlzaWNhbGx5UGFzcyIsImdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlIiwic3RhdGVtZW50IiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsInVuaWZ5U3RhdGVtZW50IiwiVW5pZnlNZXRhdmFyaWFibGVJbnRyaXNpY2FsbHlQYXNzIiwiVW5pZnlUZXJtV2l0aFByb3BlcnR5UGFzcyIsImdlbmVyYWxUeXBlTm9kZSIsInR5cGVOb2RlIiwidHlwZSIsInR5cGVGcm9tVHlwZU5vZGUiLCJ2YWxpZGF0ZSIsInRlcm1Gcm9tVGVybU5vZGUiLCJzdHJpY3QiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZUdpdmVuVHlwZSIsIlVuaWZ5VGVybVdpdGhHZW5lcmF0b3JQYXNzIiwiVW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yUGFzcyIsIlVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JQYXNzIiwiZ2VuZXJhbE1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTmFtZSIsImdldE1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSIsIlNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIiwidW5pZnlUZXJtSW5zdHJpbnNpY2FsbHlQYXNzIiwidW5pZnlTdGF0ZW1lbnRJbnRyaW5zaWNhbGx5UGFzcyIsInVuaWZ5TWV0YXZhcmlhYmxlSW50cmlzaWNhbGx5UGFzcyIsInVuaWZ5VGVybVdpdGhQcm9wZXJ0eVBhc3MiLCJ1bmlmeVRlcm1XaXRoR2VuZXJhdG9yUGFzcyIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvclBhc3MiLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yUGFzcyIsImdlbmVyYWxUZXJtIiwic3BlY2lmaWNUZXJtIiwiZ2VuZXJhbFRlcm1Ob2RlIiwiZ2V0Tm9kZSIsImdlbmVyYWxOb2RlIiwic3BlY2lmaWNOb2RlIiwiZ2VuZXJhbFN0YXRlbWVudCIsInNwZWNpZmljU3RhdGVtZW50IiwiZ2VuZXJhbFN0YXRlbWVudE5vZGUiLCJnZW5lcmFsTWV0YXZhcmlhYmxlIiwic3BlY2lmaWNNZXRhdmFyaWFibGUiLCJnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljTWV0YXZhcmlhYmxlTm9kZSIsInByb3BlcnR5IiwicHJvcGVydHlUZXJtIiwiZ2V0VGVybSIsInRlcm1DaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInByb3BlcnR5VGVybU5vZGUiLCJwcm9wZXJ0eVRlcm1DaGlsZE5vZGVzIiwiZGVzY2VuZCIsImdlbmVyYXRvciIsImdlbmVyYXRvclRlcm0iLCJnZW5lcmF0b3JUZXJtTm9kZSIsImdlbmVyYXRvclRlcm1DaGlsZE5vZGVzIiwiY29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvclRlcm0iLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiY29uc3RydWN0b3JUZXJtQ2hpbGROb2RlcyIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50Iiwic3RhdGVtZW50Q2hpbGROb2RlcyIsImNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwiY29tYmluYXRvclN0YXRlbWVudENoaWxkTm9kZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTRUZ0JBO2VBQUFBOztRQVRBQztlQUFBQTs7UUFnREFDO2VBQUFBOztRQXpEQUM7ZUFBQUE7O1FBK0NBQztlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBVkFDO2VBQUFBOzs7NEJBblVlO2dDQUVLO3VCQUVaO3lCQUNTOytCQUM4QjtBQUcvRCxNQUFNLEVBQUVDLFNBQVMsRUFBRSxHQUFHQywwQkFBYztBQUVwQyxNQUFNQyxnQkFBZ0JGLFVBQVUsVUFDMUJHLGdCQUFnQkgsVUFBVSxVQUMxQkksb0JBQW9CSixVQUFVLGNBQzlCSyxxQkFBcUJMLFVBQVUsZUFDL0JNLHdCQUF3Qk4sVUFBVSxvQkFDbENPLGlDQUFpQ1AsVUFBVTtBQUVqRCxNQUFNUSxtQ0FBbUNDLG1DQUFtQjtJQUMxRCxPQUFPQyxPQUFPO1FBQ1o7WUFDRUMsa0JBQWtCTDtZQUNsQk0sbUJBQW1CVDtZQUNuQlUsS0FBSyxDQUFDQyx5QkFBeUJDLGtCQUFrQkMsZ0JBQWdCQyxpQkFBaUJDLFNBQVNDO2dCQUN6RixNQUFNQyxXQUFXTCxrQkFDWE0sZUFBZVAseUJBQXlCLEdBQUc7Z0JBRWpELElBQUlRO2dCQUVKQSxVQUFVTixnQkFBZ0IsR0FBRztnQkFFN0IsTUFBTU8scUJBQXFCRixhQUFhRyxxQkFBcUIsSUFDdkRDLG1CQUFtQkgsUUFB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
@@ -554,7 +554,7 @@ function constraintsFromJSON(json, context) {
554
554
  return constraints;
555
555
  }
556
556
  function typeAliasesFromJSON(json, context) {
557
- let { typeAliases = [] } = json;
557
+ let { typeAliases } = json;
558
558
  const { TypeAlias } = _elements.default, typeAliasesJSON = typeAliases; ///
559
559
  typeAliases = typeAliasesJSON.map((typeAliasJSON)=>{
560
560
  const json = typeAliasJSON, typeAlias = TypeAlias.fromJSON(json, context);
@@ -937,4 +937,4 @@ function findMetaTypeByName(name, context) {
937
937
  return metaType;
938
938
  }
939
939
 
940
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSwgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZUFuZFByZWZpeE5hbWUobmFtZSwgcHJlZml4TmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVUb05hbWVKU09OKG5hbWUpIHtcbiAgY29uc3QgbmFtZUpTT04gPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIG5hbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbEpTT04gPSBsYWJlbDsgIC8vL1xuXG4gIGpzb24gPSBsYWJlbEpTT047IC8vL1xuXG4gIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwcm92aXNpb25hbCB9ID0ganNvbjtcblxuICByZXR1cm4gcHJvdmlzaW9uYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICh7IGNvbnRleHQgfSA9IGpzb24pO1xuXG4gIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNGcm9tSlNPTihqc29uLCB0eXBlcywgY29udGV4dCkge1xuICBjb25zdCB7IHR5cGVzOiB0eXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cztcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRlcm1zSlNPTiA9IHRlcm1zOyAvLy9cblxuICB0ZXJtcyA9IHRlcm1zSlNPTi5tYXAoKHRlcm1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRlcm1KU09OLCAgLy8vXG4gICAgICAgICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua3NGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxpbmtzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGluayB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxpbmtzSlNPTiA9IGxpbmtzOyAvLy9cblxuICBsaW5rcyA9IGxpbmtzSlNPTi5tYXAoKGxpbmtKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxpbmtKU09OLCAgLy8vXG4gICAgICAgICAgbGluayA9IExpbmsuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGluaztcbiAgfSk7XG5cbiAgcmV0dXJuIGxpbmtzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJ1bGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUnVsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzOyAvLy9cblxuICBydWxlcyA9IHJ1bGVzSlNPTi5tYXAoKHJ1bGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJ1bGVKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZSA9IFJ1bGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VkRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IGNsb3NlZCB9ID0ganNvbjtcblxuICByZXR1cm4gY2xvc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHMsXG4gICAgZnJhbWVzSlNPTiA9IGZyYW1lczsgLy8vXG5cbiAgZnJhbWVzID0gZnJhbWVzSlNPTi5tYXAoKGZyYW1lSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBmcmFtZUpTT04sICAvLy9cbiAgICAgICAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxhYmVsc0pTT04gPSBsYWJlbHM7ICAvLy9cblxuICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBsYWJlbDtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXhpb21zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXhpb20gfSA9IGVsZW1lbnRzLFxuICAgICAgICBheGlvbXNKU09OID0gYXhpb21zOyAvLy9cblxuICBheGlvbXMgPSBheGlvbXNKU09OLm1hcCgoYXhpb21KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGF4aW9tSlNPTiwgIC8vL1xuICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBsZW1tYXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzY2hlbWFzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU2NoZW1hIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc2NoZW1hc0pTT04gPSBzY2hlbWFzOyAvLy9cblxuICBzY2hlbWFzID0gc2NoZW1hc0pTT04ubWFwKChzY2hlbWFKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHNjaGVtYUpTT04sICAvLy9cbiAgICAgIHNjaGVtYSA9IFNjaGVtYS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH0pO1xuXG4gIHJldHVybiBzY2hlbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByZW1pc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJlbWlzZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcGFyYW1ldGVycyB9ID0ganNvbjtcblxuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVyczsgLy8vXG5cbiAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OLm1hcCgocGFyYW1ldGVySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwYXJhbWV0ZXJKU09OLCAgLy8vXG4gICAgICAgICAgcGFyYW1ldGVyID0gUGFyYW1ldGVyLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBlcXVhbGl0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllczsgLy8vXG5cbiAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OLm1hcCgoZXF1YWxpdHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGVxdWFsaXR5SlNPTiwgIC8vL1xuICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeE5hbWVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gcHJlZml4TmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgeyBuYW1lLCBwcmVmaXhOYW1lIH0gPSBqc29uLFxuICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZUFuZFByZWZpeE5hbWUobmFtZSwgcHJlZml4TmFtZSwgY29udGV4dCksXG4gICAgICAgICAgc3VwZXJUeXBlID0gdHlwZTsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50czsgLy8vXG5cbiAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNKU09OLm1hcCgoc3RhdGVtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3NlcnRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiwgU2NoZW1hQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIENvbnRhaW5lZEFzc2VydGlvbiwgU2lnbmF0dXJlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgU2NoZW1hQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgRGVmaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KVxuICAgICAgICAgICAgICAgICAgIHx8IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB8fCBDb250YWluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB8fCBTaWduYXR1cmVBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGdlbmVyYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBHZW5lcmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBnZW5lcmF0b3JzSlNPTiA9IGdlbmVyYXRvcnM7IC8vL1xuXG4gIGdlbmVyYXRvcnMgPSBnZW5lcmF0b3JzSlNPTi5tYXAoKGdlbmVyYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZ2VuZXJhdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGdlbmVyYXRvciA9IEdlbmVyYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBnZW5lcmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzOyAvLy9cblxuICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTi5tYXAoKGNvbmplY3R1cmVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbmplY3R1cmVKU09OLCAgLy8vXG4gICAgICAgICAgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzOyAvLy9cblxuICBjb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzSlNPTi5tYXAoKGNvbWJpbmF0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbWJpbmF0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnM7IC8vL1xuXG4gIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNKU09OLm1hcCgoYXNzdW1wdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzdW1wdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uID0gQXNzdW1wdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJhaW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RyYWludHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJhaW50IH0gPSBlbGVtZW50cyxcbiAgICBjb25zdHJhaW50c0pTT04gPSBjb25zdHJhaW50czsgLy8vXG5cbiAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0pTT04ubWFwKChjb25zdHJhaW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJhaW50SlNPTiwgIC8vL1xuICAgICAgY29uc3RyYWludCA9IENvbnN0cmFpbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUFsaWFzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGVBbGlhc2VzID0gW10gfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlQWxpYXMgfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlQWxpYXNlc0pTT04gPSB0eXBlQWxpYXNlczsgLy8vXG5cbiAgdHlwZUFsaWFzZXMgPSB0eXBlQWxpYXNlc0pTT04ubWFwKCh0eXBlQWxpYXNKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVBbGlhc0pTT04sICAvLy9cbiAgICAgICAgICB0eXBlQWxpYXMgPSBUeXBlQWxpYXMuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZUFsaWFzO1xuICB9KTtcblxuICByZXR1cm4gdHlwZUFsaWFzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGVQcmVmaXhlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVQcmVmaXggfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzOyAvLy9cblxuICB0eXBlUHJlZml4ZXMgPSB0eXBlUHJlZml4ZXNKU09OLm1hcCgodHlwZVByZWZpeEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZVByZWZpeEpTT04sICAvLy9cbiAgICAgICAgICB0eXBlUHJlZml4ID0gVHlwZVByZWZpeC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJ1Y3RvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnM7IC8vL1xuXG4gIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04ubWFwKChjb25zdHJ1Y3RvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uc3RydWN0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICBjb25zdCB7IGNvbnRleHRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzID0gY29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7XG4gICAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICAgIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlY2xhcmVkVmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlc0pTT04ubWFwKChkZWNsYXJlZFZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZFZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb2NlZHVyZVJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZXNKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlczsgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlcyA9IHByb2NlZHVyZVJlZmVyZW5jZXNKU09OLm1hcCgocHJvY2VkdXJlUmVmZXJlbmNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OLCAgLy8vXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlY2xhcmVkTWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXM7IC8vL1xuXG4gIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04ubWFwKChkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlOyAgLy8vXG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9UeXBlSlNPTih0eXBlKSB7XG4gIGxldCB0eXBlSlNPTiA9IG51bGw7XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBhYnJpZGdlZCA9IHRydWU7XG5cbiAgICB0eXBlSlNPTiA9IHR5cGUudG9KU09OKGFicmlkZ2VkKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsVG9MYWJlbEpTT04obGFiZWwpIHtcbiAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgcmV0dXJuIGxhYmVsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gbWV0YVR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHByb3Zpc2lvbmFsSlNPTiA9IHByb3Zpc2lvbmFsOyAgLy8vXG5cbiAgcmV0dXJuIHByb3Zpc2lvbmFsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRUb01uZW1pY0NvbnRleHRKU09OKG1uZW1pY0NvbnRleHQpIHtcbiAgY29uc3QgbW5lbWljQ29udGV4dEpTT04gPSBtbmVtaWNDb250ZXh0LnRvSlNPTigpO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbkZyb21TdWJzdGl0dXRpb25KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUZXJtU3Vic3RpdHV0aW9uLCBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8IFN0YXRlbWVudFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNUb1R5cGVzSlNPTih0eXBlcykge1xuICBjb25zdCB0eXBlc0pTT04gPSB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHJldHVybiB0ZXJtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtzVG9MaW5rc0pTT04obGlua3MpIHtcbiAgY29uc3QgbGlua3NKU09OID0gbGlua3MubWFwKChsaW5rKSA9PiB7XG4gICAgY29uc3QgbGlua0pTT04gPSBsaW5rLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxpbmtKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGlua3NKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcnVsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNUb0xlbW1hc0pTT04obGVtbWFzKSB7XG4gIGNvbnN0IGxlbW1hc0pTT04gPSBbXTtcblxuICByZXR1cm4gbGVtbWFzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlZFRvQ2xvc2VkSlNPTihjbG9zZWQpIHtcbiAgY29uc3QgY2xvc2VkSlNPTiA9IGNsb3NlZDsgIC8vL1xuXG4gIHJldHVybiBjbG9zZWRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzVG9MYWJlbHNKU09OKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgIHJldHVybiBsYWJlbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzVG9GcmFtZXNKU09OKGZyYW1lcykge1xuICBjb25zdCBmcmFtZXNKU09OID0gZnJhbWVzLm1hcCgoZnJhbWUpID0+IHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZS50b0pTT04oKTtcblxuICAgIHJldHVybiBmcmFtZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zVG9BeGlvbXNKU09OKGF4aW9tcykge1xuICBjb25zdCBheGlvbXNKU09OID0gYXhpb21zLm1hcCgoYXhpb20pID0+IHtcbiAgICBjb25zdCBheGlvbUpTT04gPSBheGlvbS50b0pTT04oKTtcblxuICAgIHJldHVybiBheGlvbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hc1RvU2NoZW1hc0pTT04oc2NoZW1hcykge1xuICBjb25zdCBzY2hlbWFzSlNPTiA9IHNjaGVtYXMubWFwKChzY2hlbWEpID0+IHtcbiAgICBjb25zdCBzY2hlbWFKU09OID0gc2NoZW1hLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHNjaGVtYUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzY2hlbWFzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzVG9QcmVtaXNlc0pTT04ocHJlbWlzZXMpIHtcbiAgY29uc3QgcHJlbWlzZXNKU09OID0gcHJlbWlzZXMubWFwKChwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZUpTT04gPSBwcmVtaXNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByZW1pc2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNUb1RoZW9yZW1zSlNPTih0aGVvcmVtcykge1xuICBjb25zdCB0aGVvcmVtc0pTT04gPSB0aGVvcmVtcy5tYXAoKHRoZW9yZW0pID0+IHtcbiAgICBjb25zdCB0aGVvcmVtSlNPTiA9IHRoZW9yZW0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04oaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXMubWFwKChoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc0pTT04gPSBoeXBvdGhlc2lzLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNKU09OO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhOYW1lVG9QcmV2aXhOYW1lSlNPTihwcmVmaXhOYW1lKSB7XG4gIGNvbnN0IHByZWZpeE5hbWVKU09OID0gcHJlZml4TmFtZTsgIC8vL1xuXG4gIHJldHVybiBwcmVmaXhOYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc0pTT04gPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgY29uc3QgYWJyaWRnZWQgPSB0cnVlLFxuICAgICAgc3VwZXJUeXBlSlNPTiA9IHN1cGVyVHlwZS50b0pTT04oYWJyaWRnZWQpO1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHByb3BlcnRpZXMpIHtcbiAgY29uc3QgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzLm1hcCgocHJvcGVydHkpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUpTT04gPSBwcm9wZXJ0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcm9wZXJ0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OKGVxdWFsaXRpZXMpIHtcbiAgY29uc3QgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzLm1hcCgoZXF1YWxpdHkpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eUpTT04gPSBlcXVhbGl0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBlcXVhbGl0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpIHtcbiAgY29uc3Qgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTihhc3NlcnRpb25zKSB7XG4gIGNvbnN0IGFzc2VydGlvbnNKU09OID0gYXNzZXJ0aW9ucy5tYXAoKGFzc2VydGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc2VydGlvbkpTT04gPSBhc3NlcnRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc2VydGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdG9yc1RvR2VuZXJhdG9yc0pTT04oZ2VuZXJhdG9ycykge1xuICBjb25zdCBnZW5lcmF0b3JzSlNPTiA9IGdlbmVyYXRvcnMubWFwKChnZW5lcmF0b3IpID0+IHtcbiAgICBjb25zdCBnZW5lcmF0b3JKU09OID0gZ2VuZXJhdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBnZW5lcmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cmFpbnRzVG9Db25zdHJhaW50c0pTT04oY29uc3RyYWludHMpIHtcbiAgY29uc3QgY29uc3RyYWludHNKU09OID0gY29uc3RyYWludHMubWFwKChjb25zdHJhaW50KSA9PiB7XG4gICAgY29uc3QgY29uc3RyYWludEpTT04gPSBjb25zdHJhaW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RyYWludHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnMubWFwKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvbkpTT04gPSBhc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUFsaWFzZXNUb1R5cGVBbGlhc2VzSlNPTih0eXBlQWxpYXNlcykge1xuICBjb25zdCB0eXBlQWxpYXNlc0pTTE9OICA9IHR5cGVBbGlhc2VzLm1hcCgodHlwZUFsaWFzZSkgPT4ge1xuICAgIGNvbnN0IHR5cGVBbGlhc2VzSlNPTiA9IHR5cGVBbGlhc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZUFsaWFzZXNKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZUFsaWFzZXNKU0xPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTihzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9ucy5tYXAoKHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25KU09OID0gc3VwcG9zaXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTihjb25zdHJ1Y3RvcnMpIHtcbiAgY29uc3QgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9ycy5tYXAoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgY29uc3QgY29uc3RydWN0b3JKU09OID0gY29uc3RydWN0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTih0eXBlUHJlZml4ZXMpIHtcbiAgY29uc3QgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlcy5tYXAoKHR5cGVQcmVmaXgpID0+IHtcbiAgICBjb25zdCB0eXBlUHJlZml4SlNPTiA9IHR5cGVQcmVmaXgudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeEpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04oc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMubWFwKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25KU09OID0gc3Vic3RpdHV0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OKG1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzLm1hcCgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c1RvTW5lbWljQ29udGV4dHNKU09OKG1uZW1pY0NvbnRleHRzKSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzSlNPTiA9IG1uZW1pY0NvbnRleHRzLm1hcCgobW5lbWljQ29udGV4dCkgPT4ge1xuICAgIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04oZGVjbGFyZWRWYXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXMubWFwKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUpTT04gPSBkZWNsYXJlZFZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlc1RvUHJvY2VkdXJlUmVmZXJlbmNlc0pTT04ocHJvY2VkdXJlUmVmZXJlbmNlcykge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VzSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZXMubWFwKChwcm9jZWR1cmVSZWZlcmVuY2UpID0+IHtcbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTihkZWNsYXJlZE1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcy5tYXAoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZnVuY3Rpb24gZmluZFR5cGVCeU5hbWVBbmRQcmVmaXhOYW1lKG5hbWUsIHByZWZpeE5hbWUsIGNvbnRleHQpIHtcbiAgbGV0IHR5cGU7XG5cbiAgY29uc3Qgc3RyaWN0ID0gKHByZWZpeE5hbWUgPT09IG51bGwpLFxuICAgICAgICB0eXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICBpZiAoc3RyaWN0KSB7XG4gICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwcmVmaXhlZFR5cGVOYW1lID0gYCR7cHJlZml4TmFtZX0ke25hbWV9YDtcblxuICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIGZpbmRNZXRhVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSB7XG4gIGNvbnN0IG1ldGFUeXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuIl0sIm5hbWVzIjpbImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNsb3NlZEZyb21KU09OIiwiY2xvc2VkVG9DbG9zZWRKU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29uc3RyYWludHNGcm9tSlNPTiIsImNvbnN0cmFpbnRzVG9Db25zdHJhaW50c0pTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsImVxdWFsaXRpZXNGcm9tSlNPTiIsImVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OIiwiZnJhbWVzRnJvbUpTT04iLCJmcmFtZXNUb0ZyYW1lc0pTT04iLCJnZW5lcmF0b3JzRnJvbUpTT04iLCJnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwibGFiZWxGcm9tSlNPTiIsImxhYmVsVG9MYWJlbEpTT04iLCJsYWJlbHNGcm9tSlNPTiIsImxhYmVsc1RvTGFiZWxzSlNPTiIsImxlbW1hc0Zyb21KU09OIiwibGVtbWFzVG9MZW1tYXNKU09OIiwibGlua3NGcm9tSlNPTiIsImxpbmtzVG9MaW5rc0pTT04iLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibW5lbWljQ29udGV4dEZyb21KU09OIiwibW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04iLCJtbmVtaWNDb250ZXh0c0Zyb21KU09OIiwibW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTiIsIm5hbWVUb05hbWVKU09OIiwicGFyYW1ldGVyc0Zyb21KU09OIiwicGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04iLCJwcmVmaXhOYW1lRnJvbUpTT04iLCJwcmVmaXhOYW1lVG9QcmV2aXhOYW1lSlNPTiIsInByZW1pc2VzRnJvbUpTT04iLCJwcmVtaXNlc1RvUHJlbWlzZXNKU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlc0Zyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlc1RvUHJvY2VkdXJlUmVmZXJlbmNlc0pTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzY2hlbWFzRnJvbUpTT04iLCJzY2hlbWFzVG9TY2hlbWFzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlQWxpYXNlc0Zyb21KU09OIiwidHlwZUFsaWFzZXNUb1R5cGVBbGlhc2VzSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsImpzb24iLCJjb250ZXh0IiwidHlwZSIsIm5hbWUiLCJwcmVmaXhOYW1lIiwiZmluZFR5cGVCeU5hbWVBbmRQcmVmaXhOYW1lIiwibmFtZUpTT04iLCJsYWJlbCIsIkxhYmVsIiwiZWxlbWVudHMiLCJsYWJlbEpTT04iLCJmcm9tSlNPTiIsIm1ldGFUeXBlIiwic3RyaW5nIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwiZGVkdWN0aW9uIiwiRGVkdWN0aW9uIiwiZGVkdWN0aW9uSlNPTiIsInNpZ25hdHVyZSIsIlNpZ25hdHVyZSIsInNpZ25hdHVyZUpTT04iLCJjb25jbHVzaW9uIiwiQ29uY2x1c2lvbiIsImNvbmNsdXNpb25KU09OIiwicHJvdmlzaW9uYWwiLCJyZWxlYXNlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwidHlwZXMiLCJ0eXBlc0pTT04iLCJUeXBlIiwiZm9yRWFjaCIsInR5cGVKU09OIiwicHVzaCIsInRlcm1zIiwiVGVybSIsInRlcm1zSlNPTiIsIm1hcCIsInRlcm1KU09OIiwidGVybSIsImxpbmtzIiwiTGluayIsImxpbmtzSlNPTiIsImxpbmtKU09OIiwibGluayIsInJ1bGVzIiwiUnVsZSIsInJ1bGVzSlNPTiIsInJ1bGVKU09OIiwicnVsZSIsImNsb3NlZCIsImZyYW1lcyIsIkZyYW1lIiwiZnJhbWVzSlNPTiIsImZyYW1lSlNPTiIsImZyYW1lIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwibGVtbWFzIiwic2NoZW1hcyIsIlNjaGVtYSIsInNjaGVtYXNKU09OIiwic2NoZW1hSlNPTiIsInNjaGVtYSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJlcXVhbGl0aWVzIiwiRXF1YWxpdHkiLCJlcXVhbGl0aWVzSlNPTiIsImVxdWFsaXR5SlNPTiIsImVxdWFsaXR5IiwicHJvcGVydGllcyIsIlByb3BlcnR5IiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eUpTT04iLCJwcm9wZXJ0eSIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZUpTT04iLCJzdXBlclR5cGUiLCJoeXBvdGhlc2VzIiwiSHlwb3RoZXNpcyIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNpc0pTT04iLCJoeXBvdGhlc2lzIiwic3RhdGVtZW50cyIsIlN0YXRlbWVudCIsInN0YXRlbWVudHNKU09OIiwic3RhdGVtZW50SlNPTiIsInN0YXRlbWVudCIsImFzc2VydGlvbnMiLCJUeXBlQXNzZXJ0aW9uIiwiU2NoZW1hQXNzZXJ0aW9uIiwiRGVmaW5lZEFzc2VydGlvbiIsIlByb3BlcnR5QXNzZXJ0aW9uIiwiU3VicHJvb2ZBc3NlcnRpb24iLCJDb250YWluZWRBc3NlcnRpb24iLCJTaWduYXR1cmVBc3NlcnRpb24iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbkpTT04iLCJhc3NlcnRpb24iLCJnZW5lcmF0b3JzIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yc0pTT04iLCJnZW5lcmF0b3JKU09OIiwiZ2VuZXJhdG9yIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwiY29uc3RyYWludHMiLCJDb25zdHJhaW50IiwiY29uc3RyYWludHNKU09OIiwiY29uc3RyYWludEpTT04iLCJjb25zdHJhaW50IiwidHlwZUFsaWFzZXMiLCJUeXBlQWxpYXMiLCJ0eXBlQWxpYXNlc0pTT04iLCJ0eXBlQWxpYXNKU09OIiwidHlwZUFsaWFzIiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVzSlNPTiIsIm1ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGUiLCJjb250ZXh0cyIsIm1uZW1pY0NvbnRleHRzIiwiZGVjbGFyZWRWYXJpYWJsZXMiLCJWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlIiwicHJvY2VkdXJlUmVmZXJlbmNlcyIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZXNKU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImFicmlkZ2VkIiwidG9KU09OIiwibWV0YVR5cGVKU09OIiwicHJvdmlzaW9uYWxKU09OIiwibW5lbWljQ29udGV4dEpTT04iLCJUZXJtU3Vic3RpdHV0aW9uIiwiU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwibGVtbWFzSlNPTiIsImNsb3NlZEpTT04iLCJwcmVmaXhOYW1lSlNPTiIsInR5cGVBbGlhc2VzSlNMT04iLCJ0eXBlQWxpYXNlIiwibW5lbWljQ29udGV4dHNKU09OIiwic3RyaWN0IiwidHlwZU5hbWUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJwcmVmaXhlZFR5cGVOYW1lIiwiZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBZ1lnQkE7ZUFBQUE7O1FBNmZBQztlQUFBQTs7UUF2YkFDO2VBQUFBOztRQXllQUM7ZUFBQUE7O1FBMXRCQUM7ZUFBQUE7O1FBNmpCQUM7ZUFBQUE7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
940
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSwgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZUFuZFByZWZpeE5hbWUobmFtZSwgcHJlZml4TmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVUb05hbWVKU09OKG5hbWUpIHtcbiAgY29uc3QgbmFtZUpTT04gPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIG5hbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbEpTT04gPSBsYWJlbDsgIC8vL1xuXG4gIGpzb24gPSBsYWJlbEpTT047IC8vL1xuXG4gIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwcm92aXNpb25hbCB9ID0ganNvbjtcblxuICByZXR1cm4gcHJvdmlzaW9uYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICh7IGNvbnRleHQgfSA9IGpzb24pO1xuXG4gIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNGcm9tSlNPTihqc29uLCB0eXBlcywgY29udGV4dCkge1xuICBjb25zdCB7IHR5cGVzOiB0eXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cztcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRlcm1zSlNPTiA9IHRlcm1zOyAvLy9cblxuICB0ZXJtcyA9IHRlcm1zSlNPTi5tYXAoKHRlcm1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRlcm1KU09OLCAgLy8vXG4gICAgICAgICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua3NGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxpbmtzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGluayB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxpbmtzSlNPTiA9IGxpbmtzOyAvLy9cblxuICBsaW5rcyA9IGxpbmtzSlNPTi5tYXAoKGxpbmtKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxpbmtKU09OLCAgLy8vXG4gICAgICAgICAgbGluayA9IExpbmsuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGluaztcbiAgfSk7XG5cbiAgcmV0dXJuIGxpbmtzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJ1bGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUnVsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzOyAvLy9cblxuICBydWxlcyA9IHJ1bGVzSlNPTi5tYXAoKHJ1bGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJ1bGVKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZSA9IFJ1bGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VkRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IGNsb3NlZCB9ID0ganNvbjtcblxuICByZXR1cm4gY2xvc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHMsXG4gICAgZnJhbWVzSlNPTiA9IGZyYW1lczsgLy8vXG5cbiAgZnJhbWVzID0gZnJhbWVzSlNPTi5tYXAoKGZyYW1lSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBmcmFtZUpTT04sICAvLy9cbiAgICAgICAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxhYmVsc0pTT04gPSBsYWJlbHM7ICAvLy9cblxuICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBsYWJlbDtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXhpb21zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXhpb20gfSA9IGVsZW1lbnRzLFxuICAgICAgICBheGlvbXNKU09OID0gYXhpb21zOyAvLy9cblxuICBheGlvbXMgPSBheGlvbXNKU09OLm1hcCgoYXhpb21KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGF4aW9tSlNPTiwgIC8vL1xuICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBsZW1tYXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzY2hlbWFzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU2NoZW1hIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc2NoZW1hc0pTT04gPSBzY2hlbWFzOyAvLy9cblxuICBzY2hlbWFzID0gc2NoZW1hc0pTT04ubWFwKChzY2hlbWFKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHNjaGVtYUpTT04sICAvLy9cbiAgICAgIHNjaGVtYSA9IFNjaGVtYS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH0pO1xuXG4gIHJldHVybiBzY2hlbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByZW1pc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJlbWlzZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcGFyYW1ldGVycyB9ID0ganNvbjtcblxuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVyczsgLy8vXG5cbiAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OLm1hcCgocGFyYW1ldGVySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwYXJhbWV0ZXJKU09OLCAgLy8vXG4gICAgICAgICAgcGFyYW1ldGVyID0gUGFyYW1ldGVyLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBlcXVhbGl0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllczsgLy8vXG5cbiAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OLm1hcCgoZXF1YWxpdHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGVxdWFsaXR5SlNPTiwgIC8vL1xuICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeE5hbWVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gcHJlZml4TmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgeyBuYW1lLCBwcmVmaXhOYW1lIH0gPSBqc29uLFxuICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZUFuZFByZWZpeE5hbWUobmFtZSwgcHJlZml4TmFtZSwgY29udGV4dCksXG4gICAgICAgICAgc3VwZXJUeXBlID0gdHlwZTsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50czsgLy8vXG5cbiAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNKU09OLm1hcCgoc3RhdGVtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3NlcnRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiwgU2NoZW1hQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIENvbnRhaW5lZEFzc2VydGlvbiwgU2lnbmF0dXJlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgU2NoZW1hQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgRGVmaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KVxuICAgICAgICAgICAgICAgICAgIHx8IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB8fCBDb250YWluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB8fCBTaWduYXR1cmVBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGdlbmVyYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBHZW5lcmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBnZW5lcmF0b3JzSlNPTiA9IGdlbmVyYXRvcnM7IC8vL1xuXG4gIGdlbmVyYXRvcnMgPSBnZW5lcmF0b3JzSlNPTi5tYXAoKGdlbmVyYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZ2VuZXJhdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGdlbmVyYXRvciA9IEdlbmVyYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBnZW5lcmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzOyAvLy9cblxuICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTi5tYXAoKGNvbmplY3R1cmVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbmplY3R1cmVKU09OLCAgLy8vXG4gICAgICAgICAgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzOyAvLy9cblxuICBjb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzSlNPTi5tYXAoKGNvbWJpbmF0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbWJpbmF0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnM7IC8vL1xuXG4gIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNKU09OLm1hcCgoYXNzdW1wdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzdW1wdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uID0gQXNzdW1wdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJhaW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RyYWludHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJhaW50IH0gPSBlbGVtZW50cyxcbiAgICBjb25zdHJhaW50c0pTT04gPSBjb25zdHJhaW50czsgLy8vXG5cbiAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0pTT04ubWFwKChjb25zdHJhaW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJhaW50SlNPTiwgIC8vL1xuICAgICAgY29uc3RyYWludCA9IENvbnN0cmFpbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUFsaWFzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGVBbGlhc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZUFsaWFzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdHlwZUFsaWFzZXNKU09OID0gdHlwZUFsaWFzZXM7IC8vL1xuXG4gIHR5cGVBbGlhc2VzID0gdHlwZUFsaWFzZXNKU09OLm1hcCgodHlwZUFsaWFzSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlQWxpYXNKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZUFsaWFzID0gVHlwZUFsaWFzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVBbGlhcztcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVBbGlhc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlUHJlZml4ZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlUHJlZml4IH0gPSBlbGVtZW50cyxcbiAgICAgICAgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlczsgLy8vXG5cbiAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTi5tYXAoKHR5cGVQcmVmaXhKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVQcmVmaXhKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeCA9IFR5cGVQcmVmaXguZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeDtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RydWN0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uc3RydWN0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzOyAvLy9cblxuICBjb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNKU09OLm1hcCgoY29uc3RydWN0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbnN0cnVjdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uczsgIC8vL1xuXG4gIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04ubWFwKChzdXBwb3NpdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3VwcG9zaXRpb25KU09OLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbiA9IFN1cHBvc2l0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyB9ID0ganNvbjsgIC8vL1xuXG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9uczsgLy8vXG5cbiAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXM7IC8vL1xuXG4gIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTi5tYXAoKG1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgY29uc3QgeyBjb250ZXh0cyB9ID0ganNvbjtcblxuICBjb25zdCBtbmVtaWNDb250ZXh0cyA9IGNvbnRleHRzLm1hcCgoY29udGV4dCkgPT4ge1xuICAgIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICBjb25zdCBtbmVtaWNDb250ZXh0ID0gTW5lbWljQ29udGV4dC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0OyAgLy8vXG4gIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZFZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXM7IC8vL1xuXG4gIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRWYXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZGVjbGFyZWRWYXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSB2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb2NlZHVyZVJlZmVyZW5jZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VzSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZXM7IC8vL1xuXG4gIHByb2NlZHVyZVJlZmVyZW5jZXMgPSBwcm9jZWR1cmVSZWZlcmVuY2VzSlNPTi5tYXAoKHByb2NlZHVyZVJlZmVyZW5jZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiwgIC8vL1xuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IFByb2NlZHVyZVJlZmVyZW5jZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzOyAvLy9cblxuICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBsZXQgdHlwZUpTT04gPSBudWxsO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgY29uc3QgYWJyaWRnZWQgPSB0cnVlO1xuXG4gICAgdHlwZUpTT04gPSB0eXBlLnRvSlNPTihhYnJpZGdlZCk7XG4gIH1cblxuICByZXR1cm4gdHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTihkZWR1Y3Rpb24pIHtcbiAgY29uc3QgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbi50b0pTT04oKTtcblxuICByZXR1cm4gZGVkdWN0aW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTihzaWduYXR1cmUpIHtcbiAgY29uc3Qgc2lnbmF0dXJlSlNPTiA9IChzaWduYXR1cmUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzaWduYXR1cmVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04oY29uY2x1c2lvbikge1xuICBjb25zdCBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTihwcm92aXNpb25hbCkge1xuICBjb25zdCBwcm92aXNpb25hbEpTT04gPSBwcm92aXNpb25hbDsgIC8vL1xuXG4gIHJldHVybiBwcm92aXNpb25hbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTihtbmVtaWNDb250ZXh0KSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgU3RhdGVtZW50U3Vic3RpdHV0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fCBTdGF0ZW1lbnRTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGVybUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rc1RvTGlua3NKU09OKGxpbmtzKSB7XG4gIGNvbnN0IGxpbmtzSlNPTiA9IGxpbmtzLm1hcCgobGluaykgPT4ge1xuICAgIGNvbnN0IGxpbmtKU09OID0gbGluay50b0pTT04oKTtcblxuICAgIHJldHVybiBsaW5rSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxpbmtzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzVG9SdWxlc0pTT04ocnVsZXMpIHtcbiAgY29uc3QgcnVsZXNKU09OID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgY29uc3QgcnVsZUpTT04gPSBydWxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJ1bGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVtbWFzVG9MZW1tYXNKU09OKGxlbW1hcykge1xuICBjb25zdCBsZW1tYXNKU09OID0gW107XG5cbiAgcmV0dXJuIGxlbW1hc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZWRUb0Nsb3NlZEpTT04oY2xvc2VkKSB7XG4gIGNvbnN0IGNsb3NlZEpTT04gPSBjbG9zZWQ7ICAvLy9cblxuICByZXR1cm4gY2xvc2VkSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1RvTGFiZWxzSlNPTihsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbGFiZWxKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpIHtcbiAgY29uc3QgZnJhbWVzSlNPTiA9IGZyYW1lcy5tYXAoKGZyYW1lKSA9PiB7XG4gICAgY29uc3QgZnJhbWVKU09OID0gZnJhbWUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZnJhbWVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc1RvQXhpb21zSlNPTihheGlvbXMpIHtcbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tcy5tYXAoKGF4aW9tKSA9PiB7XG4gICAgY29uc3QgYXhpb21KU09OID0gYXhpb20udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXhpb21KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjaGVtYXNUb1NjaGVtYXNKU09OKHNjaGVtYXMpIHtcbiAgY29uc3Qgc2NoZW1hc0pTT04gPSBzY2hlbWFzLm1hcCgoc2NoZW1hKSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hSlNPTiA9IHNjaGVtYS50b0pTT04oKTtcblxuICAgIHJldHVybiBzY2hlbWFKU09OO1xuICB9KTtcblxuICByZXR1cm4gc2NoZW1hc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzSlNPTiA9IHByZW1pc2VzLm1hcCgocHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VKU09OID0gcHJlbWlzZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcmVtaXNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhlb3JlbXMpIHtcbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXMubWFwKCh0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgdGhlb3JlbUpTT04gPSB0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04ocGFyYW1ldGVycykge1xuICBjb25zdCBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnMubWFwKChwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJKU09OID0gcGFyYW1ldGVyLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4TmFtZVRvUHJldml4TmFtZUpTT04ocHJlZml4TmFtZSkge1xuICBjb25zdCBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeE5hbWU7ICAvLy9cblxuICByZXR1cm4gcHJlZml4TmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTihzdXBlclR5cGVzKSB7XG4gIGNvbnN0IHN1cGVyVHlwZXNKU09OID0gc3VwZXJUeXBlcy5tYXAoKHN1cGVyVHlwZSkgPT4ge1xuICAgIGNvbnN0IGFicmlkZ2VkID0gdHJ1ZSxcbiAgICAgIHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGUudG9KU09OKGFicmlkZ2VkKTtcblxuICAgIHJldHVybiBzdXBlclR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTihlcXVhbGl0aWVzKSB7XG4gIGNvbnN0IGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllcy5tYXAoKGVxdWFsaXR5KSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlKU09OID0gZXF1YWxpdHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTihzdGF0ZW1lbnRzKSB7XG4gIGNvbnN0IHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50cy5tYXAoKHN0YXRlbWVudCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucykge1xuICBjb25zdCBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnMubWFwKChhc3NlcnRpb24pID0+IHtcbiAgICBjb25zdCBhc3NlcnRpb25KU09OID0gYXNzZXJ0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OKGdlbmVyYXRvcnMpIHtcbiAgY29uc3QgZ2VuZXJhdG9yc0pTT04gPSBnZW5lcmF0b3JzLm1hcCgoZ2VuZXJhdG9yKSA9PiB7XG4gICAgY29uc3QgZ2VuZXJhdG9ySlNPTiA9IGdlbmVyYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gZ2VuZXJhdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OKGNvbnN0cmFpbnRzKSB7XG4gIGNvbnN0IGNvbnN0cmFpbnRzSlNPTiA9IGNvbnN0cmFpbnRzLm1hcCgoY29uc3RyYWludCkgPT4ge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRKU09OID0gY29uc3RyYWludC50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJhaW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04oY29uamVjdHVyZXMpIHtcbiAgY29uc3QgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXMubWFwKChjb25qZWN0dXJlKSA9PiB7XG4gICAgY29uc3QgY29uamVjdHVyZUpTT04gPSBjb25qZWN0dXJlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTihjb21iaW5hdG9ycykge1xuICBjb25zdCBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9ycy5tYXAoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBjb21iaW5hdG9ySlNPTiA9IGNvbWJpbmF0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OKGFzc3VtcHRpb25zKSB7XG4gIGNvbnN0IGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zLm1hcCgoYXNzdW1wdGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc3VtcHRpb25KU09OID0gYXNzdW1wdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVBbGlhc2VzVG9UeXBlQWxpYXNlc0pTT04odHlwZUFsaWFzZXMpIHtcbiAgY29uc3QgdHlwZUFsaWFzZXNKU0xPTiAgPSB0eXBlQWxpYXNlcy5tYXAoKHR5cGVBbGlhc2UpID0+IHtcbiAgICBjb25zdCB0eXBlQWxpYXNlc0pTT04gPSB0eXBlQWxpYXNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVBbGlhc2VzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVBbGlhc2VzSlNMT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTihtbmVtaWNDb250ZXh0cykge1xuICBjb25zdCBtbmVtaWNDb250ZXh0c0pTT04gPSBtbmVtaWNDb250ZXh0cy5tYXAoKG1uZW1pY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCBtbmVtaWNDb250ZXh0SlNPTiA9IG1uZW1pY0NvbnRleHQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OKGRlY2xhcmVkVmFyaWFibGVzKSB7XG4gIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkVmFyaWFibGVzLm1hcCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVKU09OID0gZGVjbGFyZWRWYXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZXNUb1Byb2NlZHVyZVJlZmVyZW5jZXNKU09OKHByb2NlZHVyZVJlZmVyZW5jZXMpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlc0pTT04gPSBwcm9jZWR1cmVSZWZlcmVuY2VzLm1hcCgocHJvY2VkdXJlUmVmZXJlbmNlKSA9PiB7XG4gICAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04oZGVjbGFyZWRNZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMubWFwKChkZWNsYXJlZE1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlQnlOYW1lQW5kUHJlZml4TmFtZShuYW1lLCBwcmVmaXhOYW1lLCBjb250ZXh0KSB7XG4gIGxldCB0eXBlO1xuXG4gIGNvbnN0IHN0cmljdCA9IChwcmVmaXhOYW1lID09PSBudWxsKSxcbiAgICAgICAgdHlwZU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgaWYgKHN0cmljdCkge1xuICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IGAke3ByZWZpeE5hbWV9JHtuYW1lfWA7XG5cbiAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCBtZXRhVHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJhc3NlcnRpb25zRnJvbUpTT04iLCJhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTiIsImFzc3VtcHRpb25zRnJvbUpTT04iLCJhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OIiwiYXhpb21zRnJvbUpTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJjbG9zZWRGcm9tSlNPTiIsImNsb3NlZFRvQ2xvc2VkSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cmFpbnRzRnJvbUpTT04iLCJjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OIiwiY29uc3RydWN0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lc0Zyb21KU09OIiwiZnJhbWVzVG9GcmFtZXNKU09OIiwiZ2VuZXJhdG9yc0Zyb21KU09OIiwiZ2VuZXJhdG9yc1RvR2VuZXJhdG9yc0pTT04iLCJoeXBvdGhlc2VzRnJvbUpTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJsZW1tYXNGcm9tSlNPTiIsImxlbW1hc1RvTGVtbWFzSlNPTiIsImxpbmtzRnJvbUpTT04iLCJsaW5rc1RvTGlua3NKU09OIiwibWV0YVR5cGVGcm9tSlNPTiIsIm1ldGFUeXBlVG9NZXRhVHlwZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsIm1uZW1pY0NvbnRleHRGcm9tSlNPTiIsIm1uZW1pY0NvbnRleHRUb01uZW1pY0NvbnRleHRKU09OIiwibW5lbWljQ29udGV4dHNGcm9tSlNPTiIsIm1uZW1pY0NvbnRleHRzVG9NbmVtaWNDb250ZXh0c0pTT04iLCJuYW1lVG9OYW1lSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlZml4TmFtZUZyb21KU09OIiwicHJlZml4TmFtZVRvUHJldml4TmFtZUpTT04iLCJwcmVtaXNlc0Zyb21KU09OIiwicHJlbWlzZXNUb1ByZW1pc2VzSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZXNGcm9tSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZXNUb1Byb2NlZHVyZVJlZmVyZW5jZXNKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm92aXNpb25hbEZyb21KU09OIiwicHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJydWxlc1RvUnVsZXNKU09OIiwic2NoZW1hc0Zyb21KU09OIiwic2NoZW1hc1RvU2NoZW1hc0pTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsInN0YXRlbWVudHNGcm9tSlNPTiIsInN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OIiwic3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJ0ZXJtc0Zyb21KU09OIiwidGVybXNUb1Rlcm1zSlNPTiIsInRoZW9yZW1zRnJvbUpTT04iLCJ0aGVvcmVtc1RvVGhlb3JlbXNKU09OIiwidHlwZUFsaWFzZXNGcm9tSlNPTiIsInR5cGVBbGlhc2VzVG9UeXBlQWxpYXNlc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJqc29uIiwiY29udGV4dCIsInR5cGUiLCJuYW1lIiwicHJlZml4TmFtZSIsImZpbmRUeXBlQnlOYW1lQW5kUHJlZml4TmFtZSIsIm5hbWVKU09OIiwibGFiZWwiLCJMYWJlbCIsImVsZW1lbnRzIiwibGFiZWxKU09OIiwiZnJvbUpTT04iLCJtZXRhVHlwZSIsInN0cmluZyIsImZpbmRNZXRhVHlwZUJ5TmFtZSIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJjb25jbHVzaW9uSlNPTiIsInByb3Zpc2lvbmFsIiwicmVsZWFzZUNvbnRleHQiLCJtbmVtaWNDb250ZXh0IiwiTW5lbWljQ29udGV4dCIsInR5cGVzIiwidHlwZXNKU09OIiwiVHlwZSIsImZvckVhY2giLCJ0eXBlSlNPTiIsInB1c2giLCJ0ZXJtcyIsIlRlcm0iLCJ0ZXJtc0pTT04iLCJtYXAiLCJ0ZXJtSlNPTiIsInRlcm0iLCJsaW5rcyIsIkxpbmsiLCJsaW5rc0pTT04iLCJsaW5rSlNPTiIsImxpbmsiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJjbG9zZWQiLCJmcmFtZXMiLCJGcmFtZSIsImZyYW1lc0pTT04iLCJmcmFtZUpTT04iLCJmcmFtZSIsImxhYmVscyIsImxhYmVsc0pTT04iLCJheGlvbXMiLCJBeGlvbSIsImF4aW9tc0pTT04iLCJheGlvbUpTT04iLCJheGlvbSIsImxlbW1hcyIsInNjaGVtYXMiLCJTY2hlbWEiLCJzY2hlbWFzSlNPTiIsInNjaGVtYUpTT04iLCJzY2hlbWEiLCJwcmVtaXNlcyIsIlByZW1pc2UiLCJwcmVtaXNlc0pTT04iLCJwcmVtaXNlSlNPTiIsInByZW1pc2UiLCJ0aGVvcmVtcyIsIlRoZW9yZW0iLCJ0aGVvcmVtc0pTT04iLCJ0aGVvcmVtSlNPTiIsInRoZW9yZW0iLCJwYXJhbWV0ZXJzIiwiUGFyYW1ldGVyIiwicGFyYW1ldGVyc0pTT04iLCJwYXJhbWV0ZXJKU09OIiwicGFyYW1ldGVyIiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByb3BlcnRpZXMiLCJQcm9wZXJ0eSIsInByb3BlcnRpZXNKU09OIiwicHJvcGVydHlKU09OIiwicHJvcGVydHkiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInN0YXRlbWVudHMiLCJTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRzSlNPTiIsInN0YXRlbWVudEpTT04iLCJzdGF0ZW1lbnQiLCJhc3NlcnRpb25zIiwiVHlwZUFzc2VydGlvbiIsIlNjaGVtYUFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiU2lnbmF0dXJlQXNzZXJ0aW9uIiwiYXNzZXJ0aW9uc0pTT04iLCJhc3NlcnRpb25KU09OIiwiYXNzZXJ0aW9uIiwiZ2VuZXJhdG9ycyIsIkdlbmVyYXRvciIsImdlbmVyYXRvcnNKU09OIiwiZ2VuZXJhdG9ySlNPTiIsImdlbmVyYXRvciIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsImNvbnN0cmFpbnRzIiwiQ29uc3RyYWludCIsImNvbnN0cmFpbnRzSlNPTiIsImNvbnN0cmFpbnRKU09OIiwiY29uc3RyYWludCIsInR5cGVBbGlhc2VzIiwiVHlwZUFsaWFzIiwidHlwZUFsaWFzZXNKU09OIiwidHlwZUFsaWFzSlNPTiIsInR5cGVBbGlhcyIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJzdXBwb3NpdGlvbnMiLCJTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbkpTT04iLCJzdXBwb3NpdGlvbiIsInN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zSlNPTiIsInN1YnN0aXR1dGlvbkpTT04iLCJzdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGVzIiwiTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlc0pTT04iLCJtZXRhdmFyaWFibGVKU09OIiwibWV0YXZhcmlhYmxlIiwiY29udGV4dHMiLCJtbmVtaWNDb250ZXh0cyIsImRlY2xhcmVkVmFyaWFibGVzIiwiVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlSlNPTiIsInZhcmlhYmxlIiwiZGVjbGFyZWRWYXJpYWJsZSIsInByb2NlZHVyZVJlZmVyZW5jZXMiLCJQcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VzSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXMiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGUiLCJhYnJpZGdlZCIsInRvSlNPTiIsIm1ldGFUeXBlSlNPTiIsInByb3Zpc2lvbmFsSlNPTiIsIm1uZW1pY0NvbnRleHRKU09OIiwiVGVybVN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsImxlbW1hc0pTT04iLCJjbG9zZWRKU09OIiwicHJlZml4TmFtZUpTT04iLCJ0eXBlQWxpYXNlc0pTTE9OIiwidHlwZUFsaWFzZSIsIm1uZW1pY0NvbnRleHRzSlNPTiIsInN0cmljdCIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImZpbmRUeXBlQnlQcmVmaXhlZFR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWdZZ0JBO2VBQUFBOztRQTZmQUM7ZUFBQUE7O1FBdmJBQztlQUFBQTs7UUF5ZUFDO2VBQUFBOztRQTF0QkFDO2VBQUFBOztRQTZqQkFDO2VBQUFBOztRQW5t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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.639",
4
+ "version": "1.0.641",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -13,7 +13,6 @@ const { nodeQuery } = queryUtilities;
13
13
 
14
14
  const typeNodeQuery = nodeQuery("/type"),
15
15
  termNodeQuery = nodeQuery("/term"),
16
- frameNodeQuery = nodeQuery("/frame"),
17
16
  metaTypeNodeQuery = nodeQuery("/metaType"),
18
17
  statementNodeQuery = nodeQuery("/statement"),
19
18
  termVariableNodeQuery = nodeQuery("/term/variable!"),
@@ -257,31 +256,6 @@ class UnifyStatementWithCombinatorPass extends ContinuationZipPass {
257
256
  });
258
257
  }
259
258
  },
260
- {
261
- generalNodeQuery: metaTypeNodeQuery,
262
- specificNodeQuery: frameNodeQuery,
263
- run: (generalMetaTypeNode, specificFrameNode, generalContext, specificContext, forward, back) => {
264
- const metaTypeNode = generalMetaTypeNode, ///
265
- metaTypeName = metaTypeNode.getMetaTypeName(),
266
- metaTypeNameFrameMetaTypeName = (metaTypeName === FRAME_META_TYPE_NAME);
267
-
268
- if (metaTypeNameFrameMetaTypeName) {
269
- return back();
270
- }
271
-
272
- const frameNode = specificFrameNode, ///
273
- context = specificContext, ///
274
- frame = frameFromFrameNode(frameNode, context);
275
-
276
- return declare((state) => {
277
- return frame.validate(state, context, (frame, context, back) => {
278
- const specificContext = context; ///
279
-
280
- return forward(generalContext, specificContext, back);
281
- }, back);
282
- });
283
- }
284
- },
285
259
  {
286
260
  generalNodeQuery: typeNodeQuery,
287
261
  specificNodeQuery: termNodeQuery,
@@ -485,7 +485,7 @@ export function constraintsFromJSON(json, context) {
485
485
  }
486
486
 
487
487
  export function typeAliasesFromJSON(json, context) {
488
- let { typeAliases = [] } = json;
488
+ let { typeAliases } = json;
489
489
 
490
490
  const { TypeAlias } = elements,
491
491
  typeAliasesJSON = typeAliases; ///