occam-verify-cli 1.0.682 → 1.0.685

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.
Files changed (53) hide show
  1. package/lib/action/verify.js +25 -20
  2. package/lib/context/ephemeral.js +2 -2
  3. package/lib/context/file/nominal.js +3 -3
  4. package/lib/element/assertion/contained.js +8 -4
  5. package/lib/element/assertion/defined.js +7 -4
  6. package/lib/element/assertion/type.js +3 -3
  7. package/lib/element/assumption.js +2 -8
  8. package/lib/element/constructor.js +4 -3
  9. package/lib/element/frame.js +7 -8
  10. package/lib/element/hypothesis.js +3 -2
  11. package/lib/element/metaType.js +4 -2
  12. package/lib/element/metavariable.js +2 -2
  13. package/lib/element/parameter.js +6 -3
  14. package/lib/element/procedureCall.js +5 -4
  15. package/lib/element/procedureReference.js +4 -2
  16. package/lib/element/property.js +4 -2
  17. package/lib/element/reference.js +3 -3
  18. package/lib/element/rule.js +3 -2
  19. package/lib/element/substitution/frame.js +19 -1
  20. package/lib/element/substitution/reference.js +19 -1
  21. package/lib/element/substitution/statement.js +12 -6
  22. package/lib/element/substitution/term.js +19 -1
  23. package/lib/element/type.js +4 -4
  24. package/lib/element/typePrefix.js +4 -2
  25. package/lib/element/variable.js +5 -3
  26. package/lib/utilities/json.js +54 -41
  27. package/package.json +2 -2
  28. package/src/action/verify.js +17 -6
  29. package/src/context/ephemeral.js +2 -2
  30. package/src/context/file/nominal.js +2 -2
  31. package/src/element/assertion/contained.js +14 -3
  32. package/src/element/assertion/defined.js +11 -3
  33. package/src/element/assertion/type.js +2 -2
  34. package/src/element/assumption.js +1 -12
  35. package/src/element/constructor.js +3 -1
  36. package/src/element/frame.js +11 -11
  37. package/src/element/hypothesis.js +2 -0
  38. package/src/element/metaType.js +5 -1
  39. package/src/element/metavariable.js +3 -3
  40. package/src/element/parameter.js +9 -2
  41. package/src/element/procedureCall.js +7 -4
  42. package/src/element/procedureReference.js +5 -1
  43. package/src/element/property.js +7 -2
  44. package/src/element/reference.js +3 -2
  45. package/src/element/rule.js +2 -0
  46. package/src/element/substitution/frame.js +30 -0
  47. package/src/element/substitution/reference.js +29 -0
  48. package/src/element/substitution/statement.js +19 -9
  49. package/src/element/substitution/term.js +30 -0
  50. package/src/element/type.js +11 -7
  51. package/src/element/typePrefix.js +5 -1
  52. package/src/element/variable.js +9 -3
  53. package/src/utilities/json.js +52 -54
