occam-verify-cli 1.0.661 → 1.0.663
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.
- package/.swcrc +3 -0
- package/lib/abbreviations.js +10 -10
- package/lib/action/help.js +27 -2
- package/lib/action/verify.js +33 -205
- package/lib/action/version.js +6 -6
- package/lib/commands.js +4 -4
- package/lib/constants.js +16 -16
- package/lib/context/ephemeral.js +337 -540
- package/lib/context/file/nominal.js +545 -1040
- package/lib/context/liminal.js +159 -325
- package/lib/context/literal.js +34 -138
- package/lib/context/nominal.js +29 -124
- package/lib/context/scoped.js +163 -325
- package/lib/context/synthetic.js +31 -126
- package/lib/context.js +230 -482
- package/lib/defaults.js +8 -8
- package/lib/element/assertion/contained.js +159 -299
- package/lib/element/assertion/defined.js +145 -279
- package/lib/element/assertion/property.js +132 -266
- package/lib/element/assertion/satisfies.js +108 -239
- package/lib/element/assertion/subproof.js +88 -207
- package/lib/element/assertion/type.js +132 -262
- package/lib/element/assertion.js +17 -156
- package/lib/element/assumption.js +187 -386
- package/lib/element/combinator/bracketed.js +19 -142
- package/lib/element/combinator.js +65 -228
- package/lib/element/conclusion.js +72 -370
- package/lib/element/constructor/bracketed.js +34 -157
- package/lib/element/constructor.js +81 -253
- package/lib/element/declaration/combinator.js +41 -286
- package/lib/element/declaration/complexType.js +184 -452
- package/lib/element/declaration/constructor.js +69 -323
- package/lib/element/declaration/metavariable.js +70 -317
- package/lib/element/declaration/simpleType.js +117 -378
- package/lib/element/declaration/typePrefix.js +54 -299
- package/lib/element/declaration/variable.js +74 -328
- package/lib/element/declaration.js +3 -114
- package/lib/element/deduction.js +76 -378
- package/lib/element/derivation.js +31 -340
- package/lib/element/equality.js +152 -347
- package/lib/element/equivalence.js +160 -385
- package/lib/element/equivalences.js +132 -356
- package/lib/element/error.js +16 -290
- package/lib/element/frame.js +210 -418
- package/lib/element/hypothesis.js +56 -354
- package/lib/element/judgement.js +120 -305
- package/lib/element/label.js +62 -236
- package/lib/element/metaType.js +35 -200
- package/lib/element/metavariable.js +249 -459
- package/lib/element/parameter.js +39 -202
- package/lib/element/procedureCall.js +74 -381
- package/lib/element/procedureReference.js +27 -186
- package/lib/element/proof.js +38 -349
- package/lib/element/proofAssertion/premise.js +174 -466
- package/lib/element/proofAssertion/step.js +144 -495
- package/lib/element/proofAssertion/supposition.js +170 -466
- package/lib/element/proofAssertion.js +47 -195
- package/lib/element/property.js +36 -201
- package/lib/element/propertyRelation.js +62 -223
- package/lib/element/reference.js +173 -378
- package/lib/element/rule.js +178 -673
- package/lib/element/section.js +47 -356
- package/lib/element/signature.js +96 -264
- package/lib/element/statement.js +195 -395
- package/lib/element/subDerivation.js +32 -341
- package/lib/element/subproof.js +73 -448
- package/lib/element/substitution/frame.js +114 -257
- package/lib/element/substitution/reference.js +108 -248
- package/lib/element/substitution/statement.js +223 -397
- package/lib/element/substitution/term.js +123 -266
- package/lib/element/substitution.js +97 -296
- package/lib/element/term.js +139 -339
- package/lib/element/topLevelAssertion/axiom.js +153 -459
- package/lib/element/topLevelAssertion/conjecture.js +24 -295
- package/lib/element/topLevelAssertion/lemma.js +22 -289
- package/lib/element/topLevelAssertion/theorem.js +24 -295
- package/lib/element/topLevelAssertion.js +218 -718
- package/lib/element/topLevelMetaAssertion/metaLemma.js +24 -290
- package/lib/element/topLevelMetaAssertion/metatheorem.js +24 -290
- package/lib/element/topLevelMetaAssertion.js +109 -509
- package/lib/element/type.js +198 -435
- package/lib/element/typePrefix.js +27 -186
- package/lib/element/variable.js +119 -308
- package/lib/elements.js +4 -4
- package/lib/index.js +4 -4
- package/lib/main.js +18 -18
- package/lib/messages.js +2 -2
- package/lib/metaTypeNames.js +4 -4
- package/lib/metaTypes.js +10 -10
- package/lib/node/argument.js +15 -109
- package/lib/node/assertion/contained.js +33 -130
- package/lib/node/assertion/defined.js +29 -123
- package/lib/node/assertion/property.js +18 -112
- package/lib/node/assertion/satisfies.js +14 -105
- package/lib/node/assertion/subproof.js +10 -98
- package/lib/node/assertion/type.js +14 -105
- package/lib/node/assertion.js +5 -89
- package/lib/node/assumption.js +12 -103
- package/lib/node/body/axiom.js +5 -89
- package/lib/node/body/conjecture.js +5 -89
- package/lib/node/body/lemma.js +5 -89
- package/lib/node/body/metaLemma.js +5 -89
- package/lib/node/body/metatheorem.js +5 -89
- package/lib/node/body/rule.js +26 -126
- package/lib/node/body/theorem.js +5 -89
- package/lib/node/body.js +15 -109
- package/lib/node/combinator.js +9 -97
- package/lib/node/conclusion.js +12 -103
- package/lib/node/constructor.js +9 -97
- package/lib/node/declaration/combinator.js +10 -98
- package/lib/node/declaration/complexType.js +53 -162
- package/lib/node/declaration/constructor.js +29 -123
- package/lib/node/declaration/metavariable.js +18 -112
- package/lib/node/declaration/property.js +26 -123
- package/lib/node/declaration/simpleType.js +52 -158
- package/lib/node/declaration/typePrefix.js +14 -105
- package/lib/node/declaration/variable.js +33 -130
- package/lib/node/declaration.js +5 -89
- package/lib/node/deduction.js +12 -103
- package/lib/node/derivation.js +12 -125
- package/lib/node/document.js +5 -89
- package/lib/node/equality.js +17 -111
- package/lib/node/equivalence.js +9 -97
- package/lib/node/equivalences.js +5 -89
- package/lib/node/error.js +5 -89
- package/lib/node/frame.js +26 -123
- package/lib/node/header/axiom.js +10 -98
- package/lib/node/header/conjecture.js +5 -89
- package/lib/node/header/lemma.js +5 -89
- package/lib/node/header/metaLemma.js +5 -89
- package/lib/node/header/metatheorem.js +5 -89
- package/lib/node/header/rule.js +5 -89
- package/lib/node/header/theorem.js +5 -89
- package/lib/node/header.js +30 -130
- package/lib/node/hypothesis.js +12 -103
- package/lib/node/judgement.js +15 -109
- package/lib/node/label.js +9 -97
- package/lib/node/labels.js +9 -97
- package/lib/node/metaArgument.js +9 -97
- package/lib/node/metaType.js +16 -104
- package/lib/node/metavariable.js +23 -117
- package/lib/node/parameter.js +32 -123
- package/lib/node/parenthesisedLabel.js +9 -97
- package/lib/node/parenthesisedLabels.js +12 -103
- package/lib/node/placeholder.js +5 -89
- package/lib/node/procedureCall.js +15 -109
- package/lib/node/procedureReference.js +16 -104
- package/lib/node/proof.js +9 -97
- package/lib/node/proofAssertion/premise.js +10 -98
- package/lib/node/proofAssertion/step.js +32 -132
- package/lib/node/proofAssertion/supposition.js +10 -98
- package/lib/node/proofAssertion.js +12 -103
- package/lib/node/property.js +15 -106
- package/lib/node/propertyRelation.js +15 -109
- package/lib/node/qualification.js +12 -103
- package/lib/node/reference.js +9 -97
- package/lib/node/rule.js +26 -129
- package/lib/node/section.js +22 -122
- package/lib/node/signature.js +9 -97
- package/lib/node/statement.js +93 -238
- package/lib/node/subDerivation.js +12 -125
- package/lib/node/subproof.js +18 -115
- package/lib/node/substitution/frame.js +22 -119
- package/lib/node/substitution/reference.js +22 -119
- package/lib/node/substitution/statement.js +42 -151
- package/lib/node/substitution/term.js +22 -119
- package/lib/node/substitution.js +5 -89
- package/lib/node/term.js +51 -160
- package/lib/node/topLevelAssertion/axiom.js +8 -105
- package/lib/node/topLevelAssertion/conjecture.js +8 -105
- package/lib/node/topLevelAssertion/lemma.js +8 -105
- package/lib/node/topLevelAssertion/theorem.js +8 -105
- package/lib/node/topLevelAssertion.js +29 -135
- package/lib/node/topLevelMetaAssertion/metaLemma.js +8 -105
- package/lib/node/topLevelMetaAssertion/metatheorem.js +8 -105
- package/lib/node/topLevelMetaAssertion.js +25 -128
- package/lib/node/type.js +43 -140
- package/lib/node/typePrefix.js +16 -104
- package/lib/node/types.js +9 -97
- package/lib/node/variable.js +16 -104
- package/lib/nominal/lexer.js +3 -68
- package/lib/nominal/parser.js +7 -85
- package/lib/nonTerminalNodeMap.js +171 -101
- package/lib/options.js +6 -6
- package/lib/preamble.js +62 -62
- package/lib/prepare.js +4 -4
- package/lib/process/assign.js +20 -20
- package/lib/process/equate.js +39 -117
- package/lib/process/instantiate.js +10 -9
- package/lib/process/unify.js +199 -325
- package/lib/process/validate.js +87 -195
- package/lib/process/verify.js +263 -786
- package/lib/ruleNames.js +84 -84
- package/lib/tokenTypes.js +3 -3
- package/lib/utilities/bnf.js +7 -7
- package/lib/utilities/brackets.js +18 -18
- package/lib/utilities/clock.js +8 -8
- package/lib/utilities/context.js +23 -191
- package/lib/utilities/element.js +276 -276
- package/lib/utilities/equivalence.js +7 -7
- package/lib/utilities/fileContext.js +9 -9
- package/lib/utilities/instance.js +14 -14
- package/lib/utilities/json.js +211 -211
- package/lib/utilities/releaseContext.js +19 -147
- package/lib/utilities/statement.js +10 -10
- package/lib/utilities/string.js +47 -47
- package/lib/utilities/substitutions.js +19 -19
- package/lib/utilities/type.js +5 -5
- package/lib/utilities/unification.js +196 -426
- package/lib/utilities/validation.js +72 -72
- package/package.json +2 -2
package/lib/context.js
CHANGED
|
@@ -8,491 +8,239 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return Context;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const _occamlanguages = require("occam-languages");
|
|
12
|
+
class Context extends _occamlanguages.Context {
|
|
13
|
+
getLexer() {
|
|
14
|
+
const context = this.getContext(), lexer = context.getLexer();
|
|
15
|
+
return lexer;
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
derived = _get_prototype_of(derived);
|
|
20
|
-
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
21
|
-
}
|
|
22
|
-
function _class_call_check(instance, Constructor) {
|
|
23
|
-
if (!(instance instanceof Constructor)) {
|
|
24
|
-
throw new TypeError("Cannot call a class as a function");
|
|
17
|
+
getParser() {
|
|
18
|
+
const context = this.getContext(), parser = context.getParser();
|
|
19
|
+
return parser;
|
|
25
20
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
var descriptor = props[i];
|
|
30
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
31
|
-
descriptor.configurable = true;
|
|
32
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
33
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
21
|
+
getFilePath() {
|
|
22
|
+
const context = this.getContext(), filePath = context.getFilePath();
|
|
23
|
+
return filePath;
|
|
34
24
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
25
|
+
getTerms() {
|
|
26
|
+
const context = this.getContext(), terms = context.getTerms();
|
|
27
|
+
return terms;
|
|
28
|
+
}
|
|
29
|
+
getFrames() {
|
|
30
|
+
const context = this.getContext(), frames = context.getFrames();
|
|
31
|
+
return frames;
|
|
32
|
+
}
|
|
33
|
+
getEqualities() {
|
|
34
|
+
const context = this.getContext(), equalities = context.getEqualities();
|
|
35
|
+
return equalities;
|
|
36
|
+
}
|
|
37
|
+
getStatements() {
|
|
38
|
+
const context = this.getContext(), statements = context.getStatements();
|
|
39
|
+
return statements;
|
|
40
|
+
}
|
|
41
|
+
getReferences() {
|
|
42
|
+
const context = this.getContext(), references = context.getReferences();
|
|
43
|
+
return references;
|
|
44
|
+
}
|
|
45
|
+
getEquivalences() {
|
|
46
|
+
const context = this.getContext(), equivalences = context.getEquivalences();
|
|
47
|
+
return equivalences;
|
|
48
|
+
}
|
|
49
|
+
getSubstitutions() {
|
|
50
|
+
const context = this.getContext(), substitutions = context.getSubstitutions();
|
|
51
|
+
return substitutions;
|
|
52
|
+
}
|
|
53
|
+
getVariables(includeRelease) {
|
|
54
|
+
const context = this.getContext(), variables = context.getVariables(includeRelease);
|
|
55
|
+
return variables;
|
|
56
|
+
}
|
|
57
|
+
getCombinators(includeRelease) {
|
|
58
|
+
const context = this.getContext(), combinators = context.getCombinators(includeRelease);
|
|
59
|
+
return combinators;
|
|
60
|
+
}
|
|
61
|
+
getConstructors(includeRelease) {
|
|
62
|
+
const context = this.getContext(), constructors = context.getConstructors(includeRelease);
|
|
63
|
+
return constructors;
|
|
64
|
+
}
|
|
65
|
+
getMetavariables(includeRelease) {
|
|
66
|
+
const context = this.getContext(), metavariables = context.getMetavariables(includeRelease);
|
|
67
|
+
return metavariables;
|
|
68
|
+
}
|
|
69
|
+
getSubproofOrProofAssertions() {
|
|
70
|
+
const context = this.getContext(), subproofOrProofAssertions = context.getSubproofOrProofAssertions();
|
|
71
|
+
return subproofOrProofAssertions;
|
|
72
|
+
}
|
|
73
|
+
findMetavariable(metavariable) {
|
|
74
|
+
const context = this.getContext();
|
|
75
|
+
metavariable = context.findMetavariable(metavariable); ///
|
|
76
|
+
return metavariable;
|
|
77
|
+
}
|
|
78
|
+
findRuleByReference(reference) {
|
|
79
|
+
const context = this.getContext(), rule = context.findRuleByReference(reference);
|
|
80
|
+
return rule;
|
|
81
|
+
}
|
|
82
|
+
findTopLevelAssertionByReference(reference) {
|
|
83
|
+
const context = this.getContext(), topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
84
|
+
return topLevelAssertion;
|
|
85
|
+
}
|
|
86
|
+
findMetaTypeByMetaTypeName(metaTypeName) {
|
|
87
|
+
const context = this.getContext(), metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
88
|
+
return metaType;
|
|
89
|
+
}
|
|
90
|
+
findTermByTermNode(termNode) {
|
|
91
|
+
const context = this.getContext(), term = context.findTermByTermNode(termNode);
|
|
92
|
+
return term;
|
|
93
|
+
}
|
|
94
|
+
findFrameByFrameNode(frameNode) {
|
|
95
|
+
const context = this.getContext(), frame = context.findFrameByFrameNode(frameNode);
|
|
96
|
+
return frame;
|
|
97
|
+
}
|
|
98
|
+
findEqualityByEqualityNode(equalityNode) {
|
|
99
|
+
const context = this.getContext(), equality = context.findEqualityByEqualityNode(equalityNode);
|
|
100
|
+
return equality;
|
|
101
|
+
}
|
|
102
|
+
findJudgementByJudgementNode(judgementNode) {
|
|
103
|
+
const context = this.getContext(), judgement = context.findJudgementByJudgementNode(judgementNode);
|
|
104
|
+
return judgement;
|
|
105
|
+
}
|
|
106
|
+
findStatementByStatementNode(statementNode) {
|
|
107
|
+
const context = this.getContext(), statement = context.findStatementByStatementNode(statementNode);
|
|
108
|
+
return statement;
|
|
109
|
+
}
|
|
110
|
+
findReferenceByMetavariableNode(metavariableNode) {
|
|
111
|
+
const context = this.getContext(), reference = context.findReferenceByMetavariableNode(metavariableNode);
|
|
112
|
+
return reference;
|
|
113
|
+
}
|
|
114
|
+
findSubstitutionBySubstitutionNode(substitutionNode) {
|
|
115
|
+
const context = this.getContext(), substitution = context.findSubstitutionBySubstitutionNode(substitutionNode);
|
|
116
|
+
return substitution;
|
|
117
|
+
}
|
|
118
|
+
findTypeByNominalTypeName(nominalTypeName) {
|
|
119
|
+
const context = this.getContext(), type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
120
|
+
return type;
|
|
121
|
+
}
|
|
122
|
+
findVariableByVariableIdentifier(variableIdentifier) {
|
|
123
|
+
const context = this.getContext(), variable = context.findVariableByVariableIdentifier(variableIdentifier);
|
|
124
|
+
return variable;
|
|
125
|
+
}
|
|
126
|
+
findSubstitutionByMetavariableName(metavariableName) {
|
|
127
|
+
const context = this.getContext(), substitution = context.findSubstitutionByMetavariableName(metavariableName);
|
|
128
|
+
return substitution;
|
|
129
|
+
}
|
|
130
|
+
findMetavariableByMetavariableName(metavariableName) {
|
|
131
|
+
const context = this.getContext(), metavariable = context.findMetavariableByMetavariableName(metavariableName);
|
|
132
|
+
return metavariable;
|
|
133
|
+
}
|
|
134
|
+
findSubstitutionByVariableIdentifier(variableIdentifier) {
|
|
135
|
+
const context = this.getContext(), substitution = context.findSubstitutionByVariableIdentifier(variableIdentifier);
|
|
136
|
+
return substitution;
|
|
137
|
+
}
|
|
138
|
+
findSimpleSubstitutionByMetavariableName(metavariableName) {
|
|
139
|
+
const context = this.getContext(), simpleSubstitution = context.findSimpleSubstitutionByMetavariableName(metavariableName);
|
|
140
|
+
return simpleSubstitution;
|
|
141
|
+
}
|
|
142
|
+
findComplexSubstitutionsByMetavariableName(metavariableName) {
|
|
143
|
+
const context = this.getContext(), complexSubstitution = context.findComplexSubstitutionsByMetavariableName(metavariableName);
|
|
144
|
+
return complexSubstitution;
|
|
145
|
+
}
|
|
146
|
+
findSubstitutionByMetavariableNameAndSubstitution(metavariableName, substitution) {
|
|
147
|
+
const context = this.getContext();
|
|
148
|
+
substitution = context.findSubstitutionByMetavariableNameAndSubstitution(metavariableName, substitution); ///
|
|
149
|
+
return substitution;
|
|
150
|
+
}
|
|
151
|
+
findProcedureByProcedureName(procedureName) {
|
|
152
|
+
const context = this.getContext(), procedure = context.findProcedureByProcedureName(procedureName);
|
|
153
|
+
return procedure;
|
|
154
|
+
}
|
|
155
|
+
isMetavariablePresent(metavariable) {
|
|
156
|
+
metavariable = this.findMetavariable(metavariable); ///
|
|
157
|
+
const metavariablePresent = metavariable !== null;
|
|
158
|
+
return metavariablePresent;
|
|
159
|
+
}
|
|
160
|
+
isLabelPresentByReference(reference) {
|
|
161
|
+
const context = this.getContext(), labelPresent = context.isLabelPresentByReference(reference);
|
|
162
|
+
return labelPresent;
|
|
163
|
+
}
|
|
164
|
+
isMetavariablePresentByReference(reference) {
|
|
165
|
+
const context = this.getContext(), metavariablePresent = context.isMetavariablePresentByReference(reference);
|
|
166
|
+
return metavariablePresent;
|
|
167
|
+
}
|
|
168
|
+
isTermPresentByTermNode(termNode) {
|
|
169
|
+
const context = this.getContext(), termPresent = context.isTermPresentByTermNode(termNode);
|
|
170
|
+
return termPresent;
|
|
171
|
+
}
|
|
172
|
+
isFramePresentByFrameNode(frameNode) {
|
|
173
|
+
const context = this.getContext(), framePresent = context.isFramePresentByFrameNode(frameNode);
|
|
174
|
+
return framePresent;
|
|
175
|
+
}
|
|
176
|
+
isTypePresentByNominalTypeName(nominalTypeName) {
|
|
177
|
+
const context = this.getContext(), typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
|
|
178
|
+
return typePresent;
|
|
179
|
+
}
|
|
180
|
+
isEqualityPresentByEqualityNode(equalityNode) {
|
|
181
|
+
const context = this.getContext(), equalityPresent = context.isEqualityPresentByEqualityNode(equalityNode);
|
|
182
|
+
return equalityPresent;
|
|
183
|
+
}
|
|
184
|
+
isJudgementPresentByJudgementNode(judgementNode) {
|
|
185
|
+
const context = this.getContext(), judgementPresent = context.isJudgementPresentByJudgementNode(judgementNode);
|
|
186
|
+
return judgementPresent;
|
|
187
|
+
}
|
|
188
|
+
isStatementPresentByStatementNode(statementNode) {
|
|
189
|
+
const context = this.getContext(), statementPresent = context.isStatementPresentByStatementNode(statementNode);
|
|
190
|
+
return statementPresent;
|
|
191
|
+
}
|
|
192
|
+
isAssertionPresentByAssertionNode(assertionNode) {
|
|
193
|
+
const context = this.getContext(), assertionPresent = context.isAssertionPresentByAssertionNode(assertionNode);
|
|
194
|
+
return assertionPresent;
|
|
195
|
+
}
|
|
196
|
+
isReferencePresentByMetavariableNode(metvvariableNode) {
|
|
197
|
+
const context = this.getContext(), referencePresent = context.isReferencePresentByMetavariableNode(metvvariableNode);
|
|
198
|
+
return referencePresent;
|
|
199
|
+
}
|
|
200
|
+
isJudgementPresentByMetavariableName(metavariableName) {
|
|
201
|
+
const context = this.getContext(), judgementPresent = context.isJudgementPresentByMetavariableName(metavariableName);
|
|
202
|
+
return judgementPresent;
|
|
203
|
+
}
|
|
204
|
+
isSubstitutionPresentBySubstitutionNode(substitutionNode) {
|
|
205
|
+
const context = this.getContext(), substitutionPresent = context.isSubstitutionPresentBySubstitutionNode(substitutionNode);
|
|
206
|
+
return substitutionPresent;
|
|
207
|
+
}
|
|
208
|
+
isProcedurePresentByProcedureName(procedureName) {
|
|
209
|
+
const context = this.getContext(), procedurePresent = context.isProcedurePresentByProcedureName(procedureName);
|
|
210
|
+
return procedurePresent;
|
|
211
|
+
}
|
|
212
|
+
addTerm(term) {
|
|
213
|
+
const context = this.getContext();
|
|
214
|
+
context.addTerm(term);
|
|
215
|
+
}
|
|
216
|
+
addFrame(frame) {
|
|
217
|
+
const context = this.getContext();
|
|
218
|
+
context.addFrame(frame);
|
|
219
|
+
}
|
|
220
|
+
addStatement(statement) {
|
|
221
|
+
const context = this.getContext();
|
|
222
|
+
context.addStatement(statement);
|
|
223
|
+
}
|
|
224
|
+
addReference(reference) {
|
|
225
|
+
const context = this.getContext();
|
|
226
|
+
context.addReference(reference);
|
|
227
|
+
}
|
|
228
|
+
addJudgement(judgement) {
|
|
229
|
+
const context = this.getContext();
|
|
230
|
+
context.addJudgement(judgement);
|
|
231
|
+
}
|
|
232
|
+
addAssignment(assignment) {
|
|
233
|
+
const context = this.getContext();
|
|
234
|
+
context.addAssignment(assignment);
|
|
235
|
+
}
|
|
236
|
+
addSubstitution(substitution) {
|
|
237
|
+
const context = this.getContext();
|
|
238
|
+
context.addSubstitution(substitution);
|
|
239
|
+
}
|
|
240
|
+
addSubproofOrProofAssertion(subproofOrProofAssertion) {
|
|
241
|
+
const context = this.getContext();
|
|
242
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
63
243
|
}
|
|
64
|
-
return _assert_this_initialized(self);
|
|
65
|
-
}
|
|
66
|
-
function _set_prototype_of(o, p) {
|
|
67
|
-
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
68
|
-
o.__proto__ = p;
|
|
69
|
-
return o;
|
|
70
|
-
};
|
|
71
|
-
return _set_prototype_of(o, p);
|
|
72
|
-
}
|
|
73
|
-
function _type_of(obj) {
|
|
74
|
-
"@swc/helpers - typeof";
|
|
75
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
76
|
-
}
|
|
77
|
-
function _is_native_reflect_construct() {
|
|
78
|
-
try {
|
|
79
|
-
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
80
|
-
} catch (_) {}
|
|
81
|
-
return (_is_native_reflect_construct = function() {
|
|
82
|
-
return !!result;
|
|
83
|
-
})();
|
|
84
244
|
}
|
|
85
|
-
var Context = /*#__PURE__*/ function(ContextBase) {
|
|
86
|
-
_inherits(Context, ContextBase);
|
|
87
|
-
function Context() {
|
|
88
|
-
_class_call_check(this, Context);
|
|
89
|
-
return _call_super(this, Context, arguments);
|
|
90
|
-
}
|
|
91
|
-
_create_class(Context, [
|
|
92
|
-
{
|
|
93
|
-
key: "getLexer",
|
|
94
|
-
value: function getLexer() {
|
|
95
|
-
var context = this.getContext(), lexer = context.getLexer();
|
|
96
|
-
return lexer;
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
key: "getParser",
|
|
101
|
-
value: function getParser() {
|
|
102
|
-
var context = this.getContext(), parser = context.getParser();
|
|
103
|
-
return parser;
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
key: "getFilePath",
|
|
108
|
-
value: function getFilePath() {
|
|
109
|
-
var context = this.getContext(), filePath = context.getFilePath();
|
|
110
|
-
return filePath;
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
key: "getTerms",
|
|
115
|
-
value: function getTerms() {
|
|
116
|
-
var context = this.getContext(), terms = context.getTerms();
|
|
117
|
-
return terms;
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
key: "getFrames",
|
|
122
|
-
value: function getFrames() {
|
|
123
|
-
var context = this.getContext(), frames = context.getFrames();
|
|
124
|
-
return frames;
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
key: "getEqualities",
|
|
129
|
-
value: function getEqualities() {
|
|
130
|
-
var context = this.getContext(), equalities = context.getEqualities();
|
|
131
|
-
return equalities;
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
key: "getStatements",
|
|
136
|
-
value: function getStatements() {
|
|
137
|
-
var context = this.getContext(), statements = context.getStatements();
|
|
138
|
-
return statements;
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
key: "getReferences",
|
|
143
|
-
value: function getReferences() {
|
|
144
|
-
var context = this.getContext(), references = context.getReferences();
|
|
145
|
-
return references;
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
key: "getEquivalences",
|
|
150
|
-
value: function getEquivalences() {
|
|
151
|
-
var context = this.getContext(), equivalences = context.getEquivalences();
|
|
152
|
-
return equivalences;
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
key: "getSubstitutions",
|
|
157
|
-
value: function getSubstitutions() {
|
|
158
|
-
var context = this.getContext(), substitutions = context.getSubstitutions();
|
|
159
|
-
return substitutions;
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
key: "getVariables",
|
|
164
|
-
value: function getVariables(includeRelease) {
|
|
165
|
-
var context = this.getContext(), variables = context.getVariables(includeRelease);
|
|
166
|
-
return variables;
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
key: "getCombinators",
|
|
171
|
-
value: function getCombinators(includeRelease) {
|
|
172
|
-
var context = this.getContext(), combinators = context.getCombinators(includeRelease);
|
|
173
|
-
return combinators;
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
key: "getConstructors",
|
|
178
|
-
value: function getConstructors(includeRelease) {
|
|
179
|
-
var context = this.getContext(), constructors = context.getConstructors(includeRelease);
|
|
180
|
-
return constructors;
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
key: "getMetavariables",
|
|
185
|
-
value: function getMetavariables(includeRelease) {
|
|
186
|
-
var context = this.getContext(), metavariables = context.getMetavariables(includeRelease);
|
|
187
|
-
return metavariables;
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
key: "getSubproofOrProofAssertions",
|
|
192
|
-
value: function getSubproofOrProofAssertions() {
|
|
193
|
-
var context = this.getContext(), subproofOrProofAssertions = context.getSubproofOrProofAssertions();
|
|
194
|
-
return subproofOrProofAssertions;
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
key: "findMetavariable",
|
|
199
|
-
value: function findMetavariable(metavariable) {
|
|
200
|
-
var context = this.getContext();
|
|
201
|
-
metavariable = context.findMetavariable(metavariable); ///
|
|
202
|
-
return metavariable;
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
key: "findRuleByReference",
|
|
207
|
-
value: function findRuleByReference(reference) {
|
|
208
|
-
var context = this.getContext(), rule = context.findRuleByReference(reference);
|
|
209
|
-
return rule;
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
key: "findTopLevelAssertionByReference",
|
|
214
|
-
value: function findTopLevelAssertionByReference(reference) {
|
|
215
|
-
var context = this.getContext(), topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
216
|
-
return topLevelAssertion;
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
key: "findMetaTypeByMetaTypeName",
|
|
221
|
-
value: function findMetaTypeByMetaTypeName(metaTypeName) {
|
|
222
|
-
var context = this.getContext(), metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
223
|
-
return metaType;
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
key: "findTermByTermNode",
|
|
228
|
-
value: function findTermByTermNode(termNode) {
|
|
229
|
-
var context = this.getContext(), term = context.findTermByTermNode(termNode);
|
|
230
|
-
return term;
|
|
231
|
-
}
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
key: "findFrameByFrameNode",
|
|
235
|
-
value: function findFrameByFrameNode(frameNode) {
|
|
236
|
-
var context = this.getContext(), frame = context.findFrameByFrameNode(frameNode);
|
|
237
|
-
return frame;
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
key: "findEqualityByEqualityNode",
|
|
242
|
-
value: function findEqualityByEqualityNode(equalityNode) {
|
|
243
|
-
var context = this.getContext(), equality = context.findEqualityByEqualityNode(equalityNode);
|
|
244
|
-
return equality;
|
|
245
|
-
}
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
key: "findJudgementByJudgementNode",
|
|
249
|
-
value: function findJudgementByJudgementNode(judgementNode) {
|
|
250
|
-
var context = this.getContext(), judgement = context.findJudgementByJudgementNode(judgementNode);
|
|
251
|
-
return judgement;
|
|
252
|
-
}
|
|
253
|
-
},
|
|
254
|
-
{
|
|
255
|
-
key: "findStatementByStatementNode",
|
|
256
|
-
value: function findStatementByStatementNode(statementNode) {
|
|
257
|
-
var context = this.getContext(), statement = context.findStatementByStatementNode(statementNode);
|
|
258
|
-
return statement;
|
|
259
|
-
}
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
key: "findReferenceByMetavariableNode",
|
|
263
|
-
value: function findReferenceByMetavariableNode(metavariableNode) {
|
|
264
|
-
var context = this.getContext(), reference = context.findReferenceByMetavariableNode(metavariableNode);
|
|
265
|
-
return reference;
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
key: "findSubstitutionBySubstitutionNode",
|
|
270
|
-
value: function findSubstitutionBySubstitutionNode(substitutionNode) {
|
|
271
|
-
var context = this.getContext(), substitution = context.findSubstitutionBySubstitutionNode(substitutionNode);
|
|
272
|
-
return substitution;
|
|
273
|
-
}
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
key: "findTypeByNominalTypeName",
|
|
277
|
-
value: function findTypeByNominalTypeName(nominalTypeName) {
|
|
278
|
-
var context = this.getContext(), type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
279
|
-
return type;
|
|
280
|
-
}
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
key: "findVariableByVariableIdentifier",
|
|
284
|
-
value: function findVariableByVariableIdentifier(variableIdentifier) {
|
|
285
|
-
var context = this.getContext(), variable = context.findVariableByVariableIdentifier(variableIdentifier);
|
|
286
|
-
return variable;
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
{
|
|
290
|
-
key: "findSubstitutionByMetavariableName",
|
|
291
|
-
value: function findSubstitutionByMetavariableName(metavariableName) {
|
|
292
|
-
var context = this.getContext(), substitution = context.findSubstitutionByMetavariableName(metavariableName);
|
|
293
|
-
return substitution;
|
|
294
|
-
}
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
key: "findMetavariableByMetavariableName",
|
|
298
|
-
value: function findMetavariableByMetavariableName(metavariableName) {
|
|
299
|
-
var context = this.getContext(), metavariable = context.findMetavariableByMetavariableName(metavariableName);
|
|
300
|
-
return metavariable;
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
{
|
|
304
|
-
key: "findSubstitutionByVariableIdentifier",
|
|
305
|
-
value: function findSubstitutionByVariableIdentifier(variableIdentifier) {
|
|
306
|
-
var context = this.getContext(), substitution = context.findSubstitutionByVariableIdentifier(variableIdentifier);
|
|
307
|
-
return substitution;
|
|
308
|
-
}
|
|
309
|
-
},
|
|
310
|
-
{
|
|
311
|
-
key: "findSimpleSubstitutionByMetavariableName",
|
|
312
|
-
value: function findSimpleSubstitutionByMetavariableName(metavariableName) {
|
|
313
|
-
var context = this.getContext(), simpleSubstitution = context.findSimpleSubstitutionByMetavariableName(metavariableName);
|
|
314
|
-
return simpleSubstitution;
|
|
315
|
-
}
|
|
316
|
-
},
|
|
317
|
-
{
|
|
318
|
-
key: "findComplexSubstitutionsByMetavariableName",
|
|
319
|
-
value: function findComplexSubstitutionsByMetavariableName(metavariableName) {
|
|
320
|
-
var context = this.getContext(), complexSubstitution = context.findComplexSubstitutionsByMetavariableName(metavariableName);
|
|
321
|
-
return complexSubstitution;
|
|
322
|
-
}
|
|
323
|
-
},
|
|
324
|
-
{
|
|
325
|
-
key: "findSubstitutionByMetavariableNameAndSubstitution",
|
|
326
|
-
value: function findSubstitutionByMetavariableNameAndSubstitution(metavariableName, substitution) {
|
|
327
|
-
var context = this.getContext();
|
|
328
|
-
substitution = context.findSubstitutionByMetavariableNameAndSubstitution(metavariableName, substitution); ///
|
|
329
|
-
return substitution;
|
|
330
|
-
}
|
|
331
|
-
},
|
|
332
|
-
{
|
|
333
|
-
key: "findProcedureByProcedureName",
|
|
334
|
-
value: function findProcedureByProcedureName(procedureName) {
|
|
335
|
-
var context = this.getContext(), procedure = context.findProcedureByProcedureName(procedureName);
|
|
336
|
-
return procedure;
|
|
337
|
-
}
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
key: "isMetavariablePresent",
|
|
341
|
-
value: function isMetavariablePresent(metavariable) {
|
|
342
|
-
metavariable = this.findMetavariable(metavariable); ///
|
|
343
|
-
var metavariablePresent = metavariable !== null;
|
|
344
|
-
return metavariablePresent;
|
|
345
|
-
}
|
|
346
|
-
},
|
|
347
|
-
{
|
|
348
|
-
key: "isLabelPresentByReference",
|
|
349
|
-
value: function isLabelPresentByReference(reference) {
|
|
350
|
-
var context = this.getContext(), labelPresent = context.isLabelPresentByReference(reference);
|
|
351
|
-
return labelPresent;
|
|
352
|
-
}
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
key: "isMetavariablePresentByReference",
|
|
356
|
-
value: function isMetavariablePresentByReference(reference) {
|
|
357
|
-
var context = this.getContext(), metavariablePresent = context.isMetavariablePresentByReference(reference);
|
|
358
|
-
return metavariablePresent;
|
|
359
|
-
}
|
|
360
|
-
},
|
|
361
|
-
{
|
|
362
|
-
key: "isTermPresentByTermNode",
|
|
363
|
-
value: function isTermPresentByTermNode(termNode) {
|
|
364
|
-
var context = this.getContext(), termPresent = context.isTermPresentByTermNode(termNode);
|
|
365
|
-
return termPresent;
|
|
366
|
-
}
|
|
367
|
-
},
|
|
368
|
-
{
|
|
369
|
-
key: "isFramePresentByFrameNode",
|
|
370
|
-
value: function isFramePresentByFrameNode(frameNode) {
|
|
371
|
-
var context = this.getContext(), framePresent = context.isFramePresentByFrameNode(frameNode);
|
|
372
|
-
return framePresent;
|
|
373
|
-
}
|
|
374
|
-
},
|
|
375
|
-
{
|
|
376
|
-
key: "isTypePresentByNominalTypeName",
|
|
377
|
-
value: function isTypePresentByNominalTypeName(nominalTypeName) {
|
|
378
|
-
var context = this.getContext(), typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
|
|
379
|
-
return typePresent;
|
|
380
|
-
}
|
|
381
|
-
},
|
|
382
|
-
{
|
|
383
|
-
key: "isEqualityPresentByEqualityNode",
|
|
384
|
-
value: function isEqualityPresentByEqualityNode(equalityNode) {
|
|
385
|
-
var context = this.getContext(), equalityPresent = context.isEqualityPresentByEqualityNode(equalityNode);
|
|
386
|
-
return equalityPresent;
|
|
387
|
-
}
|
|
388
|
-
},
|
|
389
|
-
{
|
|
390
|
-
key: "isJudgementPresentByJudgementNode",
|
|
391
|
-
value: function isJudgementPresentByJudgementNode(judgementNode) {
|
|
392
|
-
var context = this.getContext(), judgementPresent = context.isJudgementPresentByJudgementNode(judgementNode);
|
|
393
|
-
return judgementPresent;
|
|
394
|
-
}
|
|
395
|
-
},
|
|
396
|
-
{
|
|
397
|
-
key: "isStatementPresentByStatementNode",
|
|
398
|
-
value: function isStatementPresentByStatementNode(statementNode) {
|
|
399
|
-
var context = this.getContext(), statementPresent = context.isStatementPresentByStatementNode(statementNode);
|
|
400
|
-
return statementPresent;
|
|
401
|
-
}
|
|
402
|
-
},
|
|
403
|
-
{
|
|
404
|
-
key: "isAssertionPresentByAssertionNode",
|
|
405
|
-
value: function isAssertionPresentByAssertionNode(assertionNode) {
|
|
406
|
-
var context = this.getContext(), assertionPresent = context.isAssertionPresentByAssertionNode(assertionNode);
|
|
407
|
-
return assertionPresent;
|
|
408
|
-
}
|
|
409
|
-
},
|
|
410
|
-
{
|
|
411
|
-
key: "isReferencePresentByMetavariableNode",
|
|
412
|
-
value: function isReferencePresentByMetavariableNode(metvvariableNode) {
|
|
413
|
-
var context = this.getContext(), referencePresent = context.isReferencePresentByMetavariableNode(metvvariableNode);
|
|
414
|
-
return referencePresent;
|
|
415
|
-
}
|
|
416
|
-
},
|
|
417
|
-
{
|
|
418
|
-
key: "isJudgementPresentByMetavariableName",
|
|
419
|
-
value: function isJudgementPresentByMetavariableName(metavariableName) {
|
|
420
|
-
var context = this.getContext(), judgementPresent = context.isJudgementPresentByMetavariableName(metavariableName);
|
|
421
|
-
return judgementPresent;
|
|
422
|
-
}
|
|
423
|
-
},
|
|
424
|
-
{
|
|
425
|
-
key: "isSubstitutionPresentBySubstitutionNode",
|
|
426
|
-
value: function isSubstitutionPresentBySubstitutionNode(substitutionNode) {
|
|
427
|
-
var context = this.getContext(), substitutionPresent = context.isSubstitutionPresentBySubstitutionNode(substitutionNode);
|
|
428
|
-
return substitutionPresent;
|
|
429
|
-
}
|
|
430
|
-
},
|
|
431
|
-
{
|
|
432
|
-
key: "isProcedurePresentByProcedureName",
|
|
433
|
-
value: function isProcedurePresentByProcedureName(procedureName) {
|
|
434
|
-
var context = this.getContext(), procedurePresent = context.isProcedurePresentByProcedureName(procedureName);
|
|
435
|
-
return procedurePresent;
|
|
436
|
-
}
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
key: "addTerm",
|
|
440
|
-
value: function addTerm(term) {
|
|
441
|
-
var context = this.getContext();
|
|
442
|
-
context.addTerm(term);
|
|
443
|
-
}
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
key: "addFrame",
|
|
447
|
-
value: function addFrame(frame) {
|
|
448
|
-
var context = this.getContext();
|
|
449
|
-
context.addFrame(frame);
|
|
450
|
-
}
|
|
451
|
-
},
|
|
452
|
-
{
|
|
453
|
-
key: "addStatement",
|
|
454
|
-
value: function addStatement(statement) {
|
|
455
|
-
var context = this.getContext();
|
|
456
|
-
context.addStatement(statement);
|
|
457
|
-
}
|
|
458
|
-
},
|
|
459
|
-
{
|
|
460
|
-
key: "addReference",
|
|
461
|
-
value: function addReference(reference) {
|
|
462
|
-
var context = this.getContext();
|
|
463
|
-
context.addReference(reference);
|
|
464
|
-
}
|
|
465
|
-
},
|
|
466
|
-
{
|
|
467
|
-
key: "addJudgement",
|
|
468
|
-
value: function addJudgement(judgement) {
|
|
469
|
-
var context = this.getContext();
|
|
470
|
-
context.addJudgement(judgement);
|
|
471
|
-
}
|
|
472
|
-
},
|
|
473
|
-
{
|
|
474
|
-
key: "addAssignment",
|
|
475
|
-
value: function addAssignment(assignment) {
|
|
476
|
-
var context = this.getContext();
|
|
477
|
-
context.addAssignment(assignment);
|
|
478
|
-
}
|
|
479
|
-
},
|
|
480
|
-
{
|
|
481
|
-
key: "addSubstitution",
|
|
482
|
-
value: function addSubstitution(substitution) {
|
|
483
|
-
var context = this.getContext();
|
|
484
|
-
context.addSubstitution(substitution);
|
|
485
|
-
}
|
|
486
|
-
},
|
|
487
|
-
{
|
|
488
|
-
key: "addSubproofOrProofAssertion",
|
|
489
|
-
value: function addSubproofOrProofAssertion(subproofOrProofAssertion) {
|
|
490
|
-
var context = this.getContext();
|
|
491
|
-
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
]);
|
|
495
|
-
return Context;
|
|
496
|
-
}(_occamlanguages.Context);
|
|
497
245
|
|
|
498
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IGFzIENvbnRleHRCYXNlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgQ29udGV4dEJhc2Uge1xuICBnZXRMZXhlcigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCk7XG5cbiAgICByZXR1cm4gbGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCk7XG5cbiAgICByZXR1cm4gcGFyc2VyO1xuICB9XG5cbiAgZ2V0RmlsZVBhdGgoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gY29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHRlcm1zID0gY29udGV4dC5nZXRUZXJtcygpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0RnJhbWVzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmcmFtZXMgPSBjb250ZXh0LmdldEZyYW1lcygpO1xuXG4gICAgcmV0dXJuIGZyYW1lcztcbiAgfVxuXG4gIGdldEVxdWFsaXRpZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXRpZXMgPSBjb250ZXh0LmdldEVxdWFsaXRpZXMoKTtcblxuICAgIHJldHVybiBlcXVhbGl0aWVzO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50cygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50cyA9IGNvbnRleHQuZ2V0U3RhdGVtZW50cygpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRSZWZlcmVuY2VzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZWZlcmVuY2VzID0gY29udGV4dC5nZXRSZWZlcmVuY2VzKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gY29udGV4dC5nZXRTdWJzdGl0dXRpb25zKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGdldFZhcmlhYmxlcyhpbmNsdWRlUmVsZWFzZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBjb250ZXh0LmdldFZhcmlhYmxlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgY29tYmluYXRvcnMgPSBjb250ZXh0LmdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ycztcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhpbmNsdWRlUmVsZWFzZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpO1xuXG4gICAgcmV0dXJuIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnM7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpOyAgLy8vXG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZFJ1bGVCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcnVsZSA9IGNvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICBmaW5kVG9wTGV2ZWxBc3NlcnRpb25CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRUb3BMZXZlbEFzc2VydGlvbkJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gdG9wTGV2ZWxBc3NlcnRpb247XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YVR5cGU7XG4gIH1cblxuICBmaW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gY29udGV4dC5maW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgZmluZEp1ZGdlbWVudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGp1ZGdlbWVudCA9IGNvbnRleHQuZmluZEp1ZGdlbWVudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBqdWRnZW1lbnQ7XG4gIH1cblxuICBmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNpbXBsZVN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBzaW1wbGVTdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kQ29tcGxleFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kQ29tcGxleFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gY29tcGxleFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWVBbmRTdWJzdGl0dXRpb24obWV0YXZhcmlhYmxlTmFtZSwgc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOYW1lQW5kU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZU5hbWUsIHN1YnN0aXR1dGlvbik7IC8vL1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlO1xuICB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50KG1ldGF2YXJpYWJsZSkge1xuICAgIG1ldGF2YXJpYWJsZSA9IHRoaXMuZmluZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpOyAvLy9cblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVByZXNlbnQgPSAobWV0YXZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNMYWJlbFByZXNlbnRCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGFiZWxQcmVzZW50ID0gY29udGV4dC5pc0xhYmVsUHJlc2VudEJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gbGFiZWxQcmVzZW50O1xuICB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50QnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHRlcm1QcmVzZW50ID0gY29udGV4dC5pc1Rlcm1QcmVzZW50QnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gdGVybVByZXNlbnQ7XG4gIH1cblxuICBpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmcmFtZVByZXNlbnQgPSBjb250ZXh0LmlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUoZnJhbWVOb2RlKTtcblxuICAgIHJldHVybiBmcmFtZVByZXNlbnQ7XG4gIH1cblxuICBpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5UHJlc2VudCA9IGNvbnRleHQuaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzSnVkZ2VtZW50UHJlc2VudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGp1ZGdlbWVudFByZXNlbnQgPSBjb250ZXh0LmlzSnVkZ2VtZW50UHJlc2VudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBqdWRnZW1lbnRQcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICBzdGF0ZW1lbnRQcmVzZW50ID0gY29udGV4dC5pc1N0YXRlbWVudFByZXNlbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSBjb250ZXh0LmlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldHZ2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcmVmZXJlbmNlUHJlc2VudCA9IGNvbnRleHQuaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldHZ2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVByZXNlbnQ7XG4gIH1cblxuICBpc0p1ZGdlbWVudFByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBqdWRnZW1lbnRQcmVzZW50ID0gY29udGV4dC5pc0p1ZGdlbWVudFByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50UHJlc2VudDtcbiAgfVxuXG4gIGlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvblByZXNlbnQgPSBjb250ZXh0LmlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG4gIH1cblxuICBhZGRGcmFtZShmcmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRnJhbWUoZnJhbWUpO1xuICB9XG5cbiAgYWRkU3RhdGVtZW50KHN0YXRlbWVudCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gIH1cblxuICBhZGRSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIGFkZEp1ZGdlbWVudChqdWRnZW1lbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEp1ZGdlbWVudChqdWRnZW1lbnQpO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbik7XG4gIH1cblxuICBhZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbnRleHQiLCJnZXRMZXhlciIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwibGV4ZXIiLCJnZXRQYXJzZXIiLCJwYXJzZXIiLCJnZXRGaWxlUGF0aCIsImZpbGVQYXRoIiwiZ2V0VGVybXMiLCJ0ZXJtcyIsImdldEZyYW1lcyIsImZyYW1lcyIsImdldEVxdWFsaXRpZXMiLCJlcXVhbGl0aWVzIiwiZ2V0U3RhdGVtZW50cyIsInN0YXRlbWVudHMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEVxdWl2YWxlbmNlcyIsImVxdWl2YWxlbmNlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0VmFyaWFibGVzIiwiaW5jbHVkZVJlbGVhc2UiLCJ2YXJpYWJsZXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZ2V0TWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXMiLCJnZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImZpbmRNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwicnVsZSIsImZpbmRUb3BMZXZlbEFzc2VydGlvbkJ5UmVmZXJlbmNlIiwidG9wTGV2ZWxBc3NlcnRpb24iLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidGVybU5vZGUiLCJ0ZXJtIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZSIsImZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlOb2RlIiwiZXF1YWxpdHkiLCJmaW5kSnVkZ2VtZW50QnlKdWRnZW1lbnROb2RlIiwianVkZ2VtZW50Tm9kZSIsImp1ZGdlbWVudCIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50IiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZSIsImZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsImZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmRTaW1wbGVTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWUiLCJzaW1wbGVTdWJzdGl0dXRpb24iLCJmaW5kQ29tcGxleFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5hbWUiLCJjb21wbGV4U3Vic3RpdHV0aW9uIiwiZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZUFuZFN1YnN0aXR1dGlvbiIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwiaXNNZXRhdmFyaWFibGVQcmVzZW50IiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTGFiZWxQcmVzZW50QnlSZWZlcmVuY2UiLCJsYWJlbFByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeVJlZmVyZW5jZSIsImlzVGVybVByZXNlbnRCeVRlcm1Ob2RlIiwidGVybVByZXNlbnQiLCJpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlIiwiZnJhbWVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc0VxdWFsaXR5UHJlc2VudEJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlQcmVzZW50IiwiaXNKdWRnZW1lbnRQcmVzZW50QnlKdWRnZW1lbnROb2RlIiwianVkZ2VtZW50UHJlc2VudCIsImlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFByZXNlbnQiLCJpc0Fzc2VydGlvblByZXNlbnRCeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uUHJlc2VudCIsImlzUmVmZXJlbmNlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldHZ2YXJpYWJsZU5vZGUiLCJyZWZlcmVuY2VQcmVzZW50IiwiaXNKdWRnZW1lbnRQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lIiwiaXNTdWJzdGl0dXRpb25QcmVzZW50QnlTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uUHJlc2VudCIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZVByZXNlbnQiLCJhZGRUZXJtIiwiYWRkRnJhbWUiLCJhZGRTdGF0ZW1lbnQiLCJhZGRSZWZlcmVuY2UiLCJhZGRKdWRnZW1lbnQiLCJhZGRBc3NpZ25tZW50IiwiYXNzaWdubWVudCIsImFkZFN1YnN0aXR1dGlvbiIsImFkZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsIkNvbnRleHRCYXNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUlxQkE7Ozs4QkFGa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhCLElBQUEsQUFBTUEsd0JBQU47Y0FBTUE7YUFBQUE7Z0NBQUFBO1FBQU4sT0FBQSxrQkFBTUE7O2tCQUFBQTs7WUFDbkJDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxVQUFVLElBQUksQ0FBQ0MsVUFBVSxJQUN6QkMsUUFBUUYsUUFBUUQsUUFBUTtnQkFFOUIsT0FBT0c7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNSCxVQUFVLElBQUksQ0FBQ0MsVUFBVSxJQUN6QkcsU0FBU0osUUFBUUcsU0FBUztnQkFFaEMsT0FBT0M7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNTCxVQUFVLElBQUksQ0FBQ0MsVUFBVSxJQUN6QkssV0FBV04sUUFBUUssV0FBVztnQkFFcEMs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
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IGFzIENvbnRleHRCYXNlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgQ29udGV4dEJhc2Uge1xuICBnZXRMZXhlcigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCk7XG5cbiAgICByZXR1cm4gbGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCk7XG5cbiAgICByZXR1cm4gcGFyc2VyO1xuICB9XG5cbiAgZ2V0RmlsZVBhdGgoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gY29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHRlcm1zID0gY29udGV4dC5nZXRUZXJtcygpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0RnJhbWVzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmcmFtZXMgPSBjb250ZXh0LmdldEZyYW1lcygpO1xuXG4gICAgcmV0dXJuIGZyYW1lcztcbiAgfVxuXG4gIGdldEVxdWFsaXRpZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXRpZXMgPSBjb250ZXh0LmdldEVxdWFsaXRpZXMoKTtcblxuICAgIHJldHVybiBlcXVhbGl0aWVzO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50cygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50cyA9IGNvbnRleHQuZ2V0U3RhdGVtZW50cygpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRSZWZlcmVuY2VzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZWZlcmVuY2VzID0gY29udGV4dC5nZXRSZWZlcmVuY2VzKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gY29udGV4dC5nZXRTdWJzdGl0dXRpb25zKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGdldFZhcmlhYmxlcyhpbmNsdWRlUmVsZWFzZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBjb250ZXh0LmdldFZhcmlhYmxlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgY29tYmluYXRvcnMgPSBjb250ZXh0LmdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ycztcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhpbmNsdWRlUmVsZWFzZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpO1xuXG4gICAgcmV0dXJuIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnM7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpOyAgLy8vXG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZFJ1bGVCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcnVsZSA9IGNvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICBmaW5kVG9wTGV2ZWxBc3NlcnRpb25CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRUb3BMZXZlbEFzc2VydGlvbkJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gdG9wTGV2ZWxBc3NlcnRpb247XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YVR5cGU7XG4gIH1cblxuICBmaW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG5cbiAgZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gY29udGV4dC5maW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgZmluZEp1ZGdlbWVudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGp1ZGdlbWVudCA9IGNvbnRleHQuZmluZEp1ZGdlbWVudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBqdWRnZW1lbnQ7XG4gIH1cblxuICBmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNpbXBsZVN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBzaW1wbGVTdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kQ29tcGxleFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kQ29tcGxleFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gY29tcGxleFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWVBbmRTdWJzdGl0dXRpb24obWV0YXZhcmlhYmxlTmFtZSwgc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOYW1lQW5kU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZU5hbWUsIHN1YnN0aXR1dGlvbik7IC8vL1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcm9jZWR1cmUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlO1xuICB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50KG1ldGF2YXJpYWJsZSkge1xuICAgIG1ldGF2YXJpYWJsZSA9IHRoaXMuZmluZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpOyAvLy9cblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVByZXNlbnQgPSAobWV0YXZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNMYWJlbFByZXNlbnRCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGFiZWxQcmVzZW50ID0gY29udGV4dC5pc0xhYmVsUHJlc2VudEJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gbGFiZWxQcmVzZW50O1xuICB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50QnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHRlcm1QcmVzZW50ID0gY29udGV4dC5pc1Rlcm1QcmVzZW50QnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gdGVybVByZXNlbnQ7XG4gIH1cblxuICBpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmcmFtZVByZXNlbnQgPSBjb250ZXh0LmlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUoZnJhbWVOb2RlKTtcblxuICAgIHJldHVybiBmcmFtZVByZXNlbnQ7XG4gIH1cblxuICBpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5UHJlc2VudCA9IGNvbnRleHQuaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzSnVkZ2VtZW50UHJlc2VudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGp1ZGdlbWVudFByZXNlbnQgPSBjb250ZXh0LmlzSnVkZ2VtZW50UHJlc2VudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBqdWRnZW1lbnRQcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICBzdGF0ZW1lbnRQcmVzZW50ID0gY29udGV4dC5pc1N0YXRlbWVudFByZXNlbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSBjb250ZXh0LmlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldHZ2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcmVmZXJlbmNlUHJlc2VudCA9IGNvbnRleHQuaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldHZ2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVByZXNlbnQ7XG4gIH1cblxuICBpc0p1ZGdlbWVudFByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBqdWRnZW1lbnRQcmVzZW50ID0gY29udGV4dC5pc0p1ZGdlbWVudFByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50UHJlc2VudDtcbiAgfVxuXG4gIGlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvblByZXNlbnQgPSBjb250ZXh0LmlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG4gIH1cblxuICBhZGRGcmFtZShmcmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRnJhbWUoZnJhbWUpO1xuICB9XG5cbiAgYWRkU3RhdGVtZW50KHN0YXRlbWVudCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gIH1cblxuICBhZGRSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIGFkZEp1ZGdlbWVudChqdWRnZW1lbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEp1ZGdlbWVudChqdWRnZW1lbnQpO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbik7XG4gIH1cblxuICBhZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbnRleHQiLCJDb250ZXh0QmFzZSIsImdldExleGVyIiwiY29udGV4dCIsImdldENvbnRleHQiLCJsZXhlciIsImdldFBhcnNlciIsInBhcnNlciIsImdldEZpbGVQYXRoIiwiZmlsZVBhdGgiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRTdGF0ZW1lbnRzIiwic3RhdGVtZW50cyIsImdldFJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0U3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJnZXRWYXJpYWJsZXMiLCJpbmNsdWRlUmVsZWFzZSIsInZhcmlhYmxlcyIsImdldENvbWJpbmF0b3JzIiwiY29tYmluYXRvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJydWxlIiwiZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UiLCJ0b3BMZXZlbEFzc2VydGlvbiIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwibWV0YVR5cGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtTm9kZSIsInRlcm0iLCJmaW5kRnJhbWVCeUZyYW1lTm9kZSIsImZyYW1lTm9kZSIsImZyYW1lIiwiZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eSIsImZpbmRKdWRnZW1lbnRCeUp1ZGdlbWVudE5vZGUiLCJqdWRnZW1lbnROb2RlIiwianVkZ2VtZW50IiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnQiLCJmaW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsIm5vbWluYWxUeXBlTmFtZSIsInR5cGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlIiwiZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwiZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZSIsInNpbXBsZVN1YnN0aXR1dGlvbiIsImZpbmRDb21wbGV4U3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlTmFtZSIsImNvbXBsZXhTdWJzdGl0dXRpb24iLCJmaW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOYW1lQW5kU3Vic3RpdHV0aW9uIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmUiLCJpc01ldGF2YXJpYWJsZVByZXNlbnQiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNMYWJlbFByZXNlbnRCeVJlZmVyZW5jZSIsImxhYmVsUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5UmVmZXJlbmNlIiwiaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUiLCJ0ZXJtUHJlc2VudCIsImlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUiLCJmcmFtZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVByZXNlbnQiLCJpc0p1ZGdlbWVudFByZXNlbnRCeUp1ZGdlbWVudE5vZGUiLCJqdWRnZW1lbnRQcmVzZW50IiwiaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50UHJlc2VudCIsImlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25QcmVzZW50IiwiaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0dnZhcmlhYmxlTm9kZSIsInJlZmVyZW5jZVByZXNlbnQiLCJpc0p1ZGdlbWVudFByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJpc1N1YnN0aXR1dGlvblByZXNlbnRCeVN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25QcmVzZW50IiwiaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlUHJlc2VudCIsImFkZFRlcm0iLCJhZGRGcmFtZSIsImFkZFN0YXRlbWVudCIsImFkZFJlZmVyZW5jZSIsImFkZEp1ZGdlbWVudCIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYWRkU3Vic3RpdHV0aW9uIiwiYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXFCQTs7O2dDQUZrQjtBQUV4QixNQUFNQSxnQkFBZ0JDLHVCQUFXO0lBQzlDQyxXQUFXO1FBQ1QsTUFBTUMsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJDLFFBQVFGLFFBQVFELFFBQVE7UUFFOUIsT0FBT0c7SUFDVDtJQUVBQyxZQUFZO1FBQ1YsTUFBTUgsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJHLFNBQVNKLFFBQVFHLFNBQVM7UUFFaEMsT0FBT0M7SUFDVDtJQUVBQyxjQUFjO1FBQ1osTUFBTUwsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJLLFdBQVdOLFFBQVFLLFdBQVc7UUFFcEMsT0FBT0M7SUFDVDtJQUVBQyxXQUFXO1FBQ1QsTUFBTVAsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJPLFFBQVFSLFFBQVFPLFFBQVE7UUFFOUIsT0FBT0M7SUFDVDtJQUVBQyxZQUFZO1FBQ1YsTUFBTVQsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJTLFNBQVNWLFFBQVFTLFNBQVM7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
|