@@ -66,6 +66,9 @@ _export(exports, {
66
66
  get equalitiesToEqualitiesJSON () {
67
67
  return equalitiesToEqualitiesJSON;
68
68
  },
69
+ get frameToFrameJSON () {
70
+ return frameToFrameJSON;
71
+ },
69
72
  get framesFromJSON () {
70
73
  return framesFromJSON;
71
74
  },
@@ -78,6 +81,9 @@ _export(exports, {
78
81
  get hypothesesToHypothesesJSON () {
79
82
  return hypothesesToHypothesesJSON;
80
83
  },
84
+ get identifierToIdentifierJSON () {
85
+ return identifierToIdentifierJSON;
86
+ },
81
87
  get judgementsFromJSON () {
82
88
  return judgementsFromJSON;
83
89
  },
@@ -132,6 +138,9 @@ _export(exports, {
132
138
  get nameToNameJSON () {
133
139
  return nameToNameJSON;
134
140
  },
141
+ get negatedToNegatedJSON () {
142
+ return negatedToNegatedJSON;
143
+ },
135
144
  get parametersFromJSON () {
136
145
  return parametersFromJSON;
137
146
  },
@@ -162,6 +171,12 @@ _export(exports, {
162
171
  get propertiesToPropertiesJSON () {
163
172
  return propertiesToPropertiesJSON;
164
173
  },
174
+ get propertyRelationsToPropertyRelationsJSON () {
175
+ return propertyRelationsToPropertyRelationsJSON;
176
+ },
177
+ get provisionalToProvisionalJSON () {
178
+ return provisionalToProvisionalJSON;
179
+ },
165
180
  get referenceFromJSON () {
166
181
  return referenceFromJSON;
167
182
  },
@@ -201,9 +216,6 @@ _export(exports, {
201
216
  get substitutionsFromJSON () {
202
217
  return substitutionsFromJSON;
203
218
  },
204
- get substitutionsToCSubstitutionsJSON () {
205
- return substitutionsToCSubstitutionsJSON;
206
- },
207
219
  get substitutionsToSubstitutionsJSON () {
208
220
  return substitutionsToSubstitutionsJSON;
209
221
  },
@@ -632,17 +644,25 @@ function nameToNameJSON(name) {
632
644
  return nameJSON;
633
645
  }
634
646
  function termToTermJSON(term) {
635
- const termJSON = term.toJSON();
647
+ const termJSON = term !== null ? term.toJSON() : null;
636
648
  return termJSON;
637
649
  }
638
650
  function typeToTypeJSON(type) {
639
651
  const typeJSON = type !== null ? type.toJSON() : null;
640
652
  return typeJSON;
641
653
  }
654
+ function frameToFrameJSON(frame) {
655
+ const frameJSON = frame !== null ? frame.toJSON() : null;
656
+ return frameJSON;
657
+ }
642
658
  function labelToLabelJSON(label) {
643
659
  const labelJSON = label.toJSON();
644
660
  return labelJSON;
645
661
  }
662
+ function negatedToNegatedJSON(negated) {
663
+ const negatedJSON = negated; ///
664
+ return negatedJSON;
665
+ }
646
666
  function metaTypeToMetaTypeJSON(metaType) {
647
667
  const metaTypeJSON = metaType !== null ? metaType.toJSON() : null;
648
668
  return metaTypeJSON;
@@ -663,10 +683,18 @@ function signatureToSignatureJSON(signature) {
663
683
  const signatureJSON = signature !== null ? signature.toJSON() : null;
664
684
  return signatureJSON;
665
685
  }
686
+ function identifierToIdentifierJSON(identifier) {
687
+ const identifierJSON = identifier; ///
688
+ return identifierJSON;
689
+ }
666
690
  function conclusionToConclusionJSON(conclusion) {
667
691
  const conclusionJSON = conclusion.toJSON();
668
692
  return conclusionJSON;
669
693
  }
694
+ function provisionalToProvisionalJSON(provisional) {
695
+ const provisionalJSON = provisional; ///
696
+ return provisionalJSON;
697
+ }
670
698
  function metavariableToMetavariableJSON(metavariable) {
671
699
  const metavariableJSON = metavariable.toJSON();
672
700
  return metavariableJSON;
@@ -689,16 +717,14 @@ function termsToTermsJSON(terms) {
689
717
  function typesToTypesJSON(types) {
690
718
  const typesJSON = types.map((type)=>{
691
719
  const typeJSON = type.toJSON();
692
- type = typeJSON; ///
693
- return type;
720
+ return typeJSON;
694
721
  });
695
722
  return typesJSON;
696
723
  }
697
724
  function rulesToRulesJSON(rules) {
698
725
  const rulesJSON = rules.map((rule)=>{
699
726
  const ruleJSON = rule.toJSON();
700
- rule = ruleJSON; ///
701
- return rule;
727
+ return ruleJSON;
702
728
  });
703
729
  return rulesJSON;
704
730
  }
@@ -719,8 +745,7 @@ function framesToFramesJSON(frames) {
719
745
  function axiomsToAxiomsJSON(axioms) {
720
746
  const axiomsJSON = axioms.map((axiom)=>{
721
747
  const axiomJSON = axiom.toJSON();
722
- axiom = axiomJSON; ///
723
- return axiom;
748
+ return axiomJSON;
724
749
  });
725
750
  return axiomsJSON;
726
751
  }
@@ -734,48 +759,42 @@ function premisesToPremisesJSON(premises) {
734
759
  function theoremsToTheoremsJSON(theorems) {
735
760
  const theoremsJSON = theorems.map((theorem)=>{
736
761
  const theoremJSON = theorem.toJSON();
737
- theorem = theoremJSON; ///
738
- return theorem;
762
+ return theoremJSON;
739
763
  });
740
764
  return theoremsJSON;
741
765
  }
742
766
  function variablesToVariablesJSON(variables) {
743
767
  const variablesJSON = variables.map((variable)=>{
744
768
  const variableJSON = variable.toJSON();
745
- variable = variableJSON; ///
746
- return variable;
769
+ return variableJSON;
747
770
  });
748
771
  return variablesJSON;
749
772
  }
750
773
  function hypothesesToHypothesesJSON(hypotheses) {
751
774
  const hypothesesJSON = hypotheses.map((hypothesis)=>{
752
775
  const hypothesisJSON = hypothesis.toJSON();
753
- hypothesis = hypothesisJSON; ///
754
- return hypothesis;
776
+ return hypothesisJSON;
755
777
  });
756
778
  return hypothesesJSON;
757
779
  }
758
780
  function superTypesToSuperTypesJSON(superTypes) {
759
781
  const superTypesJSON = superTypes.map((superType)=>{
760
782
  const superTypeJSON = superType.toJSON();
761
- superType = superTypeJSON; ///
762
- return superType;
783
+ return superTypeJSON;
763
784
  });
764
785
  return superTypesJSON;
765
786
  }
766
787
  function parametersToParametersJSON(parameters) {
767
788
  const parametersJSON = parameters.map((parameter)=>{
768
789
  const parameterJSON = parameter.toJSON();
769
- parameter = parameterJSON; ///
770
- return parameter;
790
+ return parameterJSON;
771
791
  });
772
792
  return parametersJSON;
773
793
  }
774
794
  function propertiesToPropertiesJSON(properties) {
775
795
  const propertiesJSON = properties.map((property)=>{
776
796
  const propertyJSON = property.toJSON();
777
- property = propertyJSON; ///
778
- return property;
797
+ return propertyJSON;
779
798
  });
780
799
  return propertiesJSON;
781
800
  }
@@ -817,16 +836,14 @@ function referencesToReferencesJSON(references) {
817
836
  function conjecturesToConjecturesJSON(conjectures) {
818
837
  const conjecturesJSON = conjectures.map((conjecture)=>{
819
838
  const conjectureJSON = conjecture.toJSON();
820
- conjecture = conjectureJSON; ///
821
- return conjecture;
839
+ return conjectureJSON;
822
840
  });
823
841
  return conjecturesJSON;
824
842
  }
825
843
  function combinatorsToCombinatorsJSON(combinators) {
826
844
  const combinatorsJSON = combinators.map((combinator)=>{
827
845
  const combinatorJSON = combinator.toJSON();
828
- combinator = combinatorJSON; ///
829
- return combinator;
846
+ return combinatorJSON;
830
847
  });
831
848
  return combinatorsJSON;
832
849
  }
@@ -847,29 +864,26 @@ function suppositionsToSuppositionsJSON(suppositions) {
847
864
  function constructorsToConstructorsJSON(constructors) {
848
865
  const constructorsJSON = constructors.map((constructor)=>{
849
866
  const constructorJSON = constructor.toJSON();
850
- constructor = constructorJSON; ///
851
- return constructor;
867
+ return constructorJSON;
852
868
  });
853
869
  return constructorsJSON;
854
870
  }
855
871
  function metatheoremsToMetatheoremsJSON(metatheorems) {
856
872
  const metatheoremsJSON = metatheorems.map((metatheorem)=>{
857
873
  const metatheoremJSON = metatheorem.toJSON();
858
- metatheorem = metatheoremJSON; ///
859
- return metatheorem;
874
+ return metatheoremJSON;
860
875
  });
861
876
  return metatheoremsJSON;
862
877
  }
863
878
  function typePrefixesToTypePrefixesJSON(typePrefixes) {
864
879
  const typePrefixesJSON = typePrefixes.map((typePrefix)=>{
865
880
  const typePrefixJSON = typePrefix.toJSON();
866
- typePrefix = typePrefixJSON; ///
867
- return typePrefix;
881
+ return typePrefixJSON;
868
882
  });
869
883
  return typePrefixesJSON;
870
884
  }
871
885
  function substitutionsToSubstitutionsJSON(substitutions) {
872
- const substitutionsJSON = substitutions.mapSubstitution((substitution)=>{
886
+ const substitutionsJSON = substitutions.map((substitution)=>{
873
887
  const substitutionJSON = substitution.toJSON();
874
888
  return substitutionJSON;
875
889
  });
@@ -878,17 +892,16 @@ function substitutionsToSubstitutionsJSON(substitutions) {
878
892
  function metavariablesToMetavariablesJSON(metavariables) {
879
893
  const metavariablesJSON = metavariables.map((metavariable)=>{
880
894
  const metavariableJSON = metavariable.toJSON();
881
- metavariable = metavariableJSON; ///
882
- return metavariable;
895
+ return metavariableJSON;
883
896
  });
884
897
  return metavariablesJSON;
885
898
  }
886
- function substitutionsToCSubstitutionsJSON(substitutiions) {
887
- const substitutionsJSON = substitutiions.map((substitution)=>{
888
- const substitutionJSON = substitution.toJSON();
889
- return substitutionJSON;
899
+ function propertyRelationsToPropertyRelationsJSON(propertyRelations) {
900
+ const propertyRelationsJSON = propertyRelations.map((propertyRelation)=>{
901
+ const propertyRelationJSON = propertyRelation.toJSON();
902
+ return propertyRelationJSON;
890
903
  });
891
- return substitutionsJSON;
904
+ return propertyRelationsJSON;
892
905
  }
893
906
 
894
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IEVwaGVtZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvZXBoZW1lcmFsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbmFtZSB9ID0ganNvbjtcblxuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICBuYW1lID0gbmFtZUpTT047ICAvLy9cblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm0gfSA9IGpzb247XG5cbiAgY29uc3QgdGVybUpTT04gPSB0ZXJtOyAgLy8vXG5cbiAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cztcblxuICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBuYW1lLCBwcmVmaXhOYW1lIH0gPSBqc29uLFxuICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IChwcmVmaXhOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlZml4TmFtZX0ke25hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTsgLy8vXG5cbiAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhVHlwZSB9ID0ganNvbjtcblxuICBpZiAobWV0YVR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gbWV0YVR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbixcbiAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgICBtZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50ID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGpzb24gPSBzdGF0ZW1lbnRKU09OOyAvLy9cblxuICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSByZWZlcmVuY2VKU09OOyAvLy9cblxuICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZSB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGU7ICAvLy9cblxuICBqc29uID0gbWV0YXZhcmlhYmxlSlNPTjsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsOyAgLy8vXG5cbiAgICBqc29uID0gcHJvY2VkdXJlQ2FsbEpTT047IC8vL1xuXG4gICAgcHJvY2VkdXJlQ2FsbCA9IFByb2NlZHVyZUNhbGwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxhYmVsSlNPTiA9IGxhYmVsOyAgLy8vXG5cbiAganNvbiA9IGxhYmVsSlNPTjsgLy8vXG5cbiAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZnJhbWVzSlNPTiA9IGZyYW1lczsgLy8vXG5cbiAgZnJhbWVzID0gZnJhbWVzSlNPTi5tYXAoKGZyYW1lSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBmcmFtZUpTT04sICAvLy9cbiAgICAgICAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxhYmVsc0pTT04gPSBsYWJlbHM7ICAvLy9cblxuICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBsYWJlbDtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXhpb21zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXhpb20gfSA9IGVsZW1lbnRzLFxuICAgICAgICBheGlvbXNKU09OID0gYXhpb21zOyAvLy9cblxuICBheGlvbXMgPSBheGlvbXNKU09OLm1hcCgoYXhpb21KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGF4aW9tSlNPTiwgIC8vL1xuICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJlbWlzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcmVtaXNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJlbWlzZXNKU09OID0gcHJlbWlzZXM7ICAvLy9cblxuICBwcmVtaXNlcyA9IHByZW1pc2VzSlNPTi5tYXAoKHByZW1pc2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByZW1pc2VKU09OLCAvLy9cbiAgICAgICAgICBwcmVtaXNlID0gUHJlbWlzZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUaGVvcmVtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGhlb3JlbXNKU09OID0gdGhlb3JlbXM7IC8vL1xuXG4gIHRoZW9yZW1zID0gdGhlb3JlbXNKU09OLm1hcCgodGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGhlb3JlbUpTT04sICAvLy9cbiAgICAgICAgICB0aGVvcmVtID0gVGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlczsgLy8vXG5cbiAgdmFyaWFibGVzID0gdmFyaWFibGVzSlNPTi5tYXAoKHZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZXF1YWxpdGllcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEVxdWFsaXR5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICAgICAgeyBuYW1lLCBwcmVmaXhOYW1lIH0gPSBqc29uLFxuICAgICAgICAgICAgICAgIG5vbWluYWxTdXBlclR5cGVOYW1lID0gKHByZWZpeE5hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlZml4TmFtZX0ke25hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIC8vL1xuICAgICAgICAgICAgICAgIHN1cGVyVHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsU3VwZXJUeXBlTmFtZSk7XG5cbiAgICAgICAgICByZXR1cm4gc3VwZXJUeXBlO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcGFyYW1ldGVycyB9ID0ganNvbjtcblxuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVyczsgLy8vXG5cbiAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OLm1hcCgocGFyYW1ldGVySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwYXJhbWV0ZXJKU09OLCAgLy8vXG4gICAgICAgICAgcGFyYW1ldGVyID0gUGFyYW1ldGVyLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBqdWRnZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSnVkZ2VtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAganVkZ2VtZW50c0pTT04gPSBqdWRnZW1lbnRzOyAvLy9cblxuICBqdWRnZW1lbnRzID0ganVkZ2VtZW50c0pTT04ubWFwKChqdWRnZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGp1ZGdlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBqdWRnZW1lbnQgPSBKdWRnZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50O1xuICB9KTtcblxuICByZXR1cm4ganVkZ2VtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHM7IC8vL1xuXG4gIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTi5tYXAoKHN0YXRlbWVudEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3RhdGVtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzZXJ0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVBc3NlcnRpb24sIERlZmluZWRBc3NlcnRpb24sIFByb3BlcnR5QXNzZXJ0aW9uLCBTdWJwcm9vZkFzc2VydGlvbiwgU2F0aXNmaWVzQXNzZXJ0aW9uLCBDb250YWluZWRBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnM7IC8vL1xuXG4gIGFzc2VydGlvbnMgPSBhc3NlcnRpb25zSlNPTi5tYXAoKGFzc2VydGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzZXJ0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc2VydGlvbiA9IFR5cGVBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eUFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm9vZkFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTYXRpc2ZpZXNBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVkQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc2VydGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyByZWZlcmVuY2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzOyAvLy9cblxuICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0pTT04ubWFwKChyZWZlcmVuY2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJlZmVyZW5jZUpTT04sICAvLy9cbiAgICAgICAgICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25qZWN0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmplY3R1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlczsgLy8vXG5cbiAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25qZWN0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb21iaW5hdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbWJpbmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yczsgLy8vXG5cbiAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb21iaW5hdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3N1bXB0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9uczsgLy8vXG5cbiAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT04ubWFwKChhc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zID0gW10gfSA9IGpzb247ICAvLy9cblxuICBjb25zdCB7IFN0YXRlbWVudFN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucywgIC8vL1xuICAgICAgICBTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb247IC8vL1xuXG4gIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTi5tYXAoKHN1YnN0aXR1dGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3Vic3RpdHV0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7XG5cbiAgKHtjb250ZXh0fSA9IGpzb24pO1xuXG4gIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IGVtcGhlbWVyYWxDb250ZXh0ID0gRXBoZW1lcmFsQ29udGV4dC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZW1waGVtZXJhbENvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lVG9OYW1lSlNPTihuYW1lKSB7XG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIHJldHVybiBuYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Ub1Rlcm1KU09OKHRlcm0pIHtcbiAgY29uc3QgdGVybUpTT04gPSB0ZXJtLnRvSlNPTigpO1xuXG4gIHJldHVybiB0ZXJtSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgY29uc3QgdHlwZUpTT04gPSAodHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gdHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTihyZWZlcmVuY2UpIHtcbiAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IChzdGF0ZW1lbnQgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04obWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTihwcm9jZWR1cmVDYWxsKSB7XG4gIGNvbnN0IHByb2NlZHVyZUNhbGxKU09OID0gKHByb2NlZHVyZUNhbGwgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NlZHVyZUNhbGwudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZVRvUHJvY2VkdXJlUmVmZXJlbmNlSlNPTihwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zVG9UZXJtc0pTT04odGVybXMpIHtcbiAgY29uc3QgdGVybXNKU09OID0gdGVybXMubWFwKCh0ZXJtKSA9PiB7XG4gICAgY29uc3QgdGVybUpTT04gPSB0ZXJtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRlcm1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGVybXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNUb1R5cGVzSlNPTih0eXBlcykge1xuICBjb25zdCB0eXBlc0pTT04gPSB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgICB0eXBlID0gdHlwZUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc1RvUnVsZXNKU09OKHJ1bGVzKSB7XG4gIGNvbnN0IHJ1bGVzSlNPTiA9IHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgIGNvbnN0IHJ1bGVKU09OID0gcnVsZS50b0pTT04oKTtcblxuICAgIHJ1bGUgPSBydWxlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1RvTGFiZWxzSlNPTihsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbGFiZWxKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpIHtcbiAgY29uc3QgZnJhbWVzSlNPTiA9IGZyYW1lcy5tYXAoKGZyYW1lKSA9PiB7XG4gICAgY29uc3QgZnJhbWVKU09OID0gZnJhbWUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZnJhbWVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc1RvQXhpb21zSlNPTihheGlvbXMpIHtcbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tcy5tYXAoKGF4aW9tKSA9PiB7XG4gICAgY29uc3QgYXhpb21KU09OID0gYXhpb20udG9KU09OKCk7XG5cbiAgICBheGlvbSA9IGF4aW9tSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHRoZW9yZW0gPSB0aGVvcmVtSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIGh5cG90aGVzaXMgPSBoeXBvdGhlc2lzSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcztcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gICAgc3VwZXJUeXBlID0gc3VwZXJUeXBlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyYW1ldGVyO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5SlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTihqdWRnZW1lbnRzKSB7XG4gIGNvbnN0IGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50cy5tYXAoKGp1ZGdlbWVudCkgPT4ge1xuICAgIGNvbnN0IGp1ZGdlbWVudEpTT04gPSBqdWRnZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcykge1xuICBjb25zdCBlcXVhbGl0aWVzSlNPTiA9IGVxdWFsaXRpZXMubWFwKChlcXVhbGl0eSkgPT4ge1xuICAgIGNvbnN0IGVxdWFsaXR5SlNPTiA9IGVxdWFsaXR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04oc3RhdGVtZW50cykge1xuICBjb25zdCBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHMubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OKGFzc2VydGlvbnMpIHtcbiAgY29uc3QgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zLm1hcCgoYXNzZXJ0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0aW9uSlNPTiA9IGFzc2VydGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTihyZWZlcmVuY2VzKSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICBjb25qZWN0dXJlID0gY29uamVjdHVyZUpTT047IC8vL1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIGNvbWJpbmF0b3IgPSBjb21iaW5hdG9ySlNPTjsgLy8vXG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnMubWFwKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvbkpTT04gPSBhc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIG1ldGF0aGVvcmVtID0gbWV0YXRoZW9yZW1KU09OOyAvLy9cblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgdHlwZVByZWZpeCA9IHR5cGVQcmVmaXhKU09OOyAvLy9cblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9DU3Vic3RpdHV0aW9uc0pTT04oc3Vic3RpdHV0aWlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpaW9ucy5tYXAoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuIl0sIm5hbWVzIjpbImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lc0Zyb21KU09OIiwiZnJhbWVzVG9GcmFtZXNKU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJqdWRnZW1lbnRzRnJvbUpTT04iLCJqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJsZW1tYXNGcm9tTm90aGluZyIsIm1ldGFMZW1tYXNGcm9tTm90aGluZyIsIm1ldGFUeXBlRnJvbUpTT04iLCJtZXRhVHlwZVRvTWV0YVR5cGVKU09OIiwibWV0YXRoZW9yZW1zRnJvbUpTT04iLCJtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04iLCJtZXRhdmFyaWFibGVGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibmFtZUZyb21KU09OIiwibmFtZVRvTmFtZUpTT04iLCJwYXJhbWV0ZXJzRnJvbUpTT04iLCJwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiIsInByZW1pc2VzRnJvbUpTT04iLCJwcmVtaXNlc1RvUHJlbWlzZXNKU09OIiwicHJvY2VkdXJlQ2FsbEZyb21KU09OIiwicHJvY2VkdXJlQ2FsbFRvUHJvY2VkdXJlQ2FsbEpTT04iLCJwcm9jZWR1cmVSZWZlcmVuY2VGcm9tSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZVRvUHJvY2VkdXJlUmVmZXJlbmNlSlNPTiIsInByb3BlcnRpZXNGcm9tSlNPTiIsInByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OIiwicmVmZXJlbmNlRnJvbUpTT04iLCJyZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04iLCJyZWZlcmVuY2VzRnJvbUpTT04iLCJyZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJydWxlc1RvUnVsZXNKU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsInN0YXRlbWVudHNGcm9tSlNPTiIsInN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OIiwic3Vic3RpdHV0aW9uc0Zyb21KU09OIiwic3Vic3RpdHV0aW9uc1RvQ1N1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04iLCJzdXBlclR5cGVzRnJvbUpTT04iLCJzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTiIsInN1cHBvc2l0aW9uc0Zyb21KU09OIiwic3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIiwidGVybUZyb21KU09OIiwidGVybVRvVGVybUpTT04iLCJ0ZXJtc0Zyb21KU09OIiwidGVybXNUb1Rlcm1zSlNPTiIsInRoZW9yZW1zRnJvbUpTT04iLCJ0aGVvcmVtc1RvVGhlb3JlbXNKU09OIiwidHlwZUZyb21KU09OIiwidHlwZVByZWZpeGVzRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInR5cGVzRnJvbUpTT04iLCJ0eXBlc1RvVHlwZXNKU09OIiwidmFyaWFibGVzRnJvbUpTT04iLCJ2YXJpYWJsZXNUb1ZhcmlhYmxlc0pTT04iLCJsZW1tYXMiLCJtZXRhTGVtbWFzIiwianNvbiIsImNvbnRleHQiLCJuYW1lIiwibmFtZUpTT04iLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZWxlbWVudHMiLCJmcm9tSlNPTiIsInR5cGUiLCJwcmVmaXhOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsIm1ldGFUeXBlIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRKU09OIiwiZGVkdWN0aW9uIiwiRGVkdWN0aW9uIiwiZGVkdWN0aW9uSlNPTiIsInNpZ25hdHVyZSIsIlNpZ25hdHVyZSIsInNpZ25hdHVyZUpTT04iLCJyZWZlcmVuY2UiLCJSZWZlcmVuY2UiLCJyZWZlcmVuY2VKU09OIiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJjb25jbHVzaW9uSlNPTiIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUpTT04iLCJwcm9jZWR1cmVDYWxsIiwiUHJvY2VkdXJlQ2FsbCIsInByb2NlZHVyZUNhbGxKU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlIiwiUHJvY2VkdXJlUmVmZXJlbmNlIiwicHJvY2VkdXJlUmVmZXJlbmNlSlNPTiIsInR5cGVzIiwidHlwZXNKU09OIiwiVHlwZSIsImZvckVhY2giLCJ0eXBlSlNPTiIsInB1c2giLCJ0ZXJtcyIsInRlcm1zSlNPTiIsIm1hcCIsInJ1bGVzIiwiUnVsZSIsInJ1bGVzSlNPTiIsInJ1bGVKU09OIiwicnVsZSIsImxhYmVsIiwiTGFiZWwiLCJsYWJlbEpTT04iLCJmcmFtZXMiLCJGcmFtZSIsImZyYW1lc0pTT04iLCJmcmFtZUpTT04iLCJmcmFtZSIsImxhYmVscyIsImxhYmVsc0pTT04iLCJheGlvbXMiLCJBeGlvbSIsImF4aW9tc0pTT04iLCJheGlvbUpTT04iLCJheGlvbSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsInZhcmlhYmxlcyIsIlZhcmlhYmxlIiwidmFyaWFibGVzSlNPTiIsInZhcmlhYmxlSlNPTiIsInZhcmlhYmxlIiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByb3BlcnRpZXMiLCJQcm9wZXJ0eSIsInByb3BlcnRpZXNKU09OIiwicHJvcGVydHlKU09OIiwicHJvcGVydHkiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwibm9taW5hbFN1cGVyVHlwZU5hbWUiLCJzdXBlclR5cGUiLCJoeXBvdGhlc2VzIiwiSHlwb3RoZXNpcyIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNpc0pTT04iLCJoeXBvdGhlc2lzIiwicGFyYW1ldGVycyIsIlBhcmFtZXRlciIsInBhcmFtZXRlcnNKU09OIiwicGFyYW1ldGVySlNPTiIsInBhcmFtZXRlciIsImp1ZGdlbWVudHMiLCJKdWRnZW1lbnQiLCJqdWRnZW1lbnRzSlNPTiIsImp1ZGdlbWVudEpTT04iLCJqdWRnZW1lbnQiLCJzdGF0ZW1lbnRzIiwic3RhdGVtZW50c0pTT04iLCJhc3NlcnRpb25zIiwiVHlwZUFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwiU2F0aXNmaWVzQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiYXNzZXJ0aW9uc0pTT04iLCJhc3NlcnRpb25KU09OIiwiYXNzZXJ0aW9uIiwicmVmZXJlbmNlcyIsInJlZmVyZW5jZXNKU09OIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsIm1ldGF0aGVvcmVtcyIsIk1ldGF0aGVvcmVtIiwibWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF0aGVvcmVtSlNPTiIsIm1ldGF0aGVvcmVtIiwic3VwcG9zaXRpb25zIiwiU3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25KU09OIiwic3VwcG9zaXRpb24iLCJzdWJzdGl0dXRpb25zIiwiU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uc0pTT04iLCJTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25KU09OIiwic3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXNKU09OIiwicmVsZWFzZUNvbnRleHQiLCJlbXBoZW1lcmFsQ29udGV4dCIsIkVwaGVtZXJhbENvbnRleHQiLCJ0b0pTT04iLCJtZXRhVHlwZUpTT04iLCJtYXBTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpaW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBa2NnQkE7ZUFBQUE7O1FBOGNBQztlQUFBQTs7UUF6WUFDO2VBQUFBOztRQXFiQUM7ZUFBQUE7O1FBM3FCQUM7ZUFBQUE7O1FBbWdC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
907
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IEVwaGVtZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvZXBoZW1lcmFsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbmFtZSB9ID0ganNvbjtcblxuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICBuYW1lID0gbmFtZUpTT047ICAvLy9cblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm0gfSA9IGpzb247XG5cbiAgY29uc3QgdGVybUpTT04gPSB0ZXJtOyAgLy8vXG5cbiAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cztcblxuICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBuYW1lLCBwcmVmaXhOYW1lIH0gPSBqc29uLFxuICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IChwcmVmaXhOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlZml4TmFtZX0ke25hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTsgLy8vXG5cbiAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhVHlwZSB9ID0ganNvbjtcblxuICBpZiAobWV0YVR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gbWV0YVR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbixcbiAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgICBtZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50ID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGpzb24gPSBzdGF0ZW1lbnRKU09OOyAvLy9cblxuICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSByZWZlcmVuY2VKU09OOyAvLy9cblxuICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZSB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGU7ICAvLy9cblxuICBqc29uID0gbWV0YXZhcmlhYmxlSlNPTjsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsOyAgLy8vXG5cbiAgICBqc29uID0gcHJvY2VkdXJlQ2FsbEpTT047IC8vL1xuXG4gICAgcHJvY2VkdXJlQ2FsbCA9IFByb2NlZHVyZUNhbGwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxhYmVsSlNPTiA9IGxhYmVsOyAgLy8vXG5cbiAganNvbiA9IGxhYmVsSlNPTjsgLy8vXG5cbiAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZnJhbWVzSlNPTiA9IGZyYW1lczsgLy8vXG5cbiAgZnJhbWVzID0gZnJhbWVzSlNPTi5tYXAoKGZyYW1lSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBmcmFtZUpTT04sICAvLy9cbiAgICAgICAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxhYmVsc0pTT04gPSBsYWJlbHM7ICAvLy9cblxuICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBsYWJlbDtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXhpb21zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXhpb20gfSA9IGVsZW1lbnRzLFxuICAgICAgICBheGlvbXNKU09OID0gYXhpb21zOyAvLy9cblxuICBheGlvbXMgPSBheGlvbXNKU09OLm1hcCgoYXhpb21KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGF4aW9tSlNPTiwgIC8vL1xuICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJlbWlzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcmVtaXNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJlbWlzZXNKU09OID0gcHJlbWlzZXM7ICAvLy9cblxuICBwcmVtaXNlcyA9IHByZW1pc2VzSlNPTi5tYXAoKHByZW1pc2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByZW1pc2VKU09OLCAvLy9cbiAgICAgICAgICBwcmVtaXNlID0gUHJlbWlzZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUaGVvcmVtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGhlb3JlbXNKU09OID0gdGhlb3JlbXM7IC8vL1xuXG4gIHRoZW9yZW1zID0gdGhlb3JlbXNKU09OLm1hcCgodGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGhlb3JlbUpTT04sICAvLy9cbiAgICAgICAgICB0aGVvcmVtID0gVGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlczsgLy8vXG5cbiAgdmFyaWFibGVzID0gdmFyaWFibGVzSlNPTi5tYXAoKHZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZXF1YWxpdGllcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEVxdWFsaXR5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICAgICAgeyBuYW1lLCBwcmVmaXhOYW1lIH0gPSBqc29uLFxuICAgICAgICAgICAgICAgIG5vbWluYWxTdXBlclR5cGVOYW1lID0gKHByZWZpeE5hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlZml4TmFtZX0ke25hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIC8vL1xuICAgICAgICAgICAgICAgIHN1cGVyVHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsU3VwZXJUeXBlTmFtZSk7XG5cbiAgICAgICAgICByZXR1cm4gc3VwZXJUeXBlO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcGFyYW1ldGVycyB9ID0ganNvbjtcblxuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVyczsgLy8vXG5cbiAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OLm1hcCgocGFyYW1ldGVySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwYXJhbWV0ZXJKU09OLCAgLy8vXG4gICAgICAgICAgcGFyYW1ldGVyID0gUGFyYW1ldGVyLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBqdWRnZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSnVkZ2VtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAganVkZ2VtZW50c0pTT04gPSBqdWRnZW1lbnRzOyAvLy9cblxuICBqdWRnZW1lbnRzID0ganVkZ2VtZW50c0pTT04ubWFwKChqdWRnZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGp1ZGdlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBqdWRnZW1lbnQgPSBKdWRnZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50O1xuICB9KTtcblxuICByZXR1cm4ganVkZ2VtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHM7IC8vL1xuXG4gIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTi5tYXAoKHN0YXRlbWVudEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3RhdGVtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzZXJ0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVBc3NlcnRpb24sIERlZmluZWRBc3NlcnRpb24sIFByb3BlcnR5QXNzZXJ0aW9uLCBTdWJwcm9vZkFzc2VydGlvbiwgU2F0aXNmaWVzQXNzZXJ0aW9uLCBDb250YWluZWRBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnM7IC8vL1xuXG4gIGFzc2VydGlvbnMgPSBhc3NlcnRpb25zSlNPTi5tYXAoKGFzc2VydGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzZXJ0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc2VydGlvbiA9IFR5cGVBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eUFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm9vZkFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTYXRpc2ZpZXNBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVkQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc2VydGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyByZWZlcmVuY2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzOyAvLy9cblxuICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0pTT04ubWFwKChyZWZlcmVuY2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJlZmVyZW5jZUpTT04sICAvLy9cbiAgICAgICAgICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25qZWN0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmplY3R1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlczsgLy8vXG5cbiAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25qZWN0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb21iaW5hdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbWJpbmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yczsgLy8vXG5cbiAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb21iaW5hdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3N1bXB0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9uczsgLy8vXG5cbiAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT04ubWFwKChhc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zID0gW10gfSA9IGpzb247ICAvLy9cblxuICBjb25zdCB7IFN0YXRlbWVudFN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucywgIC8vL1xuICAgICAgICBTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb247IC8vL1xuXG4gIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTi5tYXAoKHN1YnN0aXR1dGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3Vic3RpdHV0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7XG5cbiAgKHtjb250ZXh0fSA9IGpzb24pO1xuXG4gIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IGVtcGhlbWVyYWxDb250ZXh0ID0gRXBoZW1lcmFsQ29udGV4dC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZW1waGVtZXJhbENvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lVG9OYW1lSlNPTihuYW1lKSB7XG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIHJldHVybiBuYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Ub1Rlcm1KU09OKHRlcm0pIHtcbiAgY29uc3QgdGVybUpTT04gPSAodGVybSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgdGVybS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHRlcm1KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBjb25zdCB0eXBlSlNPTiA9ICh0eXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICB0eXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gdHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZVRvRnJhbWVKU09OKGZyYW1lKSB7XG4gIGNvbnN0IGZyYW1lSlNPTiA9IChmcmFtZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIGZyYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsVG9MYWJlbEpTT04obGFiZWwpIHtcbiAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgcmV0dXJuIGxhYmVsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWRUb05lZ2F0ZWRKU09OKG5lZ2F0ZWQpIHtcbiAgY29uc3QgbmVnYXRlZEpTT04gPSBuZWdhdGVkOyAgLy8vXG5cbiAgcmV0dXJuIG5lZ2F0ZWRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVUb01ldGFUeXBlSlNPTihtZXRhVHlwZSkge1xuICBjb25zdCBtZXRhVHlwZUpTT04gPSAobWV0YVR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhVHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBtZXRhVHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04ocmVmZXJlbmNlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04oc3RhdGVtZW50KSB7XG4gIGNvbnN0IHN0YXRlbWVudEpTT04gPSAoc3RhdGVtZW50ICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTihkZWR1Y3Rpb24pIHtcbiAgY29uc3QgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbi50b0pTT04oKTtcblxuICByZXR1cm4gZGVkdWN0aW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTihzaWduYXR1cmUpIHtcbiAgY29uc3Qgc2lnbmF0dXJlSlNPTiA9IChzaWduYXR1cmUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzaWduYXR1cmVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04oaWRlbnRpZmllcikge1xuICBjb25zdCBpZGVudGlmaWVySlNPTiA9IGlkZW50aWZpZXI7ICAvLy9cblxuICByZXR1cm4gaWRlbnRpZmllckpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHByb3Zpc2lvbmFsSlNPTiA9IHByb3Zpc2lvbmFsOyAgLy8vXG5cbiAgcmV0dXJuIHByb3Zpc2lvbmFsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTihtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OKHByb2NlZHVyZUNhbGwpIHtcbiAgY29uc3QgcHJvY2VkdXJlQ2FsbEpTT04gPSAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbC50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OKHByb2NlZHVyZVJlZmVyZW5jZSkge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2VKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGVybUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc1RvVHlwZXNKU09OKHR5cGVzKSB7XG4gIGNvbnN0IHR5cGVzSlNPTiA9IHR5cGVzLm1hcCgodHlwZSkgPT4ge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZS50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzVG9SdWxlc0pTT04ocnVsZXMpIHtcbiAgY29uc3QgcnVsZXNKU09OID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgY29uc3QgcnVsZUpTT04gPSBydWxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJ1bGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzVG9MYWJlbHNKU09OKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgIHJldHVybiBsYWJlbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzVG9GcmFtZXNKU09OKGZyYW1lcykge1xuICBjb25zdCBmcmFtZXNKU09OID0gZnJhbWVzLm1hcCgoZnJhbWUpID0+IHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZS50b0pTT04oKTtcblxuICAgIHJldHVybiBmcmFtZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zVG9BeGlvbXNKU09OKGF4aW9tcykge1xuICBjb25zdCBheGlvbXNKU09OID0gYXhpb21zLm1hcCgoYXhpb20pID0+IHtcbiAgICBjb25zdCBheGlvbUpTT04gPSBheGlvbS50b0pTT04oKTtcblxuICAgIHJldHVybiBheGlvbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiB0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVySlNPTiA9IHBhcmFtZXRlci50b0pTT04oKTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJKU09OO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTihqdWRnZW1lbnRzKSB7XG4gIGNvbnN0IGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50cy5tYXAoKGp1ZGdlbWVudCkgPT4ge1xuICAgIGNvbnN0IGp1ZGdlbWVudEpTT04gPSBqdWRnZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcykge1xuICBjb25zdCBlcXVhbGl0aWVzSlNPTiA9IGVxdWFsaXRpZXMubWFwKChlcXVhbGl0eSkgPT4ge1xuICAgIGNvbnN0IGVxdWFsaXR5SlNPTiA9IGVxdWFsaXR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04oc3RhdGVtZW50cykge1xuICBjb25zdCBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHMubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OKGFzc2VydGlvbnMpIHtcbiAgY29uc3QgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zLm1hcCgoYXNzZXJ0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0aW9uSlNPTiA9IGFzc2VydGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTihyZWZlcmVuY2VzKSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnMubWFwKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvbkpTT04gPSBhc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHR5cGVQcmVmaXhlcykge1xuICBjb25zdCB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzLm1hcCgodHlwZVByZWZpeCkgPT4ge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhKU09OID0gdHlwZVByZWZpeC50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXAoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zVG9Qcm9wZXJ0eVJlbGF0aW9uc0pTT04ocHJvcGVydHlSZWxhdGlvbnMpIHtcbiAgY29uc3QgcHJvcGVydHlSZWxhdGlvbnNKU09OID0gcHJvcGVydHlSZWxhdGlvbnMubWFwKChwcm9wZXJ0eVJlbGF0aW9uKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbkpTT04gPSBwcm9wZXJ0eVJlbGF0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbnNKU09OO1xufVxuIl0sIm5hbWVzIjpbImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lVG9GcmFtZUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04iLCJqdWRnZW1lbnRzRnJvbUpTT04iLCJqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJsZW1tYXNGcm9tTm90aGluZyIsIm1ldGFMZW1tYXNGcm9tTm90aGluZyIsIm1ldGFUeXBlRnJvbUpTT04iLCJtZXRhVHlwZVRvTWV0YVR5cGVKU09OIiwibWV0YXRoZW9yZW1zRnJvbUpTT04iLCJtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04iLCJtZXRhdmFyaWFibGVGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibmFtZUZyb21KU09OIiwibmFtZVRvTmFtZUpTT04iLCJuZWdhdGVkVG9OZWdhdGVkSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiIsInJlZmVyZW5jZUZyb21KU09OIiwicmVmZXJlbmNlVG9SZWZlcmVuY2VKU09OIiwicmVmZXJlbmNlc0Zyb21KU09OIiwicmVmZXJlbmNlc1RvUmVmZXJlbmNlc0pTT04iLCJydWxlc0Zyb21KU09OIiwicnVsZXNUb1J1bGVzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic3RhdGVtZW50RnJvbUpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJzdGF0ZW1lbnRzRnJvbUpTT04iLCJzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInZhcmlhYmxlc0Zyb21KU09OIiwidmFyaWFibGVzVG9WYXJpYWJsZXNKU09OIiwibGVtbWFzIiwibWV0YUxlbW1hcyIsImpzb24iLCJjb250ZXh0IiwibmFtZSIsIm5hbWVKU09OIiwidGVybSIsInRlcm1KU09OIiwiVGVybSIsImVsZW1lbnRzIiwiZnJvbUpTT04iLCJ0eXBlIiwicHJlZml4TmFtZSIsIm5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJtZXRhVHlwZSIsIm1ldGFUeXBlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxKU09OIiwiZnJhbWVzIiwiRnJhbWUiLCJmcmFtZXNKU09OIiwiZnJhbWVKU09OIiwiZnJhbWUiLCJsYWJlbHMiLCJsYWJlbHNKU09OIiwiYXhpb21zIiwiQXhpb20iLCJheGlvbXNKU09OIiwiYXhpb21KU09OIiwiYXhpb20iLCJwcmVtaXNlcyIsIlByZW1pc2UiLCJwcmVtaXNlc0pTT04iLCJwcmVtaXNlSlNPTiIsInByZW1pc2UiLCJ0aGVvcmVtcyIsIlRoZW9yZW0iLCJ0aGVvcmVtc0pTT04iLCJ0aGVvcmVtSlNPTiIsInRoZW9yZW0iLCJ2YXJpYWJsZXMiLCJWYXJpYWJsZSIsInZhcmlhYmxlc0pTT04iLCJ2YXJpYWJsZUpTT04iLCJ2YXJpYWJsZSIsImVxdWFsaXRpZXMiLCJFcXVhbGl0eSIsImVxdWFsaXRpZXNKU09OIiwiZXF1YWxpdHlKU09OIiwiZXF1YWxpdHkiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5Iiwic3VwZXJUeXBlcyIsInN1cGVyVHlwZXNKU09OIiwic3VwZXJUeXBlSlNPTiIsIm5vbWluYWxTdXBlclR5cGVOYW1lIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJqdWRnZW1lbnRzIiwiSnVkZ2VtZW50IiwianVkZ2VtZW50c0pTT04iLCJqdWRnZW1lbnRKU09OIiwianVkZ2VtZW50Iiwic3RhdGVtZW50cyIsInN0YXRlbWVudHNKU09OIiwiYXNzZXJ0aW9ucyIsIlR5cGVBc3NlcnRpb24iLCJEZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsIlNhdGlzZmllc0Fzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbnNKU09OIiwiYXNzZXJ0aW9uSlNPTiIsImFzc2VydGlvbiIsInJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzSlNPTiIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtc0pTT04iLCJtZXRhdGhlb3JlbUpTT04iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbnNKU09OIiwiU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsInJlbGVhc2VDb250ZXh0IiwiZW1waGVtZXJhbENvbnRleHQiLCJFcGhlbWVyYWxDb250ZXh0IiwidG9KU09OIiwibmVnYXRlZCIsIm5lZ2F0ZWRKU09OIiwibWV0YVR5cGVKU09OIiwiaWRlbnRpZmllciIsImlkZW50aWZpZXJKU09OIiwicHJvdmlzaW9uYWwiLCJwcm92aXNpb25hbEpTT04iLCJwcm9wZXJ0eVJlbGF0aW9ucyIsInByb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3BlcnR5UmVsYXRpb24iLCJwcm9wZXJ0eVJlbGF0aW9uSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBa2NnQkE7ZUFBQUE7O1FBd2RBQztlQUFBQTs7UUFuWkFDO2VBQUFBOztRQTJiQUM7ZUFBQUE7O1FBanJCQUM7ZUFBQUE7O1FBMmhCQUM7ZUFBQUE7O1FBclRBQztlQUFBQTs7UUFpY0FDO2VBQUFBOztRQXZ6QkFDO2VBQUFBOztRQXlsQkFDO2VBQUFBOztRQW5QQUM7ZUFBQUE7O1FBdWNBQztlQUFBQTs7UUF2WUFDO2VBQUFBOztRQSthQUM7ZUFBQUE7O1FBOTNCQUM7ZUFBQUE7O1FBOG1CQUM7ZUFBQUE7O1FBOUVBQztlQUFBQTs7UUF2U0FDO2VBQUFBOztRQXFqQkFDO2VBQUFBOztRQTFPQUM7ZUFBQUE7O1FBM2FBQztlQUFBQTs7UUFpakJBQztlQUFBQTs7UUFoYUFDO2VBQUFBOztRQWtkQUM7ZUFBQUE7O1FBaElBQztlQUFBQTs7UUFsVEFDO2VBQUFBOztRQTBkQUM7ZUFBQUE7O1FBeHBCQUM7ZUFBQUE7O1FBZ2NBQztlQUFBQTs7UUFuYUFDO2VBQUFBOztRQXVoQkFDO2VBQUFBOztRQW54QkFDO2VBQUFBOztRQU1BQztlQUFBQTs7UUErQ0FDO2VBQUFBOztRQXNuQkFDO2VBQUFBOztRQXpIQUM7ZUFBQUE7O1FBeWFBQztlQUFBQTs7UUFsMUJBQztlQUFBQTs7UUF3bEJBQztlQUFBQTs7UUE5SEFD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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "1.0.682",
4
+ "version": "1.0.685",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -13,7 +13,7 @@
13
13
  "argumentative": "^2.0.47",
14
14
  "necessary": "^17.1.7",
15
15
  "occam-file-system": "^6.0.505",
16
- "occam-furtle": "^3.0.148",
16
+ "occam-furtle": "^3.0.150",
17
17
  "occam-grammars": "^1.3.520",
18
18
  "occam-languages": "^0.0.128",
19
19
  "occam-lexers": "^23.1.44",
@@ -3,7 +3,7 @@
3
3
  import "../preamble";
4
4
 
5
5
  import { Dependency } from "occam-model";
6
- import { verificationUtilities } from "occam-languages";
6
+ import { verificationUtilities, ReleaseContext } from "occam-languages";
7
7
 
8
8
  import { FileContextFromFilePath } from "../utilities/fileContext";
9
9
  import { releaseContextFromDependency } from "../utilities/releaseContext";
@@ -23,7 +23,7 @@ export default async function verifyAction(name, log) {
23
23
  releaseContextFromDependency
24
24
  }
25
25
 
26
- try {
26
+ // try {
27
27
  const dependentNames = [],
28
28
  dependency = Dependency.fromName(name),
29
29
  releaseContextCreated = await createReleaseContext(dependency, dependentNames, context);
@@ -55,8 +55,19 @@ export default async function verifyAction(name, log) {
55
55
 
56
56
  return;
57
57
  }
58
- }
59
- catch (error) {
60
- log.error(error);
61
- }
58
+
59
+ const json = releaseContext.toJSON(),
60
+ entries = releaseContext.getEntries(),
61
+ customGrammar = releaseContext.getCustomGrammar(),
62
+ releaseContexts = [
63
+ releaseContext
64
+ ];
65
+
66
+ ReleaseContext.fromLogNameJSONEntriesCallbackAndCustomGrammar(log, name, json, entries, callback, customGrammar).initialise(releaseContexts, FileContextFromFilePath);
67
+
68
+
69
+ // }
70
+ // catch (error) {
71
+ // log.error(error);
72
+ // }
62
73
  }
@@ -19,7 +19,7 @@ import { termsFromJSON,
19
19
  assertionsToAssertionsJSON,
20
20
  referencesToReferencesJSON,
21
21
  assumptionsToAssumptionsJSON,
22
- substitutionsToCSubstitutionsJSON } from "../utilities/json";
22
+ substitutionsToSubstitutionsJSON } from "../utilities/json";
23
23
 
24
24
  export default class EphemeralContext extends Context {
25
25
  constructor(context, terms, frames, judgements, equalities, assertions, statements, references, assumptions, substitutions) {
@@ -491,7 +491,7 @@ export default class EphemeralContext extends Context {
491
491
  assertionsJSON = assertionsToAssertionsJSON(this.assertions),
492
492
  referencesJSON = referencesToReferencesJSON(this.references),
493
493
  assumptionsJSON = assumptionsToAssumptionsJSON(this.assumptions),
494
- substitutionsJSON = substitutionsToCSubstitutionsJSON(this.substitutions),
494
+ substitutionsJSON = substitutionsToSubstitutionsJSON(this.substitutions),
495
495
  terms = termsJSON, ///
496
496
  frames = framesJSON, ///
497
497
  judgements = judgementsJSON, ///
@@ -41,8 +41,8 @@ const { push, filter } = arrayUtilities,
41
41
  { nominalParserFromCombinedCustomGrammar } = parsersUtilities;
42
42
 
43
43
  export default class NominalFileContext extends FileContext {
44
- constructor(context, filePath, tokens, node, lexer, parser, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables) {
45
- super(context, filePath, tokens, node);
44
+ constructor(context, fileContent, filePath, tokens, node, lexer, parser, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables) {
45
+ super(context, fileContent, filePath, tokens, node);
46
46
 
47
47
  this.lexer = lexer;
48
48
  this.parser = parser